home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-09-24 | 156.7 KB | 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
-