XPPP Version 1.1
================

General
-------

XPPP is an X Window- and Motif-based front-end for the chat and pppd
programs.  XPPP centralizes the configuration of different dial-out
devices, login procedures, and phone numbers through the concept of an
ISP or Internet Service Provider.

PPP connections can be setup and closed down by button presses. The
XPPP main window gives textual and visual cues about the current state
of connections and dialout attempts.

Each ISP has a specific

 - chat script

 - a set of phone numbers that are substituted in the chat script,

 - a set of pppd options,

 - a shell script to determine the connection status (called the
   connect script,

 - and associated timeout and max tries values.

These ISP attributes can be set using a configuration dialog or by
direct editing of a configuration file. If you already have working
PPP scripts it is easy to convert them to the configuration file
format.

All syslog output of pppd and chat is optionally displayed in a log
window. This allows convenient debugging of pppd options and chat
scripts.

XPPP requires knowledge of chat and pppd syntax, but offers high
flexibility in dealing with complex dial-in procedures and hardware
configurations.


Requirements
------------

You need wxwin 1.66F (or possibly higher) and Motif 1.2 (or higher)
if you want to compile yourself.


Installation (Binary Distribution)
----------------------------------

If you have received the binary distribution (TAR file) just do (as
root):

  cd /; umask 022; tar zxvf xppp-static-motif-1.x.tar.gz

for version statically linked against Motif, and

  cd /; umask 022; tar zxvf xppp-dyn-motif-1.x.tar.gz

for the version dynamically linked against Motif-2.0. You need a
/usr/X11R6/lib/libXm.so.2.x library for this version to work!


If you have got the RPM version just do:

  rpm -i xppp-static-motif-1.x-y.rpm

or
 
  rpm -i xppp-dyn-motif-1.x-y.rpm

Now read the man page:

  man xppp


Installation (Source Code Distribution)
---------------------------------------

 1. You need wxwin1.66F with the patches below applied. wxwin1.66F is
    a toolkit for the object-oriented and platform-independent
    development of GUI applications. At the moment implementations for
    X11-Motif and X11-Xview exist.

 2. You have to change the path to your wxwin1.66F installation in the
    makefile.unx file.

 3. Also adjust the installation path in makefile.unx. The default is
    /usr/X11R6.

 4. now compile xppp by typing
   
      make -f makefile.unx motif

    The Xview version has not been tested! It might work, though,
    since the code does not contain anything motif-specific.

 5. Type

      make install_motif

    as root.

  6. Read the manual page.


Availability
------------

ftp://ftp.prz.tu-berlin.de/users/peterh/xppp/xppp-src-1.x.tar.gz
ftp://ftp.prz.tu-berlin.de/users/peterh/xppp/xppp-static-motif-1.x-y.rpm
ftp://ftp.prz.tu-berlin.de/users/peterh/xppp/xppp-dyn-motif-1.x-y.rpm
ftp://ftp.prz.tu-berlin.de/users/peterh/xppp/xppp-static-motif-1.x.tar.gz
ftp://ftp.prz.tu-berlin.de/users/peterh/xppp/xppp-dyn-motif-1.x.tar.gz
http://www.prz.tu-berlin.de/~peterh/xppp/

You can also find screenshots on the Web page.


Manifest
--------

The following files belong to the XPPP source distribution:

README
COPYING
makefile.unx
xppp.1x
xppprc.dist
xppp.cpp
xppp_config_dialog.cpp
xppp_config.cpp
xppp_misc.cpp
xppp.h
xppp_config_dialog.h
xppp_config.h
xppp_misc.h
xppp.xbm
xppp_wrapper.c
xppp_syslog.c


Contact
-------

Send bug reports or comments to mailto:peterh@prz.tu-berlin.de (Peter
Hofmann).


Patches to wxwin1.66F
---------------------

You can get wxwin from the wxwin Web Site

  http://web.ukonline.co.uk/julian.smart/wxwin/

I have applied the following patches to fix several bugs/problems:

diff -ruw ../../wxwin/src/base/wb_gdi.cpp ./src/base/wb_gdi.cpp
--- ../../wxwin/src/base/wb_gdi.cpp	Tue Jan 28 18:18:14 1997
+++ ./src/base/wb_gdi.cpp	Sun May 25 03:02:31 1997
@@ -1517,12 +1517,14 @@
   
   if (!item)
     return NULL;
+  weight = WCoordinate(weight);
+  style = SCoordinate(style);
 
   /* MATTHEW: [14] Check for init */
   if (!item->screen.map[weight][style])
     item->screen.Initialize(item->name, "Screen", weight, style);
 
-  return item->screen.map[WCoordinate(weight)][SCoordinate(style)];
+  return item->screen.map[weight][style];
 }
 
 char *wxFontNameDirectory::GetPostScriptName(int fontid, int weight, int style)
