🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sources.reviewed
Article #2

v02i033: dired - (Ver. 1.8) directory editor in C++, Part01/05

#2
From: Mike Lijewski
Date: Wed, 28 Oct 1992 02:36
1363 lines
52858 bytes
Submitted-by: Mike Lijewski <lijewski@theory.tc.cornell.edu>
Posting-number: Volume 2, Issue 33
Archive-name: dired/part01
Supersedes: dired: Volume 2, Issue 7-12

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 5)."
# Contents:  dired.1 dired.lpr Makefile ChangeLog INSTALL MANIFEST
#   README
# Wrapped by lijewski@xtesoc2 on Mon Oct  5 14:53:25 1992
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'dired.1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'dired.1'\"
else
echo shar: Extracting \"'dired.1'\" \(9998 characters\)
sed "s/^X//" >'dired.1' <<'END_OF_FILE'
X.\"
X.\"  @(#) dired.1 1.24   Delta'd: 11:45:08 6/24/92   Mike Lijewski, CNSF
X.\"
X.TH DIRED 1
X.SH NAME
Xdired \- a directory editor
X.SH SYNOPSIS
X.B "dired [-t | -u | -c] [dirname]"
X.br
X
X.SH DESCRIPTION
X.I Dired
Xis a directory editor modelled after Dired Mode in GNU Emacs.
XIt displays a window consisting of a long listing of
X.I dirname
X, or the current directory if invoked without a directory argument.
XBy default, the listing is in the format of an
X.I " ls -al "
Xcommand, which means that the listing lines are sorted alphabetically.
XThe file or directory on the line
Xcontaining the cursor is called the current file, with that line
Xknown as the current line.  The listing can also be sorted by the
Xmodification time, access time, or inode-change time of the files in
Xthe directory by specifying one of the options `-t', `-u', or `-c',
Xrespectively.   The sorting order can be changed from within
X.I dired
Xby using the `O' (order) command.
X.I Dired
Xprovides numerous commands for operating on the current file
Xincluding, but not limited to, 
Xediting, paging, deleting, renaming, copying and compressing.
X.PP
XCommands are a superset of those in
X.I vi
Xand
X.I emacs.
X.PP
X.SH COMMANDS
XIn the following descriptions, ^X means control-X.
XESC stands for the ESCAPE key; for example ESC-v means the
Xtwo character sequence "ESCAPE", then "v".  TAB stands for the tab
Xkey. UP_ARROW stands for the up arrow key and DOWN_ARROW stands for
Xthe down arrow key, if your keyboard supports arrow keys.
X.PP
XA number of commands require arguments.  In such cases 
X.I dired
Xwill prompt for the necessary argument(s).  The prompt always appears in
Xthe last line of the window.  All graphical characters are accepted as
Xlegal when responding to a prompt.
XTyping a carriage return signifies the end of response.
XTyping a ^G aborts out of the prompt,
Xcanceling the command.  Backspace works as expected.  All other
Xnon-graphical characters are ignored, though signal generating keys (^C, ^\\
Xand ^Z) do the right thing in a prompt as they do elsewhere in dired.
XFilename completion is
Xavailable for the `E' and `c' commands.  Typing a tab (the TAB key)
Xwhen in the prompt for these commands attempts to form the longest
Xunique file or directory name.
X.PP
X.IP "? or H "
XHelp - display a summary of these commands.
X.PP
X.IP "^V or ^F"
XScrolls listing up one window, leaving one line of overlap between the
Xwindows.
X.PP
X.IP "RETURN or n or j or ^N or SPC or DOWN_ARROW"
XMove cursor to next line in listing.  Scrolls listing up one line when
Xcursor is on the last line in the window.
X.PP
X.IP "^D   "
XScrolls listing up half a window and attempts to leave the cursor
Xon the same line in the listing.
X.PP
X.IP "^B or ESC-v"
XScrolls listing down one window, leaving one line of overlap between
Xthe previous window and the next window.
X.PP
X.IP "k or p or ^Y or ^P or UP_ARROW"
XMove cursor to previous line in the listing.
XScrolls listing down one line when
Xcursor is on the first line in the window.
X.PP
X.IP "u or ^U"
XScrolls the listing down half a window and attempts to leave the
Xcursor on the same line in the listing.
X.PP
X.IP "^L"
XRepaint the screen.
X.PP
X.IP "< or ESC-<"
XGo to the first line in the listing.
X.PP
X.IP "> or ESC->"
XGo to the last line in the listing.
X.PP
X.IP /string
XSearch forward in the listing for the next line whose filename
Xcontains the string.  The search starts beginning with the line
Xfollowing the current line.  A search without a string, repeats the
Xprevious search.
X.PP
X.IP \estring
XSearch backward in the listing for a line whose filename
Xcontains the string.  The search starts beginning with the line
Xpreceding the current line.  A search without a string, repeats the
Xprevious search.
X.PP
X.IP V
XPrints the version number of 
X.I dired 
Xbeing run.
X.PP
X.IP q
XExits from the most recently edited directory back to the previously
Xedited one.  Directories, when edited, are always pushed onto a stack.
XIf the current directory is the only directory being edited, exits
X.I dired.
X.IP  Q
XExits
X.I dired.
X.PP
X.IP c
XCopies the current file to another file, prompting for a name
Xfor the new file.  If the first letter of the name of the new file is
Xa `~', the full pathname of the user's home directory will be
Xsubstituted for the `~'.  Prompts to confirm the overwriting of an
Xexisting file.   Filename completion via the TAB key
Xis enabled when prompting for the filename.
X.PP
X.IP d
XDeletes the current file, prompting for affirmation of the delete.
XTyping a `y' or `Y' to the prompt goes ahead with the delete.  Any other key
Xcancels the delete request.
X.PP
X.IP "e or f "
XInvokes an editor to edit the current file.
XThe editor is taken from the environment variable EDITOR,
Xor defaults to "
X.I vi
X".
XIf the file is a directory, runs 
X.I dired
Xon that directory, pushing the directory currently being edited onto a
Xstack.  The `q'
Xcommand will exit from the new directory listing putting one back into
Xthe previous directory listing.  Editing the file `..', edits the
Xparent directory of the current directory.  It is thus possible to
Xwalk both up and down the directory tree.
X.PP
X.IP "m or v "
XInvokes a pager on the current file.
XThe pager is taken from the environment variable PAGER,
Xor defaults to "
X.I more
X".
X.PP
X.IP r
XRenames the current file, prompting for the new name.
X.PP
X.IP C
XCompress the current file.
X.PP
X.IP E
XPrompts for the name of a directory to edit and then edits it.  If the
Xfirst character of the directory is `~', the full pathname of user's
Xhome directory is substituted for the `~', making it easier to edit
Xdirectories relative to the user's home directory.  Alternatively, one
Xmay simply type `! dired dirname';  that is,
X.I dired
Xcan be called from within itself.  Filename completion via the TAB key
Xis enabled when prompting for the directory name.
X.PP
X.IP G
XChange the group of the current file, prompting for the new group.
X.PP
X.IP L
XLink the current file to another file, prompting for the name of the
Xnew file.
X.PP
X.IP M
XChange the mode of the current file, prompting for the new mode.  The
Xmode can be either octal, as in `755', or symbolic as in `go+r'.
XThese are the same modes the `chmod' command accepts.
X.PP
X.IP P
XPrints the current file.  The printer together with all relevant
Xoptions are taken from the environment variable DIREDPRT.
XIf DIREDPRT is not defined,
X.I lpr
Xis used by default.  It should be noted that in networked
Xenvironments,
X.I lpr
Xis almost never the correct choice.
X.PP
X.IP "O      "
XPrompts for one of the characters `a', `c', `t', or `u' and changes
Xthe sort order to alphabetical, inode-change time,
Xmodification time, or access time, respectively.  The sort order only
Xtakes affect when a directory is first edited;
Xthe sort order of
Xthe currently displayed directory is not changed.  To change the sort
Xorder of the currently displayed directory, use this command to change
Xthe sort order and then the `g' or `R' command to re-read the current
Xdirectory.
X.PP
X.IP "R or g "
XRereads the current directory and updates the display.  This command
Xis useful if you've executed a shell command which added, deleted or
Xmodified a file or files in the current directory.  Otherwise, 
X.I dired
Xdoesn't know that the contents of the directory have been modified.
XThis command will leave the cursor on the same file it started
Xon, provided that file is still in the current directory.
X.PP
X.IP S
XCreate a symbolic link to the current file, prompting for the
Xname of the symbolic link.
X.PP
X.IP U
XUncompress the current file.
X.PP
X.IP !cmd
XExecutes the shell command 
X.I cmd
Xusing
X.I system(3)
Xfor execution.  A `%' in
X.I cmd
Xis replaced with the current filename before being executed.  This
Xprovides a convenient shorthand way to execute commands on the current
Xfile, for which the author hasn't provided a key to execute
Xthe command.
X.PP
X.IP !!
XRe-executes the previously issued shell command.  Does not re-expand
Xany `%' characters to the name of the now current file.
X.PP
X.IP ![
XRe-executes the previously issued shell command, re-expanding any `%'
Xto the name of the now current file. 
X.PP
X.IP !
XInvokes a shell.  Uses the shell in the environment variable SHELL, or
Xdefaults to "
X.I sh
X".
X.PP
X.SH OPTIONS
XCommand line options are described below.
X.PP
X.IP -c
XInstructs
X.I dired
Xto sort the files in the directory listing by inode-change time,
Xinstead of alphabetically, which is the default.
X.IP -t
XInstructs
X.I dired
Xto sort the files in the directory listing by modification time.
X.IP -u
XInstructs
X.I dired
Xto sort the files in the directory listing by access time.
X.PP
XOnly one of these three options should be specified on the command
Xline.  If more than one is present, the last one is the one which
Xtakes affect.
X
X.PP
X.IP dirname
X.I Dired
Xcan be invoked with or without a directory as argument.  If it is not
Xpassed a directory to edit, it uses the current directory.  Otherwise,
Xthe directory argument passed to
X.I dired
Xcan be an absolute pathname or a pathname relative to the current
Xdirectory, in the usual UNIX tradition.
X
X.SH "ENVIRONMENT VARIABLES"
X.IP COLUMNS
XThis value, if nonzero, overrides the number of columns as read
Xfrom termcap(3).  Hence by setting
X.B COLUMNS
Xit is easy to use a
Xdifferent number of columns than termcap(3) expects for a given
Xterminal type.
X.IP DIREDPRT
XThe full command name, including any necessary arguments, of the command to
Xprint a file.
X.IP "EDITOR  "
XThe name of the editor (used by the `e' and `f' commands).
X.IP "LINES   "
XThis value, if nonzero, overrides the number of lines as read
Xfrom termcap(3).  Hence by setting
X.B LINES
Xit is easy to use a
Xdifferent number of lines than termcap(3) expects for a given
Xterminal type.
X.IP "PAGER   "
XThe name of the pager (used by the `m' and `v' commands).
X.IP "SHELL   "
XThe shell used to execute the `!' command, as well as to expand filenames.
X.IP "TERM   "
XThe type of terminal on which
X.I dired
Xis being run.
X.IP "HOME   "
XThe user's home directory.
X
X.br
X.SH AUTHORS
XWritten by Mike Lijewski while at the Cornell National Supercomputer
XFacility.
END_OF_FILE
if test 9998 -ne `wc -c <'dired.1'`; then
    echo shar: \"'dired.1'\" unpacked with wrong size!
fi
# end of 'dired.1'
fi
if test -f 'dired.lpr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'dired.lpr'\"
else
echo shar: Extracting \"'dired.lpr'\" \(11544 characters\)
sed "s/^X//" >'dired.lpr' <<'END_OF_FILE'
X
XDIRED(1)                 USER COMMANDS                   DIRED(1)
X
XNAME
X     dired - a directory editor
X
XSYNOPSIS
X     dired [-t | -u | -c] [dirname]
X
X
XDESCRIPTION
X     Dired is a directory editor modelled after Dired Mode in GNU
X     Emacs.  It displays a window consisting of a long listing of
X     dirname , or the current  directory  if  invoked  without  a
X     directory  argument.  By default, the listing is in the for-
X     mat of an  ls -al command,  which  means  that  the  listing
X     lines  are  sorted alphabetically.  The file or directory on
X     the line containing the cursor is called the  current  file,
X     with  that  line known as the current line.  The listing can
X     also be sorted by the modification  time,  access  time,  or
X     inode-change  time of the files in the directory by specify-
X     ing one of the options `-t', `-u',  or  `-c',  respectively.
X     The  sorting order can be changed from within dired by using
X     the `O' (order) command.  Dired provides  numerous  commands
X     for operating on the current file including, but not limited
X     to,  editing,  paging,  deleting,  renaming,   copying   and
X     compressing.
X
X     Commands are a superset of those in vi and emacs.
X
XCOMMANDS
X     In the following  descriptions,  ^X  means  control-X.   ESC
X     stands  for  the ESCAPE key; for example ESC-v means the two
X     character sequence "ESCAPE", then "v".  TAB stands  for  the
X     tab key. UP_ARROW stands for the up arrow key and DOWN_ARROW
X     stands for the down arrow key,  if  your  keyboard  supports
X     arrow keys.
X
X     A number of commands require arguments.  In such cases dired
X     will  prompt  for  the  necessary  argument(s).   The prompt
X     always appears in the last line of the window.  All  graphi-
X     cal  characters  are  accepted as legal when responding to a
X     prompt.  Typing a  carriage  return  signifies  the  end  of
X     response.   Typing  a ^G aborts out of the prompt, canceling
X     the command.  Backspace works as expected.  All  other  non-
X     graphical  characters  are ignored, though signal generating
X     keys (^C, ^\ and ^Z) do the right thing in a prompt as  they
X     do elsewhere in dired.  Filename completion is available for
X     the `E' and `c' commands.  Typing a tab (the TAB  key)  when
X     in  the prompt for these commands attempts to form the long-
X     est unique file or directory name.
X
X     ? or H
X          Help - display a summary of these commands.
X
X     ^V or ^F
X          Scrolls listing up one  window,  leaving  one  line  of
X          overlap between the windows.
X
X     RETURN or n or j or ^N or SPC or DOWN_ARROW
X          Move cursor to next line in listing.   Scrolls  listing
X          up one line when cursor is on the last line in the win-
X          dow.
X
X     ^D   Scrolls listing up half a window and attempts to  leave
X          the cursor on the same line in the listing.
X
X     ^B or ESC-v
X          Scrolls listing down one window, leaving  one  line  of
X          overlap  between  the previous window and the next win-
X          dow.
X
X     k or p or ^Y or ^P or UP_ARROW
X          Move cursor to previous line in the  listing.   Scrolls
X          listing  down one line when cursor is on the first line
X          in the window.
X
X     u or ^U
X          Scrolls the listing down half a window and attempts  to
X          leave the cursor on the same line in the listing.
X
X     ^L   Repaint the screen.
X
X     < or ESC-<
X          Go to the first line in the listing.
X
X     > or ESC->
X          Go to the last line in the listing.
X
X     /string
X          Search forward in the listing for the next  line  whose
X          filename contains the string.  The search starts begin-
X          ning with the  line  following  the  current  line.   A
X          search without a string, repeats the previous search.
X
X     \string
X          Search  backward  in  the  listing  for  a  line  whose
X          filename contains the string.  The search starts begin-
X          ning with the  line  preceding  the  current  line.   A
X          search without a string, repeats the previous search.
X
X     V    Prints the version number of dired being run.
X
X     q    Exits from the most recently edited directory  back  to
X          the  previously  edited one.  Directories, when edited,
X          are always pushed onto a stack.  If the current  direc-
X          tory is the only directory being edited, exits dired.
X
X     Q    Exits dired.
X
X     c    Copies the current file to another file, prompting  for
X          a  name  for  the new file.  If the first letter of the
X          name of the new file is a `~', the full pathname of the
X          user's  home directory will be substituted for the `~'.
X          Prompts to confirm the overwriting of an existing file.
X          Filename  completion  via  the  TAB key is enabled when
X          prompting for the filename.
X
X     d    Deletes the current file, prompting for affirmation  of
X          the  delete.   Typing  a  `y' or `Y' to the prompt goes
X          ahead with the  delete.   Any  other  key  cancels  the
X          delete request.
X
X     e or f
X          Invokes an editor to edit the current file.  The editor
X          is  taken  from  the  environment  variable  EDITOR, or
X          defaults to " vi ".  If the file is a  directory,  runs
X          dired   on   that   directory,  pushing  the  directory
X          currently being edited onto a stack.  The  `q'  command
X          will  exit  from  the new directory listing putting one
X          back into the previous directory listing.  Editing  the
X          file  `..',  edits  the parent directory of the current
X          directory.  It is thus possible to  walk  both  up  and
X          down the directory tree.
X
X     m or v
X          Invokes a pager on the  current  file.   The  pager  is
X          taken  from the environment variable PAGER, or defaults
X          to " more ".
X
X     r    Renames the current file, prompting for the new name.
X
X     C    Compress the current file.
X
X     E    Prompts for the name of a directory to  edit  and  then
X          edits  it.   If the first character of the directory is
X          `~', the full pathname of user's home directory is sub-
X          stituted  for  the `~', making it easier to edit direc-
X          tories relative to the user's home directory.  Alterna-
X          tively,  one  may  simply type `! dired dirname';  that
X          is, dired can be called from within  itself.   Filename
X          completion  via  the  TAB key is enabled when prompting
X          for the directory name.
X
X     G    Change the group of the current file, prompting for the
X          new group.
X
X     L    Link the current file to another  file,  prompting  for
X          the name of the new file.
X
X     M    Change the mode of the current file, prompting for  the
X          new  mode.   The mode can be either octal, as in `755',
X          or symbolic as in `go+r'.  These are the same modes the
X          `chmod' command accepts.
X
X     P    Prints the current file.  The printer together with all
X          relevant  options  are taken from the environment vari-
X          able DIREDPRT.  If DIREDPRT is not defined, lpr is used
X          by  default.   It  should  be  noted  that in networked
X          environments, lpr is almost never the correct choice.
X
X     O    Prompts for one of the characters `a', `c', `t', or `u'
X          and  changes  the  sort  order  to alphabetical, inode-
X          change time, modification time, or access time, respec-
X          tively.  The sort order only takes affect when a direc-
X          tory is first edited; the sort order of  the  currently
X          displayed directory is not changed.  To change the sort
X          order of the currently displayed  directory,  use  this
X          command  to  change  the sort order and then the `g' or
X          `R' command to re-read the current directory.
X
X     R or g
X          Rereads the current directory and updates the  display.
X          This  command is useful if you've executed a shell com-
X          mand which added, deleted or modified a file  or  files
X          in  the  current  directory.   Otherwise, dired doesn't
X          know that the contents of the directory have been modi-
X          fied.   This  command will leave the cursor on the same
X          file it started on, provided that file is still in  the
X          current directory.
X
X     S    Create a symbolic link to the current  file,  prompting
X          for the name of the symbolic link.
X
X     U    Uncompress the current file.
X
X     !cmd Executes the shell command cmd using system(3) for exe-
X          cution.   A  `%'  in  cmd  is replaced with the current
X          filename before being executed.  This provides  a  con-
X          venient  shorthand  way  to  execute  commands  on  the
X          current file, for which the author  hasn't  provided  a
X          key to execute the command.
X
X     !!   Re-executes the previously issued shell command.   Does
X          not re-expand any `%' characters to the name of the now
X          current file.
X
X     ![   Re-executes the previously issued  shell  command,  re-
X          expanding any `%' to the name of the now current file.
X
X     !    Invokes a shell.  Uses the  shell  in  the  environment
X          variable SHELL, or defaults to " sh ".
X
XOPTIONS
X     Command line options are described below.
X
X     -c   Instructs dired to sort  the  files  in  the  directory
X          listing  by  inode-change  time,  instead of alphabeti-
X          cally, which is the default.
X
X     -t   Instructs dired to sort  the  files  in  the  directory
X          listing by modification time.
X
X     -u   Instructs dired to sort  the  files  in  the  directory
X          listing by access time.
X
X     Only one of these three options should be specified  on  the
X     command  line.  If more than one is present, the last one is
X     the one which takes affect.
X
X
X     dirname
X          Dired can be invoked with or  without  a  directory  as
X          argument.   If it is not passed a directory to edit, it
X          uses the current directory.  Otherwise,  the  directory
X          argument passed to dired can be an absolute pathname or
X          a pathname relative to the current  directory,  in  the
X          usual UNIX tradition.
X
X
XENVIRONMENT VARIABLES
X     COLUMNS
X          This value, if nonzero, overrides the number of columns
X          as  read  from termcap(3).  Hence by setting COLUMNS it
X          is easy to use  a  different  number  of  columns  than
X          termcap(3) expects for a given terminal type.
X
X     DIREDPRT
X          The full command name, including  any  necessary  argu-
X          ments, of the command to print a file.
X
X     EDITOR
X          The name of the editor (used by the `e'  and  `f'  com-
X          mands).
X
X     LINES
X          This value, if nonzero, overrides the number  of  lines
X          as  read from termcap(3).  Hence by setting LINES it is
X          easy to use a different number of lines than termcap(3)
X          expects for a given terminal type.
X
X     PAGER
X          The name of the pager (used by the  `m'  and  `v'  com-
X          mands).
X
X     SHELL
X          The shell used to execute the `!' command, as  well  as
X          to expand filenames.
X
X     TERM The type of terminal on which dired is being run.
X
X     HOME The user's home directory.
X
X
XAUTHORS
X     Written by Mike  Lijewski  while  at  the  Cornell  National
X     Supercomputer Facility.
X
END_OF_FILE
if test 11544 -ne `wc -c <'dired.lpr'`; then
    echo shar: \"'dired.lpr'\" unpacked with wrong size!
fi
# end of 'dired.lpr'
fi
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(4349 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X#
X# Makefile for `dired'
X#
X# Makefile 1.37   Delta'd: 17:32:49 10/1/92   Mike Lijewski, CNSF
X#
X
X#
X# Your C++ compiler goes here.
X#
XCC = CC
X
X#
X# flags you need to compile:
X#
X#   Add -DNO_STRSTR if you don't have the ANSI C function strstr().
X#
X#   Add -O if you trust your optimizer.
X#
X#   Add -DNO_STRCHR if you don't have strchr() and strrchr().
X#
X#   Add -DNO_SYMLINKS if your OS doesn't support symbolic links.  If
X#   you don't define this, it is assumed that your OS supports symbolic
X#   links.
X#
X#   Add -DL_AND_G if your version of `ls' needs the `-lg' flags in
X#   order to display both the owner and group of files in a long
X#   listing.  Typically, BSD-based OSs need this and SYSV ones don't.
X#
X#   Add -DCOMPLETION if you want to enable tab-completion on the `E'
X#   and `c' commands.  As currently written this assumes that you have
X#   the POSIX directory routines in <dirent.h>.  In particular, I use
X#   opendir(), readdir() and closedir().
X#
X#   Add -DOLDDELETE if your compiler can't handle the 'delete []' form
X#   of the delete operator for deleting arrays of objects allocated
X#   via new.  If you don't know whether you compiler can handle it or
X#   not, just don't define it and see what happens.  If your compiler
X#   accepts it, it'll do the right thing.
X#
X#   Add -DSIGINTERRUPT if you need to call siginterrupt(2) in order to
X#   guarantee that signals will interrupt slow system calls.  If you
X#   don't have siginterrupt(2), you most certainly don't need.  Even
X#   if you have it you may not need it, though defining -DSIGINTERRUPT
X#   in this case should be a no-op.  The best bet is to define this if
X#   you have siginterrupt(2).  Note: Suns need this.
X#
XCFLAGS = -DCOMPLETION -O
X
X#
X# Those flags needed to compile in the type of terminal
X# control you have.  Use -DTERMIOS if you have <termios.h>, the POSIX
X# terminal control.  Use -DTERMIO if you have <termio.h>, the SYSV
X# terminal control.  Otherwise, the default assumes you have <sgtty.h>,
X# the BSD terminal control.
X#
X# If you choose to use -DTERMIOS and have problems, try -DTERMIO.  On
X# at least two systems I've tried, the vendor hasn't had all the
X# include files set up correctly to include <unistd.h> together with 
X#  <osfcn.h>, among others.
X#
XTERMFLAGS = -DTERMIO
X
X#
X# libraries needed:
X#
X#                   -ltermcap on BSD-like systems
X#                   -ltermlib on SYSV-like systems
X#                   -lcurses on systems w/o the above libraries
X#
XLIBS = -ltermcap
X
X##############################################################################
X# nothing should need to be changed below here.
X##############################################################################
X
XSHELL     = /bin/sh
XMAKESHELL = /bin/sh
X
XHDR  = classes.h dired.h display.h keys.h version.h
X
XMISC = dired.1 dired.lpr Makefile ChangeLog INSTALL MANIFEST README
X
XOBJ  = classes.o commands.o dired.o display.o utilities.o
X
XSRC  = classes.C command1.C command2.C dired.C display.C globals.C utilities.C
X
X#
X# Sorry for including globals.C in the compile line instead of the
X# list of object files.  The Cfront 2.0 on my main development
X# machine chokes when passed a list consisting solely of .o files.
X#
Xdired: $(OBJ)
X	$(CC) $(CFLAGS) -o $@ $(OBJ) globals.C $(LIBS)
X
Xdisplay.o: display.C display.h
X	$(CC) $(CFLAGS) $(TERMFLAGS) -c display.C
X
X#
X# Commands.C is built from command1.C and command2.C the first time
X# it is needed.  This is so that the shar files don't get too big.
X#
Xcommands.C: command1.C command2.C
X	cat command1.C command2.C > commands.C
X
Xclean:
X	-rm -f core *.o *..c dired
X
Xrealclean:
X	-rm -f command.C core *.o *~ *..c dired
X
X#
X# This depends on Rich Salz' cshar program.
X#
Xshar: $(SRC) $(HDR) $(MISC)
X	cshar -n1 -e5 -o dired-01 $(MISC)
X	cshar -n2 -e5 -o dired-02 command1.C classes.h dired.h
X	cshar -n3 -e5 -o dired-03 command2.C display.h keys.h
X	cshar -n4 -e5 -o dired-04 classes.C dired.C display.C globals.C
X	cshar -n5 -e5 -o dired-05 version.h utilities.C
X        
Xtar:
X	tar cf dired.tar $(SRC) $(HDR) $(MISC)
X	compress -f dired.tar
X
X#
X# dependencies
X#
Xclasses.o   : classes.h dired.h
Xcommands.o  : classes.h dired.h display.h keys.h command1.C command2.C
Xdired.o     : classes.h dired.h display.h
Xglobals.o   : classes.h dired.h version.h
Xutilities.o : classes.h dired.h display.h keys.h
X
X
X.SUFFIXES: .C .o
X
X.C.o:
X	$(CC) $(CFLAGS) -c $*.C
END_OF_FILE
if test 4349 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'ChangeLog' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ChangeLog'\"
else
echo shar: Extracting \"'ChangeLog'\" \(9623 characters\)
sed "s/^X//" >'ChangeLog' <<'END_OF_FILE'
X1.2 to 1.3
X---------
X
Xo No longer remove `commands.C' on `make clean'.
X
Xo Fixed typo in MANIFEST.
X
Xo Added `SHELL = /bin/sh' to Makefile.
X
Xo Added list of machines on which `dired' has been successfully
X  built and tested to INSTALL.
X
Xo Added a `#ifndef __GNUG__ ... #endif' around the prototypes of the
X  termcap(3) functions to get around some inconsistencies in the way
X  early versions of g++ declared the termcap(3) functions.  As g++ is
X  set up, the termcap funnctions are in std.h, which seems to be
X  always included by the compiler, so we don't need to declare them
X  for g++ anyhow. 
X
Xo Found and fixed a problem with doing a popen(ls -al dirname) where
X  dirname is a symbolic link.  The solution is to instead do a 
X  popen(ls -al -L dirname) - force `ls' to follow symbolic links.
X
Xo made `v' and 'm' edit directories if the given file is a directory,
X  instead of insisting that it can only page through regular files.
X  That is, we edit if a directory and page if a regular file.
X
Xo removed the `-?' option.
X
Xo added `-u' and `-c' options to sort by access time and inode-change
X  time to the already present `-t' option to sort by modification time.
X
Xo added the `O' command to query for and set a sorting order.
X
Xo Removed THANKS file.
X
Xo Added a command `E' to edit a prompted-for directory.  This command
X  interprets a `~' as the first character in the directory as the home
X  directory of the user.
X
Xo Simplified the README.
X
X1.3 to 1.4
X----------
X
Xo Fixed the problem of the cursor position not being updated when we
X  do a forward search from the last line.
X
Xo Documented that a response of either `y' or  `Y' to the `d' command
X  is considered affirmative. 
X
Xo The screen is now cleared and the cursor positioned in the bottom
X  left-hand corner of the screen, when a file is edited.  Most
X  fullscreen editors handle this themselves.  This fix is so that
X  non-fullscreen editors such as `ed' will work.
X
Xo Ctl-G now properly aborts out of the `E' command.
X
Xo Added a bit more documentation on the `M' command.
X
Xo Modified the copy command `c' so that if the first character of the
X  file to which we are copying is a `~', the full pathname of the
X  user's home directory will be substituted for the `~'.
X
Xo Fixed a problem with how the `!' command echos the command and then
X  prints the output of the command.  The intent is that the command
X  line we're executing is echoed and then the following lines contain
X  the output of the command, as `vi' does it.
X
X
Xo Am now tracking CWD and PWD, if either are defined, so that
X  commands which depend on these variables will work correctly.  In
X  particular, this means that using emacs as ones editor works
X  correctly.  Personally, I feel the fact that emacs will use CWD or
X  PWD, instead of using getcwd(), is an error.
X
Xo Corrected a problem with the cursor not being properly positioned
X  when the last file in the window is deleted.
X
X1.4 to 1.5
X---------
X
Xo Fixed a glitch in dired.h which was tickled when compiling with g++
X  on a machine for which -DNO_STRSTR was defined.  Found this when I
X  got dired working on an old MicroVax running Ultrix.
X
Xo Closed a small memory leak in dired.C relating to not reclaiming
X  space previously passed to putenv() when tracking CWD and PWD in
X  dired().
X
Xo Am no longer appending `-L' to the `ls' commands when the system
X  supports symbolic links.  This way, when you're editing a directory
X  containing symbolic links, you actually see the `link -> file'.
X  Users seem to prefer this to accessing the linked file transparently.
X
Xo Closed memory leak in command1.C relating to not releasing the
X  response from prompt() in edit_prompted_for_directory().
X
Xo I've come up with an easier way to deal with symbolic links
X  which has lead to a little simplification of the code.
X  In particular, I've been able to remove edit_directory() and
X  in_same_directory() from command1.C and full_path_name() from utilities.C.
X
Xo Added a compile-time define NEED_LG, which when defined in the
X  Makefile, informs `dired' that `ls' needs the `-lg' flags in a long
X  listing in order to display both owner and group of the files.
X  This way all users should be able to see both the owner and group of
X  the listed files.  Modified INSTALL to NEED_LG also.
X
Xo Closed a tiny memory leak due to my use of putenv().  The putenv()
X  documentation says that  the memory used by strings "NAME=value1" is
X  not recovered when a new "NAME=value2" is added; consequenty,  I've
X  started deleting the old string if I added it.  This all arises
X  since I'm now tracking CWD and PWD.
X
Xo Beefed up the login in the `c' command so that we don't get more
X  than one file with the same name displayed on the screen.
X
Xo Modified the `g' command to update directories in a "smart" manner.
X  It now places the cursor back on the file it started out on if that
X  file still exists; otherwise it tries to place it "close" to where
X  it was.
X
Xo Modified `dired.1' and `dired.lpr' to reflect the changes to the `g'
X  and `c' commands. 
X
Xo Now mention in the manpage that searches without a search string,
X  repeat the previous search in that direction.
X
X1.5 to 1.6
X---------
X
Xo Am now ringing the terminal's bell when an unknown key sequence is
X  input.
X
Xo The UP and DOWN arrow keys now work as expected.
X
Xo Removed the `D' command.  It has proven to be too easy to abuse.
X
Xo The `E' and `c' commands now support filename completion when the
X  TAB key is pressed from within the prompt asking for the file to
X  copy to or the directory to edit.
X
Xo Am now updating the display when I do a `c' command which overwrites
X  another file in the window.
X
Xo Am now appending the string "(C-g to Abort)" to all prompts, so that
X  those users who don't RTFM can get out of prompts :-).
X
Xo The help screen now scrolls forward (SPACE) and backward (BACKSPACE).
X
Xo Replaced printf()s with fputs()s wherever possible.
X
Xo Added a second `const char *' argument to message(), which defaults
X  to 0.  This allows me to treat message() as either printing a simple
X  string, or as a simple printf() mechanism where it replaces the `%'
X  in the first string, with the second string.
X
Xo The modeline algorithm now updates the modeline in a "smart" manner
X  intended to minimize the total number of characters output to the screen.
X
Xo Replaced getchar() with read().
X
Xo The `L', `S' and `r' commands now expand a `~' to the user's home
X  directory, if the `~' is the first character of the new filename.
X
Xo Removed all possible system()s and instead do my own fork()ing and
X  exec()ing where it makes sense.
X
Xo Modified reread_current_directory() to take a reference to a pointer
X  instead of a pointer to a pointer.
X
Xo Modified get_current_directory() to return new'd storage.  Also
X  changed it's name to current_directory().  Modified get_file_name()
X  to use its own volatile storage instead of forcing its clients to
X  delete memory.  Made prompt(), completion() and expand_tilde also
X  return volatile storage.
X
Xo Plugged a memory leak in get_directory_listing() in utilities.C.
X
Xo Added class specific operators new() and delete() for the DirLine
X  class.  This is both a speed and space efficiency when directories
X  have many files in them.
X
Xo Put all the globals into one file for easy reference.
X
Xo Fixed a problem with deleting the last line on the screen, which
X  has more lines following it.
X
X1.6 to 1.7
X---------
X
Xo Developed and integrated in a simple reference counted string package.
X
Xo Fixed a problem with the directory name in the modeline not being
X  updated in certain cases.
X
Xo Added -DSIGINTERRUPT to Makefile and INSTALL as well as adding the
X  appropriate code to dired.C to call siginterrupt(2) when needed.  I
X  rely on read(2) being interrupted by signals to deal appropriately
X  with SIGTSTP and SIGWINCH.
X
Xo Added LINES and COLUMNS to the list of environment variables in the
X  manpage which dired consults.
X
Xo Now update the listing line after paging through a file.  This way,
X  if we're viewing files based on access or inode-modification time, the
X  directory listing will reflect our reality, though it won't be ordered
X  properly. 
X
Xo Purify'd the code.  Purify is a really nice product.
X
Xo Inlined those member functions which didn't significantly bloat the
X  code. 
X
X1.7 to 1.8
X---------
X
Xo removed setbuf for setvbuf -- stdout is still fully buffered, but
X  now I let the standard I/O choose the buffer and the buffer size.
X
Xo added a bit more information to some of the error messages in
X  command[12].C. 
X
Xo added a define OLDDELETE to Makefile and INSTALL which means that
X  your compiler doesn't understand the 'delete []' syntax.  I then
X  integrated this into the source code.
X
Xo according to POSIX.1 the second argument to the execv() functions is
X  a (char *const *); my code is now cognizant of this fact.
X
Xo forced the cursor to return to its previous position when aborting
X  out of a shell command.
X
Xo ran c++-tame-comments from the latest c++-mode.el on each .C file.
X  This is where all the backslashes in the comments come from.
X
Xo added 1992 to Copyright notice.
X
Xo did some reformatting to meet new formatting requirements I've imposed on
X  myself.
X
Xo got rid of <stdarg.h> function error() by overloading error for the
X  specific cases I needed.
X
Xo added workaround to bug in g++ 2.2.2
X
Xo changed "clean" target in Makefile to not delete files ending in
X  '~'.  A new target "realclean" does though remove them as well as
X  removing comand.C, forcing it to be regenerated at next make.
X
Xo am now conditionally compiling code which depends on SIGTSTP for
X  those poor souls who don't have job control.
END_OF_FILE
if test 9623 -ne `wc -c <'ChangeLog'`; then
    echo shar: \"'ChangeLog'\" unpacked with wrong size!
fi
# end of 'ChangeLog'
fi
if test -f 'INSTALL' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'INSTALL'\"
else
echo shar: Extracting \"'INSTALL'\" \(7088 characters\)
sed "s/^X//" >'INSTALL' <<'END_OF_FILE'
X
XDired is written in C++, so you must have a C++ compiler.  It runs
Xonly in the UNIX environment for the time being.  If you would like to
Xport it to another OS, say VMS, please contact me.  It has been
Xsuccessfully built and tested in the following environments:
X
XSun Sparc running SunOS 4.1.1 with Cfront 2.0, Cfront 2.1, g++ 2.1
XSun Sparc running SunOS 4.0.3 with Cfront 2.1
XSun Sparc2 running SunOS 4.0.3 with g++ 2.0
XIBM 3090 running AIX/370  with Cfront 2.0
XIBM RS/6000 running AIX 3.1.5 with Cfront 2.1, g++ 2.1
XHP9000/400 running HPUX 7.05 with Cfront 2.1
XHP9000/425 running HPUX 7.05 with Cfront 2.1
XHP9000/720 running HPUX 8.05 with Cfront 2.1
XMicroVax II running Ultrix-32 V3.0 (rev 64) running g++ 1.39
XBull DPX/2300 (SysV) with gcc-2.1
X
XIn order to build dired, a few lines in the Makefile may need to be
Xmodified.  The line
X
XCC = 
X
Xis used to define the name of your C++ compiler.
X
X  ex.  You have some version of Cfront
X  --
X         CC = CC
X
X  ex.  you have GNU g++
X  --
X         CC = g++
X
XThe line
X
XCFLAGS =
X
Xis where system-specific preprocessor defines are put.  Six
Xpreprocessor defines, settable in 'Makefile', are the only things one
Xshould need to modify before typing 'make' to build dired.  Direct
Xfrom the Makefile we have:
X
X#   Add -DNO_STRSTR if you don't have the ANSI C function strstr().
X#
X#   Add -DNO_STRCHR if you don't have strchr() and strrchr().
X#
X#   Add -DNO_SYMLINKS if your OS doesn't support symbolic links.  If
X#   you don't define this, it is assumed that your OS supports symbolic
X#   links.
X#
X#   Add -DL_AND_G if your version of `ls' needs the `-lg' flags in
X#   order to display both the owner and group of files in a long
X#   listing.  Typically, BSD-based OSs need this and SYSV ones don't.
X#
X#   Add -DCOMPLETION if you want to enable tab-completion on the `E'
X#   and `c' commands.  As currently written this assumes that you have
X#   the POSIX directory routines in <dirent.h>.  In particular, I use
X#   opendir(), readdir() and closedir().
X#
X#   Add -DOLDDELETE if your compiler can't handle the 'delete []' form
X#   of the delete operator for deleting arrays of objects allocated
X#   via new.  If you don't know whether you compiler can handle it or
X#   not, just don't define it and see what happens.  If your compiler
X#   accepts it, it'll do the right thing.
X#
X#   Add -DSIGINTERRUPT if you need to call siginterrupt(2) in order to
X#   guarantee that signals will interrupt slow system calls.  If you
X#   don't have siginterrupt(2), you most certainly don't need.  Even
X#   if you have it you may not need it, though defining -DSIGINTERRUPT
X#   in this case should be a no-op.  The best bet is to define this if
X#   you have siginterrupt(2).  Note: Suns need this.
X
X  ex.  you don't have strstr()
X  --
X         CFLAGS = -DNO_STRSTR
X
X  ex.  you don't have symbolic links or the strr?chr functions
X  --
X         CFLAGS = -DNO_SYMLINKS -DNO_STRCHR
X
X  ex.  you have <dirent.h> and you need the -lg flags to show groups  in `ls'
X  --
X         CFLAGS = -DCOMPLETION -DL_AND_G
X
XYou should also add -O to CFLAGS, unless you really don't trust the
Xoptimization phase of your compiler.
X
XThe line
X
XTERMFLAGS = 
X
Xis used to set which type of terminal control your OS uses.  From the
XMakefile:
X
X# Those flags needed to compile in the type of terminal
X# control you have.  Use -DTERMIOS if you have <termios.h>, the POSIX
X# terminal control.  Use -DTERMIO if you have <termio.h>, the SYSV
X# terminal control.  Otherwise, the default assumes you have <sgtty.h>,
X# the BSD terminal control.
X#
X# If you choose to use -DTERMIOS and have problems, try -DTERMIO.  On
X# at least two systems I've tried, the vendor hasn't had all the
X# include files set up correctly to include <unistd.h> together with 
X#  <osfcn.h> among others.
X
X  ex.  on a SYSV-based system
X  --
X         TERMFLAGS = -DTERMIO
X
X  ex.  on a POSIX system
X  --
X         TERMFLAGS = -DTERMIOS
X
X  ex.  on a BSD-based system
X  --
X         TERMFLAGS =
X
XTo control the screen, dired uses the termcap(3) library.  The line
X
XLIBS = 
X
Xis where you set what library needs to be linked with dired in order
Xto use the termcap functionality.  From the Makefile:
X
X#                   -ltermcap on BSD-like systems
X#                   -ltermlib on SYSV-like systems
X#                   -lcurses on systems w/o the above libraries
X
X  ex.  on a SYSV-based system
X  --
X         LIBS = -ltermlib
X
X  ex.  on a BSD-based system
X  --
X         LIBS = -ltermcap
X
X  ex.  on an IBM RS/6000
X  --
X         LIBS = -lcurses
X
XOnce you've edited Makefile, type 'make'.  Hopefully, the make will
Xcomplete with no problems and you will have a working 'dired'.  Then
Xmove the executable 'dired' to a suitable binary directory.
X
XUnfortunately, from experience, it appears that C++ code is much more
Xdifficult to port than C code.  The main problem seems to be header
Xfiles.  Since every function must be prototyped before it is used, one
Xnecessarily includes many system include files to properly prototype
Xfunctions, especially in an application such as dired which uses a
Xfair number of system services and library functions.  When one starts
Xincluding many include files, the inconsistencies of the files becomes
Xapparent.  The most common "bug" is when two different include files
Xprototype a function differently.  C++ compilers consider this as a hard
Xerror.  The only thing to be done in this situation is to fix the
Xheader file(s) and continue with the build process.
X
XAnother common problem is a header file which doesn't prototype a
Xfunction when in fact it should.  In this case your best bet is to
Xmanually add the prototype to 'dired.h'. 
X
XAnother more fundamental problem with include files is that they are
Xincompletely or inconsistently standardized.  ANSI C dictates the
Xcontents of only fifteen include files which are meant to cover the C
Xlibrary.  In order to use a function not covered by ANSI C, which, by
Xnecessity, will include all operating system specific functions, one
Xmust have some other scheme for deciding what file(s) to include.
XWhere ANSI C stops, dired development has followed the rules proposed
Xby POSIX 1003.1 as regards which file to include to get the prototype
Xof some system-specific function.  Not all systems follow or even
Xpurport to follow the POSIX standard.
X
XThe one place where this POSIX strategy may bite you are the S_ISREG
Xand S_ISDIR macros.  These are an attempt by POSIX to hide the
Xmachinations traditionally done with the stat structure in order to
Xdecide upon the type of a file.  If your machine doesn't have these
Xmacros, you'll need to modify two functions in utilities.C in a manner
Xappropriate to you machine/OS combination.  Please send me any diffs
Xso I can incorporate them into the base release.
X
XIf nothing else, attempting to compile dired will probably point out a
Xnumber of deficiencies in the implementation of your header files.
XPersevere and report all bugs to your vendor.
X
X
XMike Lijewski (W) 301-794-5132 (H) 301-982-5461
XGoddard Space Flight Center
XINTERNET: lijewski@rosserv.gsfc.nasa.gov
XSMAIL:  446 Ridge Rd. Apt. 3, Greenbelt, MD  20770
END_OF_FILE
if test 7088 -ne `wc -c <'INSTALL'`; then
    echo shar: \"'INSTALL'\" unpacked with wrong size!
fi
# end of 'INSTALL'
fi
if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MANIFEST'\"
else
echo shar: Extracting \"'MANIFEST'\" \(902 characters\)
sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
XChangeLog      lists changes from one version to the next
XINSTALL        how to install this critter
XMANIFEST       you're reading it
XMakefile       controls the build
XREADME         a little bit about 'dired'
Xclasses.C      definitions of some of our class member functions
Xclasses.h      declarations of the classes we use
Xcommand1.C     some commands from main command loop
Xcommand2.C     remainder of main loop commands and the loop itself
Xdired.1        a man page
Xdired.C        the 'main' program
Xdired.h        included by all source code
Xdired.lpr      a line-printable version of 'dired.1'
Xdisplay.C      contains code controlling the display using termcap(3)
Xdisplay.h      declarations and inlines for display.C
Xglobals.C      where globals are defined
Xkeys.h         definitions of all the keyboard keys we acknowledge
Xversion.h      the patch level
Xutilities.C    some utility functions
X
END_OF_FILE
if test 902 -ne `wc -c <'MANIFEST'`; then
    echo shar: \"'MANIFEST'\" unpacked with wrong size!
fi
# end of 'MANIFEST'
fi
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(2449 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
X
XDired - A Directory Editor
X
XWHAT IS IT?
X
XDired is a directory editor modelled after Dired Mode of GNU Emacs,
Xbut targetted for non-emacs users, designed for the UNIX environment.
XIt implements a window into the current directory consisting of lines
Xof the form:
X
X    -rw------- 1 mjlx     staff        2002 Apr 11 15:17 c++-motif
X    -rw------- 1 mjlx     staff       51399 Aug 11 1990  c++browser.tar.Z
X    -rw------- 1 mjlx     staff         970 Mar 14 18:44 callback
X    drwx--x--x 2 mjlx     staff         384 Jun 21 16:32 cfront
X    -rw------- 1 mjlx     staff        2152 Dec 17 1990  cfront-sun4.1.bug.Z
X    drwx------ 3 mjlx     staff        2048 Aug  1 13:04 dired
X    -rw------- 1 mjlx     staff        2033 Jan 25 1991  link-bug.C.Z
X
XThe filename in the line containing the cursor is known as the current
Xfile.  There are numerous of commands available for operating on the
Xcurrent file.  These include copy, delete, edit, view, chmod, chgrp,
Xcompress, rename and uncompress.  Hence by simply positioning the
Xcursor on the appropriate filename, one can do many of the "usual"
XUNIX operations on the files in a directory without bothering to
Xspelling out the command and filename each time.  If you edit a
Xdirectory, you get a directory listing of that directory.  In this
Xmanner it is possible to walk up and down a directory tree from within
Xdired.
X
X
XAUTHOR:
X
XMike Lijewski (W) 301-794-5132 (H) 301-982-5461
XGoddard Space Flight Center
XINTERNET: lijewski@rosserv.gsfc.nasa.gov
XSMAIL:  446 Ridge Rd. Apt. 3, Greenbelt, MD  20770
X
X
XCOPYRIGHT:
X
X
XCopyright (c) 1991, 1992 Cornell University
XAll rights reserved.
X
XRedistribution and use in source and binary forms are permitted
Xprovided that: (1) source distributions retain this entire copyright
Xnotice and comment, and (2) distributions including binaries display
Xthe following acknowledgement:  ``This product includes software
Xdeveloped by Cornell University'' in the documentation or other
Xmaterials provided with the distribution and in all advertising
Xmaterials mentioning features or use of this software. Neither the
Xname of the University nor the names of its contributors may be used
Xto endorse or promote products derived from this software without
Xspecific prior written permission.
X
XTHIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
XIMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
XWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
END_OF_FILE
if test 2449 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
echo shar: End of archive 1 \(of 5\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 5 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
exit 0 # Just in case...
-- 
        Andrew Patrick acting as Comp.Sources.Reviewed Moderator
              Department of Communications, Ottawa, CANADA
                         csr@calvin.dgbt.doc.CA
Technical Details
Message-ID: <1992Oct28.023652.28160@rick.dgbt.doc.ca>
Path: arc1-ca.pugleaf.net!sparky!uunet!utcsri!torn!cunews!dgbt!rick.dgbt.doc.ca!calvin.dgbt.doc.ca!csr

Show Full Headers
Complete Article Headers
Newsgroups: comp.sources.reviewed
Path: arc1-ca.pugleaf.net!sparky!uunet!utcsri!torn!cunews!dgbt!rick.dgbt.doc.ca!calvin.dgbt.doc.ca!csr
From: Mike Lijewski <lijewski@theory.tc.cornell.edu>
Subject: v02i033: dired - (Ver. 1.8) directory editor in C++, Part01/05
Message-ID: <1992Oct28.023652.28160@rick.dgbt.doc.ca>
Originator: csr@calvin.dgbt.doc.ca
Sender: news@rick.dgbt.doc.ca
Nntp-Posting-Host: calvin.dgbt.doc.ca
Organization: Communications Research Centre, Ottawa
Date: Wed, 28 Oct 1992 02:36:52 GMT
Approved: csr@calvin.dgbt.doc.ca
Lines: 1363