LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   Midnight Commander 4.6.2 (https://www.linuxquestions.org/questions/slackware-14/midnight-commander-4-6-2-a-702116/)

guanx 02-03-2009 11:52 PM

Midnight Commander 4.6.2
 
ftp://lcpu.3322.org/pub/FileTools/mc...re-12.2.tar.gz

This source package is home-made, only for testing. The mc-4.6.2 has many improvements over 4.61.

FIXME: Could anyone help with extending the iconv commands in the SlackBuild script to other languages? With the utf8 patch, mc (especially mcedit) works properly only in utf8 terminals. So the hint file should be converted to utf8.

gnashley 02-05-2009 12:38 PM

That's a really, really slow link there... maximum speed of about 1.1KB/s.
Don't you have a small diff with the changes you've made? Or another server you can upload to?

guanx 02-05-2009 01:14 PM

1 Attachment(s)
Besides the attached stuff, I also repacked the official source in order to:
1. Change recursively the owner/group to root/root, remove write permissions for group/others.
2. Use bzip2 compression.

Many source packages, bash and mc for example, contain files owned by non-root UIDs. This is very dangerous because those UIDs are usually automatically chosen by the developers' system. There is a high risk that the same UIDs are present in the end-user's system. If the administrator runs the SlackBuild script, corresponding users can then open the source files during unpack and plant backdoors into the software.

Patrick says everyone who runs SlackBuild scripts must have a dedicated build server. This is impractical in some way. So I postfixed the TMP variable with a mode 700 directory in the SlackBuild script. I suggest that every newly written SlackBuild script do this to ensure security.

gnashley 02-05-2009 01:16 PM

Really bad server -downloads begin after about 30 seconds and then proceed for about 45 seconds before stalling again. I've stopped and restarted the download about 7 times now and have gotten a total of 340KB transferred. I've only persisted because I am flat-out crazy -more sane folks wouldn't last so long, so if you plan to get feedback you need to find a more efficient way to transfer your info. I'm really not even sure what I'm supposed to be downloading. Are these altered sources? If so, simply clean them up ba running 'make distclean' in them, then change the name of the folder so it is not the original name. Then unpack the original sources right beside them and create a diff of the dirs by running something like this:
diff -pruN original-dir your-dir > my-changes.diff
Then post the diff here (in CODE tags) or offer to email it anyone who might be interested in helping.

guanx 02-05-2009 01:24 PM

Quote:

Originally Posted by gnashley (Post 3433296)
Really bad server -downloads begin after about 30 seconds and then proceed for about 45 seconds before stalling again. I've stopped and restarted the download about 7 times now and have gotten a total of 340KB transferred. I've only persisted because I am flat-out crazy -more sane folks wouldn't last so long, so if you plan to get feedback you need to find a more efficient way to transfer your info. I'm really not even sure what I'm supposed to be downloading. Are these altered sources? If so, simply clean them up ba running 'make distclean' in them, then change the name of the folder so it is not the original name. Then unpack the original sources right beside them and create a diff of the dirs by running something like this:
diff -pruN original-dir your-dir > my-changes.diff
Then post the diff here (in CODE tags) or offer to email it anyone who might be interested in helping.

Please see the attachment above. I did not know it was so slow for ftp. I often login to Cologne through that server. Maybe wget can work better than the traditional ftp program.

gnashley 02-05-2009 03:53 PM

Okay, that's a lot better. I did try using wget with the original link but still was getting estinated times of several hours. Instead i found the original tarball from the mc site.
I wasn't able to get a clean compile though -probably because of my Slack-11-ish install which doesn't even include all the originals.
But, I did look into the language files, which seems to be what you wanted help with. Most of them are using iso8859 encoding, so
-f ISO_8859-X -t utf8
should work for most of them. You'll have to figure out exactly which iso-8859 variant is used for each of them though. I'm sure there is a way to get the info -the only list I know of that correlates the iso number with the language by name is the one in the kernel configuration. So, running 'make menuconfig' in the kernel sources and going to the codepage section may be helpful.

The regular english mc.hint and the Dutch(Nederlandisch) mc.hint.nl are in aSCII text.
These are probably all cyrillic
mc.hint.ru (Russian)
mc.hint.sr (Serbian)
mc.hint.uk (Ukrainian)
And the rest are probably using the iso set for western and central Europe. The problem is that using the file command only reports 'iso-8859 text' for all of them except english and dutch.
Sorry I can't be of more help. I've been working on several versions of mc lately. debian is using 4.6.2 but with a lot of patches which fix many things. You might do well to coordinate with that version -I saw that there were some problems with the utf8 patch -if anyone has fixed them it would surely be debian. Another possibility would be to coordinate your patches with the forked version:
mc-MP 4.1.x
This is a fork of an earlier version that still doesn't include all the glib2 and gnome dependency issues
The latest version is:
mc-4.1.40-pre9.tar.gz

You really might do best by investigating the debian version:
mc_4.6.2~git20080311
I just checked the debian patch and they are using the utf8 patch from mandriva since the other patch they had been using didn't work for some locales.

guanx 02-05-2009 04:50 PM

Thank you! Gnashley. Looking into "menuconfig" helps a lot.

I wish to know if the following list is correct:
Code:

mc.hint    iso8859-1  English
mc.hint.cs  iso8859-2  Czech
mc.hint.es  iso8859-3  Spainish
mc.hint.hu  iso8859-2  Hungarian
mc.hint.it  iso8859-1  Italian
mc.hint.nl  iso8859-1  Dutch
mc.hint.pl  iso8859-2  Polish
mc.hint.ru  koi8-r      Russian
mc.hint.sr  iso8859-5  Serbian
mc.hint.uk  koi8-u      Ukrainian
mc.hint.zh  big5        Chinese

The Debian community has done a lot for mc. Will it be better that they submit their patches to http://www.midnight-commander.org ? The mc developers are very active recently.

I don't have time to look into every patch, so only patches that are most valuable for me are applied. The patches come from various people. Only the iso9660 patch is from me.

I would base on the official source package in case the software branches like BSD (then I will be messed up).

gnashley 02-06-2009 01:19 AM

debian maintainers are very good about reporting fixes upstream to the original developers, so many of their fixes are probably getting incorporated in the main code. The three patches you are using applied with many errors against the git version that debian is using.

The last code submission for version 4.6.2 was on 2008-02-19. the next official submit was on 2008-12-18, so for most of 2008 nothing was done. Most of the new changes from that point on are by three new authors, one of whom is the debian maintainer for mc. so you can be pretty sure that most of the debian changes are going upstream. debian is alos good about using patches from other distros when they have done things right. As I mentioned, some fixes for the utf8 feature came from mandriva.

So, I'd definetly recommend you to use the latest sources that debian is using:
mc_4.6.2~git20080311.orig.tar.gz
Those are clean sources taken from the mc git repository. But, get the debian patch also:
mc_4.6.2~git20080311-4.diff.gz
When you apply that patch it will not patche the inetrnal files directly. Instead all the patches are placed in the debian/patches directory of the sources. That way you can choose which ones you want to use. they are even divided up into categories.

And, it is always helpful to have a good look at the debian/rules file and any others used for the build. In the case of mc, debian is using something called Colin's Build System which has a file called 'rocks' with some goodies in it like this:
Code:

iconv -f ISO-8859-1 -t UTF-8 mc.hint > tmp && mv tmp mc.hint && \
        iconv -f ISO-8859-1 -t UTF-8 mc.hlp > tmp && mv tmp mc.hlp && \
        iconv -f ISO-8859-1 -t UTF-8 mc.hint.es > tmp && mv tmp mc.hint.es && \
        iconv -f ISO-8859-1 -t UTF-8 mc.hlp.es > tmp && mv tmp mc.hlp.es && \
        iconv -f ISO-8859-1 -t UTF-8 mc.hint.it > tmp && mv tmp mc.hint.it && \
        iconv -f ISO-8859-1 -t UTF-8 mc.hlp.it > tmp && mv tmp mc.hlp.it && \
        iconv -f ISO-8859-1 -t UTF-8 mc.hint.nl > tmp && mv tmp mc.hint.nl && \
        iconv -f ISO-8859-2 -t UTF-8 mc.hint.cs > tmp && mv tmp mc.hint.cs && \
        iconv -f ISO-8859-2 -t UTF-8 mc.hint.hu > tmp && mv tmp mc.hint.hu && \
        iconv -f ISO-8859-2 -t UTF-8 mc.hlp.hu > tmp && mv tmp mc.hlp.hu && \
        iconv -f ISO-8859-2 -t UTF-8 mc.hint.pl > tmp && mv tmp mc.hint.pl && \
        iconv -f ISO-8859-2 -t UTF-8 mc.hlp.pl > tmp && mv tmp mc.hlp.pl && \
        iconv -f ISO-8859-5 -t UTF-8 mc.hint.sr > tmp && mv tmp mc.hint.sr && \
        iconv -f ISO-8859-5 -t UTF-8 mc.hlp.sr > tmp && mv tmp mc.hlp.sr && \
        iconv -f ISO-8859-5 -t UTF-8 mc.menu.sr > tmp && mv tmp mc.menu.sr && \
        iconv -f koi8-r -t UTF-8 mc.hint.ru > tmp && mv tmp mc.hint.ru && \
        iconv -f koi8-r -t UTF-8 mc.hlp.ru > tmp && mv tmp mc.hlp.ru && \
        iconv -f koi8-u -t UTF-8 mc.hint.uk > tmp && mv tmp mc.hint.uk && \
        iconv -f big5 -t UTF-8 mc.hint.zh > tmp && mv tmp mc.hint.zh

Tadaaa!
Hope this has helped you some more.

guanx 02-07-2009 03:53 AM

Thank you! Gnashley, I have updated the attachment in post #3 of this thread. Now all the hint files are converted, and the TMP directory is now postfixed with "SlackBuild.$$". So there is no apparent security hole in the build process.


All times are GMT -5. The time now is 01:38 AM.