cleanup and blurbs

svn path=/trunk/kdebase/konsole/; revision=64559
wilder-portage
Lars Doelle 26 years ago
parent 27d30eb361
commit c0cce28724
  1. 2
      other/Makefile.am
  2. 15
      other/README
  3. 3
      other/README.Desktop
  4. 73
      other/README.KeyTab
  5. 27
      other/README.Schema
  6. 21
      other/default.Keytab
  7. 2
      other/default.Schema
  8. 2
      other/linux.keytab
  9. 49
      other/makefont.c
  10. 120
      other/patch-anyfont
  11. 506
      other/secure.patch
  12. BIN
      other/vga.pcf.gz
  13. 2
      other/vt420pc.keytab
  14. 171
      other/xterm.ti

@ -8,7 +8,7 @@ data_DATA = BlackOnLightYellow.schema BlackOnWhite.schema \
Transparent_lightbg.schema \
linux.desktop mc.desktop shell.desktop su.desktop \
default.Keytab linux.keytab vt100.keytab vt420pc.keytab \
Schema.README
README.Schema README.KeyTab
KDE_ICON = konsole

@ -0,0 +1,15 @@
[README]
Beside a few png pictures you find
- *.schema : README.Schema
- *.keytab : README.KeyTab
- *.desktop : README.Desktop
files here.
Please consult the indicated READMEs
to learn about their syntax and purpose.
kcmkonsole.C, brightness.png, colorness.png, contrast.png
is an old attempt to write a configurator for these files.

@ -0,0 +1,3 @@
[README.Desktop]

@ -0,0 +1,73 @@
[README.KeyTab]
The keytabs offered in the Options/Keyboard menu are
taken from from configurations files with a *.keytab
pattern either located in $KDEDIR/share/apps/konsole
or ~/.kde/share/apps/konsole.
Keytabs allow to configure the behavior of konsole
on keyboard events, especially for functions keys.
Please have a look into the README.keyboard file, too.
The syntax is that each entry has the form :
"key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
Keynames are those defined in <qnamespace.h> with the
"Qt::Key_" prefix removed.
Mode names are:
- Shift : Shift Key pressed
- Alt : Alt Key pressed
- Control : Control Key pressed
( The VT100 emulation has modes that can affect the
sequences emitted by certain keys. These modes are
under control of the client program.
- Newline : effects Return and Enter key.
- Application : effects Up and Down key.
- Ansi : effects Up and Down key (This is for VT52, really).
Since sending a state to a program that has set the state
itself is positivly wrong and obsolete design, better forget
about this nasty detail. I may well remove this "feature"
in a future clean up round. )
A "+" preceeding a Modename means the Key is pressed.
A "-" preceeding a Modename means the Key is not pressed.
If no mode is given it means don't care.
Note that the combination of Key and Modes (set/reset)
has to be unique. This means, that
key A + Shift : "A"
key A : "a"
will not accept the small letter "a" rule as expected,
one has to add a "- Shift" to the last clause. Use
the stdout/stderr dianostics of konsole when modifying
keytabs to find problems like this.
Operations are
- prevSession : change to the previous session, if any
- nextSession : change to the next session, if any
- scrollUpLine : scroll up one line in the history log
- scrollUpPage : scroll up one page in the history log
- scrollDownLine : scroll down one line in the history log
- scrollDownPage : scroll down one page in the history log
- emitSelection : "paste" the current selection
Strings have the syntax of C strings,
one may use the following escapes:
- \E - escape
- \\ - backslash
- \" - double quote
- \t - tab
- \r - return
- \n - newline
- \b - backspace
- \xHH - where HH are two hex digits

@ -1,4 +1,4 @@
[README.schema]
[README.Schema]
The schemata offered in the Options/Schema menu are
taken from from configurations files with a *.schema
@ -6,7 +6,7 @@ pattern either located in $KDEDIR/share/apps/konsole
or ~/.kde/share/apps/konsole.
Schemata allow to configure the color set that konsole
uses, together with some more information on redition
uses, together with some more information on rendition
processing.
Syntax
@ -40,10 +40,10 @@ Meaning
When a schema uses a background image (or transparency)
one has to make at least one color slot transparent to
get any visible effect. Please read below about the
achive any visible effect. Please read below about the
"Transparent" field in color,sysbg,sysfg.
- The "transparency" clause picks uses the background
- The "transparency" clause picks and uses the background
of the desktop as if it where an image together with
a fade effect. This effect will fade the background
to the specified color.
@ -61,7 +61,7 @@ Meaning
To this end, konsole offers 20 color slots.
Slot Meaning
----- -------------------------------------------
----- --------------------------
0 regular foreground color
1 regular background color
2-9 regular bgr color 0-7
@ -69,8 +69,10 @@ Meaning
11 intensive background color
12-19 intensive bgr color 0-7
The "normal" meaning of the "bgr" color codes
is a bitwise interpretation.
The traditional meaning of the "bgr" color codes
has a bitwise interpretation of an additive three
primary color scheme inherited from early EGA
color terminals.
Color Bits Colors
----- ---- -------
@ -83,8 +85,7 @@ Meaning
6 110 Cyan
7 111 White
This assumes a three primary colors in an additive
color scheme. One may or may not stick to this.
One may or may not stick to this tradition.
Konsole allows to assign colors freely to slots.
The slots fall apart into two groups, regular
@ -110,10 +111,10 @@ Meaning
- Bold (0/1) to render characters bold.
If you a little about the escape codes, you'll
have noticed that intensive and bold rendition
are sort of confused. This is inherited by the
xterm which we are simulating.
If you know about the escape codes, you might have
noticed that intensive and bold rendition are sort
of confused. This is inherited by the xterm which
konsole is simulating.
One can use the colortest.sh script supplied
with the konsole source distribution to test

