home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.x
- From: ferguson@cs.rochester.edu (George Ferguson)
- Subject: v20i052: xarchie - An X browser interface to Archie, v2.0.6, Part24/24
- Message-ID: <1993Jun15.223607.2129@sparky.imd.sterling.com>
- X-Md4-Signature: 18db4c9979bc280fc78b9163d1dcb763
- Sender: chris@sparky.imd.sterling.com (Chris Olson)
- Organization: Sterling Software
- Date: Tue, 15 Jun 1993 22:36:07 GMT
- Approved: chris@sparky.imd.sterling.com
-
- Submitted-by: ferguson@cs.rochester.edu (George Ferguson)
- Posting-number: Volume 20, Issue 52
- Archive-name: xarchie/part24
- Environment: X11
- Supersedes: xarchie: Volume 14, Issue 82-90
-
- Submitted-by: ferguson@cs.rochester.edu
- Archive-name: xarchie-2.0.6/part24
-
- #!/bin/sh
- # this is Part.24 (part 24 of xarchie-2.0.6)
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file xarchie-2.0.6/FWF/MultiList/MultiList.man continued
- #
- if test ! -r _shar_seq_.tmp; then
- echo 'Please unpack part 1 first!'
- exit 1
- fi
- (read Scheck
- if test "$Scheck" != 24; then
- echo Please unpack part "$Scheck" next!
- exit 1
- else
- exit 0
- fi
- ) < _shar_seq_.tmp || exit 1
- if test ! -f _shar_wnt_.tmp; then
- echo 'x - still skipping xarchie-2.0.6/FWF/MultiList/MultiList.man'
- else
- echo 'x - continuing file xarchie-2.0.6/FWF/MultiList/MultiList.man'
- sed 's/^X//' << 'SHAR_EOF' >> 'xarchie-2.0.6/FWF/MultiList/MultiList.man' &&
- .RE
- .sp
- .nf
- void XfwfMultiListHighlightAll(mlw)
- XXfwfMultiListWidget mlw;
- .fi
- .sp
- .RS 5
- This routine highlights all highlightable items in the MultiList
- widget <mlw>, up to the maximum number of allowed highlightable items;
- .RE
- .sp
- .nf
- void XfwfMultiListUnhighlightItem(mlw,item_index)
- XXfwfMultiListWidget mlw;
- int item_index;
- .fi
- .sp
- .RS 5
- This routine unselects the item with index <item_index> in the
- MultiList widget <mlw>. If <item_index> doesn't correspond to a
- selected item, then nothing will happen. Otherwise, the item is
- unselected and the selection array and count are updated.
- .RE
- .sp
- .nf
- void XfwfMultiListUnhighlightAll(mlw)
- XXfwfMultiListWidget mlw;
- .fi
- .sp
- .RS 5
- This routine unhighlights all items in the MultiList widget <mlw>.
- .RE
- .sp
- .nf
- int XfwfMultiListToggleItem(mlw,item_index)
- XXfwfMultiListWidget mlw;
- .fi
- .sp
- .RS 5
- This routine highlights the item with index <item_index> if it is
- unhighlighted and unhighlights it if it is already highlighted. The
- action performed by the toggle is returned (XfwfMultiListActionHighlight
- or XfwfMultiListActionUnhighlight).
- .RE
- .sp
- .nf
- XXfwfMultiListReturnStruct *MultiListGetHighlighted(mlw)
- XXfwfMultiListWidget mlw;
- .fi
- .sp
- .RS 5
- This routine takes a MultiList widget <mlw> and returns a
- MultiListReturnStruct whose num_selected and selected_items fields
- contain the highlight information. The action field is set to
- XXfwfMultiListActionStatus, and the item_index and string fields are
- invalid.
- .RE
- .sp
- .nf
- Boolean XfwfMultiListIsHighlighted(plw,item_index)
- XXfwfMultiListWidget mlw;
- int item_index;
- .fi
- .sp
- .RS 5
- This routine checks if the item with index <item_index> is highlighted
- and returns True or False depending. If <item_index> is invalid,
- False is returned.
- .RE
- .sp
- .nf
- Boolean XfwfMultiListGetItemInfo(mlw,item_index,str_ptr,h_ptr,s_ptr)
- XXfwfMultiListWidget mlw;
- int item_index;
- String *str_ptr;
- Boolean *h_ptr,*s_ptr;
- .fi
- .sp
- .RS 5
- This routine returns the string, highlight status and sensitivity
- information for the item with index <item_index> via the pointers
- <str_ptr>, <h_ptr> and <s_ptr>. If the item index is invalid, False
- is returned, else True is returned.
- .RE
- .sp
- .nf
- void XfwfMultiListSetNewData(mlw,list,nitems,longest,resize,sensitivity_array)
- MultiListWidget mlw;
- String *list;
- int nitems,longest;
- Boolean resize;
- Boolean *sensitivity_array;
- .fi
- .sp
- .RS 5
- This routine will set a new set of strings <list> into the MultiList
- widget <mlw>. If <resize> is True, the MultiList widget will try to
- resize itself.
- .RE
- .sp
- .nf
- .ne 4
- .SH Restrictions
- .LP
- There are likely to be inadequacies in this code. Specifically, I am
- not sure what the callback interface should look like when you can
- select and unselect multiple items. This is the reason for the
- confusing return structure fields. Please send bug reports and
- feature requests to the email address below.
- .SH Author
- .sp
- .nf
- Brian Totty, \fItotty@cs.uiuc.edu\fR
- Department of Computer Science,
- University of Illinois at Urbana-Champaign
- 1304 W. Springfield Avenue
- Urbana, IL 61801
- .fi
- SHAR_EOF
- echo 'File xarchie-2.0.6/FWF/MultiList/MultiList.man is complete' &&
- chmod 0644 xarchie-2.0.6/FWF/MultiList/MultiList.man ||
- echo 'restore of xarchie-2.0.6/FWF/MultiList/MultiList.man failed'
- Wc_c="`wc -c < 'xarchie-2.0.6/FWF/MultiList/MultiList.man'`"
- test 6206 -eq "$Wc_c" ||
- echo 'xarchie-2.0.6/FWF/MultiList/MultiList.man: original size 6206, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= xarchie-2.0.6/FWF/MultiList/MultiListP.h ==============
- if test -f 'xarchie-2.0.6/FWF/MultiList/MultiListP.h' -a X"$1" != X"-c"; then
- echo 'x - skipping xarchie-2.0.6/FWF/MultiList/MultiListP.h (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting xarchie-2.0.6/FWF/MultiList/MultiListP.h (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'xarchie-2.0.6/FWF/MultiList/MultiListP.h' &&
- /****************************************************************************
- X
- X MultiListP.h
- X
- X This file is the private header file for the MultiList widget, an
- X extension to the Athena List widget.
- X
- X This code is loosely based on the Athena List source which
- X is why the MIT copyright notice appears below.
- X
- X The code was changed substantially in V3.4 to change the
- X action/callback interface which was unnecessarily ugly. Code
- X using some features of the old interface may need to be changed.
- X Hope the changes don't make people's lives too miserable.
- X
- X ****************************************************************************/
- X
- /*
- X * Author:
- X * Brian Totty
- X * Department of Computer Science
- X * University Of Illinois at Urbana-Champaign
- X * 1304 West Springfield Avenue
- X * Urbana, IL 61801
- X *
- X * totty@cs.uiuc.edu
- X *
- X */
- X
- /*
- X * Copyright 1989 Massachusetts Institute of Technology
- X *
- X * Permission to use, copy, modify, distribute, and sell this software and its
- X * documentation for any purpose is hereby granted without fee, provided that
- X * the above copyright notice appear in all copies and that both that
- X * copyright notice and this permission notice appear in supporting
- X * documentation, and that the name of M.I.T. not be used in advertising or
- X * publicity pertaining to distribution of the software without specific,
- X * written prior permission. M.I.T. makes no representations about the
- X * suitability of this software for any purpose. It is provided "as is"
- X * without express or implied warranty.
- X *
- X * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
- X * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- X * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- X * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- X * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- X *
- X * Original Athena Author: Chris D. Peterson, MIT X Consortium
- X */
- X
- #ifndef _MULTILISTP_H_
- #define _MULTILISTP_H_
- X
- #include <X11/Xaw/SimpleP.h>
- #include <MultiList.h>
- X
- /*---------------------------------------------------------------------------*
- X
- X L O C A L D A T A S T R U C T U R E D E F I N I T I O N S
- X
- X *---------------------------------------------------------------------------*/
- X
- typedef struct
- {
- X Boolean sensitive;
- X Boolean highlighted;
- X String string;
- } XfwfMultiListItem;
- X
- /*---------------------------------------------------------------------------*
- X
- X W I D G E T D A T A S T R U C T U R E D E F I N I T I O N S
- X
- X *---------------------------------------------------------------------------*/
- X
- typedef struct
- {
- X int foo;
- } XfwfMultiListClassPart;
- X
- typedef struct _XfwfMultiListClassRec
- {
- X CoreClassPart core_class;
- X SimpleClassPart simple_class;
- X XfwfMultiListClassPart multiList_class;
- } XfwfMultiListClassRec;
- X
- extern XfwfMultiListClassRec xfwfMultiListClassRec;
- X
- typedef struct
- {
- X Pixel foreground;
- X Pixel highlight_fg;
- X Pixel highlight_bg;
- X Dimension column_space;
- X Dimension row_space;
- X int default_cols;
- X Boolean force_cols;
- X Boolean paste;
- X Boolean row_major;
- X int longest;
- X int nitems;
- X XFontStruct *font;
- X String *list;
- X Boolean *sensitive_array;
- X XtCallbackList callback;
- X int max_selectable;
- X Boolean shade_surplus;
- X Dimension col_width;
- X Dimension row_height;
- X
- X int right_padding;
- X int bottom_padding;
- X int nrows;
- X int ncols;
- X int most_recent_clicked_item;
- X int most_recent_action;
- X GC erase_gc;
- X GC draw_gc;
- X GC highlight_bg_gc;
- X GC highlight_fg_gc;
- X GC gray_gc;
- X XfwfMultiListItem *item_array;
- X int num_selected;
- X int *sel_array;
- } XfwfMultiListPart;
- X
- typedef struct _XfwfMultiListRec
- {
- X CorePart core;
- X SimplePart simple;
- X XfwfMultiListPart multiList;
- } XfwfMultiListRec;
- X
- /*---------------------------------------------------------------------------*
- X
- X D A T A S T R U C T U R E A C C E S S M A C R O S
- X
- X *---------------------------------------------------------------------------*/
- X
- #define MultiListItemSensitive(i) ((i)->sensitive)
- #define MultiListItemHighlighted(i) ((i)->highlighted)
- #define MultiListItemString(i) ((i)->string)
- X
- #define InstanceCore(w) (&((w)->core))
- #define InstanceSimple(w) (&((w)->simple))
- #define InstanceMultiList(w) (&((w)->multiList))
- X
- #define MultiListWidth(w) (InstanceCore(w)->width)
- #define MultiListHeight(w) (InstanceCore(w)->height)
- #define MultiListBG(w) (InstanceCore(w)->background_pixel)
- #define MultiListSensitive(w) (InstanceCore(w)->sensitive)
- #define MultiListAncesSensitive(w) (InstanceCore(w)->ancestor_sensitive)
- #define MultiListDepth(w) (InstanceCore(w)->depth)
- X
- #define MultiListFG(w) (InstanceMultiList(w)->foreground)
- #define MultiListHighlightFG(w) (InstanceMultiList(w)->highlight_fg)
- #define MultiListHighlightBG(w) (InstanceMultiList(w)->highlight_bg)
- #define MultiListColumnSpace(w) (InstanceMultiList(w)->column_space)
- #define MultiListRowSpace(w) (InstanceMultiList(w)->row_space)
- #define MultiListDefaultCols(w) (InstanceMultiList(w)->default_cols)
- #define MultiListForceCols(w) (InstanceMultiList(w)->default_cols)
- #define MultiListPaste(w) (InstanceMultiList(w)->paste)
- #define MultiListRowMajor(w) (InstanceMultiList(w)->row_major)
- #define MultiListLongest(w) (InstanceMultiList(w)->longest)
- #define MultiListNumItems(w) (InstanceMultiList(w)->nitems)
- #define MultiListFont(w) (InstanceMultiList(w)->font)
- #define MultiListList(w) (InstanceMultiList(w)->list)
- #define MultiListSensitiveArray(w) (InstanceMultiList(w)->sensitive_array)
- #define MultiListCallback(w) (InstanceMultiList(w)->callback)
- #define MultiListMaxSelectable(w) (InstanceMultiList(w)->max_selectable)
- #define MultiListShadeSurplus(w) (InstanceMultiList(w)->shade_surplus)
- X
- #define MultiListColWidth(w) (InstanceMultiList(w)->col_width)
- #define MultiListRowHeight(w) (InstanceMultiList(w)->row_height)
- #define MultiListRightPadding(w) (InstanceMultiList(w)->right_padding)
- #define MultiListBottomPadding(w) (InstanceMultiList(w)->bottom_padding)
- #define MultiListNumRows(w) (InstanceMultiList(w)->nrows)
- #define MultiListNumCols(w) (InstanceMultiList(w)->ncols)
- #define MultiListMostRecentItem(w) (InstanceMultiList(w)->most_recent_clicked_item)
- #define MultiListMostRecentAct(w) (InstanceMultiList(w)->most_recent_action)
- #define MultiListEraseGC(w) (InstanceMultiList(w)->erase_gc)
- #define MultiListDrawGC(w) (InstanceMultiList(w)->draw_gc)
- #define MultiListHighlightForeGC(w) (InstanceMultiList(w)->highlight_fg_gc)
- #define MultiListHighlightBackGC(w) (InstanceMultiList(w)->highlight_bg_gc)
- #define MultiListGrayGC(w) (InstanceMultiList(w)->gray_gc)
- #define MultiListItemArray(w) (InstanceMultiList(w)->item_array)
- #define MultiListNthItem(w,n) (&(MultiListItemArray(w)[n]))
- #define MultiListSelArray(w) (InstanceMultiList(w)->sel_array)
- #define MultiListNumSelected(w) (InstanceMultiList(w)->num_selected)
- X
- #endif
- SHAR_EOF
- chmod 0644 xarchie-2.0.6/FWF/MultiList/MultiListP.h ||
- echo 'restore of xarchie-2.0.6/FWF/MultiList/MultiListP.h failed'
- Wc_c="`wc -c < 'xarchie-2.0.6/FWF/MultiList/MultiListP.h'`"
- test 7023 -eq "$Wc_c" ||
- echo 'xarchie-2.0.6/FWF/MultiList/MultiListP.h: original size 7023, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= xarchie-2.0.6/FWF/MultiList/MultiListT.c ==============
- if test -f 'xarchie-2.0.6/FWF/MultiList/MultiListT.c' -a X"$1" != X"-c"; then
- echo 'x - skipping xarchie-2.0.6/FWF/MultiList/MultiListT.c (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting xarchie-2.0.6/FWF/MultiList/MultiListT.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'xarchie-2.0.6/FWF/MultiList/MultiListT.c' &&
- /*****************************************************************************
- X
- X MultiList_test.c
- X
- X This file contains the source for a very simple MultiList widget
- X tester program.
- X
- X July 1990, Brian Totty
- X
- X ****************************************************************************/
- X
- /*
- X * Author:
- X * Brian Totty
- X * Department of Computer Science
- X * University Of Illinois at Urbana-Champaign
- X * 1304 West Springfield Avenue
- X * Urbana, IL 61801
- X *
- X * totty@cs.uiuc.edu
- X *
- X */
- X
- #include <X11/Xatom.h>
- #include <X11/Xlib.h>
- #include <X11/Intrinsic.h>
- #include <X11/StringDefs.h>
- #include <X11/Shell.h>
- #include <X11/Xaw/Box.h>
- X
- #include <Xfwf/MultiList.h>
- X
- /*---------------------------------------------------------------------------*
- X
- X void CallbackHandler(w,client_data,rs)
- X
- X This callback handler gets called when the MultiList widget gets a
- X highlight or unhighlight action.
- X
- X *---------------------------------------------------------------------------*/
- X
- void CallbackHandler(w,client_data,rs)
- Widget w;
- caddr_t client_data;
- XXfwfMultiListReturnStruct *rs;
- {
- X int i;
- X
- X static char *multiList_action_names[] =
- X {
- X "MULTILIST_ACTION_NOTHING",
- X "MULTILIST_ACTION_HIGHLIGHT",
- X "MULTILIST_ACTION_UNHIGHLIGHT",
- X "MULTILIST_ACTION_OPEN",
- X "MULTILIST_ACTION_STATUS"
- X };
- X
- X printf("-----------------------------------\n");
- X printf("Num Selected: %d\n",rs->num_selected);
- X printf("Selected Items: ");
- X printf("\n");
- X printf("Most Recent Action: %s\n",multiList_action_names[rs->action]);
- X printf("Most Recent Item: %d\n",rs->item);
- X printf("Most Recent String: '%s'\n",
- X (rs->string == NULL ? "NULL" : rs->string));
- X for (i = 0; i < rs->num_selected; i++)
- X {
- X printf("%d ",rs->selected_items[i]);
- X }
- X if (rs->num_selected == 0) printf("None");
- X printf("\n");
- } /* End CallbackHandler */
- X
- X
- /*---------------------------------------------------------------------------*
- X
- X main(argc,argv)
- X
- X This is the main entry point of the scrolledList
- X widget application program.
- X
- X *---------------------------------------------------------------------------*/
- X
- int main(argc,argv)
- int argc;
- char **argv;
- {
- X Widget top,multiList;
- X Arg args[10];
- X
- X static char *strings[8] =
- X {
- X "Happy New Year",
- X "To You",
- X "Your Family",
- X "And Friends",
- X "Peace And Joy",
- X "Best Wishes For 1993!",
- X "(A Token Unsensitive String)",
- X NULL
- X };
- X
- X static Boolean sensitivities[7] =
- X {
- X True,True,True,True,
- X True,True,False
- X };
- X
- X top = XtInitialize("main","XMultiList",NULL,0,&argc,argv);
- X
- X XtSetArg(args[0],XtNlist,strings);
- X XtSetArg(args[1],XtNsensitiveArray,sensitivities);
- X XtSetArg(args[2],XtNnumberStrings,0);
- X XtSetArg(args[3],XtNdefaultColumns,2);
- X XtSetArg(args[4],XtNborderWidth,0);
- X XtSetArg(args[5],XtNx,1);
- X XtSetArg(args[6],XtNy,1);
- X XtSetArg(args[7],XtNmaxSelectable,3);
- X multiList = XtCreateManagedWidget("multiList",
- X xfwfMultiListWidgetClass,top,args,8);
- X
- X XtAddCallback(multiList,XtNcallback,CallbackHandler,NULL);
- X
- X XtRealizeWidget(top);
- X XtMainLoop();
- X return(1);
- } /* End main */
- X
- X
- X
- SHAR_EOF
- chmod 0644 xarchie-2.0.6/FWF/MultiList/MultiListT.c ||
- echo 'restore of xarchie-2.0.6/FWF/MultiList/MultiListT.c failed'
- Wc_c="`wc -c < 'xarchie-2.0.6/FWF/MultiList/MultiListT.c'`"
- test 3020 -eq "$Wc_c" ||
- echo 'xarchie-2.0.6/FWF/MultiList/MultiListT.c: original size 3020, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= xarchie-2.0.6/FWF/MultiList/MultiListT.man ==============
- if test -f 'xarchie-2.0.6/FWF/MultiList/MultiListT.man' -a X"$1" != X"-c"; then
- echo 'x - skipping xarchie-2.0.6/FWF/MultiList/MultiListT.man (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting xarchie-2.0.6/FWF/MultiList/MultiListT.man (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'xarchie-2.0.6/FWF/MultiList/MultiListT.man' &&
- '\" t
- .TH "MultiListT" "1" "19 May 1992" "Version 3.0" "Free Widget Foundation"
- .SH NAME
- MultiListT \- Test Program For The MultiList Widget
- .SH DESCRIPTION
- .PP
- .I MultiListT
- is a simple program that creates and test a MultiList widget. The
- source may be useful is seeing how the MultiList widget can be used. The
- test program allows you to selected at most 3 items at a time. This is done
- in the test code by setting the XtNmaxSelectable resource of the MultiList
- widget to 3.
- .SH AUTHOR
- .sp
- .nf
- Brian Totty, \fItotty@cs.uiuc.edu\fR
- Department of Computer Science,
- University of Illinois at Urbana-Champaign
- 1304 W. Springfield Avenue
- Urbana, IL 61801
- .fi
- SHAR_EOF
- chmod 0644 xarchie-2.0.6/FWF/MultiList/MultiListT.man ||
- echo 'restore of xarchie-2.0.6/FWF/MultiList/MultiListT.man failed'
- Wc_c="`wc -c < 'xarchie-2.0.6/FWF/MultiList/MultiListT.man'`"
- test 660 -eq "$Wc_c" ||
- echo 'xarchie-2.0.6/FWF/MultiList/MultiListT.man: original size 660, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= xarchie-2.0.6/FWF/MultiList/README ==============
- if test -f 'xarchie-2.0.6/FWF/MultiList/README' -a X"$1" != X"-c"; then
- echo 'x - skipping xarchie-2.0.6/FWF/MultiList/README (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting xarchie-2.0.6/FWF/MultiList/README (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'xarchie-2.0.6/FWF/MultiList/README' &&
- X This directory contains the C source for the MultiList widget, which
- X is a widget, similar to the Athena List widget, but with the
- X following significant differences:
- X
- X * Multiple items can be selected at one time.
- X * Colors can be specified for highlighting.
- X * In addition to setting and unsetting items with the
- X Set() and Unset() actions, MultiList also supports toggling
- X (selected item becomes unselected, unselected item becomes
- X selected) with Toggle() and opening of objects (e.g.
- X might be used with a double-click) with Open().
- X * The return structure is now more complicated, listing
- X what type of operation generated the callback (highlighting
- X an item, unhighlighting an item, opening an item, requesting
- X the current status), what item was clicked on to produce this
- X callback, and the list of what items are currently
- X selected.
- X * Items can be individually disabled, by setting the
- X sensitivity array.
- X * internalWidth and internalHeight resources have been
- X removed.
- SHAR_EOF
- chmod 0644 xarchie-2.0.6/FWF/MultiList/README ||
- echo 'restore of xarchie-2.0.6/FWF/MultiList/README failed'
- Wc_c="`wc -c < 'xarchie-2.0.6/FWF/MultiList/README'`"
- test 1025 -eq "$Wc_c" ||
- echo 'xarchie-2.0.6/FWF/MultiList/README: original size 1025, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- rm -f _shar_seq_.tmp
- echo You have unpacked the last part
- exit 0
-
- exit 0 # Just in case...
- --
- // chris@IMD.Sterling.COM | Send comp.sources.x submissions to:
- \X/ Amiga - The only way to fly! | sources-x@imd.sterling.com
- "It's intuitively obvious to the |
- most casual observer..." | GCS d+/-- p+ c++ l+ m+ s++/+ g+ w+ t+ r+ x+
-