X Desktop Manager(4)

Edward J. Groenendaal eddyg at syma.sussex.ac.uk
Thu Apr 18 06:49:41 AEST 1991


---- Cut Here and unpack ----
#!/bin/sh
# this is part 4 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file code/parser.y continued
#
CurArch=4
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
echo "x - Continuing file code/parser.y"
sed 's/^X//' << 'SHAR_EOF' >> code/parser.y
X		   
X		   current_selection->list[listindex] = 
X		     (AppProgram*) XtMalloc (sizeof(AppProgram));
X		 }
X
X                 NAME_T ASSIGN_T identifier SEMIC_T {setapp($3, $5);}
X		 ICON_T ASSIGN_T identifier SEMIC_T {setapp($8, $10);}
X                 PROG_T ASSIGN_T identifier SEMIC_T {setapp($13, $15);}
X                 OPTIONS_T ASSIGN_T option SEMIC_T  
X                 {
X		   setapp($18, (String)$20);
X
X                  /* Increment listindex */
X		   if (++listindex == currentlistmax) {
X		     currentlistmax += APPPINC;
X		     current_selection->list = 
X		       (AppProgram**) XtMalloc (current_selection->list,
X						sizeof(AppProgram*) *
X						currentlistmax);
X		   }
X		 }
X
X                 C_BRACE_T
X             ;
Xoption       :   MSEL_T | OSEL_T | NSEL_T
X             ;
Xexpression   :   NAME_T EQUAL_T identifier { new_re($3); }
X             |   TYPE_T EQUAL_T type       { new_type($3); }
X             ;
Xidentifier   :   STRING_T      {  $$=strip_quotes($1);
X			       }
X             ;
Xtype         :   DIR_T | READ_T | WRITE_T | EXE_T | FILE_T
X             ;
Xvar          :   PATH_T | ICON_T | DEFICON_T
X             ;
X%%  
X
Xprivate void init_structs(void)
X{
X  Cardinal n;
X
X  prefs = newTypePref();
X  icontable = NULL;
X  varframe = (varStack*) XtMalloc (sizeof(varStack));
X  varframe->defpath = stringtopath("/usr/lib/X11/bitmaps", &n);
X  varframe->dirinpath = n;
X  varframe->current = prefs;
X  varframe->checkpath = False;
X  varframe->iconpref = NULL;
X  varframe->next = NULL;
X
X  listindex = 0;
X  selectionindex = -1;
X  appselections = (AppSelection**) XtMalloc (sizeof(AppSelection*) * MAXSELS);
X}
X
Xprivate void free_structs(void)
X{
X  /* Free varstack (Should be only one level left) */
X  XtFree(varframe);
X
X  selectionindex++;
X}
X
Xpublic typePrefs *newTypePref(void)
X{
X  typePrefs *tp;
X
X  tp = (typePrefs*) XtMalloc (sizeof(typePrefs));
X  tp->iconprefs = NULL;
X  tp->dir = NULL;
X  tp->file = NULL;
X  tp->exe = NULL;
X  tp->read = NULL;
X  tp->write = NULL;
X  
X  return(tp);
X}
X  
Xprivate void start_block(typePrefs *newpref, iconPrefs *iconpref)
X{
X  /* Push new stack frame */
X  varStack *newframe;
X  
X  newframe = (varStack*) XtMalloc (sizeof(varStack));
X  newframe->defpath = varframe->defpath;
X  newframe->dirinpath = varframe->dirinpath;
X  newframe->current = newpref;
X  newframe->checkpath = varframe->checkpath;
X  newframe->iconpref = iconpref;
X  newframe->next = varframe;
X  varframe = newframe;
X}
X
Xprivate void end_block(void)
X{
X  /* If current frame has an empty typePref, free it. 
X   * Pop last stack frame. 
X   */
X  iconPrefs *tmpIconPref;
X  typePrefs *tmp = varframe->current;
X  varStack *tmpframe = varframe->next;
X
X  if (tmp->iconprefs == NULL && tmp->dir == NULL &&
X      tmp->file == NULL      && tmp->exe == NULL &&
X      tmp->read == NULL      && tmp->write == NULL) {
X    XtFree(tmp);
X    tmp = NULL;
X    tmpIconPref = varframe->iconpref;
X    tmpIconPref->extra = NULL;
X  }
X  /* Should free contents first!! TODO */
X  XtFree(varframe);
X  varframe = tmpframe;
X}
X
Xprivate void new_re(String re)
X{
X  iconPrefs *new, *tmp = varframe->current->iconprefs;
X
X  new = (iconPrefs*) XtMalloc (sizeof(iconPrefs));
X  new->next = NULL;
X  new->expbuf = (char*) XtMalloc (sizeof(char) * ESIZE);
X  new->extra = (XtPointer) newTypePref();
X  compile(re, new->expbuf, &(new->expbuf[ESIZE]), '\0');
X  new->circf = circf;
X  new->checkpath = varframe->checkpath;
X  new->icon = NULL;
X  varframe->current->iconprefs = inserticonpref(tmp, new);
X  start_block((typePrefs*)new->extra, (iconPrefs*)new);
X}
X
Xprivate void new_type(int n)
X{
X  /* Allocate a typePref on dir, write etc. if neadbe, otherwise ignore */
X  typePrefs *typeprefs = varframe->current;
X  typePrefs *newpref;
X
X  switch(n) {
X  case DIR_T:
X    if (typeprefs->dir == NULL) 
X      typeprefs->dir = newTypePref();
X    newpref = typeprefs->dir;
X    break;
X  case FILE_T:
X    if (typeprefs->file == NULL) 
X      typeprefs->file = newTypePref();
X    newpref = typeprefs->file;
X    break;
X  case EXE_T:
X    if (typeprefs->exe == NULL) 
X      typeprefs->exe = newTypePref();
X    newpref = typeprefs->exe;
X    break;
X  case READ_T:
X    if (typeprefs->read == NULL) 
X      typeprefs->read = newTypePref();
X    newpref = typeprefs->read;
X    break;
X  case WRITE_T:
X    if (typeprefs->write == NULL) 
X      typeprefs->write = newTypePref();
X    newpref = typeprefs->write;
X    break;
X  }
X  start_block(newpref, NULL);
X}
X
Xpublic Cardinal count_chr(String s, char c)
X{
X  Cardinal count=0;
X
X  while(*s != '\0') {
X    if (*s == c) count++;
X    s++;
X  }
X  return count;
X}
X
Xprivate String *stringtopath(String s, Cardinal *n)
X{
X  /* Split a path into directories, put these into a linked list */
X  String *result;
X  String p, tmp;
X#ifdef DEBUG_YACC
X  String home;
X#else
X  extern String home;
X#endif
X
X  *n = 0;
X
X#ifdef DEBUG_YACC
X    if ((home = (String) getenv("HOME")) == NULL) {
X    fprintf(stderr, "can\'t get environment variable HOME\n");
X    home = XtNewString("/");
X  } else 
X    home = XtNewString(home);
X#endif
X
X  result = (String*) XtMalloc ((count_chr(s, ':')+1) * sizeof(String));
X  s = XtNewString(s);
X
X  /* extract the directories from path 's' */
X
X  p = strtok(s, ":");
X  while ( p != NULL) {
X    if (*p == '/')
X      result[(*n)++] = p;
X    else 
X      if (*p == '~' && *(p+1) == '/') {
X	tmp = (String) XtMalloc ((strlen(home) + strlen(p)) * sizeof(char));
X	strcpy(tmp, home);
X	strcat(tmp, p+1);
X	result[(*n)++] = tmp;
X      } else 
X	fprintf(stderr, "Warning: Directory \'%s\' not fully qualified,"
X		" ignoring.\n", p);
X    p = strtok(NULL, ":");
X  }
X#ifdef DEBUG_YACC
X  XtFree(home);
X#endif
X  return(result);
X}
X
Xprivate iconPrefs *inserticonpref(iconPrefs *head, iconPrefs *item)
X{
X  /* Insert item into list starting with head, insert into the last 
X   * position before the default.
X   */
X
X  iconPrefs *sec = NULL, *tmp = head;
X
X  if (head == NULL) {
X    /* first element */
X    head=item;
X    head->next=NULL;
X  } else {
X    while (tmp->next != NULL) {
X      sec = tmp;
X      tmp = tmp->next;
X    }
X    if (tmp->expbuf == NULL) {
X      /* Already got a default */
X      if (item->expbuf != NULL) {
X	/* Item is not a new default */
X	item->next = tmp;
X	if (sec != NULL)
X	  sec->next = item;
X	else 
X	  head = item;
X      } else 
X	XtFree(item);
X    } else {
X      /* No default */
X      tmp->next = item;
X      item->next = NULL;
X    }
X  }
X  return(head);
X}
X
Xprivate iconPrefs *getlast(iconPrefs *head)
X{
X  /* return the last non-default iconpref in the frame */
X  iconPrefs *tmp = head;
X  
X  if (tmp != NULL)
X    while (tmp->next != NULL || tmp->next->expbuf == NULL) 
X      tmp = tmp->next;
X
X  return(tmp);
X}
X
Xprivate String strip_quotes(String s)
X{
X  String new;
X  
X  *(s + (strlen(s)-1)) = '\0';
X  s=s+1;
X  new = XtNewString(s);
X
X  return(new);
X}
X
Xprivate void set_path(String s)
X{
X  Cardinal n;
X
X  varframe->defpath = stringtopath(s, &n);
X  varframe->dirinpath = n;
X}
X
Xprivate void set_icon(String s, Boolean ignore)
X{
X  /* varframe->iconpref points to the iconpref into which this
X   * icon should be inserted. If it is NULL, then create a new
X   * one at varframe->current->iconprefs.
X   */
X
X  typePrefs *frame = varframe->current;
X  iconPrefs *iconpref = varframe->iconpref, 
X            *head = frame->iconprefs,
X            *new =  NULL;
X
X  if (iconpref == NULL) {
X    new = (iconPrefs*) XtMalloc (sizeof(iconPrefs));
X    new->expbuf = NULL;  /* default icon */
X    new->extra = NULL;
X    if (ignore==True) {
X      new->icon = DUMMY;
X    } else {
X      new->icon = lookupicon(s);
X    }
X    new->next = NULL;
X    frame->iconprefs = inserticonpref(head, new);
X  } else 
X    if (ignore==True)
X      iconpref->icon = DUMMY;
X    else
X      iconpref->icon = lookupicon(s);
X
X}
X
Xprivate void set_deficon(String s)
X{
X  typePrefs *frame = varframe->current;
X  iconPrefs *iconpref, *head = frame->iconprefs;
X
X  iconpref = (iconPrefs*) XtMalloc (sizeof(iconPrefs));
X  iconpref->expbuf = NULL;  /* default icon */
X  iconpref->extra = NULL;
X  iconpref->icon = lookupicon(s);
X  iconpref->next = NULL;
X  frame->iconprefs = inserticonpref(head, iconpref);
X
X}
X
Xprivate Pixmap lookupicon(String icon)
X{
X  /* Return the pixmap associated with the name 'icon' if none 
X   * found NULL is returned.
X   */
X  typePrefs *frame = varframe->current;
X  String *path = varframe->defpath;
X  Cardinal pathsize = varframe->dirinpath;
X  Cardinal n;
X  iconTree *item;
X  Pixmap pixmap = NULL;
X  String fullname = NULL;
X  String tmp;
X  FILE *result;
X
X  /* Append 'icon' to each filename in current path, and check to see 
X   * whether that file exists.
X   */
X  
X  n = 0;
X  do {
X    tmp = (String) XtMalloc ((strlen(icon) + strlen(path[n]) +1) * sizeof(char));
X    tmp = strcpy(tmp, path[n]);
X    tmp = strcat(tmp, "/");
X    tmp = strcat(tmp, icon);
X    if ((result = fopen(tmp, "r")) != NULL) {
X      fullname = XtNewString(tmp);
X      fclose(result);
X    } 
X    XtFree(tmp);
X  } while (++n < pathsize && fullname == NULL);
X
X  if (fullname == NULL) 
X    fprintf(stderr, "Warning: could not find icon %s\n", icon);
X  else {
X    item = (iconTree*) XtMalloc (sizeof(iconTree));
X    item->fullname = fullname;
X    item->icon = NULL;
X    icontable = get_pixmap(item, icontable);
X    pixmap = item->icon;
X  }
X  return(pixmap);
X}
X
X
Xprivate iconTree *get_pixmap(iconTree *item, iconTree *tree)
X{
X  /* If the item is found in the tree, then item's contents are filled 
X   * with that items, otherwise the Pixmap is created and the item is 
X   * inserted into the tree.
X   */
X
X  int cmp, value;
X  unsigned int width, height;
X  int x_hot, y_hot;
X
X  if (tree == NULL) {
X    /* At a leaf, insert item */
X#ifndef DEBUG_YACC
X    value = XReadBitmapFile(XtDisplay(topLevel), 
X			    RootWindowOfScreen(XtScreen(topLevel)),
X			    item->fullname,
X			    &width, &height,
X			    &item->icon,
X			    &x_hot, &y_hot);
X    if (value == BitmapFileInvalid)
X      fprintf(stderr, "Filename \'%s\' contains invalid bitmap data\n", 
X	      item->fullname);
X    else if (value == BitmapOpenFailed)
X      fprintf(stderr, "Filename \'%s\' could not be opened\n", 
X	      item->fullname);
X    else if (value == BitmapNoMemory)
X      fprintf(stderr, "Not enough memory to allocate pixmap\n");
X#else
X    item->icon = (Pixmap) DUMMY;
X    printf("DEBUG: Loaded bitmap for %s\n", item->fullname);
X#endif
X    item->left = NULL;
X    item->right = NULL;
X    tree = item;
X  } else {
X    if ((cmp = strcmp(tree->fullname, item->fullname)) == 0) {
X      /* Found it !!! */
X      item->icon = tree->icon;
X    } else 
X      if (cmp < 0)
X	tree->left = get_pixmap(item, tree->left);
X      else 
X	tree->right = get_pixmap(item, tree->right);
X  }
X  return(tree);
X}
X
Xprivate void newselection(String selection)
X{
X  /* increment selectionindex, put selection string into next 
X   * appselection, (if less than MAXSELS)
X   */
X  
X  if (++selectionindex == MAXSELS) {
X    fprintf(stderr, "Application Selection Overflow, only %d selections allowed",
X	    MAXSELS);
X    exit(2);
X  }
X
X#ifdef DEBUG_YACC
X  printf("DEBUG: New selection %s\n", selection);
X#endif
X  
X  listindex = 0;
X  current_selection = appselections[selectionindex] =
X    (AppSelection*) XtMalloc (sizeof(AppSelection));
X  current_selection->name = XtNewString(selection);
X  current_selection->number = listindex;
X  current_selection->list = (AppProgram**) XtMalloc (sizeof(AppProgram*) * APPPSIZE);
X  currentlistmax = APPPSIZE;
X}
X
Xprivate void setapp(int type, String argument)
X{
X  /* Insert program data into current AppProgram, then extend
X   * the AppProgram array.
X   */
X  AppProgram **proglist = current_selection->list;
X  AppProgram *node = proglist[listindex];
X  
X  switch(type) {
X  case NAME_T:
X    node->string = XtNewString(argument);
X#ifdef DEBUG_YACC
X    printf("String: %s\n", argument);
X#endif
X    break;
X  case ICON_T:
X    node->icon = lookupicon(argument);
X    break;
X  case PROG_T:
X    node->program = XtNewString(argument);
X#ifdef DEBUG_YACC
X    printf("Program: %s\n", argument);
X#endif
X    break;
X  case OPTIONS_T:
X    switch((int)argument) {
X    case MSEL_T:
X      node->options = M_SEL;
X#ifdef DEBUG_YACC
X      printf("MSEL\n");
X#endif
X      break;
X    case OSEL_T:
X      node->options = O_SEL;
X#ifdef DEBUG_YACC
X      printf("OSEL\n");
X#endif      
X      break;
X    case NSEL_T:
X      node->options = N_SEL;
X#ifdef DEBUG_YACC
X      printf("NSEL\n");
X#endif
X      break;
X    default:
X      fprintf(stderr, "Programmer Error: Bad argument to setapp.\n");
X      break;
X    }
X    break;
X  default:
X    fprintf(stderr, "Programmer Error: Bad argument to setapp.\n");
X    break;
X  }
X}
X
X#ifdef DEBUG_YACC
Xmain()
X{
X  yyparse();
X  return(0);
X}
X#endif
X
X
X
X
SHAR_EOF
echo "File code/parser.y is complete"
chmod 0644 code/parser.y || echo "restore of code/parser.y fails"
echo "x - extracting code/patchlevel.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/patchlevel.h &&
X#define PATCHLEVEL 0
SHAR_EOF
chmod 0644 code/patchlevel.h || echo "restore of code/patchlevel.h fails"
echo "x - extracting code/quit.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/quit.c &&
X/***********************************************************************************
X ** File          : quit.c                                                        **
X ** Purpose       : Initialise and Realise quit dialogs                           **
X ** Author        : Edward Groenendaal                                            **
X ** Date          : April 1991                                                    **
X ** Documentation : Xdtm Design Folder                                            **
X ** Related Files :                                                               **
X ***********************************************************************************/
X
X#include "xdtm.h"
X#include <X11/Shell.h>
X#include <X11/Xaw/Label.h>
X#include <X11/Xaw/Command.h>
X#include "Xedw/XedwForm.h"
X
Xextern void realize_dialog(Widget);
X
X/* Widgets */
Xprivate Widget quitpopup;	/* For Quit Message */
Xprivate Widget quitform;        /* The form */
Xprivate Widget quitlabel;  	/* Label at top of dialog */
Xprivate Widget quitquit;       	/* yes button */
Xprivate Widget quitcancel;    	/* no button */ 
X
Xpublic void init_quit(Widget top)
X{
X  extern void quitQueryResult(Widget, Boolean, caddr_t);
X
X  Arg arglist[5];
X  Cardinal i;
X
X  private String QuitLabel          = "Really quit?";
X  private String QuitButtonLabel    = "Quit";
X  private String CancelButtonLabel  = "Cancel";
X
X  quitpopup    =   XtCreatePopupShell("quitpopup",
X				      transientShellWidgetClass,
X				      top,
X				      NULL, 0);
X
X  quitform      =   XtCreateManagedWidget("quitform",
X				      xedwFormWidgetClass,
X				      quitpopup,
X				      NULL, 0);
X
X  i = 0;
X  XtSetArg(arglist[i], XtNlabel,         QuitLabel);  i++;
X  XtSetArg(arglist[i], XtNborderWidth,           0);  i++;
X  XtSetArg(arglist[i], XtNjustify, XtJustifyCenter);  i++;
X  XtSetArg(arglist[i], XtNfullWidth,          True);  i++;
X  quitlabel    =   XtCreateManagedWidget("quitlabel",
X					  labelWidgetClass,
X					  quitform,
X					  arglist, i);
X
X  i = 0;
X  XtSetArg(arglist[i], XtNlabel, CancelButtonLabel);  i++;
X  XtSetArg(arglist[i], XtNfromVert,      quitlabel);  i++;
X  XtSetArg(arglist[i], XtNjustify, XtJustifyCenter);  i++;
X  quitcancel  =   XtCreateManagedWidget("quitcancel",
X					commandWidgetClass,
X					quitform,
X					arglist, i);
X
X  i = 1;
X  XtSetArg(arglist[i], XtNlabel,   QuitButtonLabel);  i++;
X  XtSetArg(arglist[i], XtNfromVert,     quitlabel);  i++;
X  XtSetArg(arglist[i], XtNwidthLinked, quitcancel);  i++;
X  XtSetArg(arglist[i], XtNfromHoriz,   quitcancel);  i++;
X  quitquit    =   XtCreateManagedWidget("quitquit",
X					commandWidgetClass,
X					quitform,
X					arglist, i);
X
X  XtAddCallback(quitcancel, XtNcallback, quitQueryResult, False);
X  XtAddCallback(quitquit,   XtNcallback, quitQueryResult, True);
X 
X}
X
X
Xpublic void quit_dialog(void)
X{
X  realize_dialog(quitpopup);
X}
X
Xpublic void destroy_quit_dialog(void)
X{
X  XtPopdown(quitpopup);
X}
SHAR_EOF
chmod 0644 code/quit.c || echo "restore of code/quit.c fails"
echo "x - extracting code/scroll_hack.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/scroll_hack.c &&
X/*****************************************************************************
X ** File          : scroll_hack.c                                           **
X ** Purpose       : Reset the scrollbar in a viewport widget to the top     **
X ** Author        : Edward Groenendaal                                      **
X ** Date          : 25th Feb 1990                                           **
X ** Documentation : Xdtm Design Folder                                      **
X ** Related Files :                                                         **
X *****************************************************************************/
X
X#include "xdtm.h"
X#include <X11/IntrinsicP.h>
X#include <X11/StringDefs.h>
X#include <X11/Xaw/XawInit.h>
X#include <X11/Xaw/Viewport.h>
X#include <X11/Xaw/ViewportP.h>
X#include <X11/Xaw/Scrollbar.h>
X#include <X11/Xaw/ScrollbarP.h>
X
X
Xpublic void setscroll(Widget w, float pos)
X{
X  ViewportWidget  vw = (ViewportWidget) w;
X  ScrollbarWidget sw = (ScrollbarWidget) vw->viewport.vert_bar;
X  Arg arglist[1];
X
X
X  XtSetArg(arglist[0], XtNtopOfThumb, pos);
X  XtSetValues(sw, arglist, 1);
X  XtCallCallbacks(sw, XtNthumbProc, sw->scrollbar.top);
X  XtCallCallbacks(sw, XtNjumpProc, &sw->scrollbar.top);
X
X}
SHAR_EOF
chmod 0644 code/scroll_hack.c || echo "restore of code/scroll_hack.c fails"
echo "x - extracting code/strstr.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/strstr.c &&
X/*****************************************************************************
X ** File          : strstr.c                                                **
X ** Purpose       : Return pointer to first occurence of second string in   **
X **                 first string, else NULL                                 **
X ** Author        : Edward Groenendaal                                      **
X ** Date          : 11th April 1991                                         **
X ** Documentation : Xdtm Design Folder                                      **
X ** Related Files : appman.c                                                **
X *****************************************************************************/
X
X#ifdef SYSV
X
X#include <stdio.h>  /* For NULL */
X
Xchar *strstr(char *cs, char *ct)
X{
X  char *csi, *cti, *result;
X  
X  result = NULL;
X  cti = ct;
X  csi = cs;
X  
X  /* search for first letter, on finding it set result to that point */
X
X  while (*csi != '\0' && *cti != '\0') {
X    if (result == NULL) {
X      /* searching for start of substring */
X      if (*csi == *cti) {
X	result = csi;
X	cti++;
X      }
X    } else 
X      /* trying to match rest */
X      if (*csi == *cti) 
X	cti++;
X      else {
X	cti = ct;
X	csi = result;
X	result = NULL;
X      }
X    csi++;
X  }
X
X  if (*cti == '\0')
X    return(result);
X  else 
X    return((char*) NULL);
X}
X
X#endif
SHAR_EOF
chmod 0644 code/strstr.c || echo "restore of code/strstr.c fails"
echo "x - extracting code/xdtm.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/xdtm.h &&
X/*****************************************************************************
X ** File          : xdtm.h                                                  **
X ** Purpose       :                                                         **
X ** Author        : Edward Groenendaal                                      **
X ** Date          : 18th Feb 1991                                           **
X ** Documentation : Xdtm Design Folder                                      **
X ** Related Files : menus.c                                                 **
X *****************************************************************************/
X
X#ifndef _xdtm_h
X#define _xdtm_h
X
X#define RELEASE       1
X#define SYSTEM_HELP   "/usr/lib/X11/xdtm/help"
X#define SYSTEM_XDTMRC "/usr/lib/X11/xdtm/xdtmrc"
X#define MAXSELS 10
X#define MAXARGS 20
X#define DUMMY ~NULL
X
X#include "patchlevel.h"
X
X/* UNIX include files */
X#include <stdio.h>
X#include <errno.h>
X#include <string.h>
X
X/* Standard X11 include files */
X#include <X11/Intrinsic.h>
X#include <X11/StringDefs.h>
X
X#define private     	static
X#define public      	/* global */
X
Xextern Arg chain_position[];
Xextern Cardinal chain_size;
X
Xtypedef enum {NormalMode, CopyMode, MoveMode} Mode;
X
Xtypedef struct {
X  int view_width;
X  int view_height;
X  XFontStruct *view_font;
X  String mode;
X  XFontStruct *dm_font;
X} AppData, *AppDataPtr;
X
X/* Application Resources */
X
X#define XtNviewWidth "viewWidth"
X#define XtNviewHeight "viewHeight"
X#define XtNviewFont "viewFont"
X#define XtNmode "mode"
X#define XtNdmFont "dmFont"
X
X#define XtCViewWidth "ViewWidth"
X#define XtCViewHeight "ViewHeight"
X#define XtCMode "Mode"
X
X#endif /* _xdtm_h */
SHAR_EOF
chmod 0644 code/xdtm.h || echo "restore of code/xdtm.h fails"
echo "x - extracting code/README (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/README &&
XX Desktop Manager README
X========================
X
XThis is release 1 of the X desktop manager. It was written for my final
Xyear project, and as usual in such things left to the last minute 
Xwhich explains why there are a couple of areas in which the program 
Xcould have been better, namely support for colour displays, full 
Xhelp facilities.
X
XWhat is the X Desktop Manager?
X------------------------------
X
XX Desktop Manager (xdtm) is a graphical shell for UNIX and the X Window
XSystem. It supports the following features:
X
X1)  Graphical representation of files and directories as 
X	i)   icons.
X	ii)  filenames.
X	iii) long listing (ls -l style).
X 
X2)  Allow files to be selected by matching a regular expression to their
X    file names.
X
X3)  Allow a program to be mapped over the selected files.
X
X4)  Allow the user (via a setup file) to define the icons to be given 
X    filenames matching a particular regular expression.
X
X5)  Allow files or directories to be deleted, moved, and copied to
X    other directories.
X
X6)  Allow predifined programs to be executed (with optional parameters
X    of the selected files) when it's associated icon is double clicked.
X
X7)  A comprehensive set of predefined icons. 
X
X8) Probably loads more things..
X
XSee the file help for more details.
X
XWhat's it for?
X--------------
X
XXdtm is designed to simplify and thus speed of the process of file management,
Xtext editing, and program development.
X
XFor example.
X
XIn the example xdtm setup file (xdtmrc) is my setup which includes the following
Xaids in the 'programming' selection, 
X
XMake All    - recompile program in current directory (via Makefile)
XMake Clean  
XMake Tags
XEmacs       - Start the Emacs editor with any selected files as argument.
X
XI would click on the file I wish to edit (Or double click if I only wish
Xto view it) then double click on the Emacs icon, which would start emacs
Xwith that file preloaded, I could then edit that file, and double click 
Xon Make All to recompile the program, at which point the binary will show
Xup in the directory, and it may be executed by double clicking on it.
X
XThe best way to find out how it works is to play with the program and to
Xlook at the setup file. I hope to produce proper full documentation in 
Xthe next week, (ending 26th April 1991) if you wish to receive a copy
Xof this (in Macintosh Word 4 Format only I'm afraid!) email me a message 
Xsome time after that, but before July, 'cos that's when I leave!!
X
X(I will probably do a manual page as well)
X
XWhat does it work on?
X---------------------
X
XThe program is designed to work on monochrome systems BUT does also work 
Xon colour systems except that the highlighting is slightly buggered.
X
XIt uses <regexp.h> for doing regular expression matching, this file
Xis only included on SYSV machines and hybreds.
XIt may be possible on a network to use this file copied from a SYSV
Xmachine but is probably very naughty!
X
XIt is written in ANSI C and should be compiled using the Gnu C compiler
X
XIt has been tested and works on the following systems:
X
XMachine       	OS     		Display   	X Version
X
XMacintosh IIcx	A/UX 2.01  	Monochrome	MacX and X11R4
XSun 3/60	SunOS 4.1.1	Colour		X11R4 (highlighting broken)
XSun 3/50	SunOs 4.1.1	Monochrome	X11R4
XHP9000/370	HP-UX 7.0	Monochrome	X11R4
XHP9000/370 	HP-UX 7.0	Colour		X11R4 (highlighting broken)
X
XIf you manage to get it working on any other system (before July) please
Xemail me.
X
XHow to compile it
X-----------------
X
X1) unshar archives
X2) cd code
X3) edit Imakefile and xdtm.h for your site
X4) xmkmf
X5) make
X6) copy 'xdtmrc' to your system xdtm directory
X7) copy 'help'   to your system xdtm directory 
X
XBugs
X----
X
Xplease mail any bug reports - patches - wishes to me 
Xpreferably BEFORE 26th of April (deadline).
X
XEdward Groenendaal.
X
XUniversity of Sussex,
XBrighton,
XEngland.
X
XEmail: eddyg at cogs.sussex.ac.uk
SHAR_EOF
chmod 0644 code/README || echo "restore of code/README fails"
echo "x - extracting code/Imakefile (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/Imakefile &&
X              CC = gcc
X            SRCS = main.c menus.c appman.c dirman.c \
X                   fileman.c parse.c info.c \
X		   Xedw/XedwList.c Xedw/XedwForm.c lexical.l parser.y \
X		   dialogs.c scroll_hack.c strstr.c buttons.c \
X		   display.c listoption.c map.c newfile.c \
X		   quit.c 
X            OBJS = main.o menus.o appman.o dirman.o \
X                   fileman.o parse.o parser.o lexical.o \
X	 	   dialogs.o scroll_hack.o strstr.o buttons.o \
X		   display.o listoption.o map.o newfile.o \
X		   quit.o info.o
X          LDLIBS = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) -ll -ly
XEXTRA_LOAD_FLAGS = -LXedw  -L/usr/local/X11R4/lib
X		DEFINES = -I/usr/local/lib/gcc-include
X          CFLAGS = StandardDefines -I/usr/local/X11R4/include -I/usr/local/lib/gcc-include
X          YFLAGS = -d 
X
X#define PassCDebugFlags 'CFLAGS=$(CFLAGS)' 
X
XAllTarget(xdtm)
X
XNormalProgramTarget(lexical, lexical.c,,-ll,-DDEBUG_LEX $(CFLAGS))
X
XNormalProgramTarget(parser, lexical.c parser.c,,-ll -ly,-DDEBUG_YACC $(CFLAGS))
X
XNormalProgramTarget(xdtm, $(OBJS), Xedw, -lXedw,)
X
XNamedMakeSubdirs(Xedw, Xedw)
X
XDependTarget()
X
Xetags:
X	etags -t *.h $(SRCS)  
X
Xclean::
X	$(RM) lexical.c parser.c parser.h
X	@(cd Xedw; echo "Making clean in ./Xedw"; \
X	$(MAKE) clean;)
X
Xparser.h parser.c: parser.y         
X	$(YACC) $(YFLAGS) parser.y      
X	$(MV) y.tab.c parser.c          
X	$(MV) y.tab.h parser.h      
X
Xlexical.o: parser.h
X
SHAR_EOF
chmod 0644 code/Imakefile || echo "restore of code/Imakefile fails"
echo "x - extracting code/Makefile (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/Makefile &&
X# Makefile generated by imake - do not edit!
X# $XConsortium: imake.c,v 1.51 89/12/12 12:37:30 jim Exp $
X#
X# The cpp used on this machine replaces all newlines and multiple tabs and
X# spaces in a macro expansion with a single space.  Imake tries to compensate
X# for this, but is not always successful.
X#
X
X###########################################################################
X# Makefile generated from "Imake.tmpl" and <Imakefile>
X# $XConsortium: Imake.tmpl,v 1.77 89/12/18 17:01:37 jim Exp $
X#
X# Platform-specific parameters may be set in the appropriate .cf
X# configuration files.  Site-wide parameters may be set in the file
X# site.def.  Full rebuilds are recommended if any parameters are changed.
X#
X# If your C preprocessor doesn't define any unique symbols, you'll need
X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
X# "make Makefile", "make Makefiles", or "make World").
X#
X# If you absolutely can't get imake to work, you'll need to set the
X# variables at the top of each Makefile as well as the dependencies at the
X# bottom (makedepend will do this automatically).
X#
X
X###########################################################################
X# platform-specific configuration parameters - edit sun.cf to change
X
X# platform:  $XConsortium: sun.cf,v 1.38 89/12/23 16:10:10 jim Exp $
X# operating system:  SunOS 4.1
X
X###########################################################################
X# site-specific configuration parameters - edit site.def to change
X
X# site:  $XConsortium: site.def,v 1.21 89/12/06 11:46:50 jim Exp $
X
X            SHELL = /bin/sh
X
X              TOP = .
X      CURRENT_DIR = .
X
X               AR = ar cq
X  BOOTSTRAPCFLAGS =
X               CC = cc
X
X         COMPRESS = compress
X              CPP = /lib/cpp $(STD_CPP_DEFINES)
X    PREPROCESSCMD = cc -E $(STD_CPP_DEFINES)
X          INSTALL = install
X               LD = ld
X             LINT = lint
X      LINTLIBFLAG = -C
X         LINTOPTS = -axz
X               LN = ln -s
X             MAKE = make
X               MV = mv
X               CP = cp
X           RANLIB = ranlib
X  RANLIBINSTFLAGS =
X               RM = rm -f
X     STD_INCLUDES =
X  STD_CPP_DEFINES =
X      STD_DEFINES =
X EXTRA_LOAD_FLAGS =
X  EXTRA_LIBRARIES =
X             TAGS = ctags
X
X    SHAREDCODEDEF = -DSHAREDCODE
X         SHLIBDEF = -DSUNSHLIB
X
X    PROTO_DEFINES =
X
X     INSTPGMFLAGS =
X
X     INSTBINFLAGS = -m 0755
X     INSTUIDFLAGS = -m 4755
X     INSTLIBFLAGS = -m 0664
X     INSTINCFLAGS = -m 0444
X     INSTMANFLAGS = -m 0444
X     INSTDATFLAGS = -m 0444
X    INSTKMEMFLAGS = -m 4755
X
X          DESTDIR = /usr/local/X11R4
X
X     TOP_INCLUDES = -I$(INCROOT)
X
X      CDEBUGFLAGS = -O
X        CCOPTIONS = -fswitch
X      COMPATFLAGS =
X
X      ALLINCLUDES = $(STD_INCLUDES) $(TOP_INCLUDES) $(INCLUDES) $(EXTRA_INCLUDES)
X       ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(DEFINES) $(COMPATFLAGS)
X           CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES)
X        LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES)
X           LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
X        LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS)
X   LDCOMBINEFLAGS = -X -r
X
X        MACROFILE = sun.cf
X           RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut
X
X    IMAKE_DEFINES =
X
X         IRULESRC = $(CONFIGDIR)
X        IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES)
X
X     ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \
X			$(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \
X			$(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)
X
X###########################################################################
X# X Window System Build Parameters
X# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $
X
X###########################################################################
X# X Window System make variables; this need to be coordinated with rules
X# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $
X
X          PATHSEP = /
X        USRLIBDIR = $(DESTDIR)/lib
X           BINDIR = $(DESTDIR)/bin/X11
X          INCROOT = $(DESTDIR)/include
X     BUILDINCROOT = $(TOP)
X      BUILDINCDIR = $(BUILDINCROOT)/X11
X      BUILDINCTOP = ..
X           INCDIR = $(INCROOT)/X11
X           ADMDIR = $(DESTDIR)/adm
X           LIBDIR = $(USRLIBDIR)/X11
X        CONFIGDIR = $(LIBDIR)/config
X       LINTLIBDIR = $(USRLIBDIR)/lint
X
X          FONTDIR = $(LIBDIR)/fonts
X         XINITDIR = $(LIBDIR)/xinit
X           XDMDIR = $(LIBDIR)/xdm
X           AWMDIR = $(LIBDIR)/awm
X           TWMDIR = $(LIBDIR)/twm
X           GWMDIR = $(LIBDIR)/gwm
X          MANPATH = $(DESTDIR)/man
X    MANSOURCEPATH = $(MANPATH)/man
X           MANDIR = $(MANSOURCEPATH)1
X        LIBMANDIR = $(MANSOURCEPATH)3
X      XAPPLOADDIR = $(LIBDIR)/app-defaults
X
X        SOXLIBREV = 4.2
X          SOXTREV = 4.0
X         SOXAWREV = 4.0
X        SOOLDXREV = 4.0
X         SOXMUREV = 4.0
X        SOXEXTREV = 4.0
X
X       FONTCFLAGS = -t
X
X     INSTAPPFLAGS = $(INSTDATFLAGS)
X
X            IMAKE = imake
X           DEPEND = makedepend
X              RGB = rgb
X            FONTC = bdftosnf
X        MKFONTDIR = mkfontdir
X        MKDIRHIER = /bin/sh $(BINDIR)/mkdirhier.sh
X
X        CONFIGSRC = $(TOP)/config
X        CLIENTSRC = $(TOP)/clients
X          DEMOSRC = $(TOP)/demos
X           LIBSRC = $(TOP)/lib
X          FONTSRC = $(TOP)/fonts
X       INCLUDESRC = $(TOP)/X11
X        SERVERSRC = $(TOP)/server
X          UTILSRC = $(TOP)/util
X        SCRIPTSRC = $(UTILSRC)/scripts
X       EXAMPLESRC = $(TOP)/examples
X       CONTRIBSRC = $(TOP)/../contrib
X           DOCSRC = $(TOP)/doc
X           RGBSRC = $(TOP)/rgb
X        DEPENDSRC = $(UTILSRC)/makedepend
X         IMAKESRC = $(CONFIGSRC)
X         XAUTHSRC = $(LIBSRC)/Xau
X          XLIBSRC = $(LIBSRC)/X
X           XMUSRC = $(LIBSRC)/Xmu
X       TOOLKITSRC = $(LIBSRC)/Xt
X       AWIDGETSRC = $(LIBSRC)/Xaw
X       OLDXLIBSRC = $(LIBSRC)/oldX
X      XDMCPLIBSRC = $(LIBSRC)/Xdmcp
X      BDFTOSNFSRC = $(FONTSRC)/bdftosnf
X     MKFONTDIRSRC = $(FONTSRC)/mkfontdir
X     EXTENSIONSRC = $(TOP)/extensions
X
X  DEPEXTENSIONLIB = $(USRLIBDIR)/libXext.a
X     EXTENSIONLIB =  -lXext
X
X          DEPXLIB = $(DEPEXTENSIONLIB)
X             XLIB = $(EXTENSIONLIB) -lX11
X
X      DEPXAUTHLIB = $(USRLIBDIR)/libXau.a
X         XAUTHLIB =  -lXau
X
X        DEPXMULIB =
X           XMULIB = -lXmu
X
X       DEPOLDXLIB =
X          OLDXLIB = -loldX
X
X      DEPXTOOLLIB =
X         XTOOLLIB = -lXt
X
X        DEPXAWLIB =
X           XAWLIB = -lXaw
X
X LINTEXTENSIONLIB = $(USRLIBDIR)/llib-lXext.ln
X         LINTXLIB = $(USRLIBDIR)/llib-lX11.ln
X          LINTXMU = $(USRLIBDIR)/llib-lXmu.ln
X        LINTXTOOL = $(USRLIBDIR)/llib-lXt.ln
X          LINTXAW = $(USRLIBDIR)/llib-lXaw.ln
X
X        XWLIBSRC = $(CONTRIBSRC)/toolkits/Xw
X        DEPXWLIB = $(USRLIBDIR)/libXw.a
X        XWLIB =  -lXw
X
X          DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
X
X         DEPLIBS1 = $(DEPLIBS)
X         DEPLIBS2 = $(DEPLIBS)
X         DEPLIBS3 = $(DEPLIBS)
X
X###########################################################################
X# Imake rules for building libraries, programs, scripts, and data files
X# rules:  $XConsortium: Imake.rules,v 1.67 89/12/18 17:14:15 jim Exp $
X
X###########################################################################
X# start of Imakefile
X
X              CC = gcc
X            SRCS = main.c menus.c appman.c dirman.c \
X                   fileman.c parse.c info.c \
X		   Xedw/XedwList.c Xedw/XedwForm.c lexical.l parser.y \
X		   dialogs.c scroll_hack.c strstr.c buttons.c \
X		   display.c listoption.c map.c newfile.c \
X		   quit.c
X            OBJS = main.o menus.o appman.o dirman.o \
X                   fileman.o parse.o parser.o lexical.o \
X	 	   dialogs.o scroll_hack.o strstr.o buttons.o \
X		   display.o listoption.o map.o newfile.o \
X		   quit.o info.o
X          LDLIBS = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) -ll -ly
XEXTRA_LOAD_FLAGS = -LXedw  -L/usr/local/X11R4/lib
X		DEFINES = -I/usr/local/lib/gcc-include
X          CFLAGS =  -g  -I/usr/local/X11R4/include -I/usr/local/lib/gcc-include
X          YFLAGS = -d
X
Xall:: xdtm
X
Xlexical:  lexical.c
X	$(RM) $@
X	$(CC) -o $@  lexical.c $(LDOPTIONS) -ll $(LDLIBS) -DDEBUG_LEX $(CFLAGS) $(EXTRA_LOAD_FLAGS)
X
Xclean::
X	$(RM) lexical
X
Xparser:  lexical.c parser.c
X	$(RM) $@
X	$(CC) -o $@  lexical.c parser.c $(LDOPTIONS) -ll -ly $(LDLIBS) -DDEBUG_YACC $(CFLAGS) $(EXTRA_LOAD_FLAGS)
X
Xclean::
X	$(RM) parser
X
Xxdtm:  $(OBJS)  Xedw
X	$(RM) $@
X	$(CC) -o $@  $(OBJS) $(LDOPTIONS)  -lXedw $(LDLIBS)  $(EXTRA_LOAD_FLAGS)
X
Xclean::
X	$(RM) xdtm
X
XXedw::
X	@case '${MFLAGS}' in *[ik]*) set +e;; esac; \
X	for i in  Xedw ;\
X	do \
X	(cd $$i ; echo "making" Xedw "in $(CURRENT_DIR)/$$i..."; \
X	$(MAKE) $(MFLAGS) 'CFLAGS=$(CFLAGS)' all); \
X	done
X
Xdepend::
X	$(DEPEND) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)
X
Xetags:
X	etags -t *.h $(SRCS)
X
Xclean::
X	$(RM) lexical.c parser.c parser.h
X	@(cd Xedw; echo "Making clean in ./Xedw"; \
X	$(MAKE) clean;)
X
Xparser.h parser.c: parser.y
X	$(YACC) $(YFLAGS) parser.y
X	$(MV) y.tab.c parser.c
X	$(MV) y.tab.h parser.h
X
Xlexical.o: parser.h
X
X###########################################################################
X# common rules for all Makefiles - do not edit
X
Xemptyrule::
X
Xclean::
X	$(RM_CMD) \#*
X
XMakefile::
X	- at if [ -f Makefile ]; then \
X	echo "	$(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \
X	$(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
X	else exit 0; fi
X	$(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
X
Xtags::
X	$(TAGS) -w *.[ch]
X	$(TAGS) -xw *.[ch] > TAGS
X
X###########################################################################
X# empty rules for directories that do not have SUBDIRS - do not edit
X
Xinstall::
X	@echo "install in $(CURRENT_DIR) done"
X
Xinstall.man::
X	@echo "install.man in $(CURRENT_DIR) done"
X
XMakefiles::
X
Xincludes::
X
X###########################################################################
X# dependencies generated by makedepend
X
SHAR_EOF
chmod 0644 code/Makefile || echo "restore of code/Makefile fails"
echo "x - extracting code/help (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/help &&
XThis is the X Desktop Manager Help file.
X
X<None as yet, email eddyg at cogs.sussex.ac.uk for the finished version
X of this file after the 26th April 1991>
X
SHAR_EOF
chmod 0644 code/help || echo "restore of code/help fails"
echo "x - extracting code/Xdtm (Text)"
sed 's/^X//' << 'SHAR_EOF' > code/Xdtm &&
X! menus
X*font: helvB14
X*pathManager*cursor: left_ptr
X*menuBar*cursor: left_ptr
X*buttonForm*cursor: left_ptr
X*listoptionsettings.font: courB12
XXdtm.mode: icons
XXdtm.viewHeight: 30
SHAR_EOF
chmod 0644 code/Xdtm || echo "restore of code/Xdtm fails"
echo "x - extracting icons/eddy/ccode.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/ccode.icon &&
X#define ccode_width 32
X#define ccode_height 32
Xstatic char ccode_bits[] = {
X   0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x10, 0xe0, 0x41, 0x01,
X   0x10, 0xf8, 0x43, 0x02, 0x10, 0x3c, 0x47, 0x04, 0x10, 0x1c, 0xc6, 0x0f,
X   0x10, 0x1e, 0x00, 0x08, 0x10, 0x0e, 0x00, 0x08, 0x10, 0x0e, 0x00, 0x08,
X   0x10, 0x0e, 0x00, 0x08, 0x10, 0x0e, 0x00, 0x08, 0x10, 0x1e, 0x00, 0x08,
X   0x10, 0x1c, 0x06, 0x08, 0x10, 0x3c, 0x07, 0x08, 0x10, 0xf8, 0x03, 0x08,
X   0xd0, 0xe0, 0x01, 0x08, 0x10, 0x00, 0x00, 0x08, 0x90, 0x05, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x90, 0xdf, 0x0a, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0xb7, 0x03, 0x08, 0x10, 0x00, 0x00, 0x08, 0x90, 0xbd, 0xb7, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x6c, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x90, 0xdd, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0xd0, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f};
SHAR_EOF
chmod 0644 icons/eddy/ccode.icon || echo "restore of icons/eddy/ccode.icon fails"
echo "x - extracting icons/eddy/core.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/core.icon &&
X#define core_width 32
X#define core_height 32
Xstatic char core_bits[] = {
X   0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x10, 0x00, 0x40, 0x01,
X   0x10, 0x00, 0x40, 0x02, 0x10, 0x10, 0x40, 0x04, 0x10, 0x30, 0xc2, 0x0f,
X   0x10, 0x50, 0x03, 0x08, 0x10, 0xb7, 0x02, 0x08, 0x10, 0x9a, 0x02, 0x08,
X   0x10, 0x44, 0x7a, 0x08, 0x10, 0x68, 0x46, 0x08, 0x10, 0x50, 0x21, 0x08,
X   0x10, 0x08, 0x16, 0x08, 0x10, 0xb4, 0x09, 0x08, 0x10, 0x2c, 0x04, 0x08,
X   0x10, 0x90, 0x08, 0x08, 0x10, 0x50, 0x09, 0x08, 0x10, 0x28, 0x16, 0x08,
X   0x10, 0x18, 0x38, 0x08, 0x10, 0x08, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0x53, 0x5d, 0x09,
X   0x90, 0x54, 0x49, 0x09, 0x10, 0x71, 0x49, 0x09, 0x10, 0x52, 0x49, 0x09,
X   0x90, 0x54, 0x09, 0x08, 0x10, 0x53, 0x49, 0x09, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f};
SHAR_EOF
chmod 0644 icons/eddy/core.icon || echo "restore of icons/eddy/core.icon fails"
echo "x - extracting icons/eddy/dotdot.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/dotdot.icon &&
X#define dotdot_width 32
X#define dotdot_height 32
Xstatic char dotdot_bits[] = {
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x02, 0x08,
X   0xfe, 0xff, 0xff, 0x7f, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40,
X   0x02, 0x80, 0x00, 0x40, 0x02, 0xc0, 0x01, 0x40, 0x02, 0xe0, 0x03, 0x40,
X   0x02, 0xf0, 0x07, 0x40, 0x02, 0xf8, 0x0f, 0x40, 0x02, 0xfc, 0x1f, 0x40,
X   0x02, 0xc0, 0x01, 0x40, 0x02, 0xc0, 0x01, 0x40, 0x02, 0xc0, 0x01, 0x40,
X   0x02, 0xc0, 0x01, 0x40, 0x02, 0xc0, 0x01, 0x40, 0x02, 0xc0, 0x01, 0x40,
X   0x02, 0xc0, 0x01, 0x40, 0x02, 0xc0, 0x01, 0x40, 0x02, 0xc0, 0x01, 0x40,
X   0x02, 0xc0, 0x01, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40,
X   0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00};
SHAR_EOF
chmod 0644 icons/eddy/dotdot.icon || echo "restore of icons/eddy/dotdot.icon fails"
echo "x - extracting icons/eddy/elisp.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/elisp.icon &&
X#define elisp_width 32
X#define elisp_height 32
Xstatic char elisp_bits[] = {
X   0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x50, 0x64, 0x46, 0x01,
X   0x50, 0x94, 0x4a, 0x02, 0x50, 0x24, 0x4a, 0x04, 0x50, 0x44, 0xc6, 0x0f,
X   0x50, 0x94, 0x02, 0x08, 0xd0, 0x65, 0x02, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xd0, 0x17, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0xd0, 0x0f, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0xbb, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0xb6, 0x01, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x37, 0x03, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0xde, 0x02, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0xdc, 0x04, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0xef, 0x06, 0x08, 0x10, 0x00, 0x00, 0x08, 0x90, 0x07, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xd0, 0x7b, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f};
SHAR_EOF
chmod 0644 icons/eddy/elisp.icon || echo "restore of icons/eddy/elisp.icon fails"
echo "x - extracting icons/eddy/elispc.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/elispc.icon &&
X#define elisp_width 32
X#define elisp_height 32
Xstatic char elisp_bits[] = {
X   0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x50, 0x64, 0x46, 0x01,
X   0x50, 0x94, 0x4a, 0x02, 0x50, 0x24, 0x4a, 0x04, 0x50, 0x44, 0xc6, 0x0f,
X   0x50, 0x94, 0x02, 0x08, 0xd0, 0x65, 0x02, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xd0, 0x17, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0xd0, 0x0f, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0xbb, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0xb6, 0x01, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x37, 0x03, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0xde, 0x02, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0xdc, 0x04, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0xef, 0x06, 0x08, 0x10, 0x00, 0x00, 0x08, 0x90, 0x07, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xd0, 0x7b, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f};
SHAR_EOF
chmod 0644 icons/eddy/elispc.icon || echo "restore of icons/eddy/elispc.icon fails"
echo "x - extracting icons/eddy/file.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/file.icon &&
X#define file_width 32
X#define file_height 32
Xstatic char file_bits[] = {
X   0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x10, 0x00, 0x40, 0x01,
X   0x10, 0x00, 0x40, 0x02, 0x10, 0x00, 0x40, 0x04, 0x10, 0x00, 0xc0, 0x0f,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f};
SHAR_EOF
chmod 0644 icons/eddy/file.icon || echo "restore of icons/eddy/file.icon fails"
echo "x - extracting icons/eddy/folder.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/folder.icon &&
X#define folder_width 32
X#define folder_height 32
Xstatic char folder_bits[] = {
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X   0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x02, 0x08,
X   0xfe, 0xff, 0xff, 0x7f, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40,
X   0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40,
X   0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40,
X   0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40,
X   0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40,
X   0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40,
X   0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40,
X   0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00};
SHAR_EOF
chmod 0644 icons/eddy/folder.icon || echo "restore of icons/eddy/folder.icon fails"
echo "x - extracting icons/eddy/hcode.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/hcode.icon &&
X#define hcode_width 32
X#define hcode_height 32
Xstatic char hcode_bits[] = {
X   0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x10, 0x0f, 0x40, 0x01,
X   0x10, 0x0e, 0x40, 0x02, 0x10, 0x0e, 0x40, 0x04, 0x10, 0x0e, 0xc0, 0x0f,
X   0x10, 0xee, 0x01, 0x08, 0x10, 0xfe, 0x07, 0x08, 0x10, 0x1e, 0x07, 0x08,
X   0x10, 0x0e, 0x0e, 0x08, 0x10, 0x0e, 0x0e, 0x08, 0x10, 0x0e, 0x0e, 0x08,
X   0x10, 0x0e, 0x0e, 0x08, 0x10, 0x0e, 0x0e, 0x08, 0x10, 0x1f, 0x1f, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0xd0, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x90, 0xdf, 0x0a, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0xb7, 0x03, 0x08, 0x10, 0x00, 0x00, 0x08, 0x90, 0xbd, 0xb7, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x6c, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x90, 0xdd, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0xd0, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f};
SHAR_EOF
chmod 0644 icons/eddy/hcode.icon || echo "restore of icons/eddy/hcode.icon fails"
echo "x - extracting icons/eddy/icon.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/icon.icon &&
X#define icon_width 32
X#define icon_height 32
Xstatic char icon_bits[] = {
X   0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x10, 0x00, 0x40, 0x01,
X   0x10, 0x00, 0x40, 0x02, 0x10, 0x00, 0x40, 0x04, 0x10, 0x00, 0xc0, 0x0f,
X   0x10, 0xfe, 0x0f, 0x08, 0x10, 0x02, 0x18, 0x08, 0x10, 0xc2, 0x29, 0x08,
X   0x10, 0x82, 0x78, 0x08, 0x10, 0x82, 0x40, 0x08, 0x10, 0xc2, 0x41, 0x08,
X   0x10, 0x02, 0x40, 0x08, 0x10, 0xc2, 0x41, 0x08, 0x10, 0x42, 0x40, 0x08,
X   0x10, 0x42, 0x40, 0x08, 0x10, 0xc2, 0x41, 0x08, 0x10, 0x02, 0x40, 0x08,
X   0x10, 0xc2, 0x41, 0x08, 0x10, 0x42, 0x41, 0x08, 0x10, 0x42, 0x41, 0x08,
X   0x10, 0xc2, 0x41, 0x08, 0x10, 0x02, 0x40, 0x08, 0x10, 0x42, 0x41, 0x08,
X   0x10, 0xc2, 0x41, 0x08, 0x10, 0xc2, 0x41, 0x08, 0x10, 0x42, 0x41, 0x08,
X   0x10, 0x02, 0x40, 0x08, 0x10, 0xfe, 0x7f, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f};
SHAR_EOF
chmod 0644 icons/eddy/icon.icon || echo "restore of icons/eddy/icon.icon fails"
echo "x - extracting icons/eddy/lcode.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/lcode.icon &&
X#define lcode_width 32
X#define lcode_height 32
Xstatic char lcode_bits[] = {
X   0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x10, 0xf0, 0x40, 0x01,
X   0x10, 0xe0, 0x40, 0x02, 0x10, 0xe0, 0x40, 0x04, 0x10, 0xe0, 0xc0, 0x0f,
X   0x10, 0xe0, 0x00, 0x08, 0x10, 0xe0, 0x00, 0x08, 0x10, 0xe0, 0x00, 0x08,
X   0x10, 0xe0, 0x00, 0x08, 0x10, 0xe0, 0x00, 0x08, 0x10, 0xe0, 0x00, 0x08,
X   0x10, 0xe0, 0x00, 0x08, 0x10, 0xe0, 0x00, 0x08, 0x10, 0xf0, 0x01, 0x08,
X   0xd0, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x90, 0x05, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x90, 0xdf, 0x0a, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x10, 0xb7, 0x03, 0x08, 0x10, 0x00, 0x00, 0x08, 0x90, 0xbd, 0xb7, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0x10, 0x6c, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08,
X   0x90, 0xdd, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0xd0, 0x00, 0x00, 0x08,
X   0x10, 0x00, 0x00, 0x08, 0xf0, 0xff, 0xff, 0x0f};
SHAR_EOF
chmod 0644 icons/eddy/lcode.icon || echo "restore of icons/eddy/lcode.icon fails"
echo "x - extracting icons/eddy/lib.icon (Text)"
sed 's/^X//' << 'SHAR_EOF' > icons/eddy/lib.icon &&
X#define lib_width 32
X#define lib_height 32
Xstatic char lib_bits[] = {
X   0xfe, 0xff, 0xff, 0x7f, 0x02, 0x00, 0x00, 0x40, 0x22, 0xb3, 0xaa, 0x46,
X   0x52, 0x95, 0xab, 0x46, 0x72, 0x93, 0xaa, 0x42, 0x52, 0xb5, 0x4a, 0x46,
X   0x02, 0x00, 0x00, 0x40, 0xf2, 0x7d, 0xdf, 0x47, 0x12, 0x45, 0x51, 0x44,
X   0x12, 0x45, 0x51, 0x44, 0x12, 0x45, 0x51, 0x44, 0x12, 0x45, 0x51, 0x44,
X   0x12, 0x45, 0x51, 0x44, 0xf2, 0x7d, 0xdf, 0x47, 0x02, 0x00, 0x00, 0x40,
X   0xf2, 0x7d, 0xdf, 0x47, 0x12, 0x45, 0x51, 0x44, 0x12, 0x45, 0x51, 0x44,
X   0x12, 0x45, 0x51, 0x44, 0x12, 0x45, 0x51, 0x44, 0x12, 0x45, 0x51, 0x44,
X   0xf2, 0x7d, 0xdf, 0x47, 0x02, 0x00, 0x00, 0x40, 0xf2, 0x7d, 0xdf, 0x47,
SHAR_EOF
echo "End of part 4"
echo "File icons/eddy/lib.icon is continued in part 5"
echo "5" > s2_seq_.tmp
exit 0



More information about the Alt.sources mailing list