@ -2,33 +2,22 @@
# --------------------------------------------------------------
#
# This file in included only for reference purposes.
# This file is used to create the buildin keyboard table.
# It is included for reference purpose with the *.keytab
# files that are loaded dynamically.
#
# Modifying it does not have any effect (unless you
# derive the default.keytab.h and recompile konsole).
#
# To customize your keyboard, copy this file to something
# ending with .keytab and change it to meet you needs.
# Please read the README.KeyTab and the README.keyboard
# in this case.
#
# --------------------------------------------------------------
keyboard "xterm (default)"
# --------------------------------------------------------------
#
# The syntax of each entry has the form
#
# "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
#
# Keynames are those defined in <qnamespace.h>
# with the "Qt::Key_" prefix removed.
#
# Mode names are: Shift, Alt, Control.
#
# If the key is not found here, the text of the
# key event as provided by QT is emitted, possibly
# preceeded by ESC if the Alt key is pressed.
#
# --------------------------------------------------------------
#
# Note that this particular table is a "risc" version made to

@ -4,7 +4,7 @@
title Konsole Defaults
image tile /opt/kde/share/wallpapers/gray2.jpg
# image tile /opt/kde/share/wallpapers/gray2.jpg
# foreground colors

@ -118,6 +118,8 @@ key Space +Control : "\x00"
# some of keys are used by konsole.
key Left +Shift : prevSession
key Right +Shift : nextSession
key Up +Shift : scrollLineUp
key Prior +Shift : scrollPageUp
key Down +Shift : scrollLineDown

@ -1,49 +0,0 @@
/*
makes vga font for X11
use with font specification from /usr/src/linux/drivers/video/font_*.c
usage: makefont > linux8x16.bdf
bdftopcf -o linux8x16.pcf linux8x16.bdf
gzip linux8x16.pcf
use X Y A with
8 8 1 font_8x8
6 11 3 font_6x11.c
8 16 4 font_8x16.c
*/
/* insert font file here */
#define X 6
#define Y 11
#define A 3
main()
{ int i,j;
printf("STARTFONT 2.1\n");
printf("COMMENT Linux console font %dx%d\n",X,Y);
printf("FONT linux%dx%d\n",X,Y);
printf("SIZE 8 75 75\n");
printf("FONTBOUNDINGBOX %d %d 0 %d\n",X,Y,-A);
printf("STARTPROPERTIES 2\n");
printf("FONT_DESCENT %d\n",A);
printf("FONT_ASCENT %d\n",X-A);
printf("ENDPROPERTIES\n");
printf("CHARS 256\n");
for (i = 0; i < 256; i++)
{
printf("STARTCHAR x%02x\n",i);
printf("ENCODING %d\n",i);
printf("SWIDTH %d %d\n",0,0);
printf("DWIDTH %d %d\n",X,0);
printf("BBX %d %d %d %d\n",X,Y,0,-A);
printf("BITMAP\n");
for (j = 0; j < Y; j++)
{
printf("%02x\n",(unsigned char)fontdata_6x11[Y*i+j]);
}
printf("ENDCHAR x%02x\n",i);
}
printf("ENDFONT\n");
}

