home *** CD-ROM | disk | FTP | other *** search
- Subject: v19i018: A software configuration management system, Part05/33
- Newsgroups: comp.sources.unix
- Sender: sources
- Approved: rsalz@uunet.UU.NET
-
- Submitted-by: Axel Mahler <unido!coma!axel>
- Posting-number: Volume 19, Issue 18
- Archive-name: shape/part05
-
-
-
- #! /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 5 (of 33)."
- # Contents: man/man3/afmisc.3 src/afs/Makefile.distribution
- # src/afs/afkeys.c src/afs/lcs.gedc.c src/shape/Shapefile
- # src/shape/select.c src/shape/vpath.c src/vc/deps
- # src/vc/vadm_delete.c src/vc/vc_keyboardIo.c src/vfind/Shapefile
- # tutorial/tutorial.ms
- # Wrapped by rsalz@papaya.bbn.com on Thu Jun 1 19:26:52 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'man/man3/afmisc.3' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'man/man3/afmisc.3'\"
- else
- echo shar: Extracting \"'man/man3/afmisc.3'\" \(4025 characters\)
- sed "s/^X//" >'man/man3/afmisc.3' <<'END_OF_FILE'
- X...
- X... Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X... and U. Pralle
- X...
- X... This software is published on an as-is basis. There is ABSOLUTELY NO
- X... WARRANTY for any part of this software to work correctly or as described
- X... in the manuals. We do not accept any liability for any kind of damage
- X... caused by use of this software, such as loss of data, time, money, or
- X... effort.
- X...
- X... Permission is granted to use, copy, modify, or distribute any part of
- X... this software as long as this is done without asking for charge, and
- X... provided that this copyright notice is retained as part of the source
- X... files. You may charge a distribution fee for the physical act of
- X... transferring a copy, and you may at your option offer warranty
- X... protection in exchange for a fee.
- X...
- X... Direct questions to: Tech. Univ. Berlin
- X... Wilfried Koch
- X... Sekr. FR 5-6
- X... Franklinstr. 28/29
- X... D-1000 Berlin 10, West Germany
- X...
- X... Tel: +49-30-314-22972
- X... E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X...
- X.TH AF_MISC 3 "" \n(dy.\n(mo.\n(yr
- X.SH NAME
- Xaf_misc \(em miscellaneous AFS-functions
- X.SH SYNOPSIS
- X\fBchar *af_afname (path)
- X.br
- Xchar *path;
- X.sp
- Xchar *af_afpath (path)
- X.br
- Xchar *path;
- X.sp
- Xchar *af_aftype (path)
- X.br
- Xchar *path;
- X.sp
- Xchar *af_access (path, name, type, mode)
- X.br
- Xchar *path, *name, *type;
- X.br
- Xint mode;
- X.sp
- Xaf_setarchpath (path)
- X.br
- Xchar *path;
- X.sp
- Xaf_cleanup ()
- X.sp
- Xaf_perror (string)
- X.br
- Xchar *string;
- X.sp
- Xchar *af_version()
- X.SH DESCRIPTION
- XThe functions \fIaf_afname, af_afpath\fR and \fIaf_aftype\fR
- Xextract name, syspath or type from a given (operating
- Xsystem dependent) file identification.
- XIn an \s-1UNIX\s+1 environment, a given pathname of the form
- X\fC/usr/lib/libafs.a\fR
- Xleads to the afname \fClibafs\fR, afpath \fC/usr/lib\fR and aftype \fCa\fR.
- XIf no path (eg. \fCotto.c\fR), or no type
- X(eg. \fC/usr/hugo/Makefile\fR) is given, the corresponding routine returns an
- Xempty string.
- XA period as first character in a filename is always
- Xconsidered to be part of the name (e.g. \fC.cshrc\fR has the name
- X\fC.cshrc\fR and an empty type string).
- X\(lq\fC.\fR\(rq and \(lq\fC..\fR\(rq are recognized as names.
- XArchive file extensions and AFS-specific path extensions are stripped from
- Xthe resulting name resp. pathname.
- X.br
- X\fBNote:\fR \fIaf_afname, af_afpath\fR and \fIaf_aftype\fR use static
- Xmemory for the returned results.
- XSubsequent calls of the same function overwrite former results.
- X.PP
- X\fIAf_access\fR determines the existence of an line of development.
- XIf any ASO (any version) with the given \fIpath\fR, \fIname\fR
- Xand \fItype\fR attributes exists, af_access returns zero, otherwise \-1.
- XThe \fImode\fR argument can either be \fIAF_SOURCE\fR indicating that
- Xonly source objects shall be searched or \fIAF_DERIVED\fR which means that
- Xonly the derived object pool shall be searched for existence
- Xof a matching ASO.
- X.PP
- X\fIAf_setarchpath\fR is used to define the location of the AFS
- Xarchive files. If no path is set, the archive files are stored
- Xin a subdirectory called \fCAFS\fR, relative to the directory
- Xwhere corresponding busy version resides.
- XIf a nil-pointer is given as \fIpath\fR-argument, the former setting
- Xof the global archive path is cleared.
- X.PP
- X\fIAf_cleanup\fR serves as cleanup routine upon premature termination
- Xof an AFS application. It removes temporary files and frees all allocated
- Xmemory.
- X.PP
- X\fIAf_perror\fR produces a short error message on the standard error file
- Xof the form described in \fIperror(3)\fR.
- XIf the last error encountered during an AFS-application was an AFS-specific
- Xerror, a corresponding message is generated, otherwise \fIaf_perror\fR
- Xcalls \fIperror(3)\fR.
- X.PP
- X\fIAf_version\fR returns a string that names the version and the
- Xcreator of the currently used AFS library.
- X.SH SEE ALSO
- Xintro(2), af_intro(3), perror(3), free(3)
- X.SH DIAGNOSTICS
- XUpon error, af_afname, af_afpath and af_aftype returned a nil pointer
- Xand \fIaf_errno\fR is set to the corresponding error number.
- X
- X
- END_OF_FILE
- if test 4025 -ne `wc -c <'man/man3/afmisc.3'`; then
- echo shar: \"'man/man3/afmisc.3'\" unpacked with wrong size!
- fi
- # end of 'man/man3/afmisc.3'
- fi
- if test -f 'src/afs/Makefile.distribution' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/afs/Makefile.distribution'\"
- else
- echo shar: Extracting \"'src/afs/Makefile.distribution'\" \(4290 characters\)
- sed "s/^X//" >'src/afs/Makefile.distribution' <<'END_OF_FILE'
- X#
- X# Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X# and U. Pralle
- X#
- X# This software is published on an as-is basis. There is ABSOLUTELY NO
- X# WARRANTY for any part of this software to work correctly or as described
- X# in the manuals. We do not accept any liability for any kind of damage
- X# caused by use of this software, such as loss of data, time, money, or effort.
- X#
- X# Permission is granted to use, copy, modify, or distribute any part of
- X# this software as long as this is done without asking for charge, and
- X# provided that this copyright notice is retained as part of the source
- X# files. You may charge a distribution fee for the physical act of
- X# transferring a copy, and you may at your option offer warranty
- X# protection in exchange for a fee.
- X#
- X# Direct questions to: Tech. Univ. Berlin
- X# Wilfried Koch
- X# Sekr. FR 5-6
- X# Franklinstr. 28/29
- X# D-1000 Berlin 10, West Germany
- X#
- X# Tel: +49-30-314-22972
- X# E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X#
- X#
- X# Makefile.distribution for AFS
- X#
- X
- XSOURCE = \
- X afarchive.c afenviron.c aflib.c afvers.c afdelta.c afkeys.c\
- X afstates.c afsattrs.c afretr.c afsysc.c affiles.c afcattrs.c\
- X afsets.c afhash.c afcompar.c afbpool.c afsymtab.c afstore.c\
- X aflock.c afsrepair.c
- X
- XDELTASOURCE = \
- X bsfd.c lcs.main.c lcs.cdlt.c lcs.gedc.c edcmd.h suffix.h predef.h
- X
- XINCLUDE = $(INCLUDEDIR)/afs.h $(INCLUDEDIR)/afsys.h afarchive.h typeconv.h
- X
- XCOMPONENTS = $(SOURCE) $(INCLUDE) afsrepair.h
- X
- XVERSION = af_version
- X
- XAFSOBJS = \
- X afarchive.o afenviron.o aflib.o afvers.o afdelta.o afkeys.o\
- X afstates.o afsattrs.o afretr.o afsysc.o affiles.o afcattrs.o\
- X afsets.o afhash.o afcompar.o afbpool.o afsymtab.o afstore.o\
- X aflock.o $(VERSION).o
- X
- XDELTALIB = bsfd.o lcs.cdlt.o lcs.gedc.o lcs.main.o
- X
- XTESTSOURCE = \
- X testmain.c testcall.c testfdes.c testkey.c testabuf.c testset.c\
- X testvar.c testshow.c test.h
- X
- XTESTOBJS = testmain.o testcall.o testshow.o testvar.o testkey.o testset.o\
- X testabuf.o testfdes.o
- X
- X#
- X# Product dependencies
- X#
- X
- Xall: $(LIBDIR)/libafs.a afsrepair $(AFSDB) # macro AFSDB only set on coma
- X
- X$(LIBDIR)/libafs.a: $(AFSOBJS) $(DELTALIB) $(VERSION).o
- X @ar ruv $(LIBDIR)/libafs.a $(AFSOBJS) $(DELTALIB); \
- X ranlib $(LIBDIR)/libafs.a
- X
- X#
- X# installation stuff
- X#
- X
- Xinstallall: install installtest
- X
- Xinstall: $(LIBDIR)/libafs.a afsrepair\
- X $(INSTALINCDIR)/afs.h $(INSTALINCDIR)/afsys.h
- X @-if [ "$(INSTALLIBDIR)" != "$(LIBDIR)" ]; then \
- X echo installing libafs.a in $(INSTALLIBDIR) ...; \
- X install -c -m 644 -o $(INSTALOWNER) -g $(INSTALGROUP)\
- X $(LIBDIR)/libafs.a $(INSTALLIBDIR); \
- X ranlib $(INSTALLIBDIR)/libafs.a; \
- X fi; \
- X echo installing afsrepair in $(INSTALDIR)/bin ...; \
- X install -c -m 755 -o $(INSTALOWNER) -g $(INSTALGROUP) afsrepair $(INSTALDIR)/bin
- X
- X$(INSTALINCDIR)/afs.h: $(INCLUDEDIR)/afs.h
- X @-if [ "$(INSTALINCDIR)" != "$(INCLUDEDIR)" ]; then \
- X echo installing afs.h in $(INSTALINCDIR) ...; \
- X install -c -m 644 -o $(INSTALOWNER) -g $(INSTALGROUP) $(INCLUDEDIR)/afs.h $(INSTALINCDIR); \
- X fi
- X
- X$(INSTALINCDIR)/afsys.h: $(INCLUDEDIR)/afsys.h
- X @-if [ "$(INSTALINCDIR)" != "$(INCLUDEDIR)" ]; then \
- X echo installing afsys.h in $(INSTALINCDIR) ...; \
- X install -c -m 644 -o $(INSTALOWNER) -g $(INSTALGROUP) $(INCLUDEDIR)/afsys.h $(INSTALINCDIR); \
- X touch $(INSTALINCDIR)/afs.h; \
- X fi
- X
- X#
- X# archive repair tool
- X#
- X
- X$(AFSOBJS) $(TESTOBJS) afsrepair.o: $(INCLUDE)
- X
- Xafsrepair.o: afsrepair.h
- X
- Xafsrepair: afsrepair.o afsysc.o afsymtab.o afenviron.o afhash.o aflib.o\
- X af_version.o
- X $(CC) -o afsrepair $(LDFLAGS) afsrepair.o afsysc.o afsymtab.o\
- X afenviron.o afhash.o aflib.o af_version.o
- X
- X#
- X# Test-environment for libafs.a (only on coma)
- X#
- X
- Xinstalltest: $(TESTOBJS) afsdb
- X install -c -m 755 -o $(INSTALOWNER) -g $(INSTALGROUP) afsdb $(INSTALDIR)/bin
- X
- Xafsdb: $(TESTOBJS) $(AFSOBJS) $(DELTALIB)
- X $(CC) -o afsdb $(LDFLAGS) $(TESTOBJS) $(AFSOBJS) $(DELTALIB) $(CLIBS)
- X
- X$(TESTOBJS): test.h
- X
- X#
- X# Miscellaneous stuff
- X#
- X
- Xobjects : $(AFSOBJS) afsrepair.o
- X
- Xlint:
- X lint -DLINT -D$(SYSTEM) -I$(INCLUDEDIR) $(SOURCE)
- X
- Xtags: $(SOURCE)
- X /usr/local/etags $(SOURCE)
- X
- Xxref: $(SOURCE)
- X /usr/ucb/ctags -w -x $(SOURCE) > xref
- X
- Xclean :
- X rm $(AFSOBJS)
- X
- Xtar:
- X retrv -fq $(VERSION).c; \
- X tar cvhf /tmp/afs.tar $(COMPONENTS) $(TESTSOURCE) Makefile\
- X $(VERSION).c $(DELTASOURCE); \
- X rm -f $(VERSION).c
- END_OF_FILE
- if test 4290 -ne `wc -c <'src/afs/Makefile.distribution'`; then
- echo shar: \"'src/afs/Makefile.distribution'\" unpacked with wrong size!
- fi
- # end of 'src/afs/Makefile.distribution'
- fi
- if test -f 'src/afs/afkeys.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/afs/afkeys.c'\"
- else
- echo shar: Extracting \"'src/afs/afkeys.c'\" \(4153 characters\)
- sed "s/^X//" >'src/afs/afkeys.c' <<'END_OF_FILE'
- X/*
- X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X * and U. Pralle
- X *
- X * This software is published on an as-is basis. There is ABSOLUTELY NO
- X * WARRANTY for any part of this software to work correctly or as described
- X * in the manuals. We do not accept any liability for any kind of damage
- X * caused by use of this software, such as loss of data, time, money, or
- X * effort.
- X *
- X * Permission is granted to use, copy, modify, or distribute any part of
- X * this software as long as this is done without asking for charge, and
- X * provided that this copyright notice is retained as part of the source
- X * files. You may charge a distribution fee for the physical act of
- X * transferring a copy, and you may at your option offer warranty
- X * protection in exchange for a fee.
- X *
- X * Direct questions to: Tech. Univ. Berlin
- X * Wilfried Koch
- X * Sekr. FR 5-6
- X * Franklinstr. 28/29
- X * D-1000 Berlin 10, West Germany
- X *
- X * Tel: +49-30-314-22972
- X * E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X */
- X/*
- X * Shape/AFS
- X *
- X * afkeys.c -- handle revision keys
- X *
- X * Author: Andreas Lampen, TU-Berlin (andy@coma.UUCP)
- X * (andy@db0tui62.BITNET)
- X *
- X * $Header: afkeys.c[1.3] Wed Feb 22 16:27:39 1989 andy@coma published $
- X *
- X * EXPORT:
- X * af_buildkey -- build key from generation and revision
- X * af_gbuskey -- get key of busy version
- X * af_glastkey -- get key of last saved version
- X * af_gfreepos -- search free position in revlist
- X * af_keytest -- check plausibility of key
- X */
- X
- X#include <stdio.h>
- X
- X#include "typeconv.h"
- X#include "afsys.h"
- X#include "afs.h"
- X
- X/*================================================================
- X * af_buildkey
- X *
- X *================================================================*/
- X
- XEXPORT af_buildkey (list, gen, rev, key)
- X Af_revlist *list;
- X int gen;
- X int rev;
- X Af_key *key; /* out */
- X{
- X int i;
- X
- X key->af_ldes = list;
- X if (list->af_list[0].af_class & AF_VALID)
- X i = list->af_nrevs-1;
- X else
- X i = list->af_nrevs;
- X
- X while (!((list->af_list[i].af_gen == gen) && (list->af_list[i].af_rev == rev)
- X && (list->af_list[i].af_class & AF_VALID)))
- X {
- X if (i == 0)
- X SFAIL ("buildkey", "", AF_ENOREV, ERROR);
- X i--;
- X }
- X key->af_lpos = i;
- X return (AF_OK);
- X}
- X
- X/*================================================================
- X * af_gbuskey
- X *
- X *================================================================*/
- X
- XEXPORT Af_key *af_gbuskey (list)
- X Af_revlist *list;
- X{
- X static Af_key busykey;
- X
- X busykey.af_ldes = list;
- X busykey.af_lpos = 0;
- X return (&busykey);
- X}
- X
- X
- X/*================================================================
- X * af_glastkey
- X *
- X *================================================================*/
- X
- XEXPORT Af_key *af_glastkey (list)
- X Af_revlist *list;
- X{
- X int i;
- X static Af_key lastkey;
- X
- X lastkey.af_ldes = list;
- X i = list->af_listlen-1;
- X while (!(list->af_list[i].af_class & AF_VALID))
- X {
- X if (i-- == 1)
- X return ((Af_key *)0);
- X }
- X lastkey.af_lpos = i;
- X return (&lastkey);
- X}
- X
- X/*================================================================
- X * af_gfreepos -- search space for new list entry
- X * preserve increasing order
- X *
- X *================================================================*/
- X
- XEXPORT af_gfreepos (list)
- X Af_revlist *list;
- X{
- X int i;
- X
- X i = list->af_listlen-1;
- X while (!(list->af_list[i].af_class & AF_VALID) && (i >= 0))
- X i--;
- X
- X if (i == list->af_listlen-1)
- X return (ERROR);
- X
- X if (!(list->af_list[i].af_class & AF_VALID) && (i == 0))
- X return (0);
- X
- X return (i+1);
- X}
- X
- X
- X/*================================================================
- X * af_keytest -- test plausibility of filekey
- X * returnes TRUE (ERROR) if key is invalid,
- X * otherwise FALSE (AF_OK).
- X *
- X *================================================================*/
- X
- XEXPORT af_keytest (key)
- X Af_key *key;
- X{
- X if (key == (Af_key *)0)
- X return (ERROR);
- X if ((key->af_lpos < 0) || (key->af_lpos >= key->af_ldes->af_listlen))
- X return (ERROR);
- X if (VATTR(key).af_nlinks < 1)
- X return (ERROR);
- X
- X return (AF_OK);
- X}
- X
- END_OF_FILE
- if test 4153 -ne `wc -c <'src/afs/afkeys.c'`; then
- echo shar: \"'src/afs/afkeys.c'\" unpacked with wrong size!
- fi
- # end of 'src/afs/afkeys.c'
- fi
- if test -f 'src/afs/lcs.gedc.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/afs/lcs.gedc.c'\"
- else
- echo shar: Extracting \"'src/afs/lcs.gedc.c'\" \(4012 characters\)
- sed "s/^X//" >'src/afs/lcs.gedc.c' <<'END_OF_FILE'
- X/*
- X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X * and U. Pralle
- X *
- X * This software is published on an as-is basis. There is ABSOLUTELY NO
- X * WARRANTY for any part of this software to work correctly or as described
- X * in the manuals. We do not accept any liability for any kind of damage
- X * caused by use of this software, such as loss of data, time, money, or
- X * effort.
- X *
- X * Permission is granted to use, copy, modify, or distribute any part of
- X * this software as long as this is done without asking for charge, and
- X * provided that this copyright notice is retained as part of the source
- X * files. You may charge a distribution fee for the physical act of
- X * transferring a copy, and you may at your option offer warranty
- X * protection in exchange for a fee.
- X *
- X * Direct questions to: Tech. Univ. Berlin
- X * Wilfried Koch
- X * Sekr. FR 5-6
- X * Franklinstr. 28/29
- X * D-1000 Berlin 10, West Germany
- X *
- X * Tel: +49-30-314-22972
- X * E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X */
- X
- X/* ================================================== */
- X/* ================================================== */
- X/* */
- X/* MODULE-NAME: gedc KEY : ge */
- X/* = generate editor commands */
- X/* ORIGINAL */
- X/* AUTHOR : sibylle DATE: 28/07/87 */
- X/* */
- X/* LAST UPDATE */
- X/* AUTHOR : DATE: */
- X/* */
- X/* VERSION: 1.6.2 */
- X/* */
- X/* ================================================== */
- X/* */
- X/* PURPOSE: */
- X/* generation of editor commands; */
- X/* writing them into the delta file */
- X/* */
- X/* SPECIALITIES: */
- X/* targetsize gets written into */
- X/* deltafile */
- X/* */
- X/* EXCEPTIONS, ERRORS: */
- X/* none */
- X/* */
- X/* ================================================== */
- X/* */
- X/*
- X * $Header: lcs.gedc.c[1.0] Wed Feb 22 16:14:22 1989 shape@coma save $
- X */
- X
- X# include "predef.h"
- X# include "typeconv.h"
- X# include <stdio.h>
- X# include "edcmd.h"
- X
- X
- Xextern int fwrite();
- Xextern int fclose();
- Xextern FILE *fopen();
- X
- X
- XLOCAL char *trg_str = NIL;
- XLOCAL FILE *fdelta = (FILE *) NIL;
- X
- X
- XLOCAL void write_cmd (ecmd, indx)
- X struct ed_cmd *ecmd;
- X long indx;
- X{
- X long cmd_ind;
- X char *t_str = trg_str;
- X
- X cmd_ind = indx;
- X if (ecmd->cmd == MV)
- X {
- X (void) fwrite ((char *)ecmd, sizeof (*ecmd), 1, fdelta);
- X (void) fwrite ((char *)&cmd_ind, sizeof(cmd_ind), 1, fdelta);
- X }
- X else
- X {
- X (void) fwrite ((char *)ecmd, sizeof (*ecmd), 1, fdelta);
- X (void) fwrite ((t_str = (t_str + cmd_ind)), sizeof(char), (Size_t)ecmd->length, fdelta);
- X }
- X
- X return;
- X}
- X
- X
- X
- XEXPORT void ge_init (deltafile, targetstr)
- X char *deltafile, *targetstr;
- X{
- X trg_str = targetstr;
- X fdelta = fopen (deltafile, "w");
- X return;
- X}
- X
- X
- XEXPORT void ge_finit()
- X{
- X (void) fclose (fdelta);
- X return;
- X}
- X
- X
- XEXPORT void ge_move (indx, length)
- X long indx, length;
- X{
- X struct ed_cmd cmd;
- X
- X cmd.cmd = MV;
- X cmd.length = length;
- X write_cmd (&cmd, indx);
- X
- X return;
- X}
- X
- X
- XEXPORT void ge_add (indx, length)
- X long indx, length;
- X{
- X struct ed_cmd cmd;
- X
- X cmd.cmd = AD;
- X cmd.length = length;
- X write_cmd (&cmd, indx);
- X return;
- X}
- X
- X
- X
- END_OF_FILE
- if test 4012 -ne `wc -c <'src/afs/lcs.gedc.c'`; then
- echo shar: \"'src/afs/lcs.gedc.c'\" unpacked with wrong size!
- fi
- # end of 'src/afs/lcs.gedc.c'
- fi
- if test -f 'src/shape/Shapefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/shape/Shapefile'\"
- else
- echo shar: Extracting \"'src/shape/Shapefile'\" \(3789 characters\)
- sed "s/^X//" >'src/shape/Shapefile' <<'END_OF_FILE'
- X#
- X# Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X# and U. Pralle
- X#
- X# This software is published on an as-is basis. There is ABSOLUTELY NO
- X# WARRANTY for any part of this software to work correctly or as described
- X# in the manuals. We do not accept any liability for any kind of damage
- X# caused by use of this software, such as loss of data, time, money, or effort.
- X#
- X# Permission is granted to use, copy, modify, or distribute any part of
- X# this software as long as this is done without asking for charge, and
- X# provided that this copyright notice is retained as part of the source
- X# files. You may charge a distribution fee for the physical act of
- X# transferring a copy, and you may at your option offer warranty
- X# protection in exchange for a fee.
- X#
- X# Direct questions to: Tech. Univ. Berlin
- X# Wilfried Koch
- X# Sekr. FR 5-6
- X# Franklinstr. 28/29
- X# D-1000 Berlin 10, West Germany
- X#
- X# Tel: +49-30-314-22972
- X# E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X#
- X#
- X# $__Log$
- X#
- X###############################################################################
- X# #
- X# Shapefile for SHAPE #
- X# #
- X###############################################################################
- X
- X
- XCOMPONENTS = README Shapefile attr.c attr.h error.c files.c files.h \
- X hash.c hash.h inherit.c shape.l macro.c macro.h main.c \
- X shape.h misc.c produce.c rule.c rule.h select.c selrule.c \
- X selrule.h shape.1 shapeopt.c sighand.c std.c std.h string.c \
- X varsec.c varsec.h vpath.c version.c
- X
- XSRCDIR = /u/wolf/src/shape
- X
- XINSTALDIR = /u/shape/bin
- X
- XPROGS = shapex
- XINSTALLPROGS = shape
- X
- XSHAPESRC = main.c hash.c macro.c rule.c files.c error.c produce.c \
- X std.c selrule.c attr.c varsec.c select.c vpath.c misc.c \
- X sighand.c inherit.c string.c version.c
- X
- XSHAPOBJS = main.o shape.o hash.o macro.o rule.o files.o error.o \
- Xproduce.o std.o selrule.o attr.o varsec.o select.o vpath.o \
- Xmisc.o sighand.o shapeopt.o inherit.o string.o version.o
- X
- XHFILES = shape.h macro.h hash.h rule.h selrule.h std.h varsec.h \
- Xattr.h file.h
- X
- XAFSLIB = /u/shape/lib/libafs.a
- X
- XCLIBS =
- X
- XUTILLIB = /u/shape/lib/libutil.a
- X
- XAFSINC = /u/shape/src/inc
- X
- XHEADER = shape.h $(AFSINC)/afs.h
- X
- XSYSTEM = bsd_4_3
- X
- XQUALITY = test
- X
- XCC = cc -DCFFLGS='"$$Flags: $(CFLAGS) $$"'
- X
- XRULE = test
- XSYSTEM = bsd_4_3
- XQUALITY = test
- X
- Xall: $(PROGS)
- X
- Xshapex: $(RULE) +$(SYSTEM) +$(QUALITY) $(SHAPOBJS) $(AFSLIB) $(UTILLIB)
- X cc -g -pg -o $@ $(SHAPOBJS) $(UTILLIB) $(AFSLIB) $(CLIBS) -ll
- X
- X$(SHAPOBJS): $(HEADER)
- Xmacro.o: $(HEADER) macro.h
- Xhash.o: $(HEADER) hash.h
- Xrule.o: $(HEADER) rule.h
- Xselrule.o: $(HEADER) selrule.h
- Xstd.o: $(HEADER) std.h
- Xvarsec.o: $(HEADER) varsec.h
- Xattr.o: $(HEADER) attr.h
- Xfiles.o: $(HEADER) files.h
- Xversion.o: version.c
- X
- XClean:
- X rm shape *.o core
- X
- Xsave:
- X save $(COMPONENTS)
- X
- Xlint:
- X lint -I/u/shape/src/inc $(SHAPESRC) shape.c
- X
- Xshar:
- X shar Shapefile Makefile $(COMPONENTS) version.c /u/shape/src/inc/ParseArgs.h > shape.sh
- X
- Xinstall: all
- X @-for i in $(INSTALLPROGS); \
- X do \
- X echo installing $$i in $(INSTALDIR); \
- X install -c -g unib shapex $(INSTALDIR)/$$i;\
- X done;
- X
- X
- X#% RULE-SECTION
- X
- Xrelease:
- X *, attr (state, published), attrmax (version);
- X *, attr (state, busy).
- X
- Xtest: *, attr(state, busy);
- X *, attrmax(version).
- X
- X#% END-RULE-SECTION
- X
- X#% VARIANT-SECTION
- X
- Xvclass system ::= (bsd_4_3, ultrix_2_0)
- Xvclass quality ::= (test, release)
- X
- Xbsd_4_3:
- X
- Xultrix_2_0:
- X vflags = -DULTRIX_2_0 -DOLDDBM
- X CFLAGS = -g -I$(AFSINC)
- X CLIBS = -ldbm
- X
- Xtest:
- X CFLAGS = -pg -g -I$(AFSINC)
- X LDFLAGS = -pg -g
- X
- Xrelease:
- X CFLAGS = -O -I$(AFSINC)
- X LDFLAGS = -s
- X
- Xgnu:
- X CC = gcc -I/u/shape/src/inc
- X CFLAGS = -O -g -finline-functions -fkeep-inline-functions \
- X -fcombine-regs -DCFFLGS=\"HALLO\"
- X# '"$$Flags: $(CFLAGS) $$"'
- X
- X#% END-VARIANT-SECTION
- END_OF_FILE
- if test 3789 -ne `wc -c <'src/shape/Shapefile'`; then
- echo shar: \"'src/shape/Shapefile'\" unpacked with wrong size!
- fi
- # end of 'src/shape/Shapefile'
- fi
- if test -f 'src/shape/select.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/shape/select.c'\"
- else
- echo shar: Extracting \"'src/shape/select.c'\" \(4466 characters\)
- sed "s/^X//" >'src/shape/select.c' <<'END_OF_FILE'
- X/*
- X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X * and U. Pralle
- X *
- X * This software is published on an as-is basis. There is ABSOLUTELY NO
- X * WARRANTY for any part of this software to work correctly or as described
- X * in the manuals. We do not accept any liability for any kind of damage
- X * caused by use of this software, such as loss of data, time, money, or
- X * effort.
- X *
- X * Permission is granted to use, copy, modify, or distribute any part of
- X * this software as long as this is done without asking for charge, and
- X * provided that this copyright notice is retained as part of the source
- X * files. You may charge a distribution fee for the physical act of
- X * transferring a copy, and you may at your option offer warranty
- X * protection in exchange for a fee.
- X *
- X * Direct questions to: Tech. Univ. Berlin
- X * Wilfried Koch
- X * Sekr. FR 5-6
- X * Franklinstr. 28/29
- X * D-1000 Berlin 10, West Germany
- X *
- X * Tel: +49-30-314-22972
- X * E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X */
- X#ifndef lint
- Xstatic char *RCSid = "$Header: select.c,v 3.1 89/02/20 16:26:38 wolfgang Exp $";
- X#endif
- X#ifndef lint
- Xstatic char *ConfFlg = CFFLGS; /* should be defined from within Makefile */
- X#endif
- X/*
- X * $Log: select.c,v $
- X * Revision 3.1 89/02/20 16:26:38 wolfgang
- X * NET-RELEASE
- X *
- X * Revision 3.0 89/01/24 11:36:45 wolfgang
- X * New System Generation
- X *
- X * Revision 2.5 89/01/03 13:13:21 wolfgang
- X * changes done for lint
- X *
- X * Revision 2.4 88/12/21 15:12:33 wolfgang
- X * changes done for lint
- X *
- X * Revision 2.3 88/11/22 17:37:42 wolfgang
- X * This version is part of a release
- X *
- X * Revision 2.2 88/08/31 12:12:53 wolfgang
- X * Bugs fixed.
- X *
- X * Revision 2.1 88/08/19 10:17:57 wolfgang
- X * This version is part of a release
- X *
- X */
- X
- X#include <pwd.h>
- X
- X#include "shape.h"
- X
- Xextern struct passwd *getpwnam();
- Xextern char *mktemp();
- X
- Xextern int get_set();
- Xextern int af_setgkey();
- Xextern int af_gattrs();
- X
- Xextern char current_dep[];
- Xextern Af_attrs buft;
- Xextern int depth;
- Xextern char actpath[];
- X
- Xchar cursr[64]; /* name of active selection rule */
- Xstruct selection_rules *currule; /* active selection rule */
- X
- XBool Sselect(targ, path, ttt, fdep, dep)
- X char *targ;
- X char *path;
- X Bool ttt;
- X /*ARGSUSED*/
- X char *fdep;
- X char *dep;
- X{
- X
- XAf_attrs buf1;
- X/* Af_attrs buft; */
- X
- XAf_key key1;
- XAf_key key2;
- X
- XAf_set set1;
- XAf_set set2;
- XBool t1;
- XBool t2;
- Xchar path1[MAXNAMLEN];
- Xchar path2[MAXNAMLEN];
- XBool appflg = TRUE;
- Xchar apptest[MAXNAMLEN];
- X
- X/* if (strcmp(cursr,"-STD-"))
- X return(TRUE); */
- X
- Xif (buft.af_name[0] == targ[0])
- X {
- X (void) strcpy(apptest,buft.af_name);
- X (void) strcat(apptest,".");
- X (void) strcat(apptest,buft.af_type);
- X if (!strcmp(apptest,targ))
- X appflg = FALSE;
- X }
- X
- Xpath1[0] = '\0';
- Xpath2[0] = '\0';
- X
- Xaf_initattrs(&buf1);
- Xaf_initattrs(&buft);
- X
- X/* no selection rule is active or dep didn't match */
- Xt1 = ttt; /* exists_file(targ,0); */
- X(void) strcpy(path1,path); /* actpath); */
- Xt2 = exists_file(dep,0);
- X(void) strcpy(path2,actpath);
- X(void) strcpy(actpath,"");
- Xif ((t1) && (t2))
- X {
- X
- X get_date_of(targ,&set1,path1);
- X if (set1.af_setlen == 0)
- X return(TRUE); /* targ only in bpool */
- X
- X get_date_of(dep,&set2,path2);
- X
- X if (af_setgkey(&set1,0,&key1) == -1)
- X errexit(10,"af_setgkey");
- X if (af_setgkey(&set2,0,&key2) == -1)
- X errexit(10,"af_setgkey");
- X
- X if (af_gattrs(&key1,&buf1) == -1)
- X errexit(10,"af_gattrs");
- X if (af_gattrs(&key2,&buft) == -1)
- X errexit(10,"af_gattrs");
- X
- X if (af_dropset(&set1) == -1)
- X errexit(10, "af_dropset");
- X
- X if (af_dropset(&set2) == -1)
- X errexit(10, "af_dropset");
- X
- X
- X if ((buf1.af_mtime < buft.af_mtime) || ((buf1.af_mtime == -1) && (buft.af_mtime == -1)))
- X {
- X if(appflg)
- X append_attrs(&buft,depth);
- X (void) strcpy(current_dep,dep);
- X return(TRUE);
- X }
- X else
- X return(FALSE);
- X }
- Xelse
- X {
- X (void) strcpy(current_dep,dep);
- X if ((!t1) && (t2))
- X {
- X if (appflg)
- X {
- X /* get attrs for inheritage */
- X get_date_of(dep,&set2,path2);
- X if (af_setgkey(&set2,0,&key2) == -1)
- X errexit(10,"af_setgkey");
- X if (af_gattrs(&key2,&buft) == -1)
- X errexit(10,"af_gattrs");
- X if (af_dropset(&set2) == -1)
- X errexit(10, "af_dropset");
- X append_attrs(&buft,depth);
- X }
- X return(TRUE);
- X }
- X if ((!t1) && (!t2))
- X return(TRUE);
- X if ((t1) && (!t2))
- X return(TRUE);
- X }
- X/*NOTREACHED*/
- X}
- X
- END_OF_FILE
- if test 4466 -ne `wc -c <'src/shape/select.c'`; then
- echo shar: \"'src/shape/select.c'\" unpacked with wrong size!
- fi
- # end of 'src/shape/select.c'
- fi
- if test -f 'src/shape/vpath.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/shape/vpath.c'\"
- else
- echo shar: Extracting \"'src/shape/vpath.c'\" \(3595 characters\)
- sed "s/^X//" >'src/shape/vpath.c' <<'END_OF_FILE'
- X/*
- X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X * and U. Pralle
- X *
- X * This software is published on an as-is basis. There is ABSOLUTELY NO
- X * WARRANTY for any part of this software to work correctly or as described
- X * in the manuals. We do not accept any liability for any kind of damage
- X * caused by use of this software, such as loss of data, time, money, or
- X * effort.
- X *
- X * Permission is granted to use, copy, modify, or distribute any part of
- X * this software as long as this is done without asking for charge, and
- X * provided that this copyright notice is retained as part of the source
- X * files. You may charge a distribution fee for the physical act of
- X * transferring a copy, and you may at your option offer warranty
- X * protection in exchange for a fee.
- X *
- X * Direct questions to: Tech. Univ. Berlin
- X * Wilfried Koch
- X * Sekr. FR 5-6
- X * Franklinstr. 28/29
- X * D-1000 Berlin 10, West Germany
- X *
- X * Tel: +49-30-314-22972
- X * E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X */
- X#ifndef lint
- Xstatic char *RCSid = "$Header: vpath.c,v 3.2 89/02/20 16:26:55 wolfgang Exp $";
- X#endif
- X#ifndef lint
- Xstatic char *ConfFlg = CFFLGS; /* should be defined from within Makefile */
- X#endif
- X/*
- X * $Log: vpath.c,v $
- X * Revision 3.2 89/02/20 16:26:55 wolfgang
- X * NET-RELEASE
- X *
- X * Revision 3.1 89/02/08 12:44:58 wolfgang
- X * performance improved.
- X *
- X * Revision 3.0 89/01/24 11:37:26 wolfgang
- X * New System Generation
- X *
- X * Revision 2.6 89/01/03 13:14:30 wolfgang
- X * changes done for lint
- X *
- X * Revision 2.5 88/12/21 15:13:37 wolfgang
- X * changes done for lint
- X *
- X * Revision 2.4 88/11/21 20:54:15 wolfgang
- X * changes done for sun
- X *
- X * Revision 2.3 88/11/21 15:49:32 wolfgang
- X * return code of all malloc's checked
- X *
- X * Revision 2.2 88/11/18 15:03:21 wolfgang
- X * is_vpath_dir added.
- X *
- X * Revision 2.1 88/08/19 10:18:19 wolfgang
- X * This version is part of a release
- X *
- X */
- X
- X#include "shape.h"
- X
- Xinsertvpath(string)
- X char *string;
- X{
- X char *p;
- X int i;
- X for(i = 1; (p = index(string,':')) != NIL; i++)
- X {
- X *p = '\0';
- X if(*string != '/')
- X {
- X if ((curvpath[i] = malloc((unsigned) (strlen(string) + strlen(curvpath[0])
- X + 3 * sizeof(char)))) == NIL)
- X errexit(10,"malloc");
- X (void) strcpy(curvpath[i],curvpath[0]);
- X (void) strcat(curvpath[i],"/");
- X if ((*string == '.') && (*string+1 == '/'))
- X {
- X string++;
- X string++;
- X }
- X else
- X {
- X if ((*string == '.') && (*string+1 == '.') && (*string+2 == '/'))
- X {
- X *string++;
- X *string++;
- X *string++;
- X }
- X }
- X (void) strcat(curvpath[i],string);
- X }
- X else
- X {
- X if ((curvpath[i] = malloc((unsigned) (strlen(string) + sizeof(char)))) == NIL)
- X errexit(10,"malloc");
- X (void) strcpy(curvpath[i],string);
- X p++;
- X string = p;
- X }
- X }
- X if((p == NIL) && (string != NIL))
- X {
- X if(*string != '/')
- X {
- X if((curvpath[i] = malloc((unsigned) (strlen(string) + strlen(curvpath[0])
- X + 2 * sizeof(char)))) == NIL)
- X errexit(10,"malloc");
- X (void) strcpy(curvpath[i],curvpath[0]);
- X (void) strcat(curvpath[i],"/");
- X if ((*string == '.') && (*string+1 == '/'))
- X {
- X string++;
- X string++;
- X }
- X else
- X {
- X if ((*string == '.') && (*string+1 == '.') && (*string+2 == '/'))
- X {
- X *string++;
- X *string++;
- X *string++;
- X }
- X }
- X (void) strcat(curvpath[i],string);
- X }
- X else
- X {
- X if((curvpath[i] = malloc((unsigned) (strlen(string) + sizeof(char)))) == NIL)
- X errexit(10,"malloc");
- X (void) strcpy(curvpath[i],string);
- X }
- X }
- X}
- X
- END_OF_FILE
- if test 3595 -ne `wc -c <'src/shape/vpath.c'`; then
- echo shar: \"'src/shape/vpath.c'\" unpacked with wrong size!
- fi
- # end of 'src/shape/vpath.c'
- fi
- if test -f 'src/vc/deps' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/vc/deps'\"
- else
- echo shar: Extracting \"'src/vc/deps'\" \(3686 characters\)
- sed "s/^X//" >'src/vc/deps' <<'END_OF_FILE'
- Xdoretrv.o: afsapp.h
- Xdoretrv.o: locks.h
- Xdoretrv.o: project.h
- Xdoretrv.o: retrv.h
- Xdoretrv.o: typeconv.h
- Xdoretrv.o: /u/shape/src/inc/afs.h
- Xdoretrv.o: /u/shape/src/inc/afsys.h
- Xdoretrv.o: doretrv.c
- Xdosave.o: afsapp.h
- Xdosave.o: locks.h
- Xdosave.o: project.h
- Xdosave.o: save.h
- Xdosave.o: typeconv.h
- Xdosave.o: /u/shape/src/inc/afs.h
- Xdosave.o: /u/shape/src/inc/afsys.h
- Xdosave.o: dosave.c
- Xmkattr.o: afsapp.h
- Xmkattr.o: retrv.h
- Xmkattr.o: typeconv.h
- Xmkattr.o: /u/shape/src/inc/afs.h
- Xmkattr.o: /u/shape/src/inc/afsys.h
- Xmkattr.o: mkattr.c
- Xproject.o: project.h
- Xproject.o: project.c
- Xretrv.o: afsapp.h
- Xretrv.o: project.h
- Xretrv.o: retrv.h
- Xretrv.o: typeconv.h
- Xretrv.o: /u/shape/src/inc/ParseArgs.h
- Xretrv.o: /u/shape/src/inc/afs.h
- Xretrv.o: /u/shape/src/inc/afsys.h
- Xretrv.o: retrv.c
- Xsave.o: afsapp.h
- Xsave.o: project.h
- Xsave.o: save.h
- Xsave.o: typeconv.h
- Xsave.o: /u/shape/src/inc/ParseArgs.h
- Xsave.o: save.c
- Xsighand.o: afsapp.h
- Xsighand.o: typeconv.h
- Xsighand.o: /u/shape/src/inc/afs.h
- Xsighand.o: /u/shape/src/inc/afsys.h
- Xsighand.o: sighand.c
- Xutil.o: afsapp.h
- Xutil.o: locks.h
- Xutil.o: project.h
- Xutil.o: typeconv.h
- Xutil.o: /u/shape/src/inc/afs.h
- Xutil.o: /u/shape/src/inc/afsys.h
- Xutil.o: util.c
- Xvadm.o: afsapp.h
- Xvadm.o: typeconv.h
- Xvadm.o: vadm.h
- Xvadm.o: /u/shape/src/inc/ParseArgs.h
- Xvadm.o: /u/shape/src/inc/afs.h
- Xvadm.o: /u/shape/src/inc/afsys.h
- Xvadm.o: vadm.c
- Xvadm_delete.o: afsapp.h
- Xvadm_delete.o: locks.h
- Xvadm_delete.o: typeconv.h
- Xvadm_delete.o: vadm.h
- Xvadm_delete.o: /u/shape/src/inc/afs.h
- Xvadm_delete.o: /u/shape/src/inc/afsys.h
- Xvadm_delete.o: vadm_delete.c
- Xvadm_gkeys.o: afsapp.h
- Xvadm_gkeys.o: typeconv.h
- Xvadm_gkeys.o: vadm.h
- Xvadm_gkeys.o: /u/shape/src/inc/afs.h
- Xvadm_gkeys.o: /u/shape/src/inc/afsys.h
- Xvadm_gkeys.o: vadm_gkeys.c
- Xvadm_note.o: afsapp.h
- Xvadm_note.o: locks.h
- Xvadm_note.o: typeconv.h
- Xvadm_note.o: vadm.h
- Xvadm_note.o: vc_sysdep.h
- Xvadm_note.o: /u/shape/src/inc/afs.h
- Xvadm_note.o: /u/shape/src/inc/afsys.h
- Xvadm_note.o: vadm_note.c
- Xvadm_promote.o: afsapp.h
- Xvadm_promote.o: locks.h
- Xvadm_promote.o: typeconv.h
- Xvadm_promote.o: vadm.h
- Xvadm_promote.o: /u/shape/src/inc/afs.h
- Xvadm_promote.o: /u/shape/src/inc/afsys.h
- Xvadm_promote.o: vadm_promote.c
- Xvadm_reserve.o: afsapp.h
- Xvadm_reserve.o: locks.h
- Xvadm_reserve.o: typeconv.h
- Xvadm_reserve.o: vadm.h
- Xvadm_reserve.o: /u/shape/src/inc/afs.h
- Xvadm_reserve.o: /u/shape/src/inc/afsys.h
- Xvadm_reserve.o: vadm_reserve.c
- Xvadm_symname.o: afsapp.h
- Xvadm_symname.o: project.h
- Xvadm_symname.o: typeconv.h
- Xvadm_symname.o: vadm.h
- Xvadm_symname.o: /u/shape/src/inc/afs.h
- Xvadm_symname.o: /u/shape/src/inc/afsys.h
- Xvadm_symname.o: vadm_symname.c
- Xvadm_utils.o: afsapp.h
- Xvadm_utils.o: typeconv.h
- Xvadm_utils.o: vadm.h
- Xvadm_utils.o: vadmdefs.h
- Xvadm_utils.o: /u/shape/src/inc/afs.h
- Xvadm_utils.o: /u/shape/src/inc/afsys.h
- Xvadm_utils.o: vadm_utils.c
- Xvc_call.o: afsapp.h
- Xvc_call.o: typeconv.h
- Xvc_call.o: vc_call.c
- Xvc_files.o: afsapp.h
- Xvc_files.o: locks.h
- Xvc_files.o: typeconv.h
- Xvc_files.o: vc_sysdep.h
- Xvc_files.o: /u/shape/src/inc/afs.h
- Xvc_files.o: /u/shape/src/inc/afsys.h
- Xvc_files.o: vc_files.c
- Xvc_keyboardIo.o: afsapp.h
- Xvc_keyboardIo.o: typeconv.h
- Xvc_keyboardIo.o: vc_keyboardIo.c
- Xvc_lock.o: afsapp.h
- Xvc_lock.o: typeconv.h
- Xvc_lock.o: /u/shape/src/inc/afs.h
- Xvc_lock.o: /u/shape/src/inc/afsys.h
- Xvc_lock.o: vc_lock.c
- Xvl.o: afsapp.h
- Xvl.o: typeconv.h
- Xvl.o: vl.h
- Xvl.o: /u/shape/src/inc/ParseArgs.h
- Xvl.o: vl.c
- Xvldovl.o: afsapp.h
- Xvldovl.o: typeconv.h
- Xvldovl.o: vl.h
- Xvldovl.o: /u/shape/src/inc/afs.h
- Xvldovl.o: /u/shape/src/inc/afsys.h
- Xvldovl.o: vldovl.c
- Xvlmisc.o: afsapp.h
- Xvlmisc.o: typeconv.h
- Xvlmisc.o: vl.h
- Xvlmisc.o: /u/shape/src/inc/afs.h
- Xvlmisc.o: /u/shape/src/inc/afsys.h
- Xvlmisc.o: vlmisc.c
- Xvlopt.o: afsapp.h
- Xvlopt.o: typeconv.h
- Xvlopt.o: vl.h
- Xvlopt.o: /u/shape/src/inc/ParseArgs.h
- Xvlopt.o: vlopt.c
- END_OF_FILE
- if test 3686 -ne `wc -c <'src/vc/deps'`; then
- echo shar: \"'src/vc/deps'\" unpacked with wrong size!
- fi
- # end of 'src/vc/deps'
- fi
- if test -f 'src/vc/vadm_delete.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/vc/vadm_delete.c'\"
- else
- echo shar: Extracting \"'src/vc/vadm_delete.c'\" \(4539 characters\)
- sed "s/^X//" >'src/vc/vadm_delete.c' <<'END_OF_FILE'
- X/*
- X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X * and U. Pralle
- X *
- X * This software is published on an as-is basis. There is ABSOLUTELY NO
- X * WARRANTY for any part of this software to work correctly or as described
- X * in the manuals. We do not accept any liability for any kind of damage
- X * caused by use of this software, such as loss of data, time, money, or
- X * effort.
- X *
- X * Permission is granted to use, copy, modify, or distribute any part of
- X * this software as long as this is done without asking for charge, and
- X * provided that this copyright notice is retained as part of the source
- X * files. You may charge a distribution fee for the physical act of
- X * transferring a copy, and you may at your option offer warranty
- X * protection in exchange for a fee.
- X *
- X * Direct questions to: Tech. Univ. Berlin
- X * Wilfried Koch
- X * Sekr. FR 5-6
- X * Franklinstr. 28/29
- X * D-1000 Berlin 10, West Germany
- X *
- X * Tel: +49-30-314-22972
- X * E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X */
- X#ifndef lint
- Xstatic char *AFSid = "$Header: vadm_delete.c[3.7] Thu Feb 23 18:14:09 1989 axel@coma published $";
- X#ifdef CFFLGS
- Xstatic char *ConfFlg = CFFLGS;
- X /* should be defined from within Makefile */
- X#endif
- X#endif
- X/*
- X * Log for /u/shape/dist-tape/src/vc/vadm_delete.c[3.4]
- X * Thu Feb 23 18:14:09 1989 axel@coma published $
- X * --- empty log message ---
- X * vadm_delete.c[3.5] Thu Feb 23 18:14:09 1989 axel@coma published $
- X * --- empty log message ---
- X * vadm_delete.c[3.6] Thu Feb 23 18:14:09 1989 axel@coma save $
- X * --- empty log message ---
- X * vadm_delete.c[3.7] Thu Feb 23 18:14:09 1989 axel@coma published $
- X * --- empty log message ---
- X */
- X
- X#include <stdio.h>
- X#include <strings.h>
- X
- X#include "afs.h"
- X#include "afsapp.h"
- X#include "vadm.h"
- X#include "locks.h"
- X
- X/* external */
- Xextern char *malloc();
- Xextern unsigned int options;
- Xextern struct Transaction ThisTransaction;
- X
- X/* locals */
- Xstatic char buf[2048];
- X
- X/**/
- Xint DoDelete (vlist, ac, av)
- X struct vc_vlist *vlist;
- X int ac;
- X char **av;
- X{
- X Af_set set;
- X Af_key *key;
- X Af_user *vc_testlock(), *vc_lock();
- X Uid_t lockeruid();
- X char **erroneous, *lockerid();
- X char version[1024];
- X int state;
- X int i;
- X int errs = 0;
- X
- X errs = GetKeysByName (ac, av, vlist, &set, &erroneous);
- X
- X if (errs)
- X print_erroneous (erroneous, errs);
- X
- X if (!set.af_nkeys) {
- X logmsg ("Nothing appropriate found.");
- X return 1;
- X }
- X
- X if (errs)
- X if (IsOptionSet(Vopt_no_confirm) || IsOptionSet(Vopt_quiet)
- X || !ask_confirm ("Continue", "yes"))
- X return 1;
- X
- X ThisTransaction.tr_rc = 0;
- X for (i = 0 ; i < set.af_nkeys; i++) {
- X Af_user *thislock;
- X ThisTransaction.tr_seqno = i;
- X key = &set.af_klist[i];
- X mkvstring (version, key);
- X (void)strcpy (ThisTransaction.tr_fname, version);
- X if (setjmp (ThisTransaction.tr_env)) continue;
- X if ((state = af_rstate (key)) == -1) {
- X (void) sprintf (buf, "DoDelete (%s): af_rstate",
- X ThisTransaction.tr_fname);
- X af_perror (buf);
- X ThisTransaction.tr_rc++;
- X continue;
- X }
- X
- X if (state > AF_SAVED) {
- X (void)sprintf (buf, "%s cannot be deleted. Version state must be \"saved\".",
- X version);
- X logmsg (buf);
- X ThisTransaction.tr_rc++;
- X continue;
- X }
- X
- X (void)sprintf (buf, "Delete %s ?", version);
- X thislock = vc_testlock_v(key);
- X if (locked(thislock)) {
- X if (lockeruid (thislock) != (Uid_t)getuid ()) {
- X /* locked ! ... but by somebody else */
- X (void)sprintf (buf, "No permission to delete %s (locked by %s).",
- X version, lockerid (thislock));
- X logmsg (buf); free ((char *)thislock);
- X continue;
- X }
- X }
- X else { /* the version is not locked. We must lock it to delete it. */
- X Af_user *mylock = vc_lock_v(key, (Uid_t)getuid ());
- X if (lockeruid (mylock) != (Uid_t)getuid ()) {
- X (void)sprintf (buf, "can't lock %s. Not deleted.", version);
- X logmsg (buf);
- X free ((char *)mylock); free ((char *)thislock);
- X continue;
- X }
- X free ((char *)mylock);
- X }
- X free ((char *)thislock);
- X
- X if (!(IsOptionSet(Vopt_no_confirm) || IsOptionSet(Vopt_quiet)))
- X if (!ask_confirm (buf, "yes")) {
- X (void)sprintf (buf, "%s not deleted.", version);
- X logmsg (buf); free ((char *)thislock);
- X continue;
- X }
- X if (af_rm (key) == -1) {
- X (void)sprintf (buf, "DoDelete(): During deletion of %s.", version);
- X af_perror (buf);
- X return 1;
- X }
- X (void)sprintf (buf, "%s deleted.", version);
- X logmsg (buf);
- X }
- X
- X if (errs)
- X return 1;
- X else
- X return 0;
- X}
- X
- END_OF_FILE
- if test 4539 -ne `wc -c <'src/vc/vadm_delete.c'`; then
- echo shar: \"'src/vc/vadm_delete.c'\" unpacked with wrong size!
- fi
- # end of 'src/vc/vadm_delete.c'
- fi
- if test -f 'src/vc/vc_keyboardIo.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/vc/vc_keyboardIo.c'\"
- else
- echo shar: Extracting \"'src/vc/vc_keyboardIo.c'\" \(4259 characters\)
- sed "s/^X//" >'src/vc/vc_keyboardIo.c' <<'END_OF_FILE'
- X/*
- X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X * and U. Pralle
- X *
- X * This software is published on an as-is basis. There is ABSOLUTELY NO
- X * WARRANTY for any part of this software to work correctly or as described
- X * in the manuals. We do not accept any liability for any kind of damage
- X * caused by use of this software, such as loss of data, time, money, or
- X * effort.
- X *
- X * Permission is granted to use, copy, modify, or distribute any part of
- X * this software as long as this is done without asking for charge, and
- X * provided that this copyright notice is retained as part of the source
- X * files. You may charge a distribution fee for the physical act of
- X * transferring a copy, and you may at your option offer warranty
- X * protection in exchange for a fee.
- X *
- X * Direct questions to: Tech. Univ. Berlin
- X * Wilfried Koch
- X * Sekr. FR 5-6
- X * Franklinstr. 28/29
- X * D-1000 Berlin 10, West Germany
- X *
- X * Tel: +49-30-314-22972
- X * E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X */
- X#ifndef lint
- Xstatic char *AFSid = "$Header: vc_keyboardIo.c[1.5] Thu Feb 23 18:14:31 1989 axel@coma published $";
- X#ifdef CFFLGS
- Xstatic char *ConfFlg = CFFLGS;
- X /* should be defined from within Makefile */
- X#endif
- X#endif
- X/*
- X * Log for /u/shape/dist-tape/src/vc/vc_keyboardIo.c[1.3]
- X * Thu Feb 23 18:14:31 1989 axel@coma published $
- X * --- empty log message ---
- X * vc_keyboardIo.c[1.4] Thu Feb 23 18:14:31 1989 axel@coma published $
- X * --- empty log message ---
- X * vc_keyboardIo.c[1.5] Thu Feb 23 18:14:31 1989 axel@coma published $
- X * --- empty log message ---
- X */
- X
- X#include <stdio.h>
- X#include "afsapp.h"
- X
- Xextern char *malloc();
- X
- X#define INPUTQUEUE 4000
- X#define PROMPT "> "
- X
- X/*ARGSUSED*/
- Xstatic
- Xchar *read_unbuffered (term_char)
- X int term_char;
- X{
- X char *frame, *nextframe;
- X int this_char, last_char, last_last_char, curlen, maxlen;
- X
- X if ((frame =
- X malloc ((unsigned)(sizeof (char) * (INPUTQUEUE + 1)))) == NULL) {
- X fprintf (stderr, "read_unbuffered: can't malloc frame");
- X exit (1);
- X }
- X
- X curlen = 0;
- X maxlen = INPUTQUEUE;
- X nextframe = NULL;
- X last_char = last_last_char = -1;
- X
- X (void)fflush(stdin);
- X printf (PROMPT);
- X
- X while ((this_char = getchar()) != EOF) {
- X if (curlen == maxlen) {
- X /* we need a new frame */
- X nextframe =
- X malloc ((unsigned)(sizeof (char) * (maxlen + INPUTQUEUE + 1)));
- X if (nextframe == NULL) {
- X fprintf (stderr, "read_unbuffer: can't malloc new frame,2");
- X exit (1);
- X }
- X
- X bzero (nextframe, maxlen + INPUTQUEUE + 1);
- X bcopy (frame, nextframe, maxlen);
- X free (frame);
- X maxlen += INPUTQUEUE;
- X frame = nextframe;
- X }
- X
- X frame[curlen++] = this_char;
- X
- X if (this_char == '\n') {
- X if ((last_char == '.')
- X && ((last_last_char == '\n') || (last_last_char == -1))) {
- X /* input is done */
- X curlen -= 2; /* forget "<term_char>\n" */
- X break;
- X }
- X else
- X printf (PROMPT); /* print prompt */
- X }
- X
- X last_last_char = last_char;
- X last_char = this_char;
- X }
- X frame[curlen] = NULL;
- X return frame;
- X}
- X
- Xstatic
- Xchar *read_buffered ()
- X{
- X /* hmmm, muss ich erstmal ueber eine geniale
- X * Implementierung nachdenken. Also erstmal
- X * read_unbuffered ().
- X */
- X
- X return read_unbuffered (-1); /* no special term_char */
- X}
- X
- Xchar *get_from_stdin (contents, term_char)
- X char *contents;
- X int term_char; /* char that indicates input termination */
- X{
- X /*
- X * Reads from stdin a text terminated by ^D or by a specified
- X * single charcter "term_char" at the beginning of a new line.
- X * If term_char is -1 text is terminated by ^D.
- X *
- X * The text is appended to "contents", if "contents" is given.
- X */
- X char *tmp, *new;
- X int ltmp, lcontents; /* length of tmp and contents */
- X
- X if (!isatty (0)) /* 0 == stdin */
- X tmp = read_buffered (); /* ignore term_char */
- X else
- X tmp = read_unbuffered (term_char);
- X
- X if (contents && *contents) {
- X ltmp = strlen (tmp);
- X lcontents = strlen (contents);
- X if ((new =
- X malloc ((unsigned)(sizeof (char) * (ltmp+lcontents+1)))) == NULL) {
- X fprintf (stderr, "Get_from_stdin: Can't malloc");
- X exit (1);
- X }
- X
- X (void)sprintf (new, "%s%s", contents, tmp);
- X free (tmp);
- X return new;
- X }
- X
- X return tmp;
- X}
- END_OF_FILE
- if test 4259 -ne `wc -c <'src/vc/vc_keyboardIo.c'`; then
- echo shar: \"'src/vc/vc_keyboardIo.c'\" unpacked with wrong size!
- fi
- # end of 'src/vc/vc_keyboardIo.c'
- fi
- if test -f 'src/vfind/Shapefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/vfind/Shapefile'\"
- else
- echo shar: Extracting \"'src/vfind/Shapefile'\" \(4217 characters\)
- sed "s/^X//" >'src/vfind/Shapefile' <<'END_OF_FILE'
- X#
- X# Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X# and U. Pralle
- X#
- X# This software is published on an as-is basis. There is ABSOLUTELY NO
- X# WARRANTY for any part of this software to work correctly or as described
- X# in the manuals. We do not accept any liability for any kind of damage
- X# caused by use of this software, such as loss of data, time, money, or effort.
- X#
- X# Permission is granted to use, copy, modify, or distribute any part of
- X# this software as long as this is done without asking for charge, and
- X# provided that this copyright notice is retained as part of the source
- X# files. You may charge a distribution fee for the physical act of
- X# transferring a copy, and you may at your option offer warranty
- X# protection in exchange for a fee.
- X#
- X# Direct questions to: Tech. Univ. Berlin
- X# Wilfried Koch
- X# Sekr. FR 5-6
- X# Franklinstr. 28/29
- X# D-1000 Berlin 10, West Germany
- X#
- X# Tel: +49-30-314-22972
- X# E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X#
- X# Shapefile for vfind
- X# $Header: Shapefile[1.6] Tue Feb 21 20:23:03 1989 uli@coma published $
- X#
- X# Log for /u/shape/dist-tape/src/vfind/Shapefile[1.6]
- X# Tue Feb 21 20:23:03 1989 uli@coma published $
- X# * This is the Shapefile for vfind. It works on BSD 4.3, SunOS
- X# 4.0, and Ultrix 2.0.
- X#
- X#
- X#
- X# This is the directory where the AFS header files reside.
- XAFSINC = /u/shape/src/inc
- X# This is the directory where the AFS libraries reside.
- XAFSLIBPATH = /u/shape/lib
- X#
- X# You are ready, if you don't want to install vfind via shape.
- XINSTALDIR = /u/shape/bin
- X#
- X# Ok, that's it. Don't change other macros settings.
- XRULE=
- XSYSTEM=bsd_4_3
- XCOMPILER=pcc
- XQUALITY=debug
- XAFSLIBS = $(AFSLIBPATH)/libutil.a $(AFSLIBPATH)/libafs.a
- X
- X#% RULE-SECTION
- Xrel:
- X $(AFSINC)/*, attr (state, busy);
- X *.a, attr (state, busy);
- X *, attrge (state, published), attrmax (version).
- X
- Xvsave:
- X *, attrmax (version);
- X *.a, attr (state, busy).
- X
- X
- X#% END-RULE-SECTION
- X
- X#% VARIANT-SECTION
- X
- Xvclass system ::= (bsd_4_3, sunos_4_0, ultrix_2_0)
- Xvclass compiler ::= (pcc, gcc)
- X#
- X#
- Xcfflags:
- X vflags = -DCFFLGS='"$$Flags: <$<> $(CFLAGS) $$"'
- X#
- X# vclass system
- Xbsd_4_3:
- X CFLAGS = -DBSD_4_3
- X LIBS = $(AFSLIBS)
- Xsunos_4_0:
- X CFLAGS = -DSUNOS_4_0
- X LIBS = $(AFSLIBS)
- Xultrix_2_0:
- X CFLAGS = -DULTRIX_2_0
- X LIBS = $(AFSLIBS) -ldbm
- X#
- X# vclass compiler
- X#
- Xpcc:
- X CC=cc $(INCLUDES)
- Xgnu:
- X CC=gcc -traditional
- X CFLAGS=-g -fwritable-strings $(INCLUDES)
- X#
- X# vclass quality
- X#
- Xdebug:
- X CFLAGS=-g
- X
- Xas:
- X CFLAGS=-S
- X
- Xprofile:
- X CFLAGS=-pg
- X LDFLAGS=-pg
- X
- Xoptimize:
- X CFLAGS=-O
- X
- Xmaxoptimize:
- X CFLAGS=-O -finline-functions -fcombine-regs -fstrength-reduce
- X
- Xpreprocess:
- X CFLAGS=-E
- X
- X#% END-VARIANT-SECTION
- X
- XCOMPONENTS = $(SOURCES) $(HEADERS) $(MANUALS) Shapefile README
- XSOURCES = vfind.c vfversion.c at_misc.c
- XOBJECTS = vfind.o vfversion.o at_misc.o
- XHEADERS = atk.h
- XMANUALS = vfind.1
- XINCLUDES = -I$(AFSINC)
- X
- X.BPOOL:
- X#.NOBPOOL:
- X
- Xvfind: $(RULE) +cfflags +$(SYSTEM) +$(COMPILER) +$(QUALITY) $(LIBS) $(OBJECTS)
- X $(CC) $(LDFLAGS) -o vfind $(OBJECTS) $(LIBS)
- X
- Xpreprel: rel @newrel @publish
- X
- Xcomprel: rel vfind
- X
- X
- Xlint: +$(SYSTEM) +$(COMPILER) +$(QUALITY) +$(PURITY) $(COMPONENTS)
- X lint $(CFLAGS) $(INCLUDES) $(COMPONENTS)
- X
- XVERSIONPROTO = /u/shape/lib/version.c
- Xvfversion.o: $(VERSIONPROTO)
- Xvfind.o: atk.h
- X
- X#
- X# Metatargets
- X#
- X@save:
- X save -q $(COMPONENTS)
- X
- X@publish:
- X sbmt -q $(COMPONENTS) -n $(RELNAME)
- X
- X@newrel:
- X cp $(VERSIONPROTO) vfversion.c ; \
- X sbmt -fq vfversion.c
- X
- X@sunset: $(COMPONENTS)
- X rsh troll '(cd vfind; rm -f $(COMPONENTS) )';
- X rcp $(COMPONENTS) troll:vfind;
- X rsh troll '(set path = ($$path /usr/gnu/bin) ;cd vfind; /u/shape/bin/shape SYSTEM=sunos_4_0)'
- X
- X@suninstall: vsave $(COMPONENTS)
- X rsh troll '(cd vfind; rm -f $(COMPONENTS) )';
- X rcp $(COMPONENTS) troll:vfind;
- X rsh troll '(set path = ($$path /usr/gnu/bin) ;cd vfind; /u/shape/bin/shape SYSTEM=sunos_4_0)'
- X
- X@vaxset: $(COMPONENTS)
- X rsh chaos '(cd vfind; rm -f $(COMPONENTS) )';
- X rcp $(COMPONENTS) chaos:vfind;
- X rsh chaos '(set path = ($$path /usr/local) ;cd vfind; /u/shape/bin/shape SYSTEM=ultrix_2_0)'
- X
- X@bclean:
- X rm -f AFS/?B*
- X
- Xinstall: rel vfind
- X @echo installing vfind in $(INSTALDIR); \
- X install -c -m 755 vfind $(INSTALDIR)
- X
- X@nothing:
- X
- X@echocomp:
- X @echo $(COMPONENTS)
- X
- Xtags:
- X etags $(SOURCES) $(HEADERS)
- END_OF_FILE
- if test 4217 -ne `wc -c <'src/vfind/Shapefile'`; then
- echo shar: \"'src/vfind/Shapefile'\" unpacked with wrong size!
- fi
- # end of 'src/vfind/Shapefile'
- fi
- if test -f 'tutorial/tutorial.ms' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'tutorial/tutorial.ms'\"
- else
- echo shar: Extracting \"'tutorial/tutorial.ms'\" \(4195 characters\)
- sed "s/^X//" >'tutorial/tutorial.ms' <<'END_OF_FILE'
- X.\"
- X.\" Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
- X.\" and U. Pralle
- X.\"
- X.\" This software is published on an as-is basis. There is ABSOLUTELY NO
- X.\" WARRANTY for any part of this software to work correctly or as described
- X.\" in the manuals. We do not accept any liability for any kind of damage
- X.\" caused by use of this software, such as loss of data, time, money, or
- X.\" effort.
- X.\"
- X.\" Permission is granted to use, copy, modify, or distribute any part of
- X.\" this software as long as this is done without asking for charge, and
- X.\" provided that this copyright notice is retained as part of the source
- X.\" files. You may charge a distribution fee for the physical act of
- X.\" transferring a copy, and you may at your option offer warranty
- X.\" protection in exchange for a fee.
- X.\"
- X.\" Direct questions to: Tech. Univ. Berlin
- X.\" Wilfried Koch
- X.\" Sekr. FR 5-6
- X.\" Franklinstr. 28/29
- X.\" D-1000 Berlin 10, West Germany
- X.\"
- X.\" Tel: +49-30-314-22972
- X.\" E-mail: shape@coma.uucp or shape@db0tui62.bitnet
- X.\"
- X.IZ
- X.sp 1i
- X.nr PS 30
- X.ps \n(PS
- X.nr VS 33
- X.vs \n(VS
- X.ce 2
- XA tutorial introduction to the
- X\f(HB\s-1shape\s+1\fR-toolkit
- X.sp 1i
- X.nr PS 12
- X.ps \n(PS
- X.nr VS 14
- X.vs \n(VS
- X.ce 3
- X\fIWilfried Koch, Andreas Lampen, Axel Mahler, Wolfgang Obst, Uli Pralle\fR
- XTechnische Universit\*:at Berlin
- X.sp 4i
- X.ce
- XPreliminary Draft (\n(dy.\n(mo.\n(yr)
- X.bp
- X.NH 1
- XAbout the status of this release
- X.PP
- XAs you will see when going on reading, this tutorial is still very raw
- Xand incomplete. Properly spoken it is just a small fragment of the
- Xtutorial we plan to write. We put this on the distribution tape because
- Xwe think that a fragment of a tutorial is better than no
- Xtutorial at all.
- X.NH 1
- XIntroduction
- X.PP
- XThe \*(sh-toolkit is a collection of programs to support
- Xsoftware configuration management in an
- X.UX
- Xenvironment. It consists of a set of version control
- Xcommands and \*(sh, a significantly enhanced \fIMake-oid\fR. \*(sh and
- Xthe version control commands are integrated on top of AFS (Attributed
- XFile System), a dedicated version object base. The system features
- XRCS-style version control and a configuration identification and
- X-build process that has full access to all revisions in the object
- Xbase (other than make which only knows about plain files). AFS also
- Xsupports derived object management, i.e. it maintains a cache of
- Xmultiple versions of compiled object-files (e.g. compiled c-files with
- Xdifferent compile switches).
- X.PP
- XThe \*(sh program itself is upward compatible to Make in that it can
- Xproperly handle conventional Makefiles. The \fIShapefile\fR however, uses
- XMakefile-style dependencies as (versionless) \fIabstract system model\fR
- Xand employs \fIconfiguration selection rules\fR to dynamically bind
- Xparticular version objects in the object base to the names listed in
- Xthe system model. The version selection mechanism exploits AFS'
- Xability to maintain any number of arbitrary attributes for objects in
- Xthe object base.
- XOn special request, \*(sh records an identified configuration in a
- X\fIconfiguration identification document\fR (CID) which has the form of
- Xa completely bound Shapefile (all object-instances are explicit). This
- Xmakes it particularly easy to rebuild recorded configurations. As
- XCID's are themselves documents, they can be placed under version control,
- Xmaking it easy to maintain histories of entire software systems.
- X.PP
- XThe object base abstraction presented by AFS provides uniform access to
- Ximmutable revisions of data entities (files) stored in special
- Xarchives, and mutable regular
- X.UX
- Xfiles. Consequently, the AFS based
- Xtoolkit lives peacefully (and meaningfully!) together with standard
- Xfilesystem applications (editors, compilers, formatters etc.).
- XCooperative work within projects is supported by a build-in status
- Xmodel, controlling visibility of version objects, and locking, a
- Xprimitive form of \fIlong transactions\fR. The general concept of object
- Xattributes provides for passing information between individual tools
- Xthat would otherwise be lost. This mechanism is useful for building
- Xintegrated environments from a set of unrelated tools.
- X.bp
- X.so make2shape.ms
- X.bp
- X.so trouble.ms
- END_OF_FILE
- if test 4195 -ne `wc -c <'tutorial/tutorial.ms'`; then
- echo shar: \"'tutorial/tutorial.ms'\" unpacked with wrong size!
- fi
- # end of 'tutorial/tutorial.ms'
- fi
- echo shar: End of archive 5 \(of 33\).
- cp /dev/null ark5isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 33 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-