home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume27
/
aegis-2.1
/
part04
< prev
next >
Wrap
Text File
|
1993-09-24
|
160KB
|
5,830 lines
Newsgroups: comp.sources.unix
From: pmiller@bmr.gov.au (Peter Miller)
Subject: v27i039: aegis - project change supervisor (V2.1), Part04/19
References: <1.748951883.12788@gw.home.vix.com>
Sender: unix-sources-moderator@gw.home.vix.com
Approved: vixie@gw.home.vix.com
Submitted-By: pmiller@bmr.gov.au (Peter Miller)
Posting-Number: Volume 27, Issue 39
Archive-Name: aegis-2.1/part04
#! /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 4 (of 19)."
# Contents: aegis/change.h aegis/indent.c aegis/log.c aegis/pager.c
# aegis/pattr.def aegis/pconf.def aegis/project.h aegis/pstate.def
# common/trace.h conf/AIX-3.2 conf/ConvexOS-10 conf/IRIX-4.0
# conf/Linux-0.99 conf/SCO-2.4 conf/SunOS-4.1.1 conf/SunOS-4.1.2
# conf/SunOS-4.1.3 conf/SunOS-5.1 conf/SysV-4.0 conf/ULTRIX-4.2
# conf/apollo conf/dcosx conf/dgux-5.4.1 conf/hpux-8.07 doc/c3.1.so
# doc/c3.2.so doc/c7.2.so fmtgen/indent.c man1/aenrls.1 man5/aedir.5
# man5/aepstate.5 test/00/t0010a.sh test/00/t0015a.sh
# Wrapped by vixie@gw.home.vix.com on Sat Sep 25 03:00:30 1993
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'aegis/change.h' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'aegis/change.h'\"
else
echo shar: Extracting \"'aegis/change.h'\" \(4551 characters\)
sed "s/^X//" >'aegis/change.h' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1991, 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: interface definition for aegis/change.c
X */
X
X#ifndef CHANGE_H
X#define CHANGE_H
X
X#include <main.h>
X#include <cstate.h>
X#include <pconf.h>
X
X/*
X * Name of the project configuration file,
X * relative to the baseline/devdir root.
X */
X#define THE_CONFIG_FILE "config"
X
Xstruct wlist;
Xstruct user_ty;
X
Xtypedef struct change_ty change_ty;
Xstruct change_ty
X{
X long reference_count;
X struct project_ty *pp;
X long number;
X int is_a_new_file;
X string_ty *filename;
X cstate cstate_data;
X string_ty *development_directory;
X string_ty *integration_directory;
X string_ty *logfile;
X string_ty *pconf_path;
X pconf pconf_data;
X long lock_magic;
X /*
X * if you add to this structure,
X * don't forget to update change_free in change.c
X */
X};
X
Xchange_ty *change_alloc _((struct project_ty *, long));
Xvoid change_free _((change_ty *));
Xchange_ty *change_copy _((change_ty *));
Xvoid change_bind_existing _((change_ty *));
Xvoid change_bind_new _((change_ty *));
Xcstate change_cstate_get _((change_ty *));
Xvoid change_cstate_write _((change_ty *));
Xcstate_src change_src_find _((change_ty *, string_ty *));
Xvoid change_src_remove _((change_ty *, string_ty *));
Xcstate_src change_src_new _((change_ty *));
Xcstate_history change_history_new _((change_ty *, struct user_ty *));
Xstring_ty *change_developer_name _((change_ty *));
Xstring_ty *change_reviewer_name _((change_ty *));
Xstring_ty *change_integrator_name _((change_ty *));
Xvoid change_development_directory_set _((change_ty *, string_ty *));
Xvoid change_integration_directory_set _((change_ty *, string_ty *));
Xstring_ty *change_development_directory_get _((change_ty *, int));
Xstring_ty *change_integration_directory_get _((change_ty *, int));
Xstring_ty *change_logfile_get _((change_ty *));
Xvoid change_cstate_lock_prepare _((change_ty *));
Xvoid change_error _((change_ty *, char *, ...));
Xvoid change_fatal _((change_ty *, char *, ...));
Xvoid change_verbose _((change_ty *, char *, ...));
Xstring_ty *change_pconf_path_get _((change_ty *));
Xpconf change_pconf_get _((change_ty *));
Xvoid change_run_change_file_command _((change_ty *, struct wlist *,
X struct user_ty *));
Xvoid change_run_project_file_command _((change_ty *));
Xvoid change_run_develop_end_notify_command _((change_ty *));
Xvoid change_run_develop_end_undo_notify_command _((change_ty *));
Xvoid change_run_review_pass_notify_command _((change_ty *));
Xvoid change_run_review_pass_undo_notify_command _((change_ty *));
Xvoid change_run_review_fail_notify_command _((change_ty *));
Xvoid change_run_integrate_pass_notify_command _((change_ty *));
Xvoid change_run_integrate_fail_notify_command _((change_ty *));
Xvoid change_run_history_get_command _((change_ty *cp, string_ty *file_name,
X string_ty *edit_number, string_ty *output_file, struct user_ty *up));
Xvoid change_run_history_create_command _((change_ty *cp, string_ty *file_name));
Xvoid change_run_history_put_command _((change_ty *cp, string_ty *file_name));
Xstring_ty *change_run_history_query_command _((change_ty *cp,
X string_ty *file_name));
Xvoid change_run_diff_command _((change_ty *cp, struct user_ty *up,
X string_ty *original, string_ty *input, string_ty *output));
Xvoid change_run_diff3_command _((change_ty *cp, struct user_ty *up,
X string_ty *original, string_ty *most_recent, string_ty *input,
X string_ty *output));
Xvoid change_run_integrate_begin_command _((change_ty *));
Xvoid change_run_develop_begin_command _((change_ty *, struct user_ty *));
Xstring_ty *change_file_template _((change_ty *, string_ty *));
Xvoid change_become _((change_ty *));
Xvoid change_become_undo _((void));
Xint change_umask _((change_ty *));
Xvoid change_development_directory_clear _((change_ty *));
Xvoid change_integration_directory_clear _((change_ty *));
X
X#endif /* CHANGE_H */
END_OF_FILE
if test 4551 -ne `wc -c <'aegis/change.h'`; then
echo shar: \"'aegis/change.h'\" unpacked with wrong size!
fi
# end of 'aegis/change.h'
fi
if test -f 'aegis/indent.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'aegis/indent.c'\"
else
echo shar: Extracting \"'aegis/indent.c'\" \(4475 characters\)
sed "s/^X//" >'aegis/indent.c' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1991, 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: functions to automatically indent output
X */
X
X#include <stdio.h>
X#include <errno.h>
X
X#include <error.h>
X#include <glue.h>
X#include <indent.h>
X#include <s-v-arg.h>
X#include <trace.h>
X
X
X#define INDENT 8
X
Xstatic FILE *fp;
Xstatic char *fn;
Xstatic int depth;
Xstatic int in_col;
Xstatic int out_col;
Xstatic int continuation_line;
X
X
X/*
X * Function Name:
X * indent_more
X *
X * Description:
X * The indent_more function is used to increase the indenting
X * beyond the automatically calculated indent.
X *
X * Preconditions:
X * There must be a matching indent_less call.
X *
X * validataion:
X * none
X *
X * Passed:
X * nothing
X *
X * Returns:
X * nothing
X */
X
Xvoid
Xindent_more()
X{
X ++depth;
X}
X
X
X/*
X * Function Name:
X * indent_less
X *
X * Description:
X * The indent_less function is used to decrease the indenting
X * to less than the automatically calculated indent.
X *
X * Preconditions:
X * There must be a matching indent_more call.
X *
X * validataion:
X * none
X *
X * Passed:
X * nothing
X *
X * Returns:
X * nothing
X */
X
Xvoid
Xindent_less()
X{
X --depth;
X}
X
X
X/*
X * Function Name:
X * indent_putchar
X *
X * Description:
X * The indent_putchar function is used to emity characters.
X * It keeps track of (){}[] pairs and indents between them.
X * Leading whitespace is suppressed and replaced with its own
X * idea of indenting.
X *
X * Preconditions:
X * none
X *
X * validation:
X * none
X *
X * Passed:
X * 'c' the character to emit.
X */
X
Xvoid
Xindent_putchar(c)
X char c;
X{
X assert(fp);
X switch (c)
X {
X case '\n':
X glue_fputc('\n', fp);
X#ifdef DEBUG
X glue_fflush(fp);
X#endif
X in_col = 0;
X out_col = 0;
X if (continuation_line == 1)
X continuation_line = 2;
X else
X continuation_line = 0;
X break;
X
X case ' ':
X if (out_col)
X ++in_col;
X break;
X
X case '\t':
X if (out_col)
X in_col = (in_col / INDENT + 1) * INDENT;
X break;
X
X case '\1':
X if (!out_col)
X break;
X if (in_col >= INDENT * (depth + 2))
X ++in_col;
X else
X in_col = INDENT * (depth + 2);
X break;
X
X case /*{*/'}':
X case /*(*/')':
X case /*[*/']':
X --depth;
X /* fall through */
X
X default:
X if (!out_col && c != '#' && continuation_line != 2)
X in_col += INDENT * depth;
X while (((out_col + 8) & -8) <= in_col && out_col + 1 < in_col)
X {
X glue_fputc('\t', fp);
X out_col = (out_col + 8) & -8;
X }
X while (out_col < in_col)
X {
X glue_fputc(' ', fp);
X ++out_col;
X }
X if (c == '{'/*}*/ || c == '('/*)*/ || c == '['/*]*/)
X ++depth;
X glue_fputc(c, fp);
X in_col++;
X out_col = in_col;
X continuation_line = (c == '\\');
X break;
X }
X if (glue_ferror(fp))
X nfatal("write \"%s\"", fn);
X}
X
X
X/*
X * Function Name:
X * indent_printf
X *
X * Description:
X * As putchar is to indent_putchasr, printf is to indent_printf.
X *
X * Preconditions:
X * none
X *
X * Validation:
X * none
X *
X * Passed:
X * 's' format string
X * ... and optional arguments
X *
X * Returns:
X * nothing
X */
X
X/*VARARGS1*/
Xvoid
Xindent_printf(s sva_last)
X char *s;
X sva_last_decl
X{
X va_list ap;
X char buffer[2000];
X
X sva_init(ap, s);
X vsprintf(buffer, s, ap);
X va_end(ap);
X for (s = buffer; *s; ++s)
X indent_putchar(*s);
X}
X
X
Xvoid
Xindent_open(s)
X char *s;
X{
X trace(("indent_open(s = %08lX)\n{\n"/*}*/, s));
X if (!s)
X {
X fp = stdout;
X s = "(stdout)";
X }
X else
X {
X trace_string(s);
X fp = glue_fopen(s, "w");
X if (!fp)
X nfatal("open \"%s\"", s);
X }
X trace_pointer(fp);
X fn = s;
X depth = 0;
X in_col = 0;
X out_col = 0;
X continuation_line = 0;
X trace((/*{*/"}\n"));
X}
X
X
Xvoid
Xindent_close()
X{
X trace(("indent_close()\n{\n"/*}*/));
X trace_pointer(fp);
X if (out_col)
X indent_putchar('\n');
X if (glue_fflush(fp))
X nfatal("write \"%s\"", fn);
X if (fp != stdout && glue_fclose(fp))
X nfatal("close \"%s\"", fn);
X fp = 0;
X fn = 0;
X trace((/*{*/"}\n"));
X}
END_OF_FILE
if test 4475 -ne `wc -c <'aegis/indent.c'`; then
echo shar: \"'aegis/indent.c'\" unpacked with wrong size!
fi
# end of 'aegis/indent.c'
fi
if test -f 'aegis/log.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'aegis/log.c'\"
else
echo shar: Extracting \"'aegis/log.c'\" \(3832 characters\)
sed "s/^X//" >'aegis/log.c' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1991, 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: functions to open and close log files
X */
X
X#include <stddef.h>
X#include <stdio.h>
X#include <string.h>
X#include <signal.h>
X#include <unistd.h>
X
X#include <error.h>
X#include <log.h>
X#include <os.h>
X#include <trace.h>
X#include <undo.h>
X#include <user.h>
X
X
Xstatic int pid;
X
X
X/*
X * NAME
X * log_open - start logging
X *
X * SYNOPSIS
X * void log_open(string_ty *logfile, user_ty *up);
X *
X * DESCRIPTION
X * The log_open function is used to start sending stdout
X * and stderr to a longfile. If necessary it creates the log
X * file before returning.
X */
X
Xvoid
Xlog_open(log, up)
X string_ty *log;
X user_ty *up;
X{
X static int already_done;
X int fd[2];
X int bg;
X int append_to_file;
X
X if (already_done)
X return;
X assert(log);
X trace(("log_open(s = \"%s\")\n{\n"/*}*/, log->str_text));
X already_done = 1;
X
X /*
X * if the logfile exists, unlink it first
X * (so that baseline linked to int dir works correctly)
X */
X append_to_file = 0;
X user_become(up);
X if (os_exists(log))
X {
X long now;
X
X time(&now);
X if (now - os_mtime(log) < 30)
X append_to_file = 1;
X else
X os_unlink(log);
X }
X user_become_undo();
X
X /*
X * If we are in the background,
X * don't send the output to the terminal.
X */
X bg = os_background();
X if (bg)
X {
X char *mode = (append_to_file ? "a" : "w");
X user_become(up);
X if (!freopen(log->str_text, mode, stdout))
X nfatal("%s", log->str_text);
X user_become_undo();
X }
X else
X {
X int uid;
X int gid;
X int um;
X int n;
X char *cmd[4];
X
X /*
X * list both to a file and to the terminal
X */
X uid = user_id(up);
X gid = user_gid(up);
X um = user_umask(up);
X if (pipe(fd))
X nfatal("pipe()");
X switch (pid = fork())
X {
X case 0:
X undo_cancel();
X while (os_become_active())
X os_become_undo();
X n = 0;
X cmd[n++] = "tee";
X if (append_to_file)
X cmd[n++] = "-a";
X cmd[n++] = log->str_text;
X cmd[n] = 0;
X close(fd[1]);
X close(0);
X if (dup(fd[0]) != 0)
X fatal("dup was wrong");
X close(fd[0]);
X signal(SIGINT, SIG_IGN);
X signal(SIGHUP, SIG_IGN);
X signal(SIGTERM, SIG_IGN);
X os_setgid(gid);
X os_setuid(uid);
X umask(um);
X execvp(cmd[0], cmd);
X nfatal("%s", cmd[0]);
X
X case -1:
X nfatal("fork()");
X
X default:
X close(fd[0]);
X close(1);
X if (dup(fd[1]) != 1)
X fatal("dup was wrong");
X close(fd[1]);
X break;
X }
X }
X
X /*
X * tell the user we are logging
X * (without putting it into the logfile)
X */
X if (!bg)
X verbose("logging to \"%s\"", log->str_text);
X
X /*
X * make stderr go to the same place as stdout
X * [will this work if stdout is already closed?]
X */
X close(2);
X switch (dup(1))
X {
X case 0:
X /* oops, stdin is was closed */
X if (dup(1) != 2)
X fatal("dup was wrong");
X close(0);
X break;
X
X case 2:
X break;
X
X default:
X nfatal("dup");
X }
X trace((/*{*/"}\n"));
X}
X
X
Xvoid
Xlog_close()
X{
X if (pid > 0)
X {
X int status;
X
X fclose(stdout);
X fclose(stderr);
X os_waitpid(pid, &status);
X pid = 0;
X }
X}
X
X
Xvoid
Xlog_quitter(n)
X int n;
X{
X log_close();
X}
END_OF_FILE
if test 3832 -ne `wc -c <'aegis/log.c'`; then
echo shar: \"'aegis/log.c'\" unpacked with wrong size!
fi
# end of 'aegis/log.c'
fi
if test -f 'aegis/pager.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'aegis/pager.c'\"
else
echo shar: Extracting \"'aegis/pager.c'\" \(3503 characters\)
sed "s/^X//" >'aegis/pager.c' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: functions to pipe output through paginator
X */
X
X#include <stdio.h>
X#include <stdlib.h>
X#include <unistd.h>
X
X#include <error.h>
X#include <option.h>
X#include <os.h>
X#include <pager.h>
X#include <trace.h>
X#include <undo.h>
X
X
Xstatic FILE *out;
Xstatic char *pager;
Xstatic int pid;
X
X
Xstatic FILE *pipe_open _((char *));
X
Xstatic FILE *
Xpipe_open(prog)
X char *prog;
X{
X int uid;
X int gid;
X int um;
X FILE *fp;
X int fd[2];
X char *cmd[4];
X
X fp = 0;
X os_become_orig_query(&uid, &gid, &um);
X if (pipe(fd))
X nfatal("pipe()");
X switch (pid = fork())
X {
X case 0:
X undo_cancel();
X while (os_become_active())
X os_become_undo();
X cmd[0] = "sh";
X cmd[1] = "-c";
X cmd[2] = prog;
X cmd[3] = 0;
X close(fd[1]);
X close(0);
X if (dup(fd[0]) != 0)
X fatal("dup was wrong");
X close(fd[0]);
X os_setgid(gid);
X os_setuid(uid);
X umask(um);
X execvp(cmd[0], cmd);
X nfatal("%s", prog);
X
X case -1:
X nerror("fork()");
X fp = 0;
X break;
X
X default:
X close(fd[0]);
X fp = fdopen(fd[1], "w");
X if (!fp)
X nfatal("fdopen");
X break;
X }
X return fp;
X}
X
X
Xstatic void pipe_close _((FILE *));
X
Xstatic void
Xpipe_close(fp)
X FILE *fp;
X{
X int status;
X
X fclose(fp);
X os_waitpid(pid, &status);
X pid = 0;
X}
X
X
Xstatic void cleanup _((int));
X
Xstatic void
Xcleanup(n)
X int n;
X{
X trace(("cleanup(n = %d)\n{\n"/*}*/, n));
X if (!out)
X goto done;
X
X /*
X * write the last of the output
X */
X fflush(out);
X
X /*
X * close the paginator
X */
X if (pager)
X {
X pipe_close(out);
X pager = 0;
X }
X out = 0;
X
X /*
X * here for all exits
X */
X done:
X trace((/*{*/"}\n"));
X}
X
X
XFILE *
Xpager_open()
X{
X trace(("pager_open()\n{\n"/*}*/));
X assert(!out);
X
X /*
X * if talking to a terminal,
X * send the output through a paginator
X */
X if
X (
X !option_unformatted_get()
X &&
X !os_background()
X &&
X isatty(0)
X &&
X isatty(1)
X )
X {
X pager = getenv("PAGER");
X if (!pager || !*pager)
X pager = "more";
X }
X else
X pager = 0;
X
X /*
X * register the cleanup function in case of fatal errors
X */
X quit_register(cleanup);
X
X /*
X * open the paginator
X */
X if (pager)
X {
X os_become_orig();
X out = pipe_open(pager);
X os_become_undo();
X if (!out)
X {
X pager = 0;
X out = stdout;
X }
X }
X else
X out = stdout;
X trace((/*{*/"}\n"));
X return out;
X}
X
X
Xvoid
Xpager_close(fp)
X FILE *fp;
X{
X trace(("pager_close(fp = %08lX)\n{\n"/*}*/, fp));
X assert(out);
X assert(fp == out);
X
X /*
X * write the last of the output
X */
X fflush(out);
X if (ferror(out))
X pager_error(out);
X
X /*
X * close the paginator
X */
X if (pager)
X {
X pipe_close(out);
X pager = 0;
X }
X out = 0;
X trace((/*{*/"}\n"));
X}
X
X
Xvoid
Xpager_error(fp)
X FILE *fp;
X{
X assert(out);
X assert(fp == out);
X
X if (pager)
X nfatal("writing pipe to \"%s\"", pager);
X else
X nfatal("standard output");
X}
END_OF_FILE
if test 3503 -ne `wc -c <'aegis/pager.c'`; then
echo shar: \"'aegis/pager.c'\" unpacked with wrong size!
fi
# end of 'aegis/pager.c'
fi
if test -f 'aegis/pattr.def' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'aegis/pattr.def'\"
else
echo shar: Extracting \"'aegis/pattr.def'\" \(5110 characters\)
sed "s/^X//" >'aegis/pattr.def' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1991, 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: project attributes file contents definition
X *
X * if you change this file, don't forget to change
X * man5/aepattr.so
X * aegis/pattr_ed.c
X * aegis/new_rele.c
X */
X
X#include <common.def>
X
X/*
X * This field contains
X * a description of the project.
X * Large amounts of prose are not required;
X * a single line is sufficient.
X */
Xdescription = string;
X
X/*
X * This field contains
X * the name of the user to whom baseline files belong.
X */
Xowner_name = string;
X
X/*
X * This field contains
X * the name of the group to which baseline files belong.
X */
Xgroup_name = string;
X
X/*
X * If this field is true, then a developer may review her own change.
X * This is probably only a good idea for projects of less than 3 people.
X * The idea is for as many people as possible to critically examine a change.
X */
Xdeveloper_may_review = boolean;
X
X/*
X * If this field is true, then a developer may integrate her own change.
X * This is probably only a good idea for projects of less than 3 people.
X * The idea is for as many people as possible to critically examine a change.
X */
Xdeveloper_may_integrate = boolean;
X
X/*
X * If this field is true, then a reviewer may integrate a change she reviewed.
X * This is probably only a good idea for projects of less than 3 people.
X * The idea is for as many people as possible to critically examine a change.
X */
Xreviewer_may_integrate = boolean;
X
X/*
X * This field is true if developers may created changes,
X * in addition to administrators.
X * This tends to be a very useful thing,
X * since developers find most of the bugs.
X */
Xdevelopers_may_create_changes = boolean;
X
X/*
X * notify that a change requires reviewing
X * All of the substitutions described in aesub(5) are available.
X * this field is optional
X *
X * This command could also be used to notify other management systems,
X * such as progress and defect tracking.
X */
Xdevelop_end_notify_command = string;
X
X/*
X * notify that a change has been withdrawn from review
X * for further development
X * All of the substitutions described in aesub(5) are available.
X * this field is optional
X *
X * This command could also be used to notify other management systems,
X * such as progress and defect tracking.
X */
Xdevelop_end_undo_notify_command = string;
X
X/*
X * notify that the review has passed
X * All of the substitutions described in aesub(5) are available.
X * this field is optional
X *
X * This command could also be used to notify other management systems,
X * such as progress and defect tracking.
X */
Xreview_pass_notify_command = string;
X
X/*
X * notify that a review pass has has been rescinded
X * All of the substitutions described in aesub(5) are available.
X * this field is optional.
X * Defaults to the develop_end_notify_command field.
X *
X * This command could also be used to notify other management systems,
X * such as progress and defect tracking.
X */
Xreview_pass_undo_notify_command = string;
X
X/*
X * notify that the review has failed
X * All of the substitutions described in aesub(5) are available.
X * this field is optional
X *
X * This command could also be used to notify other management systems,
X * such as progress and defect tracking.
X */
Xreview_fail_notify_command = string;
X
X/*
X * notify that the integration has passed
X * All of the substitutions described in aesub(5) are available.
X * this field is optional
X *
X * This command could also be used to notify other management systems,
X * such as progress and defect tracking.
X */
Xintegrate_pass_notify_command = string;
X
X/*
X * notify that the integration has failed
X * All of the substitutions described in aesub(5) are available.
X * this field is optional
X *
X * This command could also be used to notify other management systems,
X * such as progress and defect tracking.
X */
Xintegrate_fail_notify_command = string;
X
X/*
X * The pathname of where to place new development directories.
X * The pathname must be absolute.
X * Only consulted if the uconf field of the same name is not set.
X * Defaults to $HOME.
X */
Xdefault_development_directory = string;
X
X/*
X * File permission mode mask. See umask(2) for more information.
X * This value will always be OR'ed with 022, because aegis is paranoid.
X */
Xumask = integer;
X
X/*
X * This field contains what to do when a change is created with
X * no test exemption specified.
X */
Xdefault_test_exemption = boolean;
END_OF_FILE
if test 5110 -ne `wc -c <'aegis/pattr.def'`; then
echo shar: \"'aegis/pattr.def'\" unpacked with wrong size!
fi
# end of 'aegis/pattr.def'
fi
if test -f 'aegis/pconf.def' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'aegis/pconf.def'\"
else
echo shar: Extracting \"'aegis/pconf.def'\" \(4907 characters\)
sed "s/^X//" >'aegis/pconf.def' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1991, 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: project config file contents definition
X *
X * this file normally resides at "projdir"/baseline/config
X *
X * this file is only ever read by [me], so does not need locking.
X * Indeed, it is in the baseline, and subject to history.
X *
X * if you change this file, don't forget to change
X * man5/aepconf.5
X */
X
X#include <common.def>
X
X/*
X * how to build the project
X * (actually, how to do an integration build)
X * mandatory
X *
X * All of the substitutions described in aesub(5) are available.
X */
Xbuild_command = string;
X
X/*
X * how to do a development build
X * defaults to above
X *
X * All of the substitutions described in aesub(5) are available.
X */
Xdevelopment_build_command = string;
X
X/*
X * Executed whenever the files in the change, change.
X *
X * All of the substitutions described in aesub(5) are available.
X * In addition:
X *
X * ${File_List}
X * space separated list of files named
X */
Xchange_file_command = string;
X
X/*
X * Executed at development build before 'development_build_command' when
X * (a) it is the first build after a develop begin, or
X * (b) after some other change has been integrated into the baseline
X * since the last build.
X *
X * All of the substitutions described in aesub(5) are available.
X */
Xproject_file_command = string;
X
X/*
X * Executed at develop begin
X *
X * All of the substitutions described in aesub(5) are available.
X */
Xdevelop_begin_command = string;
X
X/*
X * Executed at integrate begin
X *
X * All of the substitutions described in aesub(5) are available.
X */
Xintegrate_begin_command = string;
X
X/*
X * This flag is true if aegis should link the files from the baseline
X * into the integration directory, rther than copy them (the default).
X * This has risks, as the build script (e.g. Howto.cook or Makefile, etc)
X * must unlink targets before rebuilding them.
X */
Xlink_integration_directory = boolean;
X
X/*
X * the history commands are pretty dicey to have here,
X * because a project could be badly broken if these don't work just right!
X * On the other hand, they need to be changed from time to time.
X */
X
X/*
X * create a new history
X * always executed as the project owner
X * All of the substitutions described in aesub(5) are available.
X * In addition:
X *
X * ${Input}
X * absolute path of the source file
X *
X * ${History}
X * absolute path of the history file
X */
Xhistory_create_command = string;
X
X/*
X * get a file from history
X * may be executed by developers
X * All of the substitutions described in aesub(5) are available.
X * In addition:
X *
X * ${History}
X * absolute path of the history file
X *
X * ${Edit}
X * edit number to be extracted (artibrary string)
X *
X * ${Output}
X * Absolute path of output file.
X */
Xhistory_get_command = string;
X
X/*
X * add a new change to the history
X * always executed as the project owner
X * All of the substitutions described in aesub(5) are available.
X * In addition:
X *
X * ${Input}
X * absolute path of the source file
X *
X * ${History}
X * absolute path of the history file
X */
Xhistory_put_command = string;
X
X/*
X * query the topmost edit of a history file
X * Result to be printed on stdout.
X * may be executed by developers
X * All of the substitutions described in aesub(5) are available.
X * In addition:
X *
X * ${History}
X * absolute path of the history file
X */
Xhistory_query_command = string;
X
X/*
X * difference of 2 files
X * All of the substitutions described in aesub(5) are available.
X * In addition:
X *
X * ${ORiginal}
X * absolute path of file in baseline (usually)
X *
X * ${Input}
X * absolute path of file in development directory (usually)
X *
X * ${Output}
X * Absolute path of output file
X */
Xdiff_command = string;
X
X/*
X * difference of 3 files
X * All of the substitutions described in aesub(5) are available.
X * In addition:
X *
X * ${ORiginal}
X * Absolute path of common ancestor
X *
X * ${Most_Recent}
X * Absolute path of competing edit, usually in the baseline.
X *
X * ${Input}
X * absolute path of file in development directory (usually)
X *
X * ${Output}
X * absolute path of output file
X */
Xdiff3_command = string;
X
X/*
X * new file templates
X */
Xfile_template =
X[
X {
X pattern = [ string ];
X body = string;
X }
X];
END_OF_FILE
if test 4907 -ne `wc -c <'aegis/pconf.def'`; then
echo shar: \"'aegis/pconf.def'\" unpacked with wrong size!
fi
# end of 'aegis/pconf.def'
fi
if test -f 'aegis/project.h' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'aegis/project.h'\"
else
echo shar: Extracting \"'aegis/project.h'\" \(4262 characters\)
sed "s/^X//" >'aegis/project.h' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: interface definition for aegis/project.h
X */
X
X#ifndef PROJECT_H
X#define PROJECT_H
X
X#include <pstate.h>
X#include <pattr.h>
X
Xtypedef struct project_ty project_ty;
Xstruct project_ty
X{
X long reference_count;
X string_ty *name;
X string_ty *home_path;
X string_ty *baseline_path_unresolved;
X string_ty *baseline_path;
X string_ty *history_path;
X string_ty *info_path;
X string_ty *pstate_path;
X string_ty *changes_path;
X pstate pstate_data;
X int is_a_new_file;
X long lock_magic;
X /*
X * if you add anything to this structure,
X * make sure you fix project_free in project.c
X */
X};
X
Xproject_ty *project_alloc _((string_ty *name));
Xvoid project_bind_existing _((project_ty *));
Xvoid project_bind_new _((project_ty *));
Xvoid project_free _((project_ty *));
Xstring_ty *project_name_get _((project_ty *));
Xproject_ty *project_copy _((project_ty *));
Xstring_ty *project_home_path_get _((project_ty *));
Xvoid project_home_path_set _((project_ty *, string_ty *));
Xstring_ty *project_baseline_path_get _((project_ty *, int));
Xstring_ty *project_history_path_get _((project_ty *));
Xstring_ty *project_info_path_get _((project_ty *));
Xstring_ty *project_changes_path_get _((project_ty *));
Xstring_ty *project_change_path_get _((project_ty *, long));
Xstring_ty *project_pstate_path_get _((project_ty *));
Xpstate project_pstate_get _((project_ty *));
Xvoid project_pstate_write _((project_ty *));
Xvoid project_pstate_lock_prepare _((project_ty *));
Xvoid project_build_read_lock_prepare _((project_ty *));
Xvoid project_build_write_lock_prepare _((project_ty *));
Xpattr project_pattr_get _((project_ty *));
Xvoid project_pattr_set _((project_ty *, pattr));
Xpstate_src project_src_find _((project_ty *, string_ty *));
Xpstate_src project_src_new _((project_ty *, string_ty *));
Xvoid project_src_remove _((project_ty *, string_ty *));
Xint project_administrator_query _((project_ty *, string_ty *));
Xvoid project_administrator_add _((project_ty *, string_ty *));
Xvoid project_administrator_delete _((project_ty *, string_ty *));
Xint project_integrator_query _((project_ty *, string_ty *));
Xvoid project_integrator_add _((project_ty *, string_ty *));
Xvoid project_integrator_delete _((project_ty *, string_ty *));
Xint project_reviewer_query _((project_ty *, string_ty *));
Xvoid project_reviewer_add _((project_ty *, string_ty *));
Xvoid project_reviewer_delete _((project_ty *, string_ty *));
Xint project_developer_query _((project_ty *, string_ty *));
Xvoid project_developer_add _((project_ty *, string_ty *));
Xvoid project_developer_delete _((project_ty *, string_ty *));
Xpstate_history project_history_new _((project_ty *));
Xlong project_last_change_integrated _((project_ty *));
Xvoid project_error _((project_ty *, char *, ...));
Xvoid project_fatal _((project_ty *, char *, ...));
Xvoid project_verbose _((project_ty *, char *, ...));
Xvoid project_change_append _((project_ty *, long));
Xvoid project_change_delete _((project_ty *, long));
Xstring_ty *project_version_get _((project_ty *));
Xstring_ty *project_owner _((project_ty *));
Xstring_ty *project_group _((project_ty *));
Xstring_ty *project_default_development_directory _((project_ty *));
Xstruct user_ty *project_user _((project_ty *));
Xvoid project_become _((project_ty *));
Xvoid project_become_undo _((void));
Xint project_umask _((project_ty *));
Xint project_delta_exists _((project_ty *pp, long dn));
Xstring_ty *project_delta_to_edit _((project_ty *pp, long delta, string_ty *fn));
X
X#endif /* PROJECT_H */
END_OF_FILE
if test 4262 -ne `wc -c <'aegis/project.h'`; then
echo shar: \"'aegis/project.h'\" unpacked with wrong size!
fi
# end of 'aegis/project.h'
fi
if test -f 'aegis/pstate.def' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'aegis/pstate.def'\"
else
echo shar: Extracting \"'aegis/pstate.def'\" \(3934 characters\)
sed "s/^X//" >'aegis/pstate.def' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1991, 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: project state file contents definition
X *
X * normally resides at "projdir"/info/state
X *
X * read and written by aegis, so it needs locking
X *
X * If you change this file, don't forget to change
X * man5/aepstate.5
X */
X
X#include <pattr.def>
X
X/*
X * Changes are numbered sequentially from one.
X * This field records the next unused change number.
X */
Xnext_change_number = integer;
X
X/*
X * Deltas are numbered sequentailly from one.
X * This field records the next unused delta number.
X */
Xnext_delta_number = integer;
X
X/*
X * Each test is numbered uniquely.
X * The name is of the form t[0-9][0-9][0-9][0-9][am].sh
X * ('a' for automatic and 'm' for manual.)
X * It would be possible to number each test within each change,
X * (of the form C???T??[AM].sh)
X * but this would not cover -New_ReLeaSe, where the test numbering
X * can not start at 1 again, otherwise tests could not be retained
X * across releases.
X */
Xnext_test_number = integer;
X
X/*
X * This field is a list of the files in the project.
X */
Xsrc =
X[
X {
X /*
X * The name of the file, relative to the baseline.
X */
X file_name = string;
X
X /*
X * What the file is for.
X */
X usage = file_usage;
X
X /*
X * The edit number of the file.
X */
X edit_number = string;
X
X /*
X * The change which locked this file.
X *
X * Caveat: this field is redundant, you can figure it out by scanning
X * all of he change files. Having it here is very convenient,
X * even though it means multiple updates.
X */
X locked_by = integer;
X
X /*
X * The change which is about to create this file
X * for the first time.
X * Same caveat as above.
X */
X about_to_be_created_by = integer;
X
X /*
X * The change which last deleted this file.
X * We never throw them away, becase
X * (a) it may be created again, and more imortant
X * (b) we need it to recreate earlier deltas.
X */
X deleted_by = integer;
X }
X];
X
X/*
X * This field contains a history of integrations for the project.
X * Update by each successful 'aegis -Integrate_Pass' command.
X */
Xhistory =
X[
X {
X /*
X * The delta number of the integration.
X */
X delta_number = integer;
X
X /*
X * The number of the change which was integrated.
X */
X change_number = integer;
X }
X];
X
X/*
X * The list of changes which have been created to date.
X */
Xchange = [integer];
X
X/*
X * The list of administrators of the project.
X */
Xadministrator = [string];
X
X/*
X * The list of developers of the project.
X */
Xdeveloper = [string];
X
X/*
X * The list of reviewers of the project.
X */
Xreviewer = [string];
X
X/*
X * The list of integrators of the project.
X */
Xintegrator = [string];
X
X/*
X * The change currently being integrated.
X * Only one change (within a project) may be integrated at a time.
X * Only set when an integration is in progress.
X */
Xcurrently_integrating_change = integer;
X
X/*
X * The version numbers for (this release of) the project.
X * (The major verion defaults to one if not given,
X * the minor version defaults to zero if not given.)
X */
Xversion_major = integer;
Xversion_minor = integer;
X
X/*
X * The version number this project was derived from.
X * This is of most use when producing "patch" files.
X */
Xversion_previous = string;
END_OF_FILE
if test 3934 -ne `wc -c <'aegis/pstate.def'`; then
echo shar: \"'aegis/pstate.def'\" unpacked with wrong size!
fi
# end of 'aegis/pstate.def'
fi
if test -f 'common/trace.h' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'common/trace.h'\"
else
echo shar: Extracting \"'common/trace.h'\" \(4879 characters\)
sed "s/^X//" >'common/trace.h' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1991, 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: interface definition for common/trace.c
X */
X
X
X#ifndef TRACE_H
X#define TRACE_H
X
X#include <stddef.h>
X
X#include <main.h>
X
X#ifdef DEBUG
X#define trace_pretest_ \
X ( \
X ( \
X trace_pretest_result \
X ? \
X trace_pretest_result \
X : \
X trace_pretest(__FILE__, &trace_pretest_result) \
X ) \
X & \
X 1 \
X )
X#define trace_where_ trace_where(__FILE__, __LINE__)
X#define trace(x) (void)(trace_pretest_ && (trace_where_, trace_printf x, 0))
X#define trace_if() (trace_pretest_ && (trace_where_, 1))
X#else
X#define trace(x)
X#define trace_if() 0
X#endif
X
X/*
X * This variable is static to each file which
X * includes the "trace.h" file.
X * Tracing is file-by-file, but need only test this once.
X * Files will fail to trace if a trace call is executed in them
X * prior to a call to trace_enable turning it on.
X */
X#ifdef DEBUG
Xstatic int trace_pretest_result;
X#endif
X
Xint trace_pretest _((char *file, int *result));
Xvoid trace_where _((char *file, int line));
Xvoid trace_printf _((char *, ...));
Xvoid trace_enable _((char *));
Xvoid trace_indent_reset _((void));
X
X
X#if defined(__STDC__) || defined(__stdc__)
X#define trace_stringize(x) #x
X#else
X#define trace_stringize(x) "x"
X#endif
X
Xvoid trace_char_real _((char *, char *));
Xvoid trace_char_unsigned_real _((char *, unsigned char *));
Xvoid trace_int_real _((char *, int *));
Xvoid trace_int_unsigned_real _((char *, unsigned *));
Xvoid trace_long_real _((char *, long *));
Xvoid trace_long_unsigned_real _((char *, unsigned long *));
Xvoid trace_pointer_real _((char *, void *));
Xvoid trace_short_real _((char *, short *));
Xvoid trace_short_unsigned_real _((char *, unsigned short *));
Xvoid trace_string_real _((char *, char *));
X
X#ifdef DEBUG
X
X#define trace_char(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_char_real(trace_stringize(x), &x), \
X 0 \
X ) \
X )
X
X#define trace_char_unsigned(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_char_unsigned_real(trace_stringize(x), &x), \
X 0 \
X ) \
X )
X
X#define trace_int(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_int_real(trace_stringize(x), &x), \
X 0 \
X ) \
X )
X
X#define trace_int_unsigned(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_int_unsigned_real(trace_stringize(x), &x), \
X 0 \
X ) \
X )
X
X#define trace_long(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_long_real(trace_stringize(x), &x), \
X 0 \
X ) \
X )
X
X#define trace_long_unsigned(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_long_unsigned_real(trace_stringize(x), &x), \
X 0 \
X ) \
X )
X
X#define trace_pointer(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_pointer_real(trace_stringize(x), &x), \
X 0 \
X ) \
X )
X
X#define trace_short(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_short_real(trace_stringize(x), &x), \
X 0 \
X ) \
X )
X
X#define trace_short_unsigned(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_short_unsigned_real(trace_stringize(x), &x), \
X 0 \
X ) \
X )
X
X#define trace_string(x) \
X (void) \
X ( \
X trace_pretest_ \
X && \
X ( \
X trace_where_, \
X trace_string_real(trace_stringize(x), x), \
X 0 \
X ) \
X )
X
X#else
X
X#define trace_char(x)
X#define trace_char_unsigned(x)
X#define trace_int(x)
X#define trace_int_unsigned(x)
X#define trace_long(x)
X#define trace_long_unsigned(x)
X#define trace_pointer(x)
X#define trace_short(x)
X#define trace_short_unsigned(x)
X#define trace_string(x)
X
X#endif
X
X#endif /* TRACE_H */
END_OF_FILE
if test 4879 -ne `wc -c <'common/trace.h'`; then
echo shar: \"'common/trace.h'\" unpacked with wrong size!
fi
# end of 'common/trace.h'
fi
if test -f 'conf/AIX-3.2' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/AIX-3.2'\"
else
echo shar: Extracting \"'conf/AIX-3.2'\" \(4207 characters\)
sed "s/^X//" >'conf/AIX-3.2' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 1, or (at your option)
X * any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for AIX 3.2 system
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X *
X#define CONF_NO_strerror
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X *
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X */
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X#define BSD
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X */
X#define CONF_NO_pw_comment
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X * In this case, one is present, but with crippled semantics.
X */
X#define CONF_NO_seteuid
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4207 -ne `wc -c <'conf/AIX-3.2'`; then
echo shar: \"'conf/AIX-3.2'\" unpacked with wrong size!
fi
# end of 'conf/AIX-3.2'
fi
if test -f 'conf/ConvexOS-10' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/ConvexOS-10'\"
else
echo shar: Extracting \"'conf/ConvexOS-10'\" \(4166 characters\)
sed "s/^X//" >'conf/ConvexOS-10' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for ConvexOS 10
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X *
X#define CONF_NO_strerror
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X#define BSD
X/* #define SYSV */
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "daemon"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4166 -ne `wc -c <'conf/ConvexOS-10'`; then
echo shar: \"'conf/ConvexOS-10'\" unpacked with wrong size!
fi
# end of 'conf/ConvexOS-10'
fi
if test -f 'conf/IRIX-4.0' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/IRIX-4.0'\"
else
echo shar: Extracting \"'conf/IRIX-4.0'\" \(4167 characters\)
sed "s/^X//" >'conf/IRIX-4.0' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for IRIX 4.0 (Silicon Graphics)
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X */
X#define CONF_NO_strerror
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X */
X#define CONF_NO_tcgetpgrp
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X/* #define BSD */
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4167 -ne `wc -c <'conf/IRIX-4.0'`; then
echo shar: \"'conf/IRIX-4.0'\" unpacked with wrong size!
fi
# end of 'conf/IRIX-4.0'
fi
if test -f 'conf/Linux-0.99' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/Linux-0.99'\"
else
echo shar: Extracting \"'conf/Linux-0.99'\" \(4375 characters\)
sed "s/^X//" >'conf/Linux-0.99' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for Linux 0.99
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X *
X#define CONF_NO_strerror
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X *
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X */
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X#define BSD
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X */
X#define CONF_NO_pw_comment
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X * Linux does not, but see CONF_HAS_setreuid, below.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Linux does not have seteuid in libc, but it does have setreuid.
X * The setreuid function can be used to synthesize a seteuid function.
X */
X#define CONF_HAS_setreuid
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4375 -ne `wc -c <'conf/Linux-0.99'`; then
echo shar: \"'conf/Linux-0.99'\" unpacked with wrong size!
fi
# end of 'conf/Linux-0.99'
fi
if test -f 'conf/SCO-2.4' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/SCO-2.4'\"
else
echo shar: Extracting \"'conf/SCO-2.4'\" \(4153 characters\)
sed "s/^X//" >'conf/SCO-2.4' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for SCO 2.4
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X *
X#define CONF_NO_strerror
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X/* #define BSD */
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4153 -ne `wc -c <'conf/SCO-2.4'`; then
echo shar: \"'conf/SCO-2.4'\" unpacked with wrong size!
fi
# end of 'conf/SCO-2.4'
fi
if test -f 'conf/SunOS-4.1.1' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/SunOS-4.1.1'\"
else
echo shar: Extracting \"'conf/SunOS-4.1.1'\" \(4160 characters\)
sed "s/^X//" >'conf/SunOS-4.1.1' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for SunOS 4.1.1
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X */
X#define CONF_NO_strerror
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X#define BSD
X/* #define SYSV */
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X#define CONF_getpgrp_arg 0
X/* #define CONF_getpgrp_arg */
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4160 -ne `wc -c <'conf/SunOS-4.1.1'`; then
echo shar: \"'conf/SunOS-4.1.1'\" unpacked with wrong size!
fi
# end of 'conf/SunOS-4.1.1'
fi
if test -f 'conf/SunOS-4.1.2' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/SunOS-4.1.2'\"
else
echo shar: Extracting \"'conf/SunOS-4.1.2'\" \(4160 characters\)
sed "s/^X//" >'conf/SunOS-4.1.2' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for SunOS 4.1.2
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X */
X#define CONF_NO_strerror
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X#define BSD
X/* #define SYSV */
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X#define CONF_getpgrp_arg 0
X/* #define CONF_getpgrp_arg */
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4160 -ne `wc -c <'conf/SunOS-4.1.2'`; then
echo shar: \"'conf/SunOS-4.1.2'\" unpacked with wrong size!
fi
# end of 'conf/SunOS-4.1.2'
fi
if test -f 'conf/SunOS-4.1.3' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/SunOS-4.1.3'\"
else
echo shar: Extracting \"'conf/SunOS-4.1.3'\" \(4160 characters\)
sed "s/^X//" >'conf/SunOS-4.1.3' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for SunOS 4.1.3
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X */
X#define CONF_NO_strerror
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X#define BSD
X/* #define SYSV */
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X#define CONF_getpgrp_arg 0
X/* #define CONF_getpgrp_arg */
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4160 -ne `wc -c <'conf/SunOS-4.1.3'`; then
echo shar: \"'conf/SunOS-4.1.3'\" unpacked with wrong size!
fi
# end of 'conf/SunOS-4.1.3'
fi
if test -f 'conf/SunOS-5.1' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/SunOS-5.1'\"
else
echo shar: Extracting \"'conf/SunOS-5.1'\" \(4166 characters\)
sed "s/^X//" >'conf/SunOS-5.1' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for SunOS 5.1 (Solaris 2.1)
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X */
X#define CONF_NO_strerror
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X#define BSD
X/* #define SYSV */
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X#define CONF_getpgrp_arg 0
X/* #define CONF_getpgrp_arg */
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4166 -ne `wc -c <'conf/SunOS-5.1'`; then
echo shar: \"'conf/SunOS-5.1'\" unpacked with wrong size!
fi
# end of 'conf/SunOS-5.1'
fi
if test -f 'conf/SysV-4.0' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/SysV-4.0'\"
else
echo shar: Extracting \"'conf/SysV-4.0'\" \(4165 characters\)
sed "s/^X//" >'conf/SysV-4.0' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for generic SVR4 system
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X */
X#define CONF_NO_strerror
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X */
X#define CONF_NO_tcgetpgrp
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X/* #define BSD */
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4165 -ne `wc -c <'conf/SysV-4.0'`; then
echo shar: \"'conf/SysV-4.0'\" unpacked with wrong size!
fi
# end of 'conf/SysV-4.0'
fi
if test -f 'conf/ULTRIX-4.2' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/ULTRIX-4.2'\"
else
echo shar: Extracting \"'conf/ULTRIX-4.2'\" \(4141 characters\)
sed "s/^X//" >'conf/ULTRIX-4.2' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for ULTRIX version 4.2
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X *
X#define CONF_NO_strerror
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#define CONF_NO_stdarg
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X/* #define BSD */
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh5"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4141 -ne `wc -c <'conf/ULTRIX-4.2'`; then
echo shar: \"'conf/ULTRIX-4.2'\" unpacked with wrong size!
fi
# end of 'conf/ULTRIX-4.2'
fi
if test -f 'conf/apollo' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/apollo'\"
else
echo shar: Extracting \"'conf/apollo'\" \(4235 characters\)
sed "s/^X//" >'conf/apollo' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for apollo domain
X *
X * Aegis is not known to work on apollos, but then
X * aegis isn't know not to work on apollos, either...
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X */
X#define CONF_NO_strerror
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X */
X#define CONF_NO_tcgetpgrp
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#define CONF_NO_stdarg
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X/* #define BSD */
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X */
X#define CONF_NO_strftime
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/ksh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4235 -ne `wc -c <'conf/apollo'`; then
echo shar: \"'conf/apollo'\" unpacked with wrong size!
fi
# end of 'conf/apollo'
fi
if test -f 'conf/dcosx' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/dcosx'\"
else
echo shar: Extracting \"'conf/dcosx'\" \(4405 characters\)
sed "s/^X//" >'conf/dcosx' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for Pyramid SMP DC/OSx
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X */
X#define CONF_NO_strerror
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X/* #define BSD */
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X/*
X * On the pyramid the author used to test aegis,
X * the readdir function returned a structure that
X * had the name starting in the wrong place.
X * Maybe a version later than 1.0-92b023 has fixed it.
X */
X#define CONF_pyramid_broken_readdir
X
X#endif /* CONF_H */
END_OF_FILE
if test 4405 -ne `wc -c <'conf/dcosx'`; then
echo shar: \"'conf/dcosx'\" unpacked with wrong size!
fi
# end of 'conf/dcosx'
fi
if test -f 'conf/dgux-5.4.1' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/dgux-5.4.1'\"
else
echo shar: Extracting \"'conf/dgux-5.4.1'\" \(4162 characters\)
sed "s/^X//" >'conf/dgux-5.4.1' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for dgux 5.4.1
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X *
X#define CONF_NO_strerror
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X/* #define BSD */
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X/* #define CONF_getpgrp_arg 0 */
X#define CONF_getpgrp_arg
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4162 -ne `wc -c <'conf/dgux-5.4.1'`; then
echo shar: \"'conf/dgux-5.4.1'\" unpacked with wrong size!
fi
# end of 'conf/dgux-5.4.1'
fi
if test -f 'conf/hpux-8.07' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'conf/hpux-8.07'\"
else
echo shar: Extracting \"'conf/hpux-8.07'\" \(4489 characters\)
sed "s/^X//" >'conf/hpux-8.07' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: aegis configuration for HP/UX 8.07
X */
X
X#ifndef CONF_H
X#define CONF_H
X
X#define HPUX
X
X/*
X * Define this symbol if your system does NOT
X * have the ANSI C strerror system call, and
X * does not define strerror in <string.h>.
X */
X#define CONF_NO_strerror
X
X/*
X * Define this symbol if your system does NOT
X * have the POSIX tcgetpgrp system call.
X *
X#define CONF_NO_tcgetpgrp
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the stdarg.h include file mandated by ANSI C.
X */
X#ifndef __STDC__
X#define CONF_NO_stdarg
X#endif
X
X/*
X * Define one of these symbols to indicate which
X * universe your UNIX is derived from.
X * If you have a choice, define both.
X */
X/* #define BSD */
X#define SYSV
X
X/*
X * Define this symbol as an appropriate arguemnt to
X * the getpgrp system call for your system.
X * Ignore if your system does not have a getpgrp system call.
X */
X#define CONF_getpgrp_arg 0
X
X/*
X * Suitable user for storing aegis' global files.
X * The group will be derived from the relevant entry in /etc/passwd.
X *
X * Do not confuse this with the fact that aegis must be set-uid-root.
X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
X *
X * This string defines the owner of aegis' global files, so that aegis
X * may access them when they are on NFS mounted partitions (when root
X * is mapped to "nobody").
X */
X#define AEGIS_USER "bin"
X
X/*
X * This defines the file creation mask. See umask(2) for more information.
X * Some bits are not available, because aegis is _meant_ to be paranoid.
X * Owner: always has read, write and search/exec.
X * Group: always has read and search/exec, so that developers can get at the
X * baseline. There is never group write, because then developers
X * could trash the baseline, which is counter-productive.
X * Others: There is never others write, for the same reason as group.
X * Others read and search/execute is configurable.
X *
X * The permissions mask in binary looks like
X * 000 010 X1X
X * where the Xs may be configured.
X *
X * Alternatives for default umask are thus
X * 027 others get nothing
X * 026 others can execute the results if they know where they are going
X * 022 others can see and copy and execute anything
X * 023 don't do this (why is left as an exersize for the reader)
X *
X * Projects have a configurable umask, this is just the default.
X * See aepattr(1) for more information.
X */
X#define DEFAULT_UMASK 026
X
X/*
X * Define this symbol if your system does NOT have the strftime
X * function mandated by the ANSI C standard.
X *
X#define CONF_NO_strftime
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the pw_comment field in struct passwd in <pwd.h>
X *
X#define CONF_NO_pw_comment
X */
X
X/*
X * Define this symbol if your system does NOT
X * have the seteuid system call.
X *
X * HP/UX does not have this system call in the libraries,
X * but it can be simulated using an existing system call,
X * see the CONF_HAS_setresuid define, below.
X *
X#define CONF_NO_seteuid
X */
X
X/*
X * Define this symbol if your systems has setresuid,
X * but does NOT have seteuid. Similarly for setresgid.
X * Hopefully, this us unique to HP-UX.
X */
X#define CONF_HAS_setresuid
X
X/*
X * Define this symbol to be the pathname of your shell.
X * Leave it as a Bourne shell whenever possible.
X * Some systems have different versions of the Bourne shell,
X * with and without functions; choose the one *with* functions if so.
X */
X#define CONF_SHELL "/bin/sh"
X
X/*
X * These symbols define where non-system user IDs start,
X * and where non-system group IDs start.
X * This is mostly to ensure that accounts "root" and "bin"
X * and "uucp" are not project owners.
X */
X#define AEGIS_MIN_UID 100
X#define AEGIS_MIN_GID 10
X
X#endif /* CONF_H */
END_OF_FILE
if test 4489 -ne `wc -c <'conf/hpux-8.07'`; then
echo shar: \"'conf/hpux-8.07'\" unpacked with wrong size!
fi
# end of 'conf/hpux-8.07'
fi
if test -f 'doc/c3.1.so' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'doc/c3.1.so'\"
else
echo shar: Extracting \"'doc/c3.1.so'\" \(3915 characters\)
sed "s/^X//" >'doc/c3.1.so' <<'END_OF_FILE'
X.\"
X.\" aegis - project change supervisor
X.\" Copyright (C) 1991, 1992, 1993 Peter Miller.
X.\" All rights reserved.
X.\"
X.\" This program is free software; you can redistribute it and/or modify
X.\" it under the terms of the GNU General Public License as published by
X.\" the Free Software Foundation; either version 2 of the License, or
X.\" (at your option) any later version.
X.\"
X.\" This program is distributed in the hope that it will be useful,
X.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
X.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X.\" GNU General Public License for more details.
X.\"
X.\" You should have received a copy of the GNU General Public License
X.\" along with this program; if not, write to the Free Software
X.\" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X.\"
X.\" MANIFEST: User Guide, The History Tool, Using SCCS
X.\"
X.bp
X.nh 2 "Using SCCS"
X.LP
XThe entries for the commands are listed below.
XSCCS uses a slightly different model than aegis wants,
Xso some maneuvering is required.
XThe command strings in this section assume that the SCCS commands
X.I admin
Xand
X.I get
Xand
X.I delta
Xare in the command search PATH,
Xbut you may like to hard-wire the paths,
Xor set PATH at the start of each.
XYou should also note that the strings are always handed to
Xthe Bourne shell to be executed,
Xand are set to exit with an error immediately a sub-command fails.
X.nh 3 "history_create_command"
X.LP
XThis command is used to create a new project history.
XThe command is always executed as the project owner.
X.LP
XThe following substitutions are available:
X.DS
X.TS
Xtab(;);
Xl l.
X${Input};absolute path of the source file
X${History};absolute path of the history file
X.TE
X.DE
X.LP
XThe entry in the
X.I "config"
Xfile looks like this:
X.E(
Xhistory_create_command =
X "admin -n -i$i -y ${d $h}/s.${b $h}; \e
X admin -di ${d $h}/s.${b $h}; \e
X get -e -t -p -s ${d $h}/s.${b $h} > /dev/null";
X.E)
X.LP
XNote that the "get -e" is necessary to put the s.file into the edit state,
Xbut the result of the get can be discarded,
Xbecause the "admin -i" did not remove the file.
X.nh 3 "history_get_command"
X.LP
XThis command is used to get a specific edit back from history.
XThe command may be executed by developers.
X.LP
XThe following substitutions are available:
X.DS
X.TS
Xtab(;);
Xl l.
X${History};absolute path of the history file
X${Edit};edit number, as given by history_query_command
X${Output};absolute path of the destination file
X.TE
X.DE
X.LP
XThe entry in the
X.I "config"
Xfile looks like this:
X.E(
Xhistory_get_command =
X "get -r'$e' -s -p -k ${d $h}/s.${b $h} > $o";
X.E)
X.nh 3 "history_put_command"
X.LP
XThis command is used to add a new "top-most" entry to the
Xhistory file.
XThis command is always executed as the project owner.
X.LP
XThe following substitutions are available:
X.DS
X.TS
Xtab(;);
Xl l.
X${Input};absolute path of source file
X${History};absolute path of history file
X.TE
X.DE
X.LP
XThe entry in the
X.I "config"
Xfile looks like this:
X.E(
Xhistory_put_command =
X "cd ${d $i}; \e
X delta -s -y ${d $h}/s.${b $h}; \e
X get -e -t -p -s ${d $h}/s.${b $h} > $i";
X.E)
X.LP
XNote that the SCCS file is left in the edit state,
Xand that the source file is left in the baseline.
X.nh 3 "history_query_command"
X.LP
XThis command is used to query what the history mechanism calls the top-most
Xedit of a history file.
XThe result may be any arbitrary string,
Xit need not be anything like a number,
Xjust so long as it uniquely identifies the edit
Xfor use by the
X.I history_get_command
Xat a later date.
XThe edit number is to be printed on the standard output.
XThis command may be executed by developers.
X.LP
XThe following substitutions are available:
X.DS
X.TS
Xtab(;);
Xl l.
X${History};absolute path of the history file
X.TE
X.DE
X.LP
XThe entry in the
X.I "config"
Xfile looks like this:
X.E(
Xhistory_query_command =
X "get -t -g ${d $h}/s.${b $h} 2>&1";
X.E)
X.LP
XNote that "get" reports the edit number on stderr.
END_OF_FILE
if test 3915 -ne `wc -c <'doc/c3.1.so'`; then
echo shar: \"'doc/c3.1.so'\" unpacked with wrong size!
fi
# end of 'doc/c3.1.so'
fi
if test -f 'doc/c3.2.so' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'doc/c3.2.so'\"
else
echo shar: Extracting \"'doc/c3.2.so'\" \(4346 characters\)
sed "s/^X//" >'doc/c3.2.so' <<'END_OF_FILE'
X.\"
X.\" aegis - project change supervisor
X.\" Copyright (C) 1991, 1992, 1993 Peter Miller.
X.\" All rights reserved.
X.\"
X.\" This program is free software; you can redistribute it and/or modify
X.\" it under the terms of the GNU General Public License as published by
X.\" the Free Software Foundation; either version 2 of the License, or
X.\" (at your option) any later version.
X.\"
X.\" This program is distributed in the hope that it will be useful,
X.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
X.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X.\" GNU General Public License for more details.
X.\"
X.\" You should have received a copy of the GNU General Public License
X.\" along with this program; if not, write to the Free Software
X.\" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X.\"
X.\" MANIFEST: User Guide, The History Tool, Using RCS
X.\"
X.bp
X.nh 2 "Using RCS"
X.LP
XThe entries for the commands are listed below.
XRCS uses a slightly different model than aegis wants,
Xso some maneuvering is required.
XThe command strings in this section assume that the RCS commands
X.I ci
Xand
X.I co
Xand
X.I rcs
Xand
X.I rlog
Xare in the command search PATH,
Xbut you may like to hard-wire the paths,
Xor set PATH at the start of each.
XYou should also note that the strings are always handed to
Xthe Bourne shell to be executed,
Xand are set to exit with an error immediately a sub-command fails.
X.LP
XIn these commands,
Xthe RCS file is kept unlocked,
Xsince only the owner will be checking changes in.
XThe RCS functionality for coordinating shared access is not required.
X.LP
XOne advantage of using RCS version 5.6 or later is that
Xbinary files are supported,
Xshould you want to have binary files in the baseline.
X.nh 3 "history_create_command"
X.LP
XThis command is used to create a new project history.
XThe command is always executed as the project owner.
X.LP
XThe following substitutions are available:
X.DS
X.TS
Xtab(;);
Xl l.
X${Input};absolute path of the source file
X${History};absolute path of the history file
X.TE
X.DE
X.LP
XThe entry in the
X.I "config"
Xfile looks like this:
X.E(
Xhistory_create_command =
X "ci -u -t/dev/null $i $h,v; \e
X rcs -U $h,v";
X.E)
X.LP
XThe "ci -u" is so that a copy remains in the baseline.
XThe "rcs -U" is necessary to set unstrict locking.
X.nh 3 "history_get_command"
X.LP
XThis command is used to get a specific edit back from history.
XThe command may be executed by developers.
X.LP
XThe following substitutions are available:
X.DS
X.TS
Xtab(;);
Xl l.
X${History};absolute path of the history file
X${Edit};edit number, as given by history_query_command
X${Output};absolute path of the destination file
X.TE
X.DE
X.LP
XThe entry in the
X.I "config"
Xfile looks like this:
X.E(
Xhistory_get_command =
X "co -u'$e' -p $h,v > $o";
X.E)
X.LP
XNote that the destination filename will
X.I never
Xlook anything like the history source filename,
Xso the -p is essential.
X.nh 3 "history_put_command"
X.LP
XThis command is used to add a new "top-most" entry to the
Xhistory file.
XThis command is always executed as the project owner.
X.LP
XThe following substitutions are available:
X.DS
X.TS
Xtab(;);
Xl l.
X${Input};absolute path of source file
X${History};absolute path of history file
X.TE
X.DE
X.LP
XThe entry in the
X.I "config"
Xfile looks like this:
X.E(
Xhistory_put_command =
X "ci -u -m/dev/null $i $h,v";
X.E)
X.LP
XNote that the source file is left in the baseline.
X.LP
XIt is possible that a very cautious approach could be taken,
Xand combine history_create_command with history_put_command,
Xviz:
X.E(
Xhistory_create_command =
X "ci -u -m/dev/null -t/dev/null $i $h,v; \e
X rcs -U $h,v";
Xhistory_put_command =
X "ci -u -m/dev/null -t/dev/null $i $h,v; \e
X rcs -U $h,v";
X.E)
X.nh 3 "history_query_command"
X.LP
XThis command is used to query what the history mechanism calls the top-most
Xedit of a history file.
XThe result may be any arbitrary string,
Xit need not be anything like a number,
Xjust so long as it uniquely identifies the edit
Xfor use by the
X.I history_get_command
Xat a later date.
XThe edit number is to be printed on the standard output.
XThis command may be executed by developers.
X.LP
XThe following substitutions are available:
X.DS
X.TS
Xtab(;);
Xl l.
X${History};absolute path of the history file
X.TE
X.DE
X.LP
XThe entry in the
X.I "config"
Xfile looks like this:
X.E(
Xhistory_query_command =
X "rlog -r $h,v | awk '/^head:/ {print $$2}'";
X.E)
END_OF_FILE
if test 4346 -ne `wc -c <'doc/c3.2.so'`; then
echo shar: \"'doc/c3.2.so'\" unpacked with wrong size!
fi
# end of 'doc/c3.2.so'
fi
if test -f 'doc/c7.2.so' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'doc/c7.2.so'\"
else
echo shar: Extracting \"'doc/c7.2.so'\" \(3651 characters\)
sed "s/^X//" >'doc/c7.2.so' <<'END_OF_FILE'
X.\"
X.\" aegis - project change supervisor
X.\" Copyright (C) 1991, 1992, 1993 Peter Miller.
X.\" All rights reserved.
X.\"
X.\" This program is free software; you can redistribute it and/or modify
X.\" it under the terms of the GNU General Public License as published by
X.\" the Free Software Foundation; either version 2 of the License, or
X.\" (at your option) any later version.
X.\"
X.\" This program is distributed in the hope that it will be useful,
X.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
X.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X.\" GNU General Public License for more details.
X.\"
X.\" You should have received a copy of the GNU General Public License
X.\" along with this program; if not, write to the Free Software
X.\" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X.\"
X.\" MANIFEST: User Guide, How Aegis Works, Philosophy
X.\"
X.bp
X.nh 2 "Philosophy"
X.LP
XThe philosophy is simple,
Xand that makes some of the implementation complex.
X.BL
X.LI
XWhen a change is in the
X.I "being developed"
Xstate,
Xthe aegis program is a developer's tool.
XIts purpose is to make it as easy for a developer
Xto develop changes as possible.
X.LI
XWhen a change leaves (or attempts to leave) the
X.I "being developed"
Xstate,
Xthe aegis program is protecting the project baseline,
Xand does not exist to make the developer happy.
X.LI
XThe aegis program attempts to adhere to the
X.UX
Xminimalist philosophy.
XLeast unnecessary output,
Xleast command line length,
Xleast dependence on 3rd party tools.
X.LI
XNo overlap in functionality of other tools.
X.LE
X.nh 3 "Development"
X.LP
XDuring the development of a change,
Xthe aegis program exists to help the developer.
XIt helps him navigate around his change and the project,
Xit copies file for him,
Xand keeps track of the versions.
XIt can even tell him what changes he has made.
X.nh 3 "Post Development"
X.LP
XWhen a change has left the "being developed" state,
Xor when it is attempting to leave that state,
Xthe aegis program ceases to attempt to help the developer
Xand proceeds to defend the project baseline.
XThe model used by aegis states that "the baseline always works",
Xand aegis attempts to guarantee this.
X.nh 3 "Minimalism"
X.LP
XThe idea of minimalism is to help the user out.
XIt is the intention that the aegis program can work out
Xunstated command line options for itself,
Xin cases where it is "safe" to do so.
XThis means a number of defaulting mechanisms,
Xall designed to help the user.
X.nh 3 "Overlap"
X.LP
XIt was very tempting while writing the aegis program
Xto have it grow and cover
Xsource control and dependency maintenance roles.
XUnfortunately,
Xthis would have meant that the user would have been trapped
Xwith whatever the aegis program provided,
Xand the aegis program is already plenty big.
XTo add this functionality would have diverted effort,
Xresulting in an inferior result.
XIt would also have violated the underlying
X.UX
Xphilosophy.
X.nh 3 "Design Goals"
X.LP
XA number of specific ideas molded the shape of the aegis program.
XThese include:
X.LP
XThe
X.UX
Xphilosophy of writing small tools for specific tasks with little
Xor no overlap.
XTools should be written with the expectation of use in
Xpipes or scripts,
Xor other combinations.
X.LP
X\(bu Stay out of the way.
XIf it is possible to let a project do whatever it
Xlikes,
Xwrite the code to let it.
XIt is not possible to anticipate even
Xa fraction of the applications of a software tool.
X.LP
X\(bu People.
XThe staff using aegis should be in charge of the development
Xprocess.
XThey should not feel that some machine is giving them orders.
X.LP
X\(bu Users aren't psychic.
XFeedback must be clear,
Xaccurate and appropriate.
END_OF_FILE
if test 3651 -ne `wc -c <'doc/c7.2.so'`; then
echo shar: \"'doc/c7.2.so'\" unpacked with wrong size!
fi
# end of 'doc/c7.2.so'
fi
if test -f 'fmtgen/indent.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'fmtgen/indent.c'\"
else
echo shar: Extracting \"'fmtgen/indent.c'\" \(4412 characters\)
sed "s/^X//" >'fmtgen/indent.c' <<'END_OF_FILE'
X/*
X * aegis - project change supervisor
X * Copyright (C) 1991, 1992, 1993 Peter Miller.
X * All rights reserved.
X *
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License as published by
X * the Free Software Foundation; either version 2 of the License, or
X * (at your option) any later version.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X *
X * MANIFEST: functions to automatically indent output
X */
X
X#include <stdio.h>
X#include <errno.h>
X
X#include <error.h>
X#include <indent.h>
X#include <s-v-arg.h>
X#include <trace.h>
X
X
X#define INDENT 8
X
Xstatic FILE *fp;
Xstatic char *fn;
Xstatic int depth;
Xstatic int in_col;
Xstatic int out_col;
Xstatic int continuation_line;
X
X
X/*
X * Function Name:
X * indent_more
X *
X * Description:
X * The indent_more function is used to increase the indenting
X * beyond the automatically calculated indent.
X *
X * Preconditions:
X * There must be a matching indent_less call.
X *
X * validataion:
X * none
X *
X * Passed:
X * nothing
X *
X * Returns:
X * nothing
X */
X
Xvoid
Xindent_more()
X{
X ++depth;
X}
X
X
X/*
X * Function Name:
X * indent_less
X *
X * Description:
X * The indent_less function is used to decrease the indenting
X * to less than the automatically calculated indent.
X *
X * Preconditions:
X * There must be a matching indent_more call.
X *
X * validataion:
X * none
X *
X * Passed:
X * nothing
X *
X * Returns:
X * nothing
X */
X
Xvoid
Xindent_less()
X{
X --depth;
X}
X
X
X/*
X * Function Name:
X * indent_putchar
X *
X * Description:
X * The indent_putchar function is used to emity characters.
X * It keeps track of (){}[] pairs and indents between them.
X * Leading whitespace is suppressed and replaced with its own
X * idea of indenting.
X *
X * Preconditions:
X * none
X *
X * validation:
X * none
X *
X * Passed:
X * 'c' the character to emit.
X */
X
Xvoid
Xindent_putchar(c)
X char c;
X{
X assert(fp);
X switch (c)
X {
X case '\n':
X fputc('\n', fp);
X#ifdef DEBUG
X fflush(fp);
X#endif
X in_col = 0;
X out_col = 0;
X if (continuation_line == 1)
X continuation_line = 2;
X else
X continuation_line = 0;
X break;
X
X case ' ':
X if (out_col)
X ++in_col;
X break;
X
X case '\t':
X if (out_col)
X in_col = (in_col / INDENT + 1) * INDENT;
X break;
X
X case '\1':
X if (!out_col)
X break;
X if (in_col >= INDENT * (depth + 2))
X ++in_col;
X else
X in_col = INDENT * (depth + 2);
X break;
X
X case /*{*/'}':
X case /*(*/')':
X case /*[*/']':
X --depth;
X /* fall through */
X
X default:
X if (!out_col && c != '#' && continuation_line != 2)
X in_col += INDENT * depth;
X while (((out_col + 8) & -8) <= in_col && out_col + 1 < in_col)
X {
X fputc('\t', fp);
X out_col = (out_col + 8) & -8;
X }
X while (out_col < in_col)
X {
X fputc(' ', fp);
X ++out_col;
X }
X if (c == '{'/*}*/ || c == '('/*)*/ || c == '['/*]*/)
X ++depth;
X fputc(c, fp);
X in_col++;
X out_col = in_col;
X continuation_line = (c == '\\');
X break;
X }
X if (ferror(fp))
X nfatal("write \"%s\"", fn);
X}
X
X
X/*
X * Function Name:
X * indent_printf
X *
X * Description:
X * As putchar is to indent_putchasr, printf is to indent_printf.
X *
X * Preconditions:
X * none
X *
X * Validation:
X * none
X *
X * Passed:
X * 's' format string
X * ... and optional arguments
X *
X * Returns:
X * nothing
X */
X
X/*VARARGS1*/
Xvoid
Xindent_printf(s sva_last)
X char *s;
X sva_last_decl
X{
X va_list ap;
X char buffer[2000];
X
X sva_init(ap, s);
X vsprintf(buffer, s, ap);
X va_end(ap);
X for (s = buffer; *s; ++s)
X indent_putchar(*s);
X}
X
X
Xvoid
Xindent_open(s)
X char *s;
X{
X trace(("indent_open(s = %08lX)\n{\n"/*}*/, s));
X if (!s)
X {
X fp = stdout;
X s = "(stdout)";
X }
X else
X {
X trace_string(s);
X fp = fopen(s, "w");
X if (!fp)
X nfatal("open \"%s\"", s);
X }
X trace_pointer(fp);
X fn = s;
X depth = 0;
X in_col = 0;
X out_col = 0;
X continuation_line = 0;
X trace((/*{*/"}\n"));
X}
X
X
Xvoid
Xindent_close()
X{
X trace(("indent_close()\n{\n"/*}*/));
X trace_pointer(fp);
X if (out_col)
X indent_putchar('\n');
X if (fflush(fp))
X nfatal("write \"%s\"", fn);
X if (fp != stdout && fclose(fp))
X nfatal("close \"%s\"", fn);
X fp = 0;
X fn = 0;
X trace((/*{*/"}\n"));
X}
END_OF_FILE
if test 4412 -ne `wc -c <'fmtgen/indent.c'`; then
echo shar: \"'fmtgen/indent.c'\" unpacked with wrong size!
fi
# end of 'fmtgen/indent.c'
fi
if test -f 'man1/aenrls.1' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'man1/aenrls.1'\"
else
echo shar: Extracting \"'man1/aenrls.1'\" \(4022 characters\)
sed "s/^X//" >'man1/aenrls.1' <<'END_OF_FILE'
X'\" t
X.\" aegis - project change supervisor
X.\" Copyright (C) 1991, 1992, 1993 Peter Miller.
X.\" All rights reserved.
X.\"
X.\" This program is free software; you can redistribute it and/or modify
X.\" it under the terms of the GNU General Public License as published by
X.\" the Free Software Foundation; either version 2 of the License, or
X.\" (at your option) any later version.
X.\"
X.\" This program is distributed in the hope that it will be useful,
X.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
X.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X.\" GNU General Public License for more details.
X.\"
X.\" You should have received a copy of the GNU General Public License
X.\" along with this program; if not, write to the Free Software
X.\" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X.\"
X.\" MANIFEST: manual entry for 'aegis -New_ReLeaSe' command
X.\"
X.so z_name.so
X.TH "\*(n) -New_ReLeaSe" 1 \*(N)
X.SH NAME
X\*(n) -New_ReLeaSe \- create a new project from an existing project.
X.SH SYNOPSIS
X.B \*(n)
X.B -New_ReLeaSe
Xproject-name
X[
X.I new-project-name
X][
X.IR option ...
X]
X.br
X.B \*(n)
X.B -New_ReLeaSe
X.B -List
X[
X.IR option ...
X]
X.br
X.B \*(n)
X.B -New_ReLeaSe
X.B -Help
X.SH DESCRIPTION
XThe
X.I \*(n)
X.I -New_ReLeaSe
Xcommand is used to
Xcreate a new project from an existing project.
X.PP
XIf no
X.I new-project-name
Xis specified,
Xit will be derived from the project given as follows:
Xany minor version dot suffix will be removed from the name,
Xthen
Xany major version dot suffix will be removed from the name.
XA major version dot suffix will be appended, and then
Xa minor version dot suffix will be appended.
XAs an example, "foo.1.0" would become "foo.1.1" assuming
Xthe default minor version increment,
Xand "foo" would become "foo.1.1" assuming the same minor version increment.
X.PP
XThe entire project baseline will be copied.
XThe project state will be as if change 1 had already been integrated,
Xnaming every file (in the old project) as a new file.
XThe history files will reflect this.
XNo build will be necessary;
Xit is assumed that the old baseline was built successfully.
XChange numbers will commence at 2,
Xas will build numbers.
XTest numbers will commence where the old project left off
X(because all the earlier test numbers were used by the old project).
X.PP
XThe default is for the minor version number to be incremented.
XIf the major version number is incremented or set,
Xthe minor version number will be set to zero if it is not explicitly given.
X.PP
XThe pointer to the new project will be added to the first element
Xof the search path,
Xor
X.I /usr/local/lib/aegis
Xif none is set.
XIf this is inappropriate, use the
X.B -LIBrary
Xoption to explicitly set the desired location.
XSee the
X.B -LIBrary
Xoption for more information.
X.PP
XThe project directory,
Xunder which the project baseline and history and
Xstate and change data are kept,
Xwill be created at this time.
XIf the
X.B -DIRectory
Xoption is not given,
Xthe project directory will be created in the
Xdirectory specified by the default_\%project_\%directory field of
Xthe project user's
X.IR aeuconf (5),
Xor if not set
Xin project user's home directory;
Xin either case with the same name as the project.
X.PP
XAll staff will be copied from the old project to the new project
Xwithout change,
Xas will all of the project attributes.
X.SH OPTIONS
XThe following options are understood:
X.so o_dir.so
X.so o_help.so
X.so o_lib.so
X.so o_list.so
X.so o_major.so
X.so o_minor.so
X.so o_nolog.so
X.so o_terse.so
X.so o_verbose.so
X.so o__rules.so
X.SH RECOMMENDED ALIAS
XThe recommended alias for this command is
X.nf
X.ta 8n 16n
Xcsh% alias aenrls '\*(n) -nrls \e!* -v'
Xsh$ aenrls(){\*(n) -nrls $* -v}
X.fi
X.SH ERRORS
XIt is an error if
Xthe old project named does not exist.
X.PP
XIt is an error if
Xthe old project named has not yet had any changes integrated.
X.PP
XIt is an error if
Xthe old project named has any changes not in the
X.I completed
Xstate.
X.PP
XIt is an error if
Xthe current user is not an administrator of the old project.
X.so z_exit.so
X.so z_cr.so
END_OF_FILE
if test 4022 -ne `wc -c <'man1/aenrls.1'`; then
echo shar: \"'man1/aenrls.1'\" unpacked with wrong size!
fi
# end of 'man1/aenrls.1'
fi
if test -f 'man5/aedir.5' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'man5/aedir.5'\"
else
echo shar: Extracting \"'man5/aedir.5'\" \(3475 characters\)
sed "s/^X//" >'man5/aedir.5' <<'END_OF_FILE'
X'\" t
X.\" aegis - project change supervisor
X.\" Copyright (C) 1991, 1992, 1993 Peter Miller.
X.\" All rights reserved.
X.\"
X.\" This program is free software; you can redistribute it and/or modify
X.\" it under the terms of the GNU General Public License as published by
X.\" the Free Software Foundation; either version 2 of the License, or
X.\" (at your option) any later version.
X.\"
X.\" This program is distributed in the hope that it will be useful,
X.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
X.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X.\" GNU General Public License for more details.
X.\"
X.\" You should have received a copy of the GNU General Public License
X.\" along with this program; if not, write to the Free Software
X.\" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X.\"
X.\" MANIFEST: description of aegis project directory structure
X.\"
X.so z_name.so
X.TH aedir 5 \*(N)
X.SH NAME
Xaedir - \*(n) directory structures
X.SH DESCRIPTION
XThe project directory structure is dictated by
X.I \*(n)
Xat the top level,
Xbut is completely under the project's control
Xfrom various points
Xbelow the top level.
X.PP
XThe project directory has the following contents
X.eB
X\fIproject\fP/
X baseline/
X config
X \fI...project specific...\fP
X test/
X \fI[0-9][0-9]\fP/
X t\fI[0-9][0-9][0-9][0-9]\fPa.sh
X t\fI[0-9][0-9][0-9][0-9]\fPm.sh
X history/
X \fI...echo of baseline...\fP
X delta.\fI[0-9][0-9][0-9]\fP/
X \fI...echo of baseline...\fP
X info/
X state
X change/
X \fI[0-9]\fP/
X \fI[0-9][0-9][0-9]\fP
X.eE
X.PP
XThe directory is structured in this way so that it is possible
Xto pick an entire project up off the disk,
Xand be confident that you got it all.
X.PP
XThe location of the root of this tree is configurable,
Xand may even be changed during the life of a project.
X.PP
XThe contents of the
X.I baseline
Xsubdirectory,
Xother than those given,
Xare defined by the project,
Xand not dictated by \*(n).
X.PP
XThe contents of the
X.I delta.NNN
Xdirectory,
Xwhen it exists,
Xare an image of the
X.I baseline
Xdirectory.
XIt is frequently linked with the baseline,
Xrather than a copy of it;
Xsee the
X.I link_integration_directory
Xfield description in
X.IR aepconf (5)
Xfor more information.
X.PP
XThe contents of the
X.I history
Xcontains the edit histories of the
X.I baseline
Xdirectory,
Xand is in all other ways an image of it.
XNote that
X.I baseline
Xalways contains the latest source;
Xthe
X.I history
Xdirectory is just history.
XThe actual files in the history directory tree
Xwill not always have names the same as those in the baseline;
Xcompare the methods used by SCCS and RCS.
X.PP
XThe contents of the
X.I baseline/test
Xdirectory are the tests which are created by changes.
XTest histories are also stored in the
X.I history
Xsubdirectory.
XTests are treated as project source.
X.PP
XThe edit histories are separated out to simplify
Xthe task of taking a "snapshot" of the source of a project,
Xwithout airing all the dirty laundry.
X.PP
XThe
X.I baseline
Xdirectory always contains the latest source,
Xand so the
X.I history
Xdirectory need not be readily accessible,
Xbecause the build mechanism
X(something like
X.IR make (1),
Xbut preferably better)
Xdoes not need to know anything about it.
XSimilarly for tests.
X.PP
XThe
X.I baseline/config
Xfile is used to tell \*(n) everything else it needs to know about a project.
XSee
X.IR aepconf (5)
Xfor more information.
XThis file is a source file of the project,
Xand is treated in the same way as all source files.
X.so z_cr.so
END_OF_FILE
if test 3475 -ne `wc -c <'man5/aedir.5'`; then
echo shar: \"'man5/aedir.5'\" unpacked with wrong size!
fi
# end of 'man5/aedir.5'
fi
if test -f 'man5/aepstate.5' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'man5/aepstate.5'\"
else
echo shar: Extracting \"'man5/aepstate.5'\" \(3733 characters\)
sed "s/^X//" >'man5/aepstate.5' <<'END_OF_FILE'
X'\" t
X.\" aegis - project change supervisor
X.\" Copyright (C) 1991, 1992, 1993 Peter Miller.
X.\" All rights reserved.
X.\"
X.\" This program is free software; you can redistribute it and/or modify
X.\" it under the terms of the GNU General Public License as published by
X.\" the Free Software Foundation; either version 2 of the License, or
X.\" (at your option) any later version.
X.\"
X.\" This program is distributed in the hope that it will be useful,
X.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
X.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X.\" GNU General Public License for more details.
X.\"
X.\" You should have received a copy of the GNU General Public License
X.\" along with this program; if not, write to the Free Software
X.\" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X.\"
X.\" MANIFEST: description of aegis project state file format
X.\"
X.so z_name.so
X.TH aepstate 5 \*(N)
X.SH NAME
Xaepstate - project state file
X.SH SYNOPSIS
X\fIproject\fP\f(CW/info/state\fP
X.SH DESCRIPTION
XThe
X\fIproject\fP\f(CW/info/state\fP
Xfile is used to store state information about a project.
X.PP
XThis file is maintained by
X.B \*(n)
Xand thus should not be edited by humans.
X.SH CONTENTS
X.so aepattr.so
X.TP 8n
Xnext_change_number = integer;
XChanges are numbered sequentially from one.
XThis field records the next unused change number.
X.TP 8n
Xnext_delta_number = integer;
XDeltas are numbered sequentially from one.
XThis field records the next unused delta number.
X.TP 8n
Xnext_test_number = integer;
XEach test is numbered uniquely.
XThe name is of the form
X.I "t[0-9][0-9][0-9][0-9][am].sh"
X('a' for automatic and 'm' for manual.)
X.TP 8n
Xsrc = [ { ... } ];
XThis field is a list of files in the project.
XEach list item has the form:
X.RS
X.TP 8n
Xfile_name = string;
XThe name of the file, relative to the baseline.
X.TP 8n
Xusage = file_usage;
XWhat the file is for.
X.TP
Xedit_number = string;
XThe edit number of the file.
X.TP 8n
Xlocked_by = integer;
XThe change which locked this file.
X.br
XCaveat: this field is redundant,
Xyou can figure it out by scanning all of he change files.
XHaving it here is very convenient,
Xeven though it means multiple updates.
X.TP 8n
Xabout_to_be_created_by = integer;
XThe change which is about to create this file for the first time.
XSame caveat as above.
X.TP 8n
Xdeleted_by = integer;
XThe change which last deleted this file.
XWe never throw them away, because
X(a) it may be created again, and more important
X(b) we need it to recreate earlier deltas.
X.RE
X.TP
Xhistory = [{ ... }];
XThis field contains a history of integrations for the project.
XUpdated by each successful '\*(n) -Integrate_Pass' command.
X.RS
X.TP 8n
Xdelta_number = integer;
XThe delta number of the integration.
X.TP 8n
Xchange_number = integer;
XThe number of the change which was integrated.
X.RE
X.TP 8n
Xchange = [integer];
XThe list of changes which have been created to date.
X.TP 8n
Xadministrator = [string];
XThe list of administrators of the project.
X.TP 8n
Xdeveloper = [string];
XThe list of developers of the project.
X.TP 8n
Xreviewer = [string];
XThe list of reviewers of the project.
X.TP 8n
Xintegrator = [string];
XThe list of integrators of the project.
X.TP 8n
Xcurrently_integrating_change = integer;
XThe change currently being integrated.
XOnly one change (within a project) may be integrated at a time.
XOnly set when an integration is in progress.
X.TP 8n
Xversion_major = integer;
XThe major version number of this release of the project.
XAlways one or more.
X.TP 8n
Xversion_minor = integer;
XThe minor version number of this release of the project.
XAlways zero or more.
X.TP 8n
Xversion_previous = string;
XThe version number this project was derived from.
XThis is of most use when producing "patch" files.
X.so z_cr.so
END_OF_FILE
if test 3733 -ne `wc -c <'man5/aepstate.5'`; then
echo shar: \"'man5/aepstate.5'\" unpacked with wrong size!
fi
# end of 'man5/aepstate.5'
fi
if test -f 'test/00/t0010a.sh' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'test/00/t0010a.sh'\"
else
echo shar: Extracting \"'test/00/t0010a.sh'\" \(4945 characters\)
sed "s/^X//" >'test/00/t0010a.sh' <<'END_OF_FILE'
X#! /bin/sh
X#
X# aegis - project change supervisor
X# Copyright (C) 1991, 1992, 1993 Peter Miller.
X# All rights reserved.
X#
X# This program is free software; you can redistribute it and/or modify
X# it under the terms of the GNU General Public License as published by
X# the Free Software Foundation; either version 2 of the License, or
X# (at your option) any later version.
X#
X# This program is distributed in the hope that it will be useful,
X# but WITHOUT ANY WARRANTY; without even the implied warranty of
X# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X# GNU General Public License for more details.
X#
X# You should have received a copy of the GNU General Public License
X# along with this program; if not, write to the Free Software
X# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X#
X# MANIFEST: Test -Review_Pass_Undo functionality.
X#
X
Xunset AEGIS_PROJECT
Xunset AEGIS_CHANGE
Xumask 022
X
XUSER=${USER:-${LOGNAME:-`whoami`}}
X
XPAGER=cat
Xexport PAGER
Xwork=${AEGIS_TMP:-/tmp}/$$
X
Xfail()
X{
X set +x
X echo FAILED test of -Review_Pass_Undo functionality 1>&2
X find $work -type d -user $USER -exec chmod u+w {} \;
X rm -rf $work
X exit 1
X}
Xpass()
X{
X set +x
X echo PASSED 1>&2
X find $work -type d -user $USER -exec chmod u+w {} \;
X rm -rf $work
X exit 0
X}
Xtrap "fail" 1 2 3 15
X
X#
X# some variable to make things earier to read
X#
Xworklib=$work/lib
Xworkproj=$work/foo.proj
Xworkproj2=$work/foo.proj2
Xworkchan=$work/foo.chan
Xtmp=$work/tmp
X
X#
X# echo commands so we can tell what failed
X#
Xset -x
X
X#
X# make the directories
X#
Xmkdir $work
X
X#
X# make a new project
X# and check files it should have made
X#
X./bin/aegis -newpro foo -dir $workproj -v -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# change project attributes
X#
Xcat > $tmp << 'end'
Xdescription = "A bogus project created to test things.";
Xdeveloper_may_review = true;
Xdeveloper_may_integrate = true;
Xreviewer_may_integrate = true;
Xend
X./bin/aegis -proatt $tmp -proj foo -v -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# create a new change
X#
Xcat > $tmp << 'end'
Xbrief_description = "This change is used to test the aegis functionality \
Xwith respect to change descriptions.";
Xcause = internal_bug;
Xend
X./bin/aegis -new_change $tmp -project foo -v -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# add a new developer
X#
X./bin/aegis -newdev $USER -p foo -v -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# begin development of a change
X#
X./bin/aegis -devbeg 1 -p foo -dir $workchan -v -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# add a new files to the change
X#
X./bin/aegis -new_file $workchan/main.c -nl -v -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
X./bin/aegis -new_file $workchan/config -nl -v -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
Xcat > $workchan/main.c << 'end'
Xvoid
Xmain()
X{
X exit(0);
X}
Xend
Xif test $? -ne 0 ; then fail; fi
Xcat > $workchan/config << 'end'
Xbuild_command = "rm -f foo; cc -o foo -D'VERSION=\"$v\"' main.c";
Xlink_integration_directory = true;
X
Xhistory_get_command =
X "co -u'$e' -p $h,v > $o";
Xhistory_create_command =
X "ci -u -m/dev/null -t/dev/null $i $h,v; rcs -U $h,v";
Xhistory_put_command =
X "ci -u -m/dev/null -t/dev/null $i $h,v; rcs -U $h,v";
Xhistory_query_command =
X "rlog -r $h,v | awk '/^head:/ {print $$2}'";
X
Xdiff_command = "set +e; diff $orig $i > $out; test $$? -le 1";
X
Xdiff3_command = "(diff3 -e $mr $orig $i | sed -e '/^w$$/d' -e '/^q$$/d'; \
X echo '1,$$p' ) | ed - $mr > $out";
Xend
Xif test $? -ne 0 ; then fail; fi
X
X#
X# create a new test
X#
X./bin/aegis -nt -v -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
Xcat > $workchan/test/00/t0001a.sh << 'end'
X#!/bin/sh
X#
X# Project: "foo"
X# Change: 1
X#
X
Xfail()
X{
X echo SHUZBUTT 1>&2
X exit 1
X}
Xpass()
X{
X exit 0
X}
Xtrap "fail" 1 2 3 15
X
X./foo
Xq=$?
X
X# check for signals
Xif test $q -ge 128
Xthen
X fail
Xfi
X
X# should not complain
Xif test $q -ne 0
Xthen
X fail
Xfi
X
X# it probably worked
Xpass
Xend
Xif test $? -ne 0 ; then fail; fi
X
X#
X# let the clock tick over, so the build will be happy
X#
Xsleep 1
X
X#
X# build the change
X#
X./bin/aegis -build -nl -v -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
X
X#
X# difference the change
X#
X./bin/aegis -diff -nl -v -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
X
X#
X# test the change
X#
X./bin/aegis -test -nl -v -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
X
X#
X# finish development of the change
X#
X./bin/aegis -dev_end -v -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
X
X#
X# add a new reviewer
X#
X./bin/aegis -newrev $USER -p foo -v -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# pass the review
X#
X./bin/aegis -review_pass -chan 1 -proj foo -v -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# undo the review pass
X#
X./bin/aegis -review_pass_undo -chan 1 -proj foo -v -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# make sure it worked
X#
X./bin/aegis -list change_details -project foo -change 1 -verbose -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# the things tested in this test, worked
X#
Xpass
END_OF_FILE
if test 4945 -ne `wc -c <'test/00/t0010a.sh'`; then
echo shar: \"'test/00/t0010a.sh'\" unpacked with wrong size!
fi
# end of 'test/00/t0010a.sh'
fi
if test -f 'test/00/t0015a.sh' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'test/00/t0015a.sh'\"
else
echo shar: Extracting \"'test/00/t0015a.sh'\" \(5057 characters\)
sed "s/^X//" >'test/00/t0015a.sh' <<'END_OF_FILE'
X#! /bin/sh
X#
X# aegis - project change supervisor
X# Copyright (C) 1993 Peter Miller.
X# All rights reserved.
X#
X# This program is free software; you can redistribute it and/or modify
X# it under the terms of the GNU General Public License as published by
X# the Free Software Foundation; either version 2 of the License, or
X# (at your option) any later version.
X#
X# This program is distributed in the hope that it will be useful,
X# but WITHOUT ANY WARRANTY; without even the implied warranty of
X# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X# GNU General Public License for more details.
X#
X# You should have received a copy of the GNU General Public License
X# along with this program; if not, write to the Free Software
X# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X#
X# MANIFEST: Test the -Integrate_Begin_Undo functionality
X#
X
Xunset AEGIS_PROJECT
Xunset AEGIS_CHANGE
Xumask 022
X
XUSER=${USER:-${LOGNAME:-`whoami`}}
X
Xwork=${AEGIS_TMP:-/tmp}/$$
XPAGER=cat
Xexport PAGER
X
Xhere=`pwd`
Xif test $? -ne 0 ; then exit 1; fi
Xmkdir $work
Xif test $? -ne 0 ; then exit 1; fi
X
Xfail()
X{
X set +x
X echo FAILED test of the -Integrate_Begin_Undo functionality 1>&2
X cd $here
X find $work -type d -user $USER -exec chmod u+w {} \;
X rm -rf $work
X exit 1
X}
Xpass()
X{
X set +x
X echo PASSED 1>&2
X cd $here
X find $work -type d -user $USER -exec chmod u+w {} \;
X rm -rf $work
X exit 0
X}
Xtrap "fail" 1 2 3 15
X
Xcd $work
Xif test $? -ne 0 ; then fail; fi
X
X#
X# some variable to make things earier to read
X#
Xworklib=$work/lib
Xworkproj=$work/foo.proj
Xworkchan=$work/foo.chan
Xtmp=$work/tmp
X
X#
X# make a new project
X# and check files it should have made
X#
X$here/bin/aegis -newpro foo -dir $workproj -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# change project attributes
X#
Xcat > $tmp << 'end'
Xdescription = "A bogus project created to test things.";
Xdeveloper_may_review = true;
Xdeveloper_may_integrate = true;
Xreviewer_may_integrate = true;
Xend
X$here/bin/aegis -proatt $tmp -proj foo -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# create a new change
X# make sure it creates the files it should
X#
Xcat > $tmp << 'end'
Xbrief_description = "This change is used to test the aegis functionality \
Xwith respect to change descriptions.";
Xcause = internal_bug;
Xend
X$here/bin/aegis -new_change $tmp -project foo -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# add a new developer
X#
X$here/bin/aegis -newdev $USER -p foo -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# begin development of a change
X# check it made the files it should
X#
X$here/bin/aegis -devbeg 1 -p foo -dir $workchan -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# add a new files to the change
X#
X$here/bin/aegis -new_file $workchan/main.c -nl -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
X$here/bin/aegis -new_file $workchan/config -nl -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
Xcat > $workchan/main.c << 'end'
Xvoid
Xmain()
X{
X exit(0);
X}
Xend
Xcat > $workchan/config << 'end'
Xbuild_command = "rm -f foo; cc -o foo -D'VERSION=\"$v\"' main.c";
Xlink_integration_directory = true;
X
Xhistory_get_command =
X "co -u'$e' -p $h,v > $o";
Xhistory_create_command =
X "ci -u -m/dev/null -t/dev/null $i $h,v; rcs -U $h,v";
Xhistory_put_command =
X "ci -u -m/dev/null -t/dev/null $i $h,v; rcs -U $h,v";
Xhistory_query_command =
X "rlog -r $h,v | awk '/^head:/ {print $$2}'";
X
Xdiff_command = "set +e; diff $orig $i > $out; test $$? -le 1";
X
Xdiff3_command = "(diff3 -e $mr $orig $i | sed -e '/^w$$/d' -e '/^q$$/d'; \
X echo '1,$$p' ) | ed - $mr > $out";
Xend
X
X#
X# create a new test
X#
X$here/bin/aegis -nt -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
Xcat > $workchan/test/00/t0001a.sh << 'end'
X#!/bin/sh
X#
X# Project: "foo"
Xfail()
X{
X echo SHUZBUTT 1>&2
X exit 1
X}
Xpass()
X{
X exit 0
X}
Xtrap "fail" 1 2 3 15
X
X./foo
Xq=$?
X
X# check for signals
Xif test $q -ge 128
Xthen
X fail
Xfi
X
X# should not complain
Xif test $q -ne 0
Xthen
X fail
Xfi
X
X# it probably worked
Xpass
Xend
X
X#
X# let the clock tick over, so the build will be happy
X#
Xsleep 1
X
X#
X# build the change
X#
X$here/bin/aegis -build -nl -lib $worklib -p foo > /dev/null 2>&1
Xif test $? -ne 0 ; then fail; fi
X
X#
X# difference the change
X#
X$here/bin/aegis -diff -nl -lib $worklib -p foo > /dev/null 2>&1
Xif test $? -ne 0 ; then fail; fi
X
X#
X# test the change
X#
X$here/bin/aegis -test -nl -lib $worklib -p foo > /dev/null 2>&1
Xif test $? -ne 0 ; then fail; fi
X
X#
X# finish development of the change
X#
X$here/bin/aegis -dev_end -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
X
X#
X# add a new reviewer
X#
X$here/bin/aegis -newrev $USER -p foo -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# pass the review
X#
X$here/bin/aegis -review_pass -chan 1 -proj foo -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# add an integrator
X#
X$here/bin/aegis -newint $USER -p foo -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# start integrating
X#
X$here/bin/aegis -ib 1 -p foo -lib $worklib
Xif test $? -ne 0 ; then fail; fi
X
X#
X# integrate build
X#
X$here/bin/aegis -ibu -lib $worklib -p foo
Xif test $? -ne 0 ; then fail; fi
X
X#
X# the things tested in this test, worked
X#
Xpass
END_OF_FILE
if test 5057 -ne `wc -c <'test/00/t0015a.sh'`; then
echo shar: \"'test/00/t0015a.sh'\" unpacked with wrong size!
fi
# end of 'test/00/t0015a.sh'
fi
echo shar: End of archive 4 \(of 19\).
cp /dev/null ark4isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 19 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