@ -1,120 +0,0 @@
NOTE: this is most probably broken, better keep hands off here.
--- TEWidget.C Wed May 6 19:05:54 1998
+++ TEWidget.C-withANY_FONT Wed May 6 19:02:21 1998
@@ -184,6 +184,9 @@
QPainter paint;
setUpdatesEnabled(FALSE);
paint.begin( this );
+#ifdef ANY_FONT
+ paint.setBackgroundMode( TransparentMode );
+#endif
QPoint tL = contentsRect().topLeft();
int tLx = tL.x();
@@ -225,6 +228,14 @@
disstr[len] = ext[x+len].c;
}
//printf("draw: %d %d %d\n",y,x,len);
+#ifdef ANY_FONT
+ cb = ext[x].b;
+ if (!pm || cb != DEFAULT_BACK_COLOR)
+ paint.fillRect(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h,
+ color_table[cb]);
+ else
+ erase(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h);
+#else
if (ext[x].b != cb)
{
cb = ext[x].b;
@@ -238,12 +249,23 @@
}
if (pm && cb == DEFAULT_BACK_COLOR)
erase(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h);
- paint.drawText(blX+tLx+font_w*x,bY+tLy+font_a+font_h*y, disstr,len);
- if (cr & RE_BOLD)
- paint.drawText(blX+tLx+font_w*x+1,bY+tLy+font_a+font_h*y, disstr,len);
- if (cr & RE_UNDERLINE)
- paint.drawLine(blX+tLx+font_w*x, bY+tLy+font_a+font_h*y+1,
- blX+tLx+font_w*(x+len),bY+tLy+font_a+font_h*y+1 );
+#endif
+#ifdef ANY_FONT
+ if (fixed_font)
+ {
+#endif
+ paint.drawText(blX+tLx+font_w*x,bY+tLy+font_a+font_h*y, disstr,len);
+ if (cr & RE_BOLD)
+ paint.drawText(blX+tLx+font_w*x+1,bY+tLy+font_a+font_h*y, disstr,len);
+ if (cr & RE_UNDERLINE)
+ paint.drawLine(blX+tLx+font_w*x, bY+tLy+font_a+font_h*y+1,
+ blX+tLx+font_w*(x+len),bY+tLy+font_a+font_h*y+1 );
+#ifdef ANY_FONT
+ }
+ else // proportional font
+ for (int i = 0; i < len; i++)
+ paint.drawText(blX+tLx+font_w*(x+i),bY+tLy+font_a+font_h*y, disstr+i,1);
+#endif
x += len - 1;
}
}
@@ -310,6 +332,13 @@
{
disstr[len] = image[loc(x+len,y)].c; len += 1;
}
+#ifdef ANY_FONT
+ if (!pm || cb != DEFAULT_BACK_COLOR)
+ paint.fillRect(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h,
+ color_table[cb]);
+ else
+ erase(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h);
+#else
if (!pm || cb != DEFAULT_BACK_COLOR)
{
if (blinking)
@@ -326,14 +355,25 @@
paint.setBackgroundMode( TransparentMode );
erase(blX+tLx+font_w*x,bY+tLy+font_h*y,font_w*len,font_h);
}
+#endif
if (!blinking || !(cr & RE_BLINK))
{
- paint.drawText(blX+tLx+font_w*x,bY+tLy+font_a+font_h*y, disstr,len);
- if (cr & RE_BOLD)
- paint.drawText(blX+tLx+font_w*x+1,bY+tLy+font_a+font_h*y, disstr,len);
- if (cr & RE_UNDERLINE)
- paint.drawLine(blX+tLx+font_w*x, bY+tLy+font_a+font_h*y+1,
- blX+tLx+font_w*(x+len),bY+tLy+font_a+font_h*y+1 );
+#ifdef ANY_FONT
+ if (fixed_font)
+ {
+#endif
+ paint.drawText(blX+tLx+font_w*x,bY+tLy+font_a+font_h*y, disstr,len);
+ if (cr & RE_BOLD)
+ paint.drawText(blX+tLx+font_w*x+1,bY+tLy+font_a+font_h*y, disstr,len);
+ if (cr & RE_UNDERLINE)
+ paint.drawLine(blX+tLx+font_w*x, bY+tLy+font_a+font_h*y+1,
+ blX+tLx+font_w*(x+len),bY+tLy+font_a+font_h*y+1 );
+#ifdef ANY_FONT
+ }
+ else // proportional font
+ for (int i = 0; i < len; i++)
+ paint.drawText(blX+tLx+font_w*(x+i),bY+tLy+font_a+font_h*y, disstr+i,1);
+#endif
}
x += len - 1;
}
@@ -458,6 +498,14 @@
font_h = fontMetrics().height();
font_w = fontMetrics().maxWidth();
font_a = fontMetrics().ascent();
+#ifdef ANY_FONT
+ //FIXME: this is broken. QT returns false for "9x15"!
+ // anyway, the option is deactivated by default
+ // and the bug will only harm a speed penalty.
+ fixed_font = fontInfo().fixedPitch();
+#else
+ fixed_font = TRUE;
+#endif
setMinimumSize(blX+brX+5*font_w,2*bY+5*font_h);