@@ -1531,12 +1533,14 @@
 
   if (!item)
     return NULL;
+  weight = WCoordinate(weight);
+  style = SCoordinate(style);
 
   /* MATTHEW: [14] Check for init */
   if (!item->printing.map[weight][style])
     item->printing.Initialize(item->name, "PostScript", weight, style);
 
-  return item->printing.map[WCoordinate(weight)][SCoordinate(style)];
+  return item->printing.map[weight][style];
 }
 
 char *wxFontNameDirectory::GetAFMName(int fontid, int weight, int style)
@@ -1545,12 +1549,14 @@
 
   if (!item)
     return NULL;
+  weight = WCoordinate(weight);
+  style = SCoordinate(style);
 
   /* MATTHEW: [14] Check for init */
   if (!item->afm.map[weight][style])
     item->afm.Initialize(item->name, "Afm", weight, style);
 
-  return item->afm.map[WCoordinate(weight)][SCoordinate(style)];
+  return item->afm.map[weight][style];
 }
 
 char *wxFontNameDirectory::GetFontName(int fontid)
diff -ruw ../../wxwin/src/x/wx_canvs.cpp ./src/x/wx_canvs.cpp
--- ../../wxwin/src/x/wx_canvs.cpp	Sat Jan  4 03:26:10 1997
+++ ./src/x/wx_canvs.cpp	Tue May 20 01:04:59 1997
@@ -2101,13 +2101,13 @@
 	wxevent.rightDown = canvas->button3Pressed;
 */
 	wxevent.leftDown = ((eventType == wxEVENT_TYPE_LEFT_DOWN)
-			    || (event_left_is_down (&local_event) 
+			    || (event_left_is_down ((&local_event))
 				&& (eventType != wxEVENT_TYPE_LEFT_UP)));
 	wxevent.middleDown = ((eventType == wxEVENT_TYPE_MIDDLE_DOWN)
-			      || (event_middle_is_down (&local_event) 
+			      || (event_middle_is_down ((&local_event))
 				  && (eventType != wxEVENT_TYPE_MIDDLE_UP)));
 	wxevent.rightDown = ((eventType == wxEVENT_TYPE_RIGHT_DOWN)
-			     || (event_right_is_down (&local_event) 
+			     || (event_right_is_down ((&local_event)) 
 				 && (eventType != wxEVENT_TYPE_RIGHT_UP)));
 
 	wxevent.shiftDown = local_event.xbutton.state & ShiftMask;
diff -ruw ../../wxwin/src/x/wx_frame.cpp ./src/x/wx_frame.cpp
--- ../../wxwin/src/x/wx_frame.cpp	Wed Jul 17 00:31:24 1996
+++ ./src/x/wx_frame.cpp	Fri May 23 23:26:16 1997
@@ -263,10 +263,11 @@
                 (XtCallbackProc)wxFrameFocusProc, (XtPointer)this);
 
   /* MATTHEW: part of show-&-hide fix */
-  XtAddEventHandler(frameShell, StructureNotifyMask,
+  /*  XtAddEventHandler(frameShell, StructureNotifyMask,
 		    False, (XtEventHandler)wxFrameMapProc,
 		    (XtPointer)workArea);
-
+      causes problems with ctwm, unwanted iconification              
+  */
   if (x > -1)
     XtVaSetValues(frameShell, XmNx, x, NULL);
   if (y > -1)
diff -ruw ../../wxwin/src/x/wx_main.cpp ./src/x/wx_main.cpp
--- ../../wxwin/src/x/wx_main.cpp	Thu Jun 20 00:35:30 1996
+++ ./src/x/wx_main.cpp	Fri Jun 27 22:27:24 1997
@@ -118,7 +118,7 @@
     cerr << "wxWindows could not open display for " << wxTheApp->GetClassName() << ": exiting.\n";
     exit(-1);
   }
-  wxTheApp->topLevel = XtAppCreateShell((String)NULL,wxTheApp->GetClassName(),
+  wxTheApp->topLevel = XtAppCreateShell((String)NULL,wxTheApp->wx_class,
                                      applicationShellWidgetClass,dpy,
                                      NULL,0) ;
 
diff -ruw ../../wxwin/src/x/wx_utils.cpp ./src/x/wx_utils.cpp
--- ../../wxwin/src/x/wx_utils.cpp	Tue Jan 14 06:08:00 1997
+++ ./src/x/wx_utils.cpp	Tue May 20 01:07:11 1997
@@ -33,7 +33,7 @@
 
 #ifdef __GNUG__
 #pragma implementation
-#pragma implementation wx_utils.h
+#pragma implementation "wx_utils.h"
 #endif
 
 #include <iostream.h>


Copyright
---------

Copyright (C) 1997 Peter Hofmann

Xppp 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.

Xppp 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 xppp; see the file COPYING.  If not, write to the Free
Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
