summaryrefslogtreecommitdiffstats
BranchCommit messageAuthorAge
masterdrop useless commentThierry Vignaud11 years
distro/mga3apply forgotten patch for drakfirewallJosé Jorge11 years
distro/mga2SVN_SILENT Ukrainian translation updateYuri Chornoivan11 years
distro/mga1Ukrainian translation updateYuri Chornoivan12 years
distro/mes5-2.6.33Revert as it breaks auto_instNicolas Lécureuil12 years
distro/mes6fix unused-but-set-variableAntoine Ginies13 years
distro/mes5fix installing from hard drive on cciss (#57973)Antoine Ginies14 years
distro/mdv2009.0increase versionPascal Terjan14 years
distro/mdv2010.0- detect_devices:Olivier Blin14 years
distro/mdv2008.0run_program: set XAUTHORITY and HOME for the user we will drop privileges toPascal Terjan14 years
distro/mdv2008.1run_program: set XAUTHORITY and HOME for the user we will drop privileges toPascal Terjan14 years
distro/mdv2009.1run_program: set XAUTHORITY and HOME for the user we will drop privileges toPascal Terjan14 years
topic/switching_to_urpmi(rpmDbOpen) make it more readableThierry Vignaud15 years
topic/before_matchbox_wm2009.0 beta 1 logoThierry Vignaud16 years
topic/MDK-2006_0-updateAdd stex and e1000_ngPascal Terjan16 years
distro/mdv2007.1- fix range max value >2TB when creating a partition (useful for LVs >2TB)Pascal Rigaux17 years
topic/mlcd4copy 2007.1 as mlcd4 branch (for drakauth changes)Olivier Blin17 years
topic/MDK-10-updateBetter (and fix) SMP detection, aka. also check for populated & enabled CPUGwenolé Beauchesne18 years
topic/MDK-10_2-updatepackage lsb is requiring many locales though we don't want it to be installedPascal Rigaux19 years
topic/MDK-10_1-updateFix mis-sorted progress barsStew Benedict19 years
topic/aThis commit was manufactured by cvs2svn to create branch 'a'.Mystery Man20 years
topic/mandrakesoftThis commit was manufactured by cvs2svn to create branch 'mandrakesoft'.Mystery Man20 years
topic/MDK92-branchworkaround anthil bug #369Thierry Vignaud20 years
topic/Corpo_2_1Corporate Server 2.1.1 releaseNicolas Planel21 years
topic/KA9_0Removing sundanceErwan Velu21 years
topic/R9_0-64bit-branchno imm/ppa on ia64Gwenolé Beauchesne21 years
topic/MDKC_1_0This commit was manufactured by cvs2svn to create branch 'MDKC_1_0'.Mystery Man21 years
topic/R9_1_HP-branchThis commit was manufactured by cvs2svn to create branchMystery Man21 years
topic/x86_64-branchMore xf86 modules for x86-64Gwenolé Beauchesne21 years
topic/gdk-pixbuf-0-branch- lots of cleanupsThierry Vignaud22 years
topic/ia64-8_1- Don't forget to link the initrd to the real image in /boot/efi/ tooGwenolé Beauchesne23 years
topic/PCMCIA_CS_DISTROThis commit was manufactured by cvs2svn to create branchMystery Man23 years
topic/v_webmin_0_87This commit was manufactured by cvs2svn to create branchMystery Man23 years
topic/gi-ppcThis commit was manufactured by cvs2svn to create branch 'gi-ppc'.Mystery Man23 years
topic/rp-pppoeThis commit was manufactured by cvs2svn to create branch 'rp-pppoe'.Mystery Man23 years
topic/pppThis commit was manufactured by cvs2svn to create branch 'ppp'.Mystery Man23 years
topic/dietlibcThis commit was manufactured by cvs2svn to create branch 'dietlibc'.Mystery Man23 years
topic/firewallreadded passwd. Must verify that it's secure vs msec.damien23 years
topic/unlabeled-1.1.1branch to build the firewall install.damien24 years
 
TagDownloadAuthorAge
before_matchbox_wmdrakx-backup-do-not-use-before_matchbox_wm.tar  drakx-backup-do-not-use-before_matchbox_wm.tar.gz  drakx-backup-do-not-use-before_matchbox_wm.tar.bz2  drakx-backup-do-not-use-before_matchbox_wm.tar.xz  drakx-backup-do-not-use-before_matchbox_wm.zip  Thierry Vignaud16 years
V10_4_6_1mdkdrakx-backup-do-not-use-10_4_6_1mdk.tar  drakx-backup-do-not-use-10_4_6_1mdk.tar.gz  drakx-backup-do-not-use-10_4_6_1mdk.tar.bz2  drakx-backup-do-not-use-10_4_6_1mdk.tar.xz  drakx-backup-do-not-use-10_4_6_1mdk.zip  Mystery Man19 years
V10_34_11_100mdkdrakx-backup-do-not-use-10_34_11_100mdk.tar  drakx-backup-do-not-use-10_34_11_100mdk.tar.gz  drakx-backup-do-not-use-10_34_11_100mdk.tar.bz2  drakx-backup-do-not-use-10_34_11_100mdk.tar.xz  drakx-backup-do-not-use-10_34_11_100mdk.zip  Mystery Man19 years
MDK-2006_0drakx-backup-do-not-use-MDK-2006_0.tar  drakx-backup-do-not-use-MDK-2006_0.tar.gz  drakx-backup-do-not-use-MDK-2006_0.tar.bz2  drakx-backup-do-not-use-MDK-2006_0.tar.xz  drakx-backup-do-not-use-MDK-2006_0.zip  Mystery Man19 years
V10_3_0_53mdkdrakx-backup-do-not-use-10_3_0_53mdk.tar  drakx-backup-do-not-use-10_3_0_53mdk.tar.gz  drakx-backup-do-not-use-10_3_0_53mdk.tar.bz2  drakx-backup-do-not-use-10_3_0_53mdk.tar.xz  drakx-backup-do-not-use-10_3_0_53mdk.zip  Mystery Man19 years
V10_3_0_52mdkdrakx-backup-do-not-use-10_3_0_52mdk.tar  drakx-backup-do-not-use-10_3_0_52mdk.tar.gz  drakx-backup-do-not-use-10_3_0_52mdk.tar.bz2  drakx-backup-do-not-use-10_3_0_52mdk.tar.xz  drakx-backup-do-not-use-10_3_0_52mdk.zip  Mystery Man19 years
V10_3_0_51mdkdrakx-backup-do-not-use-10_3_0_51mdk.tar  drakx-backup-do-not-use-10_3_0_51mdk.tar.gz  drakx-backup-do-not-use-10_3_0_51mdk.tar.bz2  drakx-backup-do-not-use-10_3_0_51mdk.tar.xz  drakx-backup-do-not-use-10_3_0_51mdk.zip  Mystery Man19 years
V10_3_0_50mdkdrakx-backup-do-not-use-10_3_0_50mdk.tar  drakx-backup-do-not-use-10_3_0_50mdk.tar.gz  drakx-backup-do-not-use-10_3_0_50mdk.tar.bz2  drakx-backup-do-not-use-10_3_0_50mdk.tar.xz  drakx-backup-do-not-use-10_3_0_50mdk.zip  Mystery Man19 years
V10_3_0_48mdkdrakx-backup-do-not-use-10_3_0_48mdk.tar  drakx-backup-do-not-use-10_3_0_48mdk.tar.gz  drakx-backup-do-not-use-10_3_0_48mdk.tar.bz2  drakx-backup-do-not-use-10_3_0_48mdk.tar.xz  drakx-backup-do-not-use-10_3_0_48mdk.zip  Mystery Man19 years
V10_3_0_47mdkdrakx-backup-do-not-use-10_3_0_47mdk.tar  drakx-backup-do-not-use-10_3_0_47mdk.tar.gz  drakx-backup-do-not-use-10_3_0_47mdk.tar.bz2  drakx-backup-do-not-use-10_3_0_47mdk.tar.xz  drakx-backup-do-not-use-10_3_0_47mdk.zip  Mystery Man19 years
V10_3_0_35mdkdrakx-backup-do-not-use-10_3_0_35mdk.tar  drakx-backup-do-not-use-10_3_0_35mdk.tar.gz  drakx-backup-do-not-use-10_3_0_35mdk.tar.bz2  drakx-backup-do-not-use-10_3_0_35mdk.tar.xz  drakx-backup-do-not-use-10_3_0_35mdk.zip  Mystery Man19 years
V10_3_0_34mdkdrakx-backup-do-not-use-10_3_0_34mdk.tar  drakx-backup-do-not-use-10_3_0_34mdk.tar.gz  drakx-backup-do-not-use-10_3_0_34mdk.tar.bz2  drakx-backup-do-not-use-10_3_0_34mdk.tar.xz  drakx-backup-do-not-use-10_3_0_34mdk.zip  Mystery Man19 years
V10_3_0_24mdkdrakx-backup-do-not-use-10_3_0_24mdk.tar  drakx-backup-do-not-use-10_3_0_24mdk.tar.gz  drakx-backup-do-not-use-10_3_0_24mdk.tar.bz2  drakx-backup-do-not-use-10_3_0_24mdk.tar.xz  drakx-backup-do-not-use-10_3_0_24mdk.zip  Mystery Man19 years
MDK10-LACIEdrakx-backup-do-not-use-MDK10-LACIE.tar  drakx-backup-do-not-use-MDK10-LACIE.tar.gz  drakx-backup-do-not-use-MDK10-LACIE.tar.bz2  drakx-backup-do-not-use-MDK10-LACIE.tar.xz  drakx-backup-do-not-use-MDK10-LACIE.zip  Mystery Man19 years
MDK10-LACIE-restoredrakx-backup-do-not-use-MDK10-LACIE-restore.tar  drakx-backup-do-not-use-MDK10-LACIE-restore.tar.gz  drakx-backup-do-not-use-MDK10-LACIE-restore.tar.bz2  drakx-backup-do-not-use-MDK10-LACIE-restore.tar.xz  drakx-backup-do-not-use-MDK10-LACIE-restore.zip  Mystery Man19 years
MDK-10_2drakx-backup-do-not-use-MDK-10_2.tar  drakx-backup-do-not-use-MDK-10_2.tar.gz  drakx-backup-do-not-use-MDK-10_2.tar.bz2  drakx-backup-do-not-use-MDK-10_2.tar.xz  drakx-backup-do-not-use-MDK-10_2.zip  Mystery Man19 years
MDK10-LACIE-restore-2drakx-backup-do-not-use-MDK10-LACIE-restore-2.tar  drakx-backup-do-not-use-MDK10-LACIE-restore-2.tar.gz  drakx-backup-do-not-use-MDK10-LACIE-restore-2.tar.bz2  drakx-backup-do-not-use-MDK10-LACIE-restore-2.tar.xz  drakx-backup-do-not-use-MDK10-LACIE-restore-2.zip  Mystery Man19 years
V10_2_20mdkdrakx-backup-do-not-use-10_2_20mdk.tar  drakx-backup-do-not-use-10_2_20mdk.tar.gz  drakx-backup-do-not-use-10_2_20mdk.tar.bz2  drakx-backup-do-not-use-10_2_20mdk.tar.xz  drakx-backup-do-not-use-10_2_20mdk.zip  Mystery Man19 years
V10_2_19mdkdrakx-backup-do-not-use-10_2_19mdk.tar  drakx-backup-do-not-use-10_2_19mdk.tar.gz  drakx-backup-do-not-use-10_2_19mdk.tar.bz2  drakx-backup-do-not-use-10_2_19mdk.tar.xz  drakx-backup-do-not-use-10_2_19mdk.zip  Mystery Man19 years
MDK-10_1drakx-backup-do-not-use-MDK-10_1.tar  drakx-backup-do-not-use-MDK-10_1.tar.gz  drakx-backup-do-not-use-MDK-10_1.tar.bz2  drakx-backup-do-not-use-MDK-10_1.tar.xz  drakx-backup-do-not-use-MDK-10_1.zip  Mystery Man20 years
V10_54mdkdrakx-backup-do-not-use-10_54mdk.tar  drakx-backup-do-not-use-10_54mdk.tar.gz  drakx-backup-do-not-use-10_54mdk.tar.bz2  drakx-backup-do-not-use-10_54mdk.tar.xz  drakx-backup-do-not-use-10_54mdk.zip  Mystery Man20 years
MDK10_0drakx-backup-do-not-use-MDK10_0.tar  drakx-backup-do-not-use-MDK10_0.tar.gz  drakx-backup-do-not-use-MDK10_0.tar.bz2  drakx-backup-do-not-use-MDK10_0.tar.xz  drakx-backup-do-not-use-MDK10_0.zip  Mystery Man20 years
MDK-10_0drakx-backup-do-not-use-MDK-10_0.tar  drakx-backup-do-not-use-MDK-10_0.tar.gz  drakx-backup-do-not-use-MDK-10_0.tar.bz2  drakx-backup-do-not-use-MDK-10_0.tar.xz  drakx-backup-do-not-use-MDK-10_0.zip  Mystery Man20 years
V10_0_21mdkdrakx-backup-do-not-use-10_0_21mdk.tar  drakx-backup-do-not-use-10_0_21mdk.tar.gz  drakx-backup-do-not-use-10_0_21mdk.tar.bz2  drakx-backup-do-not-use-10_0_21mdk.tar.xz  drakx-backup-do-not-use-10_0_21mdk.zip  Mystery Man20 years
V9_3_15mdkdrakx-backup-do-not-use-9_3_15mdk.tar  drakx-backup-do-not-use-9_3_15mdk.tar.gz  drakx-backup-do-not-use-9_3_15mdk.tar.bz2  drakx-backup-do-not-use-9_3_15mdk.tar.xz  drakx-backup-do-not-use-9_3_15mdk.zip  Mystery Man21 years
move_1drakx-backup-do-not-use-move_1.tar  drakx-backup-do-not-use-move_1.tar.gz  drakx-backup-do-not-use-move_1.tar.bz2  drakx-backup-do-not-use-move_1.tar.xz  drakx-backup-do-not-use-move_1.zip  Mystery Man21 years
MDK92-AMD64drakx-backup-do-not-use-MDK92-AMD64.tar  drakx-backup-do-not-use-MDK92-AMD64.tar.gz  drakx-backup-do-not-use-MDK92-AMD64.tar.bz2  drakx-backup-do-not-use-MDK92-AMD64.tar.xz  drakx-backup-do-not-use-MDK92-AMD64.zip  Mystery Man21 years
Corpo_2_1_1drakx-backup-do-not-use-Corpo_2_1_1.tar  drakx-backup-do-not-use-Corpo_2_1_1.tar.gz  drakx-backup-do-not-use-Corpo_2_1_1.tar.bz2  drakx-backup-do-not-use-Corpo_2_1_1.tar.xz  drakx-backup-do-not-use-Corpo_2_1_1.zip  Mystery Man21 years
MDK92drakx-backup-do-not-use-MDK92.tar  drakx-backup-do-not-use-MDK92.tar.gz  drakx-backup-do-not-use-MDK92.tar.bz2  drakx-backup-do-not-use-MDK92.tar.xz  drakx-backup-do-not-use-MDK92.zip  Mystery Man21 years
V9_2_11mdkdrakx-backup-do-not-use-9_2_11mdk.tar  drakx-backup-do-not-use-9_2_11mdk.tar.gz  drakx-backup-do-not-use-9_2_11mdk.tar.bz2  drakx-backup-do-not-use-9_2_11mdk.tar.xz  drakx-backup-do-not-use-9_2_11mdk.zip  Mystery Man21 years
V9_2_0_29mdkdrakx-backup-do-not-use-9_2_0_29mdk.tar  drakx-backup-do-not-use-9_2_0_29mdk.tar.gz  drakx-backup-do-not-use-9_2_0_29mdk.tar.bz2  drakx-backup-do-not-use-9_2_0_29mdk.tar.xz  drakx-backup-do-not-use-9_2_0_29mdk.zip  Mystery Man21 years
ka9_0drakx-backup-do-not-use-ka9_0.tar  drakx-backup-do-not-use-ka9_0.tar.gz  drakx-backup-do-not-use-ka9_0.tar.bz2  drakx-backup-do-not-use-ka9_0.tar.xz  drakx-backup-do-not-use-ka9_0.zip  Mystery Man21 years
V9_2_0_1mdkdrakx-backup-do-not-use-9_2_0_1mdk.tar  drakx-backup-do-not-use-9_2_0_1mdk.tar.gz  drakx-backup-do-not-use-9_2_0_1mdk.tar.bz2  drakx-backup-do-not-use-9_2_0_1mdk.tar.xz  drakx-backup-do-not-use-9_2_0_1mdk.zip  Mystery Man21 years
V9_1_38mdkdrakx-backup-do-not-use-9_1_38mdk.tar  drakx-backup-do-not-use-9_1_38mdk.tar.gz  drakx-backup-do-not-use-9_1_38mdk.tar.bz2  drakx-backup-do-not-use-9_1_38mdk.tar.xz  drakx-backup-do-not-use-9_1_38mdk.zip  Mystery Man21 years
R9_0-AMD64drakx-backup-do-not-use-R9_0-AMD64.tar  drakx-backup-do-not-use-R9_0-AMD64.tar.gz  drakx-backup-do-not-use-R9_0-AMD64.tar.bz2  drakx-backup-do-not-use-R9_0-AMD64.tar.xz  drakx-backup-do-not-use-R9_0-AMD64.zip  Mystery Man21 years
V1_1_9_56mdkdrakx-backup-do-not-use-1_1_9_56mdk.tar  drakx-backup-do-not-use-1_1_9_56mdk.tar.gz  drakx-backup-do-not-use-1_1_9_56mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_56mdk.tar.xz  drakx-backup-do-not-use-1_1_9_56mdk.zip  Mystery Man21 years
V1_1_9_55mdkdrakx-backup-do-not-use-1_1_9_55mdk.tar  drakx-backup-do-not-use-1_1_9_55mdk.tar.gz  drakx-backup-do-not-use-1_1_9_55mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_55mdk.tar.xz  drakx-backup-do-not-use-1_1_9_55mdk.zip  Mystery Man21 years
V1_1_9_54mdkdrakx-backup-do-not-use-1_1_9_54mdk.tar  drakx-backup-do-not-use-1_1_9_54mdk.tar.gz  drakx-backup-do-not-use-1_1_9_54mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_54mdk.tar.xz  drakx-backup-do-not-use-1_1_9_54mdk.zip  Mystery Man21 years
V9_1_29mdkdrakx-backup-do-not-use-9_1_29mdk.tar  drakx-backup-do-not-use-9_1_29mdk.tar.gz  drakx-backup-do-not-use-9_1_29mdk.tar.bz2  drakx-backup-do-not-use-9_1_29mdk.tar.xz  drakx-backup-do-not-use-9_1_29mdk.zip  Mystery Man21 years
R9_1drakx-backup-do-not-use-R9_1.tar  drakx-backup-do-not-use-R9_1.tar.gz  drakx-backup-do-not-use-R9_1.tar.bz2  drakx-backup-do-not-use-R9_1.tar.xz  drakx-backup-do-not-use-R9_1.zip  Mystery Man21 years
V9_1_26mdkdrakx-backup-do-not-use-9_1_26mdk.tar  drakx-backup-do-not-use-9_1_26mdk.tar.gz  drakx-backup-do-not-use-9_1_26mdk.tar.bz2  drakx-backup-do-not-use-9_1_26mdk.tar.xz  drakx-backup-do-not-use-9_1_26mdk.zip  Mystery Man21 years
V9_1_25mdkdrakx-backup-do-not-use-9_1_25mdk.tar  drakx-backup-do-not-use-9_1_25mdk.tar.gz  drakx-backup-do-not-use-9_1_25mdk.tar.bz2  drakx-backup-do-not-use-9_1_25mdk.tar.xz  drakx-backup-do-not-use-9_1_25mdk.zip  Mystery Man21 years
V9_1_24mdkdrakx-backup-do-not-use-9_1_24mdk.tar  drakx-backup-do-not-use-9_1_24mdk.tar.gz  drakx-backup-do-not-use-9_1_24mdk.tar.bz2  drakx-backup-do-not-use-9_1_24mdk.tar.xz  drakx-backup-do-not-use-9_1_24mdk.zip  Mystery Man21 years
V9_1_23mdkdrakx-backup-do-not-use-9_1_23mdk.tar  drakx-backup-do-not-use-9_1_23mdk.tar.gz  drakx-backup-do-not-use-9_1_23mdk.tar.bz2  drakx-backup-do-not-use-9_1_23mdk.tar.xz  drakx-backup-do-not-use-9_1_23mdk.zip  Mystery Man21 years
V9_1_19mdkdrakx-backup-do-not-use-9_1_19mdk.tar  drakx-backup-do-not-use-9_1_19mdk.tar.gz  drakx-backup-do-not-use-9_1_19mdk.tar.bz2  drakx-backup-do-not-use-9_1_19mdk.tar.xz  drakx-backup-do-not-use-9_1_19mdk.zip  Mystery Man21 years
V9_1_18mdkdrakx-backup-do-not-use-9_1_18mdk.tar  drakx-backup-do-not-use-9_1_18mdk.tar.gz  drakx-backup-do-not-use-9_1_18mdk.tar.bz2  drakx-backup-do-not-use-9_1_18mdk.tar.xz  drakx-backup-do-not-use-9_1_18mdk.zip  Mystery Man21 years
V9_1_17mdkdrakx-backup-do-not-use-9_1_17mdk.tar  drakx-backup-do-not-use-9_1_17mdk.tar.gz  drakx-backup-do-not-use-9_1_17mdk.tar.bz2  drakx-backup-do-not-use-9_1_17mdk.tar.xz  drakx-backup-do-not-use-9_1_17mdk.zip  Mystery Man21 years
V9_1_11mdkdrakx-backup-do-not-use-9_1_11mdk.tar  drakx-backup-do-not-use-9_1_11mdk.tar.gz  drakx-backup-do-not-use-9_1_11mdk.tar.bz2  drakx-backup-do-not-use-9_1_11mdk.tar.xz  drakx-backup-do-not-use-9_1_11mdk.zip  Mystery Man21 years
V9_1_6mdkdrakx-backup-do-not-use-9_1_6mdk.tar  drakx-backup-do-not-use-9_1_6mdk.tar.gz  drakx-backup-do-not-use-9_1_6mdk.tar.bz2  drakx-backup-do-not-use-9_1_6mdk.tar.xz  drakx-backup-do-not-use-9_1_6mdk.zip  Mystery Man21 years
V9_1_0_34mdkdrakx-backup-do-not-use-9_1_0_34mdk.tar  drakx-backup-do-not-use-9_1_0_34mdk.tar.gz  drakx-backup-do-not-use-9_1_0_34mdk.tar.bz2  drakx-backup-do-not-use-9_1_0_34mdk.tar.xz  drakx-backup-do-not-use-9_1_0_34mdk.zip  Mystery Man21 years
KA9_0_noscsidrakx-backup-do-not-use-KA9_0_noscsi.tar  drakx-backup-do-not-use-KA9_0_noscsi.tar.gz  drakx-backup-do-not-use-KA9_0_noscsi.tar.bz2  drakx-backup-do-not-use-KA9_0_noscsi.tar.xz  drakx-backup-do-not-use-KA9_0_noscsi.zip  Mystery Man22 years
R9_0drakx-backup-do-not-use-R9_0.tar  drakx-backup-do-not-use-R9_0.tar.gz  drakx-backup-do-not-use-R9_0.tar.bz2  drakx-backup-do-not-use-R9_0.tar.xz  drakx-backup-do-not-use-R9_0.zip  Mystery Man22 years
V1_1_9_53mdkdrakx-backup-do-not-use-1_1_9_53mdk.tar  drakx-backup-do-not-use-1_1_9_53mdk.tar.gz  drakx-backup-do-not-use-1_1_9_53mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_53mdk.tar.xz  drakx-backup-do-not-use-1_1_9_53mdk.zip  Mystery Man22 years
V1_1_9_51mdkdrakx-backup-do-not-use-1_1_9_51mdk.tar  drakx-backup-do-not-use-1_1_9_51mdk.tar.gz  drakx-backup-do-not-use-1_1_9_51mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_51mdk.tar.xz  drakx-backup-do-not-use-1_1_9_51mdk.zip  Mystery Man22 years
V1_1_9_52mdkdrakx-backup-do-not-use-1_1_9_52mdk.tar  drakx-backup-do-not-use-1_1_9_52mdk.tar.gz  drakx-backup-do-not-use-1_1_9_52mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_52mdk.tar.xz  drakx-backup-do-not-use-1_1_9_52mdk.zip  Mystery Man22 years
R9_0_rc3drakx-backup-do-not-use-R9_0_rc3.tar  drakx-backup-do-not-use-R9_0_rc3.tar.gz  drakx-backup-do-not-use-R9_0_rc3.tar.bz2  drakx-backup-do-not-use-R9_0_rc3.tar.xz  drakx-backup-do-not-use-R9_0_rc3.zip  Mystery Man22 years
V1_1_9_49mdkdrakx-backup-do-not-use-1_1_9_49mdk.tar  drakx-backup-do-not-use-1_1_9_49mdk.tar.gz  drakx-backup-do-not-use-1_1_9_49mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_49mdk.tar.xz  drakx-backup-do-not-use-1_1_9_49mdk.zip  Mystery Man22 years
V1_1_9_48mdkdrakx-backup-do-not-use-1_1_9_48mdk.tar  drakx-backup-do-not-use-1_1_9_48mdk.tar.gz  drakx-backup-do-not-use-1_1_9_48mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_48mdk.tar.xz  drakx-backup-do-not-use-1_1_9_48mdk.zip  Mystery Man22 years
V1_1_9_46mdkdrakx-backup-do-not-use-1_1_9_46mdk.tar  drakx-backup-do-not-use-1_1_9_46mdk.tar.gz  drakx-backup-do-not-use-1_1_9_46mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_46mdk.tar.xz  drakx-backup-do-not-use-1_1_9_46mdk.zip  Mystery Man22 years
V1_1_9_45mdkdrakx-backup-do-not-use-1_1_9_45mdk.tar  drakx-backup-do-not-use-1_1_9_45mdk.tar.gz  drakx-backup-do-not-use-1_1_9_45mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_45mdk.tar.xz  drakx-backup-do-not-use-1_1_9_45mdk.zip  Mystery Man22 years
V1_1_9_42mdkdrakx-backup-do-not-use-1_1_9_42mdk.tar  drakx-backup-do-not-use-1_1_9_42mdk.tar.gz  drakx-backup-do-not-use-1_1_9_42mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_42mdk.tar.xz  drakx-backup-do-not-use-1_1_9_42mdk.zip  Mystery Man22 years
V1_1_9_35mdkdrakx-backup-do-not-use-1_1_9_35mdk.tar  drakx-backup-do-not-use-1_1_9_35mdk.tar.gz  drakx-backup-do-not-use-1_1_9_35mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_35mdk.tar.xz  drakx-backup-do-not-use-1_1_9_35mdk.zip  Mystery Man22 years
V1_1_9_31mdkdrakx-backup-do-not-use-1_1_9_31mdk.tar  drakx-backup-do-not-use-1_1_9_31mdk.tar.gz  drakx-backup-do-not-use-1_1_9_31mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_31mdk.tar.xz  drakx-backup-do-not-use-1_1_9_31mdk.zip  Mystery Man22 years
V1_1_9_25mdkdrakx-backup-do-not-use-1_1_9_25mdk.tar  drakx-backup-do-not-use-1_1_9_25mdk.tar.gz  drakx-backup-do-not-use-1_1_9_25mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_25mdk.tar.xz  drakx-backup-do-not-use-1_1_9_25mdk.zip  Mystery Man22 years
V1_1_9_16mdkdrakx-backup-do-not-use-1_1_9_16mdk.tar  drakx-backup-do-not-use-1_1_9_16mdk.tar.gz  drakx-backup-do-not-use-1_1_9_16mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_16mdk.tar.xz  drakx-backup-do-not-use-1_1_9_16mdk.zip  Mystery Man22 years
V1_1_9_9mdkdrakx-backup-do-not-use-1_1_9_9mdk.tar  drakx-backup-do-not-use-1_1_9_9mdk.tar.gz  drakx-backup-do-not-use-1_1_9_9mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_9mdk.tar.xz  drakx-backup-do-not-use-1_1_9_9mdk.zip  Mystery Man22 years
V1_1_9_5mdkdrakx-backup-do-not-use-1_1_9_5mdk.tar  drakx-backup-do-not-use-1_1_9_5mdk.tar.gz  drakx-backup-do-not-use-1_1_9_5mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_5mdk.tar.xz  drakx-backup-do-not-use-1_1_9_5mdk.zip  Mystery Man22 years
V1_1_9_2mdkdrakx-backup-do-not-use-1_1_9_2mdk.tar  drakx-backup-do-not-use-1_1_9_2mdk.tar.gz  drakx-backup-do-not-use-1_1_9_2mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_2mdk.tar.xz  drakx-backup-do-not-use-1_1_9_2mdk.zip  Mystery Man22 years
V1_1_9_4mdkdrakx-backup-do-not-use-1_1_9_4mdk.tar  drakx-backup-do-not-use-1_1_9_4mdk.tar.gz  drakx-backup-do-not-use-1_1_9_4mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_4mdk.tar.xz  drakx-backup-do-not-use-1_1_9_4mdk.zip  Mystery Man22 years
V1_1_9_1mdkdrakx-backup-do-not-use-1_1_9_1mdk.tar  drakx-backup-do-not-use-1_1_9_1mdk.tar.gz  drakx-backup-do-not-use-1_1_9_1mdk.tar.bz2  drakx-backup-do-not-use-1_1_9_1mdk.tar.xz  drakx-backup-do-not-use-1_1_9_1mdk.zip  Mystery Man22 years
V1_1_8_16mdkdrakx-backup-do-not-use-1_1_8_16mdk.tar  drakx-backup-do-not-use-1_1_8_16mdk.tar.gz  drakx-backup-do-not-use-1_1_8_16mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_16mdk.tar.xz  drakx-backup-do-not-use-1_1_8_16mdk.zip  Mystery Man22 years
V1_1_8_10mdkdrakx-backup-do-not-use-1_1_8_10mdk.tar  drakx-backup-do-not-use-1_1_8_10mdk.tar.gz  drakx-backup-do-not-use-1_1_8_10mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_10mdk.tar.xz  drakx-backup-do-not-use-1_1_8_10mdk.zip  Mystery Man22 years
V1_1_8_11mdkdrakx-backup-do-not-use-1_1_8_11mdk.tar  drakx-backup-do-not-use-1_1_8_11mdk.tar.gz  drakx-backup-do-not-use-1_1_8_11mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_11mdk.tar.xz  drakx-backup-do-not-use-1_1_8_11mdk.zip  Mystery Man22 years
V1_1_8_12mdkdrakx-backup-do-not-use-1_1_8_12mdk.tar  drakx-backup-do-not-use-1_1_8_12mdk.tar.gz  drakx-backup-do-not-use-1_1_8_12mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_12mdk.tar.xz  drakx-backup-do-not-use-1_1_8_12mdk.zip  Mystery Man22 years
V1_1_8_13mdkdrakx-backup-do-not-use-1_1_8_13mdk.tar  drakx-backup-do-not-use-1_1_8_13mdk.tar.gz  drakx-backup-do-not-use-1_1_8_13mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_13mdk.tar.xz  drakx-backup-do-not-use-1_1_8_13mdk.zip  Mystery Man22 years
V1_1_8_14mdkdrakx-backup-do-not-use-1_1_8_14mdk.tar  drakx-backup-do-not-use-1_1_8_14mdk.tar.gz  drakx-backup-do-not-use-1_1_8_14mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_14mdk.tar.xz  drakx-backup-do-not-use-1_1_8_14mdk.zip  Mystery Man22 years
V1_1_8_9mdkdrakx-backup-do-not-use-1_1_8_9mdk.tar  drakx-backup-do-not-use-1_1_8_9mdk.tar.gz  drakx-backup-do-not-use-1_1_8_9mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_9mdk.tar.xz  drakx-backup-do-not-use-1_1_8_9mdk.zip  Mystery Man22 years
V1_1_8_8mdkdrakx-backup-do-not-use-1_1_8_8mdk.tar  drakx-backup-do-not-use-1_1_8_8mdk.tar.gz  drakx-backup-do-not-use-1_1_8_8mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_8mdk.tar.xz  drakx-backup-do-not-use-1_1_8_8mdk.zip  Mystery Man22 years
V1_1_8_7mdkdrakx-backup-do-not-use-1_1_8_7mdk.tar  drakx-backup-do-not-use-1_1_8_7mdk.tar.gz  drakx-backup-do-not-use-1_1_8_7mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_7mdk.tar.xz  drakx-backup-do-not-use-1_1_8_7mdk.zip  Mystery Man22 years
V1_1_8_6mdkdrakx-backup-do-not-use-1_1_8_6mdk.tar  drakx-backup-do-not-use-1_1_8_6mdk.tar.gz  drakx-backup-do-not-use-1_1_8_6mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_6mdk.tar.xz  drakx-backup-do-not-use-1_1_8_6mdk.zip  Mystery Man22 years
V1_1_8_5mdkdrakx-backup-do-not-use-1_1_8_5mdk.tar  drakx-backup-do-not-use-1_1_8_5mdk.tar.gz  drakx-backup-do-not-use-1_1_8_5mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_5mdk.tar.xz  drakx-backup-do-not-use-1_1_8_5mdk.zip  Mystery Man22 years
V1_1_8_3mdkdrakx-backup-do-not-use-1_1_8_3mdk.tar  drakx-backup-do-not-use-1_1_8_3mdk.tar.gz  drakx-backup-do-not-use-1_1_8_3mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_3mdk.tar.xz  drakx-backup-do-not-use-1_1_8_3mdk.zip  Mystery Man22 years
V1_1_8_4mdkdrakx-backup-do-not-use-1_1_8_4mdk.tar  drakx-backup-do-not-use-1_1_8_4mdk.tar.gz  drakx-backup-do-not-use-1_1_8_4mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_4mdk.tar.xz  drakx-backup-do-not-use-1_1_8_4mdk.zip  Mystery Man22 years
V1_1_8_1mdkdrakx-backup-do-not-use-1_1_8_1mdk.tar  drakx-backup-do-not-use-1_1_8_1mdk.tar.gz  drakx-backup-do-not-use-1_1_8_1mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_1mdk.tar.xz  drakx-backup-do-not-use-1_1_8_1mdk.zip  Mystery Man22 years
V1_1_8_2mdkdrakx-backup-do-not-use-1_1_8_2mdk.tar  drakx-backup-do-not-use-1_1_8_2mdk.tar.gz  drakx-backup-do-not-use-1_1_8_2mdk.tar.bz2  drakx-backup-do-not-use-1_1_8_2mdk.tar.xz  drakx-backup-do-not-use-1_1_8_2mdk.zip  Mystery Man22 years
V1_1_7_99mdkdrakx-backup-do-not-use-1_1_7_99mdk.tar  drakx-backup-do-not-use-1_1_7_99mdk.tar.gz  drakx-backup-do-not-use-1_1_7_99mdk.tar.bz2  drakx-backup-do-not-use-1_1_7_99mdk.tar.xz  drakx-backup-do-not-use-1_1_7_99mdk.zip  Mystery Man22 years
R8_2drakx-backup-do-not-use-R8_2.tar  drakx-backup-do-not-use-R8_2.tar.gz  drakx-backup-do-not-use-R8_2.tar.bz2  drakx-backup-do-not-use-R8_2.tar.xz  drakx-backup-do-not-use-R8_2.zip  Mystery Man22 years
V3_1_29drakx-backup-do-not-use-3_1_29.tar  drakx-backup-do-not-use-3_1_29.tar.gz  drakx-backup-do-not-use-3_1_29.tar.bz2  drakx-backup-do-not-use-3_1_29.tar.xz  drakx-backup-do-not-use-3_1_29.zip  Mystery Man23 years
OEM8_1drakx-backup-do-not-use-OEM8_1.tar  drakx-backup-do-not-use-OEM8_1.tar.gz  drakx-backup-do-not-use-OEM8_1.tar.bz2  drakx-backup-do-not-use-OEM8_1.tar.xz  drakx-backup-do-not-use-OEM8_1.zip  Mystery Man23 years
R8_1drakx-backup-do-not-use-R8_1.tar  drakx-backup-do-not-use-R8_1.tar.gz  drakx-backup-do-not-use-R8_1.tar.bz2  drakx-backup-do-not-use-R8_1.tar.xz  drakx-backup-do-not-use-R8_1.zip  Mystery Man23 years
V_9mdkdrakx-backup-do-not-use-V_9mdk.tar  drakx-backup-do-not-use-V_9mdk.tar.gz  drakx-backup-do-not-use-V_9mdk.tar.bz2  drakx-backup-do-not-use-V_9mdk.tar.xz  drakx-backup-do-not-use-V_9mdk.zip  Mystery Man23 years
v0_8drakx-backup-do-not-use-0_8.tar  drakx-backup-do-not-use-0_8.tar.gz  drakx-backup-do-not-use-0_8.tar.bz2  drakx-backup-do-not-use-0_8.tar.xz  drakx-backup-do-not-use-0_8.zip  Mystery Man23 years
v8_0drakx-backup-do-not-use-8_0.tar  drakx-backup-do-not-use-8_0.tar.gz  drakx-backup-do-not-use-8_0.tar.bz2  drakx-backup-do-not-use-8_0.tar.xz  drakx-backup-do-not-use-8_0.zip  Mystery Man23 years
before_rpm4drakx-backup-do-not-use-before_rpm4.tar  drakx-backup-do-not-use-before_rpm4.tar.gz  drakx-backup-do-not-use-before_rpm4.tar.bz2  drakx-backup-do-not-use-before_rpm4.tar.xz  drakx-backup-do-not-use-before_rpm4.zip  Mystery Man24 years
rc1_fixeddrakx-backup-do-not-use-rc1_fixed.tar  drakx-backup-do-not-use-rc1_fixed.tar.gz  drakx-backup-do-not-use-rc1_fixed.tar.bz2  drakx-backup-do-not-use-rc1_fixed.tar.xz  drakx-backup-do-not-use-rc1_fixed.zip  Mystery Man24 years
odysseydrakx-backup-do-not-use-odyssey.tar  drakx-backup-do-not-use-odyssey.tar.gz  drakx-backup-do-not-use-odyssey.tar.bz2  drakx-backup-do-not-use-odyssey.tar.xz  drakx-backup-do-not-use-odyssey.zip  Mystery Man24 years
helium_sparc_rc1drakx-backup-do-not-use-helium_sparc_rc1.tar  drakx-backup-do-not-use-helium_sparc_rc1.tar.gz  drakx-backup-do-not-use-helium_sparc_rc1.tar.bz2  drakx-backup-do-not-use-helium_sparc_rc1.tar.xz  drakx-backup-do-not-use-helium_sparc_rc1.zip  Mystery Man24 years
heliumdrakx-backup-do-not-use-helium.tar  drakx-backup-do-not-use-helium.tar.gz  drakx-backup-do-not-use-helium.tar.bz2  drakx-backup-do-not-use-helium.tar.xz  drakx-backup-do-not-use-helium.zip  Mystery Man24 years
oemdrakx-backup-do-not-use-oem.tar  drakx-backup-do-not-use-oem.tar.gz  drakx-backup-do-not-use-oem.tar.bz2  drakx-backup-do-not-use-oem.tar.xz  drakx-backup-do-not-use-oem.zip  Mystery Man24 years
airdrakx-backup-do-not-use-air.tar  drakx-backup-do-not-use-air.tar.gz  drakx-backup-do-not-use-air.tar.bz2  drakx-backup-do-not-use-air.tar.xz  drakx-backup-do-not-use-air.zip  Mystery Man25 years
V1_0drakx-backup-do-not-use-1_0.tar  drakx-backup-do-not-use-1_0.tar.gz  drakx-backup-do-not-use-1_0.tar.bz2  drakx-backup-do-not-use-1_0.tar.xz  drakx-backup-do-not-use-1_0.zip  Mystery Man25 years
pan> list { my (%options) = @_; my @l = @languages; if ($options{exclude_non_necessary_utf8}) { my %LANGs_non_utf8 = map { lang2LANG($_) => 1 } grep { !/UTF-8/ } @languages; @l = grep { !/UTF-8/ || !$LANGs_non_utf8{lang2LANG($_)} } @l; } if ($options{exclude_non_installed_langs}) { @l = grep { -e "/usr/share/locale/" . lang2LANG($_) . "/LC_CTYPE" } @l; } @l; } sub lang2text { exists $languages{$_[0]} && $languages{$_[0]}[0] } sub lang2charset { exists $languages{$_[0]} && $languages{$_[0]}[1] } sub lang2LANG { exists $languages{$_[0]} && $languages{$_[0]}[2] } sub lang2LANGUAGE { exists $languages{$_[0]} && $languages{$_[0]}[3] } sub lang2UTF8 { exists $languages{$_[0]} && $languages{$_[0]}[4] } sub getxim { $xim{$_[0]} } sub lang2console_font { my ($lang) = @_; my $c = $charsets{lang2charset($lang) || return} or return; my ($name, $sfm, $acm) = @$c; undef $acm if lang2UTF8($lang); ($name, $sfm, $acm); } sub lang2country { my ($lang, $prefix) = @_; my $dir = "$prefix/usr/share/locale/l10n"; my @countries = grep { -d "$dir/$_" } all($dir); my %countries; @countries{@countries} = (); my $valid_country = sub { my ($country) = @_; #- fast & dirty solution to ensure bad entries do not happen exists $countries{$country} && $country; }; my $country; if ($country ||= $lang2country{$lang}) { return $valid_country->($country) ? $country : 'C'; } $country ||= $valid_country->(lc($1)) if $lang =~ /([A-Z]+)/; $country ||= $valid_country->(lc($1)) if lang2LANGUAGE($lang) =~ /([A-Z]+)/; $country ||= $valid_country->(substr($lang, 0, 2)); $country ||= first(grep { $valid_country->($_) } map { substr($_, 0, 2) } split(':', lang2LANGUAGE($lang))); $country || 'C'; } sub country2lang { my ($country, $default) = @_; my $uc_country = uc $country; my %country2lang = reverse %lang2country; my ($lang1, $lang2); $lang1 ||= $country2lang{$country}; $lang1 ||= first(grep { /^$country/ } list()); $lang1 ||= first(grep { /_$uc_country/ } list()); $lang2 ||= first(grep { int grep { /^$country/ } split(':', lang2LANGUAGE($_)) } list()); $lang2 ||= first(grep { int grep { /_$uc_country/ } split(':', lang2LANGUAGE($_)) } list()); ($lang1 =~ /UTF-8/ && $lang2 !~ /UTF-8/ ? $lang2 || $lang1 : $lang1 || $lang2) || $default || 'en_US'; } sub lang2kde_lang { my ($lang, $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 az bg ca cs da de el en_GB eo es et fi fr he hu is it ja ko lt lv mt nl no no_NY pl pt pt_BR ro ru sl sk sr sv ta th tr uk xh zh_CN.GB2312 zh_TW.Big5); 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 $lang eq 'en' ? 'C' : exists $valid_kde_langs{$lang} ? $lang : exists $valid_kde_langs{substr($lang, 0, 2)} ? substr($lang, 0, 2) : ''; }; my $r; $r ||= $valid_lang->(lang2LANG($lang)); $r ||= first(grep { $valid_lang->($_) } split(':', lang2LANGUAGE($lang))); $r || $default || 'C'; } sub kde_lang2lang { my ($klang, $default) = @_; first(grep { /^$klang/ } list()) || $default || 'en_US'; } sub kde_lang_country2lang { my ($klang, $country, $default) = @_; my $uc_country = uc $country; #- country is used to precise the lang my @choices = grep { /^$klang/ } list(); my @sorted = @choices == 2 && length $choices[0] !~ /[._]/ && $choices[1] =~ /UTF-8/ ? @choices : map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [ $_ => /_$uc_country/ ] } @choices; $sorted[0] || $default || 'en_US'; } sub charset2kde_charset { my ($charset, $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 || $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' => [ "adobe-helvetica,12", "courier,10", "adobe-helvetica,11" ], 'iso-8859-1' => [ "adobe-helvetica,12", "courier,10", "adobe-helvetica,11" ], 'iso-8859-2' => [ "adobe-helvetica,12", "courier,10", "adobe-helvetica,11" ], 'iso-8859-9' => [ "adobe-helvetica,12", "courier,10", "adobe-helvetica,11" ], 'iso-8859-15' => [ "adobe-helvetica,12", "courier,10", "adobe-helvetica,11" ], 'gb2312' => [ "default-ming,16" ], 'jisx0208' => [ "misc-fixed,14", "wadalab-gothic,13" ], 'ksc5601' => [ "daewoo-gothic,16" ], 'Big5' => [ "taipei-fixed,16" ], 'armscii-8' => [ "clearlyu,17" ], 'utf_ka' => [ "clearlyu,17" ], 'viscii' => [ "misc-fixed,13", "misc-fixed,13", "misc-fixed,10", ], #- TSCII uses pseudo iso-8859-1 fonts, it is important to choose them #- correctly 'tscii' => [ "tsc_paranar,13", "mylaifixtsc,13", "tsc_paranar,10", ], 'default' => [ "misc-fixed,13", "misc-fixed,13", "misc-fixed,10", ], ); sub charset2kde_font { my ($charset, $type) = @_; my $kdecharset = charset2kde_charset($charset); my $font = $charset2kde_font{$charset} || $charset2kde_font{default}; my $r = $font->[$type] || $font->[0]; #- the format is "font-name,size,5,kdecharset,0,0" I have no idea of the #- meaning of that "5"... "$r,5,$kdecharset,0,0"; } sub set { my ($lang, $translate_for_console) = @_; if ($lang && !exists $languages{$lang}) { #- try to find the best lang my ($lang2) = grep { /^\Q$lang/ } list(); #- $lang is not precise enough, choose the first complete my ($lang3) = grep { $lang =~ /^\Q$_/ } list(); #- $lang is too precise, choose the first substring matching log::l("lang::set: fixing $lang with ", $lang2 || $lang3); $lang = $lang2 || $lang3; } if ($lang && exists $languages{$lang}) { my ($dir, $LANG) = ("$ENV{SHARE_PATH}/locale", lang2LANG($lang)); if (! -e "$dir/$LANG" && common::usingRamdisk()) { @ENV{qw(LANG LC_ALL LANGUAGE LINGUAS)} = (); my @LCs = qw(LC_ADDRESS LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME); my $charset = during_install__lang2charset($lang) || $LANG; #- 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 my $main_charset = member($charset, 'GB2312', 'BIG5') ? $charset : 'UTF-8'; #- removing everything #- except in main charset: only removing LC_CTYPE if it is there eval { rm_rf($_ eq $main_charset ? "$dir/$_/LC_CTYPE" : "$dir/$_") } foreach all($dir); if (! -e "$dir/$main_charset") { #- getting the main charset mkdir "$dir/$main_charset"; mkdir "$dir/$main_charset/LC_MESSAGES"; install_any::getAndSaveFile ("$dir/$main_charset/$_") foreach @LCs, 'LC_MESSAGES/SYS_LC_MESSAGES'; } mkdir "$dir/$LANG"; #- linking to the main charset symlink "../$main_charset/$_", "$dir/$LANG/$_" foreach @LCs, 'LC_MESSAGES'; #- getting LC_CTYPE (putting it directly in $LANG) install_any::getAndSaveFile ("Mandrake/mdkinst$dir/$charset/LC_CTYPE", "$dir/$LANG/LC_CTYPE"); } #- set all LC_* variables to a unique locale ("C"), and only redefine #- LC_CTYPE (for X11 choosing the fontset) and LANGUAGE (for the po files) $ENV{$_} = 'C' foreach qw(LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION); #- use lang2LANG() to define LC_CTYPE, so DrakX will use a same encoding #- for all variations of a same language, eg both 'ru_RU.KOI8-R' and #- 'ru_RU.UTF-8' will be handled the same (as 'ru') by DrakX. #- that way DrakX only needs a reduced set of locale and fonts support. #- of course on the installed system they will be different. $ENV{LC_CTYPE} = lang2LANG($lang); $ENV{LC_MESSAGES} = lang2LANG($lang); $ENV{LANG} = lang2LANG($lang); if ($translate_for_console && $lang =~ /^(ko|ja|zh|th)/) { log::l("not translating in console"); $ENV{LANGUAGE} = 'C'; } else { $ENV{LANGUAGE} = lang2LANGUAGE($lang); } load_mo(); } else { #- stick with the default (English) */ delete $ENV{LANG}; delete $ENV{LC_ALL}; delete $ENV{LANGUAGE}; delete $ENV{LINGUAS}; } $lang; } sub langs { my ($l) = @_; grep { $l->{$_} } keys %$l; } sub langsLANGUAGE { my ($l) = @_; my @l = $l->{all} ? list() : langs($l); uniq(map { split ':', lang2LANGUAGE($_) } @l); } sub pack_langs { my ($l) = @_; my $s = $l->{all} ? 'all' : join ':', uniq(map { lang2LANGUAGE($_) } langs($l)); $ENV{RPM_INSTALL_LANG} = $s; $s; } sub unpack_langs { my ($s) = @_; my @l = uniq(map { split ':', lang2LANGUAGE($_) } split(':', $s)); my @l2 = intersection(\@l, [ keys %languages ]); +{ map { $_ => 1 } @l2 }; } sub read { my ($prefix, $user_only) = @_; my ($f1, $f2) = ("$prefix$ENV{HOME}/.i18n", "$prefix/etc/sysconfig/i18n"); my %h = getVarsFromSh($user_only && -e $f1 ? $f1 : $f2); my $lang = $h{LC_MESSAGES} || 'en_US'; $lang = bestMatchSentence($lang, list()) if !exists $languages{$lang}; my $langs = $user_only ? () : cat_("$prefix/etc/rpm/macros") =~ /%_install_langs (.*)/ ? unpack_langs($1) : { $lang => 1 }; $lang, $langs; } sub write_langs { my ($prefix, $langs) = @_; my $s = pack_langs($langs); symlink "$prefix/etc/rpm", "/etc/rpm" if $prefix; substInFile { s/%_install_langs.*//; $_ .= "%_install_langs $s\n" if eof && $s } "$prefix/etc/rpm/macros"; } sub write { my ($prefix, $lang, $user_only, $dont_touch_kde_files) = @_; $lang or return; my $h = {}; $h->{$_} = $lang foreach qw(LC_COLLATE LC_CTYPE LC_MESSAGES LC_NUMERIC LC_MONETARY LC_TIME); if ($lang && exists $languages{$lang}) { ##- note: KDE is unable to use the keyboard if LC_* and LANG values differ... #- add2hash $h, { LANG => lang2LANG($lang), LANGUAGE => lang2LANGUAGE($lang) }; add2hash $h, { LANG => $lang, LANGUAGE => lang2LANGUAGE($lang) }; my ($name, $sfm, $acm) = lang2console_font($lang); if ($name && !$user_only) { my $p = "$prefix/usr/lib/kbd"; if ($name) { eval { cp_af("$p/consolefonts/$name.psf.gz", "$prefix/etc/sysconfig/console/consolefonts"); add2hash $h, { SYSFONT => $name }; }; $@ and log::l("missing console font $name"); } if ($sfm) { eval { cp_af(glob_("$p/consoletrans/$sfm*"), "$prefix/etc/sysconfig/console/consoletrans"); add2hash $h, { UNIMAP => $sfm }; }; $@ and log::l("missing console unimap file $sfm"); } if ($acm) { eval { cp_af(glob_("$p/consoletrans/$acm*"), "$prefix/etc/sysconfig/console/consoletrans"); add2hash $h, { SYSFONTACM => $acm }; }; $@ and log::l("missing console acm file $acm"); } } add2hash $h, $xim{$lang}; } setVarsInSh($prefix . ($user_only ? "$ENV{HOME}/.i18n" : '/etc/sysconfig/i18n'), $h); eval { my $charset = lang2charset($lang); my $confdir = $prefix . ($user_only ? "$ENV{HOME}/.kde" : '/usr') . '/share/config'; my ($prev_kde_charset) = cat_("$confdir/kdeglobals") =~ /^Charset=(.*)/mi; mkdir_p($confdir); update_gnomekderc("$confdir/kdeglobals", Locale => ( Charset => charset2kde_charset($charset), Country => lang2country($lang, $prefix), Language => lang2kde_lang($lang), )); if ($prev_kde_charset ne charset2kde_charset($charset)) { update_gnomekderc("$confdir/kdeglobals", WM => ( activeFont => charset2kde_font($charset,0), )); update_gnomekderc("$confdir/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), )); } } if !$dont_touch_kde_files; } sub bindtextdomain() { my $localedir = "$ENV{SHARE_PATH}/locale"; $localedir .= "_special" if $::isInstall; c::setlocale(); c::bindtextdomain('libDrakX', $localedir); $localedir; } sub load_mo { my ($lang) = @_; my $localedir = bindtextdomain(); my $suffix = 'LC_MESSAGES/libDrakX.mo'; $lang ||= $ENV{LANGUAGE} || $ENV{LC_ALL} || $ENV{LC_MESSAGES} || $ENV{LANG}; foreach (split ':', $lang) { my $f = "$localedir/$_/$suffix"; -s $f and return $_; if ($::isInstall && common::usingRamdisk()) { #- cleanup eval { rm_rf($localedir) }; eval { mkdir_p(dirname("$localedir/$_/$suffix")) }; install_any::getAndSaveFile ("$localedir/$_/$suffix"); -s $f and return $_; } } ''; } #- 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 ($lang) = @_; my ($name, $sfm, $acm) = lang2console_font($lang); require run_program; run_program::run(if_($ENV{LD_LOADER}, $ENV{LD_LOADER}), 'consolechars', '-v', '-f', $name || 'lat0-sun16', if_($sfm, '-u', $sfm), if_($acm, '-m', $acm)); } sub get_x_fontset { my ($lang, $size) = @_; my $charset = lang2charset($lang) or return; my $c = $charsets{$charset} or return; if (my $f = $bigfonts{$charset}) { my $dir = "/usr/X11R6/lib/X11/fonts"; if (! -e "$dir/$f" && $::isInstall && common::usingRamdisk()) { unlink "$dir/$_" foreach values %bigfonts; install_any::remove_bigseldom_used (); install_any::getAndSaveFile ("$dir/$f"); } } my ($big, $small) = @$c[5..6]; ($big, $small) = $big->($size) if ref $big; ($big, $small); } sub fs_options { my ($lang) = @_; if (lang2UTF8($lang)) { ('utf8', undef); } else { my $c = $charsets{lang2charset($lang) || return} or return; my ($iocharset, $codepage) = @$c[3..4]; $iocharset, $codepage; } } sub charset { my ($lang, $prefix) = @_; my $l = lang2LANG($lang); foreach (cat_("$prefix/usr/X11R6/lib/X11/locale/locale.alias")) { /$l:\s+.*\.(\S+)/ and return $1; } $l =~ /.*\.(\S+)/ and return $1; } sub during_install__lang2charset { my ($lang) = @_; return if member(lang2LANG($lang), @during_install__lang_having_their_LC_CTYPE); my ($c) = lang2charset($lang) or die "bad lang $lang\n"; $c = 'cp1251' if $c =~ /koi8-/; $c = 'iso-8859-15' if member($c, 'iso-8859-1', 'C'); $c = 'UTF-8' if member($c, 'unicode', 'utf_ka'); $c = 'UTF-8' if member($c, 'armscii-8', 'iso-8859-9e', 'iso-8859-8', 'iso-8859-6'); #- BAD, need fixing uc($c); } sub check { $^W = 0; my $ok = 1; my $warn = sub { print STDERR "$_[0]\n"; }; my $err = sub { &$warn; $ok = 0; }; my @wanted_charsets = uniq map { lang2charset($_) } list(); $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 ]); $warn->("unused charset $_ (given in \%charsets, but not used in \%languages)") foreach difference2([ keys %charsets ], \@wanted_charsets); $warn->("unused entry $_ in \%xim") foreach difference2([ keys %xim ], [ list() ]); #- 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 { lang2country($_) eq 'C' } list()) { $warn->("no country for langs " . join(" ", @l)); } if (my @l = grep { lang2kde_lang($_, 'err') eq 'err' } list()) { $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)); } exit($ok ? 0 : 1); } 1;