@ -1,506 +0,0 @@
NOTE: do not try to apply this patch. It is internal material
diff -ur konsole-latest/CVS/Entries konsole-xxx/CVS/Entries
--- konsole-latest/CVS/Entries Sun Dec 20 12:35:22 1998
+++ konsole-xxx/CVS/Entries Wed Dec 9 13:27:06 1998
@@ -10,4 +10,9 @@
/README.color.schema/1.1/Sat Nov 7 08:12:45 1998//
/README.linux.console/1.8/Thu Nov 5 06:21:33 1998//
/TODO/1.6/Mon Nov 23 12:11:42 1998//
-D
+D/config////
+D/doc////
+D/include////
+D/other////
+D/src////
+D/tests////
Only in konsole-latest/CVS: Entries.Log
Only in konsole-xxx: Makefile
Only in konsole-xxx: Makefile.in
diff -ur konsole-latest/config/CVS/Entries konsole-xxx/config/CVS/Entries
--- konsole-latest/config/CVS/Entries Sun Dec 20 12:35:22 1998
+++ konsole-xxx/config/CVS/Entries Wed Dec 9 13:11:28 1998
@@ -1 +1,2 @@
-D
+D/static////
+D/var////
Only in konsole-latest/config/CVS: Entries.Log
diff -ur konsole-latest/doc/CVS/Entries konsole-xxx/doc/CVS/Entries
--- konsole-latest/doc/CVS/Entries Sun Dec 20 12:35:24 1998
+++ konsole-xxx/doc/CVS/Entries Wed Dec 9 13:11:28 1998
@@ -5,4 +5,6 @@
/histBuffer/1.1.1.1/Wed Oct 28 05:22:37 1998//
/missing.codes/1.1.1.1/Wed Oct 28 05:22:37 1998//
/missing.keys/1.1.1.1/Wed Oct 28 05:22:37 1998//
-D
+D/More////
+D/VT100////
+D/sgml////
Only in konsole-latest/doc/CVS: Entries.Log
Only in konsole-xxx/doc: Makefile
Only in konsole-xxx/doc: Makefile.in
diff -ur konsole-latest/doc/More/CVS/Entries konsole-xxx/doc/More/CVS/Entries
--- konsole-latest/doc/More/CVS/Entries Sun Dec 20 12:35:58 1998
+++ konsole-xxx/doc/More/CVS/Entries Mon Dec 14 04:52:45 1998
@@ -5,7 +5,6 @@
/dec_vt100_codes.txt/1.1.1.1/Wed Oct 28 05:22:37 1998//
/iowa_vt100_news.txt/1.1.1.1/Wed Oct 28 05:22:37 1998//
/k95vtnttn.html/1.1.1.1/Wed Oct 28 05:22:37 1998//
-/rxvt-ref.html/1.1/Mon Dec 14 03:48:10 1998//
/swedish_vt102_codes.txt/1.1.1.1/Wed Oct 28 05:22:37 1998//
/villanova-vt100-esc-codes.txt/1.1.1.1/Wed Oct 28 05:22:37 1998//
/vt100_codes_news.txt/1.1.1.1/Wed Oct 28 05:22:37 1998//
@@ -16,4 +15,5 @@
/vt100_setup.txt/1.1.1.1/Wed Oct 28 05:22:37 1998//
/vttest.html/1.1.1.1/Wed Oct 28 05:22:37 1998//
/xterm.codes/1.1.1.1/Wed Oct 28 05:22:37 1998//
+/rxvt-ref.html/1.1/Fri Dec 11 21:49:44 1998//
D
diff -ur konsole-latest/doc/VT100/CVS/Entries konsole-xxx/doc/VT100/CVS/Entries
--- konsole-latest/doc/VT100/CVS/Entries Sun Dec 20 12:36:32 1998
+++ konsole-xxx/doc/VT100/CVS/Entries Mon Dec 14 04:39:53 1998
@@ -9,6 +9,6 @@
/genDocument/1.5/Thu Dec 3 23:01:24 1998//
/genTC.pl/1.6/Fri Dec 4 15:37:32 1998//
/t.pl/1.1.1.1/Wed Oct 28 05:22:38 1998//
-/techref.html/1.7/Fri Dec 4 15:37:33 1998//
/vt100.gif/1.2/Thu Nov 26 07:56:13 1998//
+/techref.html/1.7/Thu Dec 10 00:30:03 1998//
D
Only in konsole-xxx/doc/VT100: Makefile
Only in konsole-xxx/doc/VT100: Makefile.in
Only in konsole-xxx/doc/sgml: Makefile
Only in konsole-xxx/doc/sgml: Makefile.in
diff -ur konsole-latest/include/CVS/Entries konsole-xxx/include/CVS/Entries
--- konsole-latest/include/CVS/Entries Sun Dec 20 12:36:41 1998
+++ konsole-xxx/include/CVS/Entries Mon Dec 14 05:09:15 1998
@@ -7,7 +7,7 @@
/TEmuVt102.h/1.5/Mon Nov 30 12:12:50 1998//
/TEmulation.h/1.4/Mon Nov 30 12:12:52 1998//
/kcmkonsole.h/1.6/Tue Nov 10 10:35:06 1998//
-/main.h/1.11/Mon Dec 14 03:59:24 1998//
/schema.h/1.1/Fri Nov 6 04:35:48 1998//
/session.h/1.5/Mon Nov 9 08:55:38 1998//
+/main.h/1.11/Mon Dec 14 04:07:42 1998//
D
Only in konsole-xxx/include: Makefile
Only in konsole-xxx/include: Makefile.in
diff -ur konsole-latest/include/TEShell.h konsole-xxx/include/TEShell.h
--- konsole-latest/include/TEShell.h Sun Nov 1 19:47:42 1998
+++ konsole-xxx/include/TEShell.h Mon Dec 14 13:18:42 1998
@@ -30,9 +30,11 @@
public:
Shell(int login_shell);
~Shell();
+ static void killall();
public:
int run(char* argv[], const char* term);
+ void kill();
signals:
void done(int status);
@@ -63,9 +65,13 @@
private:
void makeShell(const char* dev, char* argv[], const char* term);
+ int openShell();
private:
+ char ptynam[11]; // "/dev/pty??";
+ char ttynam[11]; // "/dev/tty??";
+ pid_t processid;
int fd;
struct termios tp;
int login_shell;
diff -ur konsole-latest/include/main.h konsole-xxx/include/main.h
--- konsole-latest/include/main.h Mon Dec 14 04:59:24 1998
+++ konsole-xxx/include/main.h Mon Dec 14 14:05:27 1998
@@ -32,7 +32,7 @@
public:
- TEDemo(const char* args[], int login_shell);
+ TEDemo(const char* args[], int login_shell, int sec);
~TEDemo();
void setColLin(int columns, int lines);
@@ -58,6 +58,8 @@
void setHeader();
void changeTitle(int,char*s);
void onDrop( KDNDDropZone* _zone );
+
+ void massacre();
protected:
@@ -67,6 +69,7 @@
private slots:
void setSchema(int n);
+ virtual bool queryExit();
private:
diff -ur konsole-latest/other/CVS/Entries konsole-xxx/other/CVS/Entries
--- konsole-latest/other/CVS/Entries Sun Dec 20 12:36:51 1998
+++ konsole-xxx/other/CVS/Entries Mon Dec 14 04:50:27 1998
@@ -6,7 +6,6 @@
/GreenOnBlack.schema/1.1.1.1/Wed Oct 28 05:22:38 1998//
/LightPicture.schema/1.1/Sat Dec 5 22:42:41 1998//
/Linux.schema/1.1/Thu Nov 5 02:04:44 1998//
-/Makefile.am/1.9/Mon Dec 14 03:45:47 1998//
/WhiteOnBlack.schema/1.1.1.1/Wed Oct 28 05:22:38 1998//
/XTerm.schema/1.1/Thu Nov 5 02:04:47 1998//
/brightness.xpm/1.1/Tue Nov 10 08:50:05 1998//
@@ -15,15 +14,16 @@
/default.Schema/1.1.1.1/Wed Oct 28 05:22:38 1998//
/konsole-mini.xpm/1.2/Wed Nov 25 21:59:00 1998//
/konsole.xpm/1.2/Wed Nov 25 21:59:02 1998//
-/linux.kdelnk/1.7/Thu Dec 17 13:22:48 1998//
/linux8x16.pcf.gz/1.1/Thu Oct 29 04:40:27 1998//
/linux8x8.pcf.gz/1.1/Thu Nov 5 06:21:45 1998//
/makefont.c/1.2/Thu Nov 5 06:21:45 1998//
-/mc.kdelnk/1.5/Sun Dec 13 14:25:47 1998//
/patch-anyfont/1.1.1.1/Wed Oct 28 05:22:39 1998//
-/shell.kdelnk/1.5/Sun Dec 13 14:25:48 1998//
/syscolor.schema/1.1/Thu Oct 29 16:49:19 1998//
/vga.pcf.gz/1.1.1.1/Wed Oct 28 05:22:39 1998//
/vim.schema/1.1/Fri Nov 27 18:10:47 1998//
/xterm.ti/1.1.1.1/Wed Oct 28 05:22:39 1998//
+/linux.kdelnk/1.6/Mon Dec 14 03:39:53 1998//
+/mc.kdelnk/1.5/Mon Dec 14 03:39:53 1998//
+/shell.kdelnk/1.5/Mon Dec 14 03:39:53 1998//
+/Makefile.am/1.9/Mon Dec 14 03:48:41 1998//
D
Only in konsole-xxx/other: Makefile
Only in konsole-xxx/other: Makefile.in
diff -ur konsole-latest/other/linux.kdelnk konsole-xxx/other/linux.kdelnk
--- konsole-latest/other/linux.kdelnk Thu Dec 17 14:22:48 1998
+++ konsole-xxx/other/linux.kdelnk Mon Dec 14 04:39:53 1998
@@ -3,7 +3,6 @@
Type=KonsoleApplication
Name=Linux
Comment=Linux Console
-Comment[cs]=Linuxová konzole
Comment[es]=Consola Linux
Comment[no]=Linux-konsoll
Comment[pt_BR]=Console do Linux
Only in konsole-xxx/src: .deps
diff -ur konsole-latest/src/CVS/Entries konsole-xxx/src/CVS/Entries
--- konsole-latest/src/CVS/Entries Sun Dec 20 12:37:14 1998
+++ konsole-xxx/src/CVS/Entries Mon Dec 14 05:09:15 1998
@@ -6,7 +6,7 @@
/TEmuVt102.C/1.7/Fri Dec 4 00:43:23 1998//
/TEmulation.C/1.3/Sat Nov 14 21:54:32 1998//
/kcmkonsole.C/1.15/Mon Nov 30 12:12:54 1998//
-/main.C/1.32/Mon Dec 14 04:00:46 1998//
/schema.C/1.2/Fri Nov 27 18:10:49 1998//
/session.C/1.6/Mon Nov 9 08:55:46 1998//
+/main.C/1.32/Mon Dec 14 04:07:55 1998//
D
Only in konsole-xxx/src: Makefile
Only in konsole-xxx/src: Makefile.in
Only in konsole-xxx/src: TEScreen.o
diff -ur konsole-latest/src/TEShell.C konsole-xxx/src/TEShell.C
--- konsole-latest/src/TEShell.C Thu Nov 26 08:56:38 1998
+++ konsole-xxx/src/TEShell.C Mon Dec 14 15:34:23 1998
@@ -36,6 +36,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
+#include <sys/stat.h>
#include <grp.h>
#include "../../config.h"
@@ -60,6 +61,93 @@
/* -------------------------------------------------------------------------- */
+// Following class has a single instance.
+// It forms a trivial client/server pair connected via pipes.
+// The server is responsible to claim and release the rights on the tty line.
+// It has been separated for security reasons, since this is the only part of
+// the program running root.
+
+class Helper
+{
+ int toserver[2]; // 0 reading, 1 writing.
+ int toclient[2]; // 0 reading, 1 writing.
+
+public:
+
+ Helper()
+ {
+ assert(!pipe(toserver));
+ assert(!pipe(toclient));
+ int pid = fork();
+ if (pid == 0)
+ {
+ // This part of the program stays root/suid.
+ while(1)
+ { char buffer[100]; char ttynam[] = "/dev/tty??";
+ // we assume to receive everything in on piece
+ int len = read(toserver[0],buffer,sizeof(buffer)-1);
+ buffer[len] = 0;
+ if (sscanf(buffer,"get /dev/tty%c%c\n",ttynam+8,ttynam+9) == 2)
+ {
+ chown(ttynam,getuid(),getgid()); chmod(ttynam,0600);
+ }
+ else
+ if (sscanf(buffer,"drop /dev/tty%c%c\n",ttynam+8,ttynam+9) == 2)
+ {
+ chown(ttynam,0,0); chmod(ttynam,0666);
+ }
+ else
+ if (!strcmp(buffer,"quit\n"))
+ {
+printf("quitting\n");
+ exit(1);
+ }
+ else
+ printf("konsole: Helper does not understand '%s'.\n",buffer);
+ write(toclient[1],"\n",1); // sync
+ }
+ }
+ }
+
+ ~Helper()
+ {
+ }
+
+ // client
+
+ void getTty(char* dev)
+ // called after finding a usable pty.
+ {
+ assert(strlen(dev) == 10);
+ char buffer[100];
+ sprintf(buffer,"get %s\n",dev);
+ write(toserver[1],buffer,strlen(buffer)+1);
+ read(toclient[0],buffer,1); // wait for sync
+ }
+
+ void dropTty(char* dev)
+ // called when done.
+ {
+ assert(strlen(dev) == 10);
+ char buffer[100];
+ sprintf(buffer,"drop %s\n",dev);
+ write(toserver[1],buffer,strlen(buffer)+1);
+ read(toclient[0],buffer,1); // wait for sync
+ }
+
+ void quit()
+ // called to terminate helper
+ { char buffer[100];
+ sprintf(buffer,"quit\n");
+ write(toserver[1],buffer,strlen(buffer)+1);
+ read(toclient[0],buffer,1); // wait for sync
+ }
+};
+
+static Helper helper;
+
+/* -------------------------------------------------------------------------- */
+
void Shell::setSize(int lines, int columns)
// Tell the teletype handler what size the window is.
// Called after a window size change.
@@ -70,21 +158,21 @@
ioctl(fd,TIOCSWINSZ,(char *)&wsize);
}
-static char ptynam[] = "/dev/ptyxx";
-static char ttynam[] = "/dev/ttyxx";
-
static QIntDict<Shell> shells;
+static int forgetit = 0;
static void catchChild(int)
// Catch a SIGCHLD signal and propagate that the child died.
{ int status;
pid_t pid = wait(&status);
Shell* sh = shells.find(pid);
- if (sh) { shells.remove(pid); sh->doneShell(status); }
+ if (sh) { shells.remove(pid); sh->doneShell(forgetit?0:status); }
}
void Shell::doneShell(int status)
{
+ helper.dropTty(ttynam);
+printf("died %d\n",processid);
emit done(status);
}
@@ -93,7 +181,7 @@
pid_t comm_pid = fork();
if (comm_pid < 0) { fprintf(stderr,"Can't fork\n"); return -1; }
if (comm_pid == 0) makeShell(ttynam,argv,term);
- if (comm_pid > 0) shells.insert(comm_pid,this);
+ if (comm_pid > 0) { shells.insert(comm_pid,this); processid = comm_pid; }
return 0;
}
@@ -156,7 +244,7 @@
exit(1); // control should never come here.
}
-int openShell()
+int Shell::openShell()
{ int ptyfd; char *s3, *s4;
static char ptyc3[] = "pqrstuvwxyzabcde";
static char ptyc4[] = "0123456789abcdef";
@@ -180,7 +268,7 @@
}
if (ptyfd < 0) { fprintf(stderr,"Can't open a pseudo teletype\n"); exit(1); }
fcntl(ptyfd,F_SETFL,O_NDELAY);
-
+ helper.getTty(ttynam);
return ptyfd;
}
@@ -189,6 +277,9 @@
{
login_shell=ls;
+ ptynam = "/dev/ptyxx";
+ ttynam = "/dev/ttyxx";
+
fd = openShell();
signal(SIGCHLD,catchChild);
@@ -204,6 +295,24 @@
delete mn;
delete mw;
close(fd);
+}
+
+void Shell::killall()
+{
+ forgetit = 1;
+ QIntDictIterator<Shell> it( shells ); // iterator for dict
+ while ( it.current() )
+ {
+ it.current()->kill();
+ ++it;
+ }
+ helper.quit();
+}
+
+void Shell::kill()
+{
+printf("kill %d\n",processid);
+ ::kill(processid,SIGHUP);
}
void Shell::send_byte(char c)
Only in konsole-xxx/src: TEShell.moc
Only in konsole-xxx/src: TEShell.o
Only in konsole-xxx/src: TEWidget.moc
Only in konsole-xxx/src: TEWidget.o
Only in konsole-xxx/src: TEmuVt102.moc
Only in konsole-xxx/src: TEmuVt102.o
Only in konsole-xxx/src: TEmulation.moc
Only in konsole-xxx/src: TEmulation.o
Only in konsole-xxx/src: kcmkonsole
Only in konsole-xxx/src: kcmkonsole.moc
Only in konsole-xxx/src: kcmkonsole.o
Only in konsole-xxx/src: konsole
Only in konsole-xxx/src: kwrite
Only in konsole-xxx/src: libkonsole.a
diff -ur konsole-latest/src/main.C konsole-xxx/src/main.C
--- konsole-latest/src/main.C Mon Dec 14 05:00:46 1998
+++ konsole-xxx/src/main.C Mon Dec 14 15:08:03 1998
@@ -72,7 +72,7 @@
static QIntDict<KSimpleConfig> no2command;
static int cmd_serial = 0;
-TEDemo::TEDemo(const char* args[], int login_shell) : KTMainWindow()
+TEDemo::TEDemo(const char* args[], int login_shell, int sec) : KTMainWindow()
{
se = NULL;
title = PACKAGE;
@@ -104,7 +104,7 @@
loadSessionCommands();
m_file->insertSeparator();
- m_file->insertItem( i18n("E&xit"), kapp, SLOT(quit()));
+ m_file->insertItem( i18n("E&xit"), this, SLOT(massacre()));
// load schema /////////////////////////////////////////////////////////////
@@ -138,6 +138,16 @@
addSession(initial);
setColLin(lincol0.width(),lincol0.height());
+
+ if (sec)
+ KMsgBox::message
+ ( this,
+ i18n("Security Warning"),
+ QString(i18n("Konsole is not properly installed root/suid.")) +
+ "\n" +
+ i18n("This means you terminal line(s) cannot be secured."),
+ KMsgBox::EXCLAMATION );
+
}
/*!
@@ -560,7 +570,7 @@
void TEDemo::about()
//FIXME: make this a little nicer
{
- QString title, msg;
+ QString title = "", msg = "";
title.sprintf(i18n("About %s"), PACKAGE);
msg.sprintf(i18n(
@@ -811,6 +821,8 @@
int main(int argc, char* argv[])
{
+ int sec = (geteuid() != 0);
+
setuid(getuid()); setgid(getgid()); // drop privileges
kimgioRegister(); // add io for additional image formats
@@ -875,9 +887,9 @@
}
}
if (a.isRestored())
- RESTORE( TEDemo(eargs,login_shell) )
+ RESTORE( TEDemo(eargs,login_shell,sec) )
else {
- TEDemo* m = new TEDemo(eargs,login_shell);
+ TEDemo* m = new TEDemo(eargs,login_shell,sec);
m->title = a.getCaption();
if (strcmp("",sz) !=0) m->setColLin(c,l);
if (welcome) m->setCaption(i18n("Welcome to the console"));
@@ -886,6 +898,20 @@
}
return a.exec();
+}
+
+void TEDemo::massacre()
+{
+HERE;
+ Shell::killall();
+HERE;
+ QTimer::singleShot(1000,kapp,SLOT(quit())); // just in case some child refused to die
+}
+
+bool TEDemo::queryExit()
+{
+ massacre();
+ return 0;
}
#include "main.moc"
Only in konsole-xxx/src: main.moc
Only in konsole-xxx/src: main.o
Only in konsole-xxx/src: schema.o
Only in konsole-xxx/src: session.moc
Only in konsole-xxx/src: session.o

Binary file not shown.

@ -138,6 +138,8 @@ key Space +Control : "\x00"
# some of keys are used by konsole.
key Left +Shift : prevSession
key Right +Shift : nextSession
key Up +Shift : scrollLineUp
key Prior +Shift : scrollPageUp
key Down +Shift : scrollLineDown

@ -1,171 +0,0 @@
##############################################################################
# #
# Enhanced xterm terminfo entry #
# #
# Install xterm.ti by typing tic xterm.ti #
# #
# This file originates from the mc-4.1.21 distribution. #
# #
##############################################################################
##############################################################################
# #
# Basic xterm supports #
# #
##############################################################################
xterm-basic|xterm terminal base (X Window System),
# General Attributes #########################################################
# auto wrap around margin, special VT100 behavior to do so.
am, xenl,
# has meta (Alt) key set 8th bit
# this is not wise to set, since we may have 8bit char sets
# km,
# save to move while in insert/standout mode
mir, msgr,
# nr. of lines, nr. of columns
# hmm, does not make very much sence with a resizeable terminal
lines#65, cols#80,
# Erase overstrike with a blank. (BS only moves back in VT100)
eo,
# Miscelaneous ###############################################################
bel=^G,
cr=\r,
# Erasing ####################################################################
# Clear screen, EOL, EOS, BOL
clear=\E[2J, el=\E[K, ed=\E[J, el1=\E[1K,
# Scrolling ##################################################################
# Change scroll region
csr=\E[%i%p1%d;%p2%dr,
# Scroll text up, down
ind=\ED, ri=\EM,
# Tabulator ##################################################################
# Set tab stops, clear tab stops, tab character
# FIXME: does xterm use \E[3k instead of \E[3g (like vt102)?
hts=\EH, tbc=\E[3g, ht=\t,
# initial tab spaceing
it#8,
# Insert/Delete ##############################################################
# Enter insert mode, leave insert mode
smir=\E[4h, rmir=\E[4l,
# Delete: chars, lines, 1char, 1line
dch=\E[%p1%dP, dl=\E[%p1%dM,
dch1=\E[P, dl1=\E[M,
# Insert: chars, line, 1 char,
ich=\E[%p1%d@, il=\E[%p1%dL,
ich1=\E[@, il1=\E[L,
# Rendition ##################################################################
# Fonts: bold, reverse, blink, underline (enter/leave),
# standout (enter/leave), Define attribs 1-9
bold=\E[1m, rev=\E[7m,
rmul=\E[24m, smul=\E[4m, rmso=\E[m, smso=\E[7m,
# Code for line drawing, enter alternate char set and leave char set
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
smacs=\E(B\E)U^N,rmacs=\E(B\E)0^O,
enacs=\E(B\E)0,
# Cursor Movement ############################################################
# Make cursor invisible, normal
civis=\E[?25l, cnorm=\E[?25h,
# Save cursor position, restore cursor position
sc=\E7, rc=\E8,
# Positions Horizontal and vertical.
hpa=\E[%i%p1%dG, vpa=\E[%i%p1%dd,
# Move cursor: 1 char, any
cuf1=\E[C, cuu1=\E[A, cud1=\n, cub1=\b,
cuf=\E[%p1%dC, cuu=\E[%p1%dA, cud=\E[%p1%dB, cub=\E[%p1%dD,
# Move cursor to arbitrary position
cup=\E[%i%p1%d;%p2%dH,
# Misc cursor motion
home=\E[H,
# Keyboard ###################################################################
# Enter/leave keypad transmit.
rmkx=\E[?1l\E>,
smkx=\E[?1h\E=,
# Cursor keys, sent by terminal
kcuf1=\EOC, kcuu1=\EOA, kcud1=\EOB, kcub1=\EOD,
# Other nice keys (keypad pos1, pgup, center, end, pgdn)
ka1=\EOq, ka3=\EOs,
kb2=\EOr,
kc1=\EOp, kc3=\EOn,
# The Function keys. (F0 - F20)
kf0=\E[21~, kf1=\E[11~, kf2=\E[12~,
kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~,
kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
kf19=\E[33~, kf20=\E[34~,
# Insert, home, end, delete, next page, previous page, backspace, enter
kich1=\E[2~, khome=\E[H, kend=\E[F,
kdch1=\E[3~, knp=\E[6~, kpp=\E[5~,
kbs=\b, kent=\EOM,
# Init/Reset #################################################################
# Reset terminal, turn off all attributes
rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<,
# Init terminal
is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
# Leave/Enter CA-Mode.
rmcup=\E[?47l\E8,
smcup=\E7\E[?47h,
##############################################################################
# #
# Xterm with color support. #
# #
##############################################################################
xterm|vs100|xterm terminal emulator (X Window System),
use=xterm-basic,
sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t^N%e^O%;,
sgr0=\E[m^O,
xterm-color|color-xterm|color xterm terminal emulator (X Window System),
use=xterm,
colors#8, pairs#64,
# Set all color pairs to the original ones
op=\E[m,
# Set foreground color, background color
setf=\E[%p1%{30}%+%dm, setb=\E[%p1%{40}%+%dm,
Loading…
Cancel
Save