From: Lars Eighner (eighner@io.com)
Date: Sat 14 Oct 2000 - 01:48:08 IST
In our last episode, <200010131335.IAA03937@interlink-bbs.com>,
the lovely and talented Russell Marks
RM> It's possibly a little odd to post a reply on linux-svgalib, but I
RM> didn't want people to think I'd just ignored this. :-)
There isn't a freebsd-svgalib mailing list and the FreeBSD port is less
than a month old (not even mouses yet). (Besides svgalib is heresy
on the freebsd lists.)
>> I get [zgv] to work from a ttyv that root is signed into, and it is
>> swift, beautiful, wonderful, etc. But it
RM> Nooooo! What did you do to it!? :-)
It is wonderful, especially the way it handles animated gifs.
This is the first console thing for a uniod that I have found
that I can pronounce better than anything I have seen on DOS.
>> is kind of beside the point as the whole idea is to run it as a
>> regular user.
>>
>> So basically, I got the trivia out of the way but since I have no
>> idea what I am doing, I can't solve the
RM> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ I can relate to that. :-)
>> central problem.
>>
>> Here is where the problem is in the original code:
>>
RM> [zgv.c's fixvt() snipped]
>> Here are the changes I have made to it so far: mostly due to using
>> consio.h instead of vt.h
RM> You don't actually say where it's giving up, though. I'll guess
RM> it's here:
>> /* now, before we go for it, we test the *current* VT to see if
>> they * own it. If so, the user's probably `genuine'. * (NB: the
>> kernel now does this, but there's no harm repeating it.) */
>> snprintf(vt_filename,sizeof(vt_filename),"/dev/ttyv%x",original_vt);
>> stat(vt_filename,&sbuf); if(getuid()!=sbuf.st_uid) {
>> fprintf(stderr, "zgv: you must be the owner of the current console
>> to run zgv.\n"); exit(1); }
RM> Does it work if you cut out the if()?
Kernel panic from page fault. (Maybe I did something wrong, but since
I got it working --see below-- I'm not spending the rest of my life
trying to reproduce this.)
RM> Have you checked what
RM> getuid() and sbuf.st_uid are? Is stat() working?
Yes. It is very curious. Getuid is the user, but sbuf.st_uid
is root - in other words (I think) it knows I'm me, but running
suid it thinks my virtual console belongs to root.
Well, I discovered when I tested for the right major mode (a
FreeBSD ttyv is 12) we branched out before we got to this point
and my argument was really with svgalib, not zgv. I hacked
the ID test out of svgalib 8^} and everything works great, I ditch
root when vga inits, and everything seem fine. Works great
with lynx. Next objective: make it the image viewer for
console xemacs!
>> Known dependencies: svgalib, jpeglib, pnglib, tifflib --
RM> tifftopnm, you mean, and it's not actually a requirement. :-) I've
RM> noticed a rather hairy problem with the TIFF support though, so
RM> I'd recommend disabling it for now (making it return an error in
RM> vgadisp.c is probably easiest). I've fixed that in 5.2, which I
RM> should be releasing in a few days.
>> uses gawk as is, but of course it could be awk (just for man page),
>> [...]
RM> Unfortunately, "of course it could be awk" is probably not the
RM> case. Quoting makeman.awk:
>> # Requires gawk (it uses `gensub' (gawk only?) and `[:blank:]'
>> (POSIX)).
I did it both ways and didn't notice a problem. But then I don't
spend a lot of time reading docs :-).
Probably I won't be porting this to FreeBSD because they are afraid
the commies are going to come in through svgalib as it was and
they will be very nasty if I admit to hacking it. Of course, they
think everyone is running a major net server that controls NORAD
and don't get it that some people run FreeBSD at home where security
is a beagle that will nip anyone else who tries to su root
RM> `gensub' is gawk-specific, and there are some uses of it in there
RM> which I think would be rather difficult to convert to
RM> sub/gsub. I've already run into this one with xzgv; my `solution'
RM> there was (or rather, will be, in 0.6) to just include a prebuilt
RM> man page in the tgz. A bit crap, but it works. :-)
>> zgv/Makefile
>>
>> line 31: delete src/install-info from src:
>>
>> This install-info is meant to take the place of texinfo 3.12. Since
>> texinfo is installed with the system in FreeBSD (and since I can't
>> get this install-info to work, and since it has nothing to do with
>> the basic purpose of zvg) we pretty much have no use for it.
RM> True enough, but what's the problem?
It pukes on the FreeBSD getopts.h -- although there are unfortunately
a lot of totally unrelated headers that have the name getopts.
>> zgv/src/readnbkey.c
RM> [...]
>> line 48 & line 52-62: comment out.
>>
>> This is a bad hack to deal with a bad hack. For certain historic
>> and mnemonic reason best known to the author, he wishes to emmulate
>> the old behavior of keyboards with only 10 F keys so that Shift-F1
>> = F11 and Shift-F2 = F12. He is
RM> It's more to do with what the old keymaps did. [1] The idea is to
RM> give consistent behaviour whether F11/F12 are distinguishable or
RM> not - with the old keymaps you couldn't tell the difference
RM> between (e.g.) Shift-F1 and F11, so this is the only approach
RM> which works in all cases. You've done the right thing though,
RM> assuming FreeBSD hasn't had this keymap-change problem.
RM> [1] With `old' here meaning `you *do* realise that zgv dates back
RM> to 1993, right?'. :-)
1993 -- when dinosaurs roamed the earth.
Thanks. Zgv is just great. I can't think of anything I want
that isn't there.
--
Lars Eighner eighner@io.com http://www.io.com/~eighner/
Save the Rainforest! Eat a vegetarian!
------------------------------------------------------------------
Unsubscribe: To: listbot@svgalib.org
Body: unsubscribe linux-svgalib
This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:23 IST