home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume27 / aegis-2.1 / part04 < prev    next >
Text File  |  1993-09-24  |  160KB  |  5,830 lines

  1. Newsgroups: comp.sources.unix
  2. From: pmiller@bmr.gov.au (Peter Miller)
  3. Subject: v27i039: aegis - project change supervisor (V2.1), Part04/19
  4. References: <1.748951883.12788@gw.home.vix.com>
  5. Sender: unix-sources-moderator@gw.home.vix.com
  6. Approved: vixie@gw.home.vix.com
  7.  
  8. Submitted-By: pmiller@bmr.gov.au (Peter Miller)
  9. Posting-Number: Volume 27, Issue 39
  10. Archive-Name: aegis-2.1/part04
  11.  
  12. #! /bin/sh
  13. # This is a shell archive.  Remove anything before this line, then unpack
  14. # it by saving it into a file and typing "sh file".  To overwrite existing
  15. # files, type "sh file -c".  You can also feed this as standard input via
  16. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  17. # will see the following message at the end:
  18. #        "End of archive 4 (of 19)."
  19. # Contents:  aegis/change.h aegis/indent.c aegis/log.c aegis/pager.c
  20. #   aegis/pattr.def aegis/pconf.def aegis/project.h aegis/pstate.def
  21. #   common/trace.h conf/AIX-3.2 conf/ConvexOS-10 conf/IRIX-4.0
  22. #   conf/Linux-0.99 conf/SCO-2.4 conf/SunOS-4.1.1 conf/SunOS-4.1.2
  23. #   conf/SunOS-4.1.3 conf/SunOS-5.1 conf/SysV-4.0 conf/ULTRIX-4.2
  24. #   conf/apollo conf/dcosx conf/dgux-5.4.1 conf/hpux-8.07 doc/c3.1.so
  25. #   doc/c3.2.so doc/c7.2.so fmtgen/indent.c man1/aenrls.1 man5/aedir.5
  26. #   man5/aepstate.5 test/00/t0010a.sh test/00/t0015a.sh
  27. # Wrapped by vixie@gw.home.vix.com on Sat Sep 25 03:00:30 1993
  28. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  29. if test -f 'aegis/change.h' -a "${1}" != "-c" ; then 
  30.   echo shar: Will not clobber existing file \"'aegis/change.h'\"
  31. else
  32. echo shar: Extracting \"'aegis/change.h'\" \(4551 characters\)
  33. sed "s/^X//" >'aegis/change.h' <<'END_OF_FILE'
  34. X/*
  35. X *    aegis - project change supervisor
  36. X *    Copyright (C) 1991, 1992, 1993 Peter Miller.
  37. X *    All rights reserved.
  38. X *
  39. X *    This program is free software; you can redistribute it and/or modify
  40. X *    it under the terms of the GNU General Public License as published by
  41. X *    the Free Software Foundation; either version 2 of the License, or
  42. X *    (at your option) any later version.
  43. X *
  44. X *    This program is distributed in the hope that it will be useful,
  45. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  46. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  47. X *    GNU General Public License for more details.
  48. X *
  49. X *    You should have received a copy of the GNU General Public License
  50. X *    along with this program; if not, write to the Free Software
  51. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  52. X *
  53. X * MANIFEST: interface definition for aegis/change.c
  54. X */
  55. X
  56. X#ifndef CHANGE_H
  57. X#define CHANGE_H
  58. X
  59. X#include <main.h>
  60. X#include <cstate.h>
  61. X#include <pconf.h>
  62. X
  63. X/*
  64. X * Name of the project configuration file,
  65. X * relative to the baseline/devdir root.
  66. X */
  67. X#define THE_CONFIG_FILE "config"
  68. X
  69. Xstruct wlist;
  70. Xstruct user_ty;
  71. X
  72. Xtypedef struct change_ty change_ty;
  73. Xstruct change_ty
  74. X{
  75. X    long        reference_count;
  76. X    struct project_ty *pp;
  77. X    long        number;
  78. X    int        is_a_new_file;
  79. X    string_ty    *filename;
  80. X    cstate        cstate_data;
  81. X    string_ty    *development_directory;
  82. X    string_ty    *integration_directory;
  83. X    string_ty    *logfile;
  84. X    string_ty    *pconf_path;
  85. X    pconf        pconf_data;
  86. X    long        lock_magic;
  87. X    /*
  88. X     * if you add to this structure,
  89. X     * don't forget to update change_free in change.c
  90. X     */
  91. X};
  92. X
  93. Xchange_ty *change_alloc _((struct project_ty *, long));
  94. Xvoid change_free _((change_ty *));
  95. Xchange_ty *change_copy _((change_ty *));
  96. Xvoid change_bind_existing _((change_ty *));
  97. Xvoid change_bind_new _((change_ty *));
  98. Xcstate change_cstate_get _((change_ty *));
  99. Xvoid change_cstate_write _((change_ty *));
  100. Xcstate_src change_src_find _((change_ty *, string_ty *));
  101. Xvoid change_src_remove _((change_ty *, string_ty *));
  102. Xcstate_src change_src_new _((change_ty *));
  103. Xcstate_history change_history_new _((change_ty *, struct user_ty *));
  104. Xstring_ty *change_developer_name _((change_ty *));
  105. Xstring_ty *change_reviewer_name _((change_ty *));
  106. Xstring_ty *change_integrator_name _((change_ty *));
  107. Xvoid change_development_directory_set _((change_ty *, string_ty *));
  108. Xvoid change_integration_directory_set _((change_ty *, string_ty *));
  109. Xstring_ty *change_development_directory_get _((change_ty *, int));
  110. Xstring_ty *change_integration_directory_get _((change_ty *, int));
  111. Xstring_ty *change_logfile_get _((change_ty *));
  112. Xvoid change_cstate_lock_prepare _((change_ty *));
  113. Xvoid change_error _((change_ty *, char *, ...));
  114. Xvoid change_fatal _((change_ty *, char *, ...));
  115. Xvoid change_verbose _((change_ty *, char *, ...));
  116. Xstring_ty *change_pconf_path_get _((change_ty *));
  117. Xpconf change_pconf_get _((change_ty *));
  118. Xvoid change_run_change_file_command _((change_ty *, struct wlist *,
  119. X    struct user_ty *));
  120. Xvoid change_run_project_file_command _((change_ty *));
  121. Xvoid change_run_develop_end_notify_command _((change_ty *));
  122. Xvoid change_run_develop_end_undo_notify_command _((change_ty *));
  123. Xvoid change_run_review_pass_notify_command _((change_ty *));
  124. Xvoid change_run_review_pass_undo_notify_command _((change_ty *));
  125. Xvoid change_run_review_fail_notify_command _((change_ty *));
  126. Xvoid change_run_integrate_pass_notify_command _((change_ty *));
  127. Xvoid change_run_integrate_fail_notify_command _((change_ty *));
  128. Xvoid change_run_history_get_command _((change_ty *cp, string_ty *file_name,
  129. X    string_ty *edit_number, string_ty *output_file, struct user_ty *up));
  130. Xvoid change_run_history_create_command _((change_ty *cp, string_ty *file_name));
  131. Xvoid change_run_history_put_command _((change_ty *cp, string_ty *file_name));
  132. Xstring_ty *change_run_history_query_command _((change_ty *cp,
  133. X    string_ty *file_name));
  134. Xvoid change_run_diff_command _((change_ty *cp, struct user_ty *up,
  135. X    string_ty *original, string_ty *input, string_ty *output));
  136. Xvoid change_run_diff3_command _((change_ty *cp, struct user_ty *up,
  137. X    string_ty *original, string_ty *most_recent, string_ty *input,
  138. X    string_ty *output));
  139. Xvoid change_run_integrate_begin_command _((change_ty *));
  140. Xvoid change_run_develop_begin_command _((change_ty *, struct user_ty *));
  141. Xstring_ty *change_file_template _((change_ty *, string_ty *));
  142. Xvoid change_become _((change_ty *));
  143. Xvoid change_become_undo _((void));
  144. Xint change_umask _((change_ty *));
  145. Xvoid change_development_directory_clear _((change_ty *));
  146. Xvoid change_integration_directory_clear _((change_ty *));
  147. X
  148. X#endif /* CHANGE_H */
  149. END_OF_FILE
  150. if test 4551 -ne `wc -c <'aegis/change.h'`; then
  151.     echo shar: \"'aegis/change.h'\" unpacked with wrong size!
  152. fi
  153. # end of 'aegis/change.h'
  154. fi
  155. if test -f 'aegis/indent.c' -a "${1}" != "-c" ; then 
  156.   echo shar: Will not clobber existing file \"'aegis/indent.c'\"
  157. else
  158. echo shar: Extracting \"'aegis/indent.c'\" \(4475 characters\)
  159. sed "s/^X//" >'aegis/indent.c' <<'END_OF_FILE'
  160. X/*
  161. X *    aegis - project change supervisor
  162. X *    Copyright (C) 1991, 1992, 1993 Peter Miller.
  163. X *    All rights reserved.
  164. X *
  165. X *    This program is free software; you can redistribute it and/or modify
  166. X *    it under the terms of the GNU General Public License as published by
  167. X *    the Free Software Foundation; either version 2 of the License, or
  168. X *    (at your option) any later version.
  169. X *
  170. X *    This program is distributed in the hope that it will be useful,
  171. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  172. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  173. X *    GNU General Public License for more details.
  174. X *
  175. X *    You should have received a copy of the GNU General Public License
  176. X *    along with this program; if not, write to the Free Software
  177. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  178. X *
  179. X * MANIFEST: functions to automatically indent output
  180. X */
  181. X
  182. X#include <stdio.h>
  183. X#include <errno.h>
  184. X
  185. X#include <error.h>
  186. X#include <glue.h>
  187. X#include <indent.h>
  188. X#include <s-v-arg.h>
  189. X#include <trace.h>
  190. X
  191. X
  192. X#define INDENT 8
  193. X
  194. Xstatic    FILE    *fp;
  195. Xstatic    char    *fn;
  196. Xstatic int    depth;
  197. Xstatic int    in_col;
  198. Xstatic int    out_col;
  199. Xstatic    int    continuation_line;
  200. X
  201. X
  202. X/*
  203. X * Function Name:
  204. X *    indent_more
  205. X *
  206. X * Description:
  207. X *    The indent_more function is used to increase the indenting
  208. X *    beyond the automatically calculated indent.
  209. X *
  210. X * Preconditions:
  211. X *    There must be a matching indent_less call.
  212. X *
  213. X * validataion:
  214. X *    none
  215. X *
  216. X * Passed:
  217. X *    nothing
  218. X *
  219. X * Returns:
  220. X *    nothing
  221. X */
  222. X
  223. Xvoid
  224. Xindent_more()
  225. X{
  226. X    ++depth;
  227. X}
  228. X
  229. X
  230. X/*
  231. X * Function Name:
  232. X *    indent_less
  233. X *
  234. X * Description:
  235. X *    The indent_less function is used to decrease the indenting
  236. X *    to less than the automatically calculated indent.
  237. X *
  238. X * Preconditions:
  239. X *    There must be a matching indent_more call.
  240. X *
  241. X * validataion:
  242. X *    none
  243. X *
  244. X * Passed:
  245. X *    nothing
  246. X *
  247. X * Returns:
  248. X *    nothing
  249. X */
  250. X
  251. Xvoid
  252. Xindent_less()
  253. X{
  254. X    --depth;
  255. X}
  256. X
  257. X
  258. X/*
  259. X * Function Name:
  260. X *    indent_putchar
  261. X *
  262. X * Description:
  263. X *    The indent_putchar function is used to emity characters.
  264. X *    It keeps track of (){}[] pairs and indents between them.
  265. X *    Leading whitespace is suppressed and replaced with its own
  266. X *    idea of indenting.
  267. X *
  268. X * Preconditions:
  269. X *    none
  270. X *
  271. X * validation:
  272. X *    none
  273. X *
  274. X * Passed:
  275. X *    'c' the character to emit.
  276. X */
  277. X
  278. Xvoid
  279. Xindent_putchar(c)
  280. X    char    c;
  281. X{
  282. X    assert(fp);
  283. X    switch (c)
  284. X    {
  285. X    case '\n':
  286. X        glue_fputc('\n', fp);
  287. X#ifdef DEBUG
  288. X        glue_fflush(fp);
  289. X#endif
  290. X        in_col = 0;
  291. X        out_col = 0;
  292. X        if (continuation_line == 1)
  293. X            continuation_line = 2;
  294. X        else
  295. X            continuation_line = 0;
  296. X        break;
  297. X
  298. X    case ' ':
  299. X        if (out_col)
  300. X            ++in_col;
  301. X        break;
  302. X
  303. X    case '\t':
  304. X        if (out_col)
  305. X            in_col = (in_col / INDENT + 1) * INDENT;
  306. X        break;
  307. X
  308. X    case '\1':
  309. X        if (!out_col)
  310. X            break;
  311. X        if (in_col >= INDENT * (depth + 2))
  312. X            ++in_col;
  313. X        else
  314. X            in_col = INDENT * (depth + 2);
  315. X        break;
  316. X
  317. X    case /*{*/'}':
  318. X    case /*(*/')':
  319. X    case /*[*/']':
  320. X        --depth;
  321. X        /* fall through */
  322. X
  323. X    default:
  324. X        if (!out_col && c != '#' && continuation_line != 2)
  325. X            in_col += INDENT * depth;
  326. X        while (((out_col + 8) & -8) <= in_col && out_col + 1 < in_col)
  327. X        {
  328. X            glue_fputc('\t', fp);
  329. X            out_col = (out_col + 8) & -8;
  330. X        }
  331. X        while (out_col < in_col)
  332. X        {
  333. X            glue_fputc(' ', fp);
  334. X            ++out_col;
  335. X        }
  336. X        if (c == '{'/*}*/ || c == '('/*)*/ || c == '['/*]*/)
  337. X            ++depth;
  338. X        glue_fputc(c, fp);
  339. X        in_col++;
  340. X        out_col = in_col;
  341. X        continuation_line = (c == '\\');
  342. X        break;
  343. X    }
  344. X    if (glue_ferror(fp))
  345. X        nfatal("write \"%s\"", fn);
  346. X}
  347. X
  348. X
  349. X/*
  350. X * Function Name:
  351. X *    indent_printf
  352. X *
  353. X * Description:
  354. X *    As putchar is to indent_putchasr, printf is to indent_printf.
  355. X *
  356. X * Preconditions:
  357. X *    none
  358. X *
  359. X * Validation:
  360. X *    none
  361. X *
  362. X * Passed:
  363. X *    's' format string
  364. X *    ... and optional arguments
  365. X *
  366. X * Returns:
  367. X *    nothing
  368. X */
  369. X
  370. X/*VARARGS1*/
  371. Xvoid
  372. Xindent_printf(s sva_last)
  373. X    char        *s;
  374. X    sva_last_decl
  375. X{
  376. X    va_list        ap;
  377. X    char        buffer[2000];
  378. X
  379. X    sva_init(ap, s);
  380. X    vsprintf(buffer, s, ap);
  381. X    va_end(ap);
  382. X    for (s = buffer; *s; ++s)
  383. X        indent_putchar(*s);
  384. X}
  385. X
  386. X
  387. Xvoid
  388. Xindent_open(s)
  389. X    char    *s;
  390. X{
  391. X    trace(("indent_open(s = %08lX)\n{\n"/*}*/, s));
  392. X    if (!s)
  393. X    {
  394. X        fp = stdout;
  395. X        s = "(stdout)";
  396. X    }
  397. X    else
  398. X    {
  399. X        trace_string(s);
  400. X        fp = glue_fopen(s, "w");
  401. X        if (!fp)
  402. X            nfatal("open \"%s\"", s);
  403. X    }
  404. X    trace_pointer(fp);
  405. X    fn = s;
  406. X    depth = 0;
  407. X    in_col = 0;
  408. X    out_col = 0;
  409. X    continuation_line = 0;
  410. X    trace((/*{*/"}\n"));
  411. X}
  412. X
  413. X
  414. Xvoid
  415. Xindent_close()
  416. X{
  417. X    trace(("indent_close()\n{\n"/*}*/));
  418. X    trace_pointer(fp);
  419. X    if (out_col)
  420. X        indent_putchar('\n');
  421. X    if (glue_fflush(fp))
  422. X        nfatal("write \"%s\"", fn);
  423. X    if (fp != stdout && glue_fclose(fp))
  424. X        nfatal("close \"%s\"", fn);
  425. X    fp = 0;
  426. X    fn = 0;
  427. X    trace((/*{*/"}\n"));
  428. X}
  429. END_OF_FILE
  430. if test 4475 -ne `wc -c <'aegis/indent.c'`; then
  431.     echo shar: \"'aegis/indent.c'\" unpacked with wrong size!
  432. fi
  433. # end of 'aegis/indent.c'
  434. fi
  435. if test -f 'aegis/log.c' -a "${1}" != "-c" ; then 
  436.   echo shar: Will not clobber existing file \"'aegis/log.c'\"
  437. else
  438. echo shar: Extracting \"'aegis/log.c'\" \(3832 characters\)
  439. sed "s/^X//" >'aegis/log.c' <<'END_OF_FILE'
  440. X/*
  441. X *    aegis - project change supervisor
  442. X *    Copyright (C) 1991, 1992, 1993 Peter Miller.
  443. X *    All rights reserved.
  444. X *
  445. X *    This program is free software; you can redistribute it and/or modify
  446. X *    it under the terms of the GNU General Public License as published by
  447. X *    the Free Software Foundation; either version 2 of the License, or
  448. X *    (at your option) any later version.
  449. X *
  450. X *    This program is distributed in the hope that it will be useful,
  451. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  452. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  453. X *    GNU General Public License for more details.
  454. X *
  455. X *    You should have received a copy of the GNU General Public License
  456. X *    along with this program; if not, write to the Free Software
  457. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  458. X *
  459. X * MANIFEST: functions to open and close log files
  460. X */
  461. X
  462. X#include <stddef.h>
  463. X#include <stdio.h>
  464. X#include <string.h>
  465. X#include <signal.h>
  466. X#include <unistd.h>
  467. X
  468. X#include <error.h>
  469. X#include <log.h>
  470. X#include <os.h>
  471. X#include <trace.h>
  472. X#include <undo.h>
  473. X#include <user.h>
  474. X
  475. X
  476. Xstatic    int    pid;
  477. X
  478. X
  479. X/*
  480. X *  NAME
  481. X *    log_open - start logging
  482. X *
  483. X *  SYNOPSIS
  484. X *    void log_open(string_ty *logfile, user_ty *up);
  485. X *
  486. X *  DESCRIPTION
  487. X *    The log_open function is used to start sending stdout
  488. X *    and stderr to a longfile.  If necessary it creates the log
  489. X *    file before returning.
  490. X */
  491. X
  492. Xvoid
  493. Xlog_open(log, up)
  494. X    string_ty    *log;
  495. X    user_ty        *up;
  496. X{
  497. X    static int    already_done;
  498. X    int        fd[2];
  499. X    int        bg;
  500. X    int        append_to_file;
  501. X
  502. X    if (already_done)
  503. X        return;
  504. X    assert(log);
  505. X    trace(("log_open(s = \"%s\")\n{\n"/*}*/, log->str_text));
  506. X    already_done = 1;
  507. X
  508. X    /*
  509. X     * if the logfile exists, unlink it first
  510. X     * (so that baseline linked to int dir works correctly)
  511. X     */
  512. X    append_to_file = 0;
  513. X    user_become(up);
  514. X    if (os_exists(log))
  515. X    {
  516. X        long    now;
  517. X
  518. X        time(&now);
  519. X        if (now - os_mtime(log) < 30)
  520. X            append_to_file = 1;
  521. X        else
  522. X            os_unlink(log);
  523. X    }
  524. X    user_become_undo();
  525. X
  526. X    /*
  527. X     * If we are in the background,
  528. X     * don't send the output to the terminal.
  529. X     */
  530. X    bg = os_background();
  531. X    if (bg)
  532. X    {
  533. X        char *mode = (append_to_file ? "a" : "w");
  534. X        user_become(up);
  535. X        if (!freopen(log->str_text, mode, stdout))
  536. X            nfatal("%s", log->str_text);
  537. X        user_become_undo();
  538. X    }
  539. X    else
  540. X    {
  541. X        int    uid;
  542. X        int    gid;
  543. X        int    um;
  544. X        int    n;
  545. X        char    *cmd[4];
  546. X
  547. X        /*
  548. X         * list both to a file and to the terminal
  549. X         */
  550. X        uid = user_id(up);
  551. X        gid = user_gid(up);
  552. X        um = user_umask(up);
  553. X        if (pipe(fd))
  554. X            nfatal("pipe()");
  555. X        switch (pid = fork())
  556. X        {
  557. X        case 0:
  558. X            undo_cancel();
  559. X            while (os_become_active())
  560. X                os_become_undo();
  561. X            n = 0;
  562. X            cmd[n++] = "tee";
  563. X            if (append_to_file)
  564. X                cmd[n++] = "-a";
  565. X            cmd[n++] = log->str_text;
  566. X            cmd[n] = 0;
  567. X            close(fd[1]);
  568. X            close(0);
  569. X            if (dup(fd[0]) != 0)
  570. X                fatal("dup was wrong");
  571. X            close(fd[0]);
  572. X            signal(SIGINT, SIG_IGN);
  573. X            signal(SIGHUP, SIG_IGN);
  574. X            signal(SIGTERM, SIG_IGN);
  575. X            os_setgid(gid);
  576. X            os_setuid(uid);
  577. X            umask(um);
  578. X            execvp(cmd[0], cmd);
  579. X            nfatal("%s", cmd[0]);
  580. X    
  581. X        case -1:
  582. X            nfatal("fork()");
  583. X    
  584. X        default:
  585. X            close(fd[0]);
  586. X            close(1);
  587. X            if (dup(fd[1]) != 1)
  588. X                fatal("dup was wrong");
  589. X            close(fd[1]);
  590. X            break;
  591. X        }
  592. X    }
  593. X
  594. X    /*
  595. X     * tell the user we are logging
  596. X     *    (without putting it into the logfile)
  597. X     */
  598. X    if (!bg)
  599. X        verbose("logging to \"%s\"", log->str_text);
  600. X
  601. X    /*
  602. X     *  make stderr go to the same place as stdout
  603. X         *      [will this work if stdout is already closed?]
  604. X     */
  605. X        close(2);
  606. X        switch (dup(1))
  607. X        {
  608. X        case 0:
  609. X        /* oops, stdin is was closed */
  610. X        if (dup(1) != 2)
  611. X            fatal("dup was wrong");
  612. X        close(0);
  613. X        break;
  614. X    
  615. X        case 2:
  616. X        break;
  617. X    
  618. X        default:
  619. X        nfatal("dup");
  620. X        }
  621. X    trace((/*{*/"}\n"));
  622. X}
  623. X
  624. X
  625. Xvoid
  626. Xlog_close()
  627. X{
  628. X    if (pid > 0)
  629. X    {
  630. X        int    status;
  631. X
  632. X        fclose(stdout);
  633. X        fclose(stderr);
  634. X        os_waitpid(pid, &status);
  635. X        pid = 0;
  636. X    }
  637. X}
  638. X
  639. X
  640. Xvoid
  641. Xlog_quitter(n)
  642. X    int    n;
  643. X{
  644. X    log_close();
  645. X}
  646. END_OF_FILE
  647. if test 3832 -ne `wc -c <'aegis/log.c'`; then
  648.     echo shar: \"'aegis/log.c'\" unpacked with wrong size!
  649. fi
  650. # end of 'aegis/log.c'
  651. fi
  652. if test -f 'aegis/pager.c' -a "${1}" != "-c" ; then 
  653.   echo shar: Will not clobber existing file \"'aegis/pager.c'\"
  654. else
  655. echo shar: Extracting \"'aegis/pager.c'\" \(3503 characters\)
  656. sed "s/^X//" >'aegis/pager.c' <<'END_OF_FILE'
  657. X/*
  658. X *    aegis - project change supervisor
  659. X *    Copyright (C) 1992, 1993 Peter Miller.
  660. X *    All rights reserved.
  661. X *
  662. X *    This program is free software; you can redistribute it and/or modify
  663. X *    it under the terms of the GNU General Public License as published by
  664. X *    the Free Software Foundation; either version 2 of the License, or
  665. X *    (at your option) any later version.
  666. X *
  667. X *    This program is distributed in the hope that it will be useful,
  668. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  669. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  670. X *    GNU General Public License for more details.
  671. X *
  672. X *    You should have received a copy of the GNU General Public License
  673. X *    along with this program; if not, write to the Free Software
  674. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  675. X *
  676. X * MANIFEST: functions to pipe output through paginator
  677. X */
  678. X
  679. X#include <stdio.h>
  680. X#include <stdlib.h>
  681. X#include <unistd.h>
  682. X
  683. X#include <error.h>
  684. X#include <option.h>
  685. X#include <os.h>
  686. X#include <pager.h>
  687. X#include <trace.h>
  688. X#include <undo.h>
  689. X
  690. X
  691. Xstatic    FILE    *out;
  692. Xstatic    char    *pager;
  693. Xstatic    int    pid;
  694. X
  695. X
  696. Xstatic FILE *pipe_open _((char *));
  697. X
  698. Xstatic FILE *
  699. Xpipe_open(prog)
  700. X    char    *prog;
  701. X{
  702. X    int    uid;
  703. X    int    gid;
  704. X    int    um;
  705. X    FILE    *fp;
  706. X    int    fd[2];
  707. X    char    *cmd[4];
  708. X
  709. X    fp = 0;
  710. X    os_become_orig_query(&uid, &gid, &um);
  711. X    if (pipe(fd))
  712. X        nfatal("pipe()");
  713. X    switch (pid = fork())
  714. X    {
  715. X    case 0:
  716. X        undo_cancel();
  717. X        while (os_become_active())
  718. X            os_become_undo();
  719. X        cmd[0] = "sh";
  720. X        cmd[1] = "-c";
  721. X        cmd[2] = prog;
  722. X        cmd[3] = 0;
  723. X        close(fd[1]);
  724. X        close(0);
  725. X        if (dup(fd[0]) != 0)
  726. X            fatal("dup was wrong");
  727. X        close(fd[0]);
  728. X        os_setgid(gid);
  729. X        os_setuid(uid);
  730. X        umask(um);
  731. X        execvp(cmd[0], cmd);
  732. X        nfatal("%s", prog);
  733. X
  734. X    case -1:
  735. X        nerror("fork()");
  736. X        fp = 0;
  737. X        break;
  738. X
  739. X    default:
  740. X        close(fd[0]);
  741. X        fp = fdopen(fd[1], "w");
  742. X        if (!fp)
  743. X            nfatal("fdopen");
  744. X        break;
  745. X    }
  746. X    return fp;
  747. X}
  748. X
  749. X
  750. Xstatic void pipe_close _((FILE *));
  751. X
  752. Xstatic void
  753. Xpipe_close(fp)
  754. X    FILE    *fp;
  755. X{
  756. X    int    status;
  757. X
  758. X    fclose(fp);
  759. X    os_waitpid(pid, &status);
  760. X    pid = 0;
  761. X}
  762. X
  763. X
  764. Xstatic void cleanup _((int));
  765. X
  766. Xstatic void
  767. Xcleanup(n)
  768. X    int    n;
  769. X{
  770. X    trace(("cleanup(n = %d)\n{\n"/*}*/, n));
  771. X    if (!out)
  772. X        goto done;
  773. X
  774. X    /*
  775. X     * write the last of the output
  776. X     */
  777. X    fflush(out);
  778. X
  779. X    /*
  780. X     * close the paginator
  781. X     */
  782. X    if (pager)
  783. X    {
  784. X        pipe_close(out);
  785. X        pager = 0;
  786. X    }
  787. X    out = 0;
  788. X
  789. X    /*
  790. X     * here for all exits
  791. X     */
  792. X    done:
  793. X    trace((/*{*/"}\n"));
  794. X}
  795. X
  796. X
  797. XFILE *
  798. Xpager_open()
  799. X{
  800. X    trace(("pager_open()\n{\n"/*}*/));
  801. X    assert(!out);
  802. X
  803. X    /*
  804. X     * if talking to a terminal,
  805. X     * send the output through a paginator
  806. X     */
  807. X    if
  808. X    (
  809. X        !option_unformatted_get()
  810. X    &&
  811. X        !os_background()
  812. X    &&
  813. X        isatty(0)
  814. X    &&
  815. X        isatty(1)
  816. X    )
  817. X    {
  818. X        pager = getenv("PAGER");
  819. X        if (!pager || !*pager)
  820. X            pager = "more";
  821. X    }
  822. X    else
  823. X        pager = 0;
  824. X
  825. X    /*
  826. X     * register the cleanup function in case of fatal errors
  827. X     */
  828. X    quit_register(cleanup);
  829. X
  830. X    /*
  831. X     * open the paginator
  832. X     */
  833. X    if (pager)
  834. X    {
  835. X        os_become_orig();
  836. X        out = pipe_open(pager);
  837. X        os_become_undo();
  838. X        if (!out)
  839. X        {
  840. X            pager = 0;
  841. X            out = stdout;
  842. X        }
  843. X    }
  844. X    else
  845. X        out = stdout;
  846. X    trace((/*{*/"}\n"));
  847. X    return out;
  848. X}
  849. X
  850. X
  851. Xvoid
  852. Xpager_close(fp)
  853. X    FILE    *fp;
  854. X{
  855. X    trace(("pager_close(fp = %08lX)\n{\n"/*}*/, fp));
  856. X    assert(out);
  857. X    assert(fp == out);
  858. X
  859. X    /*
  860. X     * write the last of the output
  861. X     */
  862. X    fflush(out);
  863. X    if (ferror(out))
  864. X        pager_error(out);
  865. X
  866. X    /*
  867. X     * close the paginator
  868. X     */
  869. X    if (pager)
  870. X    {
  871. X        pipe_close(out);
  872. X        pager = 0;
  873. X    }
  874. X    out = 0;
  875. X    trace((/*{*/"}\n"));
  876. X}
  877. X
  878. X
  879. Xvoid
  880. Xpager_error(fp)
  881. X    FILE    *fp;
  882. X{
  883. X    assert(out);
  884. X    assert(fp == out);
  885. X
  886. X    if (pager)
  887. X        nfatal("writing pipe to \"%s\"", pager);
  888. X    else
  889. X        nfatal("standard output");
  890. X}
  891. END_OF_FILE
  892. if test 3503 -ne `wc -c <'aegis/pager.c'`; then
  893.     echo shar: \"'aegis/pager.c'\" unpacked with wrong size!
  894. fi
  895. # end of 'aegis/pager.c'
  896. fi
  897. if test -f 'aegis/pattr.def' -a "${1}" != "-c" ; then 
  898.   echo shar: Will not clobber existing file \"'aegis/pattr.def'\"
  899. else
  900. echo shar: Extracting \"'aegis/pattr.def'\" \(5110 characters\)
  901. sed "s/^X//" >'aegis/pattr.def' <<'END_OF_FILE'
  902. X/*
  903. X *    aegis - project change supervisor
  904. X *    Copyright (C) 1991, 1992, 1993 Peter Miller.
  905. X *    All rights reserved.
  906. X *
  907. X *    This program is free software; you can redistribute it and/or modify
  908. X *    it under the terms of the GNU General Public License as published by
  909. X *    the Free Software Foundation; either version 2 of the License, or
  910. X *    (at your option) any later version.
  911. X *
  912. X *    This program is distributed in the hope that it will be useful,
  913. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  914. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  915. X *    GNU General Public License for more details.
  916. X *
  917. X *    You should have received a copy of the GNU General Public License
  918. X *    along with this program; if not, write to the Free Software
  919. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  920. X *
  921. X * MANIFEST: project attributes file contents definition
  922. X *
  923. X * if you change this file, don't forget to change
  924. X *    man5/aepattr.so
  925. X *    aegis/pattr_ed.c
  926. X *    aegis/new_rele.c
  927. X */
  928. X
  929. X#include <common.def>
  930. X
  931. X/*
  932. X * This field contains
  933. X * a description of the project.
  934. X * Large amounts of prose are not required;
  935. X * a single line is sufficient.
  936. X */
  937. Xdescription = string;
  938. X
  939. X/*
  940. X * This field contains
  941. X * the name of the user to whom baseline files belong.
  942. X */
  943. Xowner_name = string;
  944. X
  945. X/*
  946. X * This field contains
  947. X * the name of the group to which baseline files belong.
  948. X */
  949. Xgroup_name = string;
  950. X
  951. X/*
  952. X * If this field is true, then a developer may review her own change.
  953. X * This is probably only a good idea for projects of less than 3 people.
  954. X * The idea is for as many people as possible to critically examine a change.
  955. X */
  956. Xdeveloper_may_review = boolean;
  957. X
  958. X/*
  959. X * If this field is true, then a developer may integrate her own change.
  960. X * This is probably only a good idea for projects of less than 3 people.
  961. X * The idea is for as many people as possible to critically examine a change.
  962. X */
  963. Xdeveloper_may_integrate = boolean;
  964. X
  965. X/*
  966. X * If this field is true, then a reviewer may integrate a change she reviewed.
  967. X * This is probably only a good idea for projects of less than 3 people.
  968. X * The idea is for as many people as possible to critically examine a change.
  969. X */
  970. Xreviewer_may_integrate = boolean;
  971. X
  972. X/*
  973. X * This field is true if developers may created changes,
  974. X * in addition to administrators.
  975. X * This tends to be a very useful thing,
  976. X * since developers find most of the bugs.
  977. X */
  978. Xdevelopers_may_create_changes = boolean;
  979. X
  980. X/*
  981. X * notify that a change requires reviewing
  982. X * All of the substitutions described in aesub(5) are available.
  983. X * this field is optional
  984. X *
  985. X * This command could also be used to notify other management systems,
  986. X * such as progress and defect tracking.
  987. X */
  988. Xdevelop_end_notify_command = string;
  989. X
  990. X/*
  991. X * notify that a change has been withdrawn from review
  992. X * for further development
  993. X * All of the substitutions described in aesub(5) are available.
  994. X * this field is optional
  995. X *
  996. X * This command could also be used to notify other management systems,
  997. X * such as progress and defect tracking.
  998. X */
  999. Xdevelop_end_undo_notify_command = string;
  1000. X
  1001. X/*
  1002. X * notify that the review has passed
  1003. X * All of the substitutions described in aesub(5) are available.
  1004. X * this field is optional
  1005. X *
  1006. X * This command could also be used to notify other management systems,
  1007. X * such as progress and defect tracking.
  1008. X */
  1009. Xreview_pass_notify_command = string;
  1010. X
  1011. X/*
  1012. X * notify that a review pass has has been rescinded
  1013. X * All of the substitutions described in aesub(5) are available.
  1014. X * this field is optional.
  1015. X * Defaults to the develop_end_notify_command field.
  1016. X *
  1017. X * This command could also be used to notify other management systems,
  1018. X * such as progress and defect tracking.
  1019. X */
  1020. Xreview_pass_undo_notify_command = string;
  1021. X
  1022. X/*
  1023. X * notify that the review has failed
  1024. X * All of the substitutions described in aesub(5) are available.
  1025. X * this field is optional
  1026. X *
  1027. X * This command could also be used to notify other management systems,
  1028. X * such as progress and defect tracking.
  1029. X */
  1030. Xreview_fail_notify_command = string;
  1031. X
  1032. X/*
  1033. X * notify that the integration has passed
  1034. X * All of the substitutions described in aesub(5) are available.
  1035. X * this field is optional
  1036. X *
  1037. X * This command could also be used to notify other management systems,
  1038. X * such as progress and defect tracking.
  1039. X */
  1040. Xintegrate_pass_notify_command = string;
  1041. X
  1042. X/*
  1043. X * notify that the integration has failed
  1044. X * All of the substitutions described in aesub(5) are available.
  1045. X * this field is optional
  1046. X *
  1047. X * This command could also be used to notify other management systems,
  1048. X * such as progress and defect tracking.
  1049. X */
  1050. Xintegrate_fail_notify_command = string;
  1051. X
  1052. X/*
  1053. X * The pathname of where to place new development directories.
  1054. X * The pathname must be absolute.
  1055. X * Only consulted if the uconf field of the same name is not set.
  1056. X * Defaults to $HOME.
  1057. X */
  1058. Xdefault_development_directory = string;
  1059. X
  1060. X/*
  1061. X * File permission mode mask.  See umask(2) for more information.
  1062. X * This value will always be OR'ed with 022, because aegis is paranoid.
  1063. X */
  1064. Xumask = integer;
  1065. X
  1066. X/*
  1067. X * This field contains what to do when a change is created with
  1068. X * no test exemption specified.
  1069. X */
  1070. Xdefault_test_exemption = boolean;
  1071. END_OF_FILE
  1072. if test 5110 -ne `wc -c <'aegis/pattr.def'`; then
  1073.     echo shar: \"'aegis/pattr.def'\" unpacked with wrong size!
  1074. fi
  1075. # end of 'aegis/pattr.def'
  1076. fi
  1077. if test -f 'aegis/pconf.def' -a "${1}" != "-c" ; then 
  1078.   echo shar: Will not clobber existing file \"'aegis/pconf.def'\"
  1079. else
  1080. echo shar: Extracting \"'aegis/pconf.def'\" \(4907 characters\)
  1081. sed "s/^X//" >'aegis/pconf.def' <<'END_OF_FILE'
  1082. X/*
  1083. X *    aegis - project change supervisor
  1084. X *    Copyright (C) 1991, 1992, 1993 Peter Miller.
  1085. X *    All rights reserved.
  1086. X *
  1087. X *    This program is free software; you can redistribute it and/or modify
  1088. X *    it under the terms of the GNU General Public License as published by
  1089. X *    the Free Software Foundation; either version 2 of the License, or
  1090. X *    (at your option) any later version.
  1091. X *
  1092. X *    This program is distributed in the hope that it will be useful,
  1093. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1094. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1095. X *    GNU General Public License for more details.
  1096. X *
  1097. X *    You should have received a copy of the GNU General Public License
  1098. X *    along with this program; if not, write to the Free Software
  1099. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1100. X *
  1101. X * MANIFEST: project config file contents definition
  1102. X *
  1103. X * this file normally resides at "projdir"/baseline/config
  1104. X *
  1105. X * this file is only ever read by [me], so does not need locking.
  1106. X * Indeed, it is in the baseline, and subject to history.
  1107. X *
  1108. X * if you change this file, don't forget to change
  1109. X *    man5/aepconf.5
  1110. X */
  1111. X
  1112. X#include <common.def>
  1113. X
  1114. X/*
  1115. X * how to build the project
  1116. X *    (actually, how to do an integration build)
  1117. X * mandatory
  1118. X *
  1119. X * All of the substitutions described in aesub(5) are available.
  1120. X */
  1121. Xbuild_command = string;
  1122. X
  1123. X/*
  1124. X * how to do a development build
  1125. X * defaults to above
  1126. X *
  1127. X * All of the substitutions described in aesub(5) are available.
  1128. X */
  1129. Xdevelopment_build_command = string;
  1130. X
  1131. X/*
  1132. X * Executed whenever the files in the change, change.
  1133. X *
  1134. X * All of the substitutions described in aesub(5) are available.
  1135. X * In addition:
  1136. X *
  1137. X * ${File_List}
  1138. X *     space separated list of files named
  1139. X */
  1140. Xchange_file_command = string;
  1141. X
  1142. X/*
  1143. X * Executed at development build before 'development_build_command' when 
  1144. X *    (a)    it is the first build after a develop begin, or
  1145. X *    (b)    after some other change has been integrated into the baseline
  1146. X *        since the last build.
  1147. X *
  1148. X * All of the substitutions described in aesub(5) are available.
  1149. X */
  1150. Xproject_file_command = string;
  1151. X
  1152. X/*
  1153. X * Executed at develop begin
  1154. X *
  1155. X * All of the substitutions described in aesub(5) are available.
  1156. X */
  1157. Xdevelop_begin_command = string;
  1158. X
  1159. X/*
  1160. X * Executed at integrate begin
  1161. X *
  1162. X * All of the substitutions described in aesub(5) are available.
  1163. X */
  1164. Xintegrate_begin_command = string;
  1165. X
  1166. X/*
  1167. X * This flag is true if aegis should link the files from the baseline
  1168. X * into the integration directory, rther than copy them (the default).
  1169. X * This has risks, as the build script (e.g. Howto.cook or Makefile, etc)
  1170. X * must unlink targets before rebuilding them.
  1171. X */
  1172. Xlink_integration_directory = boolean;
  1173. X
  1174. X/*
  1175. X * the history commands are pretty dicey to have here,
  1176. X * because a project could be badly broken if these don't work just right!
  1177. X * On the other hand, they need to be changed from time to time.
  1178. X */
  1179. X
  1180. X/*
  1181. X * create a new history
  1182. X * always executed as the project owner
  1183. X * All of the substitutions described in aesub(5) are available.
  1184. X * In addition:
  1185. X *
  1186. X * ${Input}
  1187. X *    absolute path of the source file
  1188. X *
  1189. X * ${History}
  1190. X *    absolute path of the history file
  1191. X */
  1192. Xhistory_create_command = string;
  1193. X
  1194. X/*
  1195. X * get a file from history
  1196. X * may be executed by developers
  1197. X * All of the substitutions described in aesub(5) are available.
  1198. X * In addition:
  1199. X *
  1200. X * ${History}
  1201. X *    absolute path of the history file
  1202. X *
  1203. X * ${Edit}
  1204. X *    edit number to be extracted (artibrary string)
  1205. X *
  1206. X * ${Output}
  1207. X *    Absolute path of output file.
  1208. X */
  1209. Xhistory_get_command = string;
  1210. X
  1211. X/*
  1212. X * add a new change to the history
  1213. X * always executed as the project owner
  1214. X * All of the substitutions described in aesub(5) are available.
  1215. X * In addition:
  1216. X *
  1217. X * ${Input}
  1218. X *    absolute path of the source file
  1219. X *
  1220. X * ${History}
  1221. X *    absolute path of the history file
  1222. X */
  1223. Xhistory_put_command = string;
  1224. X
  1225. X/*
  1226. X * query the topmost edit of a history file
  1227. X * Result to be printed on stdout.
  1228. X * may be executed by developers
  1229. X * All of the substitutions described in aesub(5) are available.
  1230. X * In addition:
  1231. X *
  1232. X * ${History}
  1233. X *    absolute path of the history file
  1234. X */
  1235. Xhistory_query_command = string;
  1236. X
  1237. X/*
  1238. X * difference of 2 files
  1239. X * All of the substitutions described in aesub(5) are available.
  1240. X * In addition:
  1241. X *
  1242. X * ${ORiginal}
  1243. X *    absolute path of file in baseline (usually)
  1244. X *
  1245. X * ${Input}
  1246. X *    absolute path of file in development directory (usually)
  1247. X *
  1248. X * ${Output}
  1249. X *    Absolute path of output file
  1250. X */
  1251. Xdiff_command = string;
  1252. X
  1253. X/*
  1254. X * difference of 3 files
  1255. X * All of the substitutions described in aesub(5) are available.
  1256. X * In addition:
  1257. X *
  1258. X * ${ORiginal}
  1259. X *    Absolute path of common ancestor
  1260. X *
  1261. X * ${Most_Recent}
  1262. X *    Absolute path of competing edit, usually in the baseline.
  1263. X *
  1264. X * ${Input}
  1265. X *    absolute path of file in development directory (usually)
  1266. X *
  1267. X * ${Output}
  1268. X *    absolute path of output file
  1269. X */
  1270. Xdiff3_command = string;
  1271. X
  1272. X/*
  1273. X * new file templates
  1274. X */
  1275. Xfile_template =
  1276. X[
  1277. X    {
  1278. X        pattern = [ string ];
  1279. X        body = string;
  1280. X    }
  1281. X];
  1282. END_OF_FILE
  1283. if test 4907 -ne `wc -c <'aegis/pconf.def'`; then
  1284.     echo shar: \"'aegis/pconf.def'\" unpacked with wrong size!
  1285. fi
  1286. # end of 'aegis/pconf.def'
  1287. fi
  1288. if test -f 'aegis/project.h' -a "${1}" != "-c" ; then 
  1289.   echo shar: Will not clobber existing file \"'aegis/project.h'\"
  1290. else
  1291. echo shar: Extracting \"'aegis/project.h'\" \(4262 characters\)
  1292. sed "s/^X//" >'aegis/project.h' <<'END_OF_FILE'
  1293. X/*
  1294. X *    aegis - project change supervisor
  1295. X *    Copyright (C) 1992, 1993 Peter Miller.
  1296. X *    All rights reserved.
  1297. X *
  1298. X *    This program is free software; you can redistribute it and/or modify
  1299. X *    it under the terms of the GNU General Public License as published by
  1300. X *    the Free Software Foundation; either version 2 of the License, or
  1301. X *    (at your option) any later version.
  1302. X *
  1303. X *    This program is distributed in the hope that it will be useful,
  1304. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1305. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1306. X *    GNU General Public License for more details.
  1307. X *
  1308. X *    You should have received a copy of the GNU General Public License
  1309. X *    along with this program; if not, write to the Free Software
  1310. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1311. X *
  1312. X * MANIFEST: interface definition for aegis/project.h
  1313. X */
  1314. X
  1315. X#ifndef PROJECT_H
  1316. X#define PROJECT_H
  1317. X
  1318. X#include <pstate.h>
  1319. X#include <pattr.h>
  1320. X
  1321. Xtypedef struct project_ty project_ty;
  1322. Xstruct project_ty
  1323. X{
  1324. X    long        reference_count;
  1325. X    string_ty    *name;
  1326. X    string_ty    *home_path;
  1327. X    string_ty    *baseline_path_unresolved;
  1328. X    string_ty    *baseline_path;
  1329. X    string_ty    *history_path;
  1330. X    string_ty    *info_path;
  1331. X    string_ty    *pstate_path;
  1332. X    string_ty    *changes_path;
  1333. X    pstate        pstate_data;
  1334. X    int        is_a_new_file;
  1335. X    long        lock_magic;
  1336. X    /*
  1337. X     * if you add anything to this structure,
  1338. X     * make sure you fix project_free in project.c
  1339. X     */
  1340. X};
  1341. X
  1342. Xproject_ty *project_alloc _((string_ty *name));
  1343. Xvoid project_bind_existing _((project_ty *));
  1344. Xvoid project_bind_new _((project_ty *));
  1345. Xvoid project_free _((project_ty *));
  1346. Xstring_ty *project_name_get _((project_ty *));
  1347. Xproject_ty *project_copy _((project_ty *));
  1348. Xstring_ty *project_home_path_get _((project_ty *));
  1349. Xvoid project_home_path_set _((project_ty *, string_ty *));
  1350. Xstring_ty *project_baseline_path_get _((project_ty *, int));
  1351. Xstring_ty *project_history_path_get _((project_ty *));
  1352. Xstring_ty *project_info_path_get _((project_ty *));
  1353. Xstring_ty *project_changes_path_get _((project_ty *));
  1354. Xstring_ty *project_change_path_get _((project_ty *, long));
  1355. Xstring_ty *project_pstate_path_get _((project_ty *));
  1356. Xpstate project_pstate_get _((project_ty *));
  1357. Xvoid project_pstate_write _((project_ty *));
  1358. Xvoid project_pstate_lock_prepare _((project_ty *));
  1359. Xvoid project_build_read_lock_prepare _((project_ty *));
  1360. Xvoid project_build_write_lock_prepare _((project_ty *));
  1361. Xpattr project_pattr_get _((project_ty *));
  1362. Xvoid project_pattr_set _((project_ty *, pattr));
  1363. Xpstate_src project_src_find _((project_ty *, string_ty *));
  1364. Xpstate_src project_src_new _((project_ty *, string_ty *));
  1365. Xvoid project_src_remove _((project_ty *, string_ty *));
  1366. Xint project_administrator_query _((project_ty *, string_ty *));
  1367. Xvoid project_administrator_add _((project_ty *, string_ty *));
  1368. Xvoid project_administrator_delete _((project_ty *, string_ty *));
  1369. Xint project_integrator_query _((project_ty *, string_ty *));
  1370. Xvoid project_integrator_add _((project_ty *, string_ty *));
  1371. Xvoid project_integrator_delete _((project_ty *, string_ty *));
  1372. Xint project_reviewer_query _((project_ty *, string_ty *));
  1373. Xvoid project_reviewer_add _((project_ty *, string_ty *));
  1374. Xvoid project_reviewer_delete _((project_ty *, string_ty *));
  1375. Xint project_developer_query _((project_ty *, string_ty *));
  1376. Xvoid project_developer_add _((project_ty *, string_ty *));
  1377. Xvoid project_developer_delete _((project_ty *, string_ty *));
  1378. Xpstate_history project_history_new _((project_ty *));
  1379. Xlong project_last_change_integrated _((project_ty *));
  1380. Xvoid project_error _((project_ty *, char *, ...));
  1381. Xvoid project_fatal _((project_ty *, char *, ...));
  1382. Xvoid project_verbose _((project_ty *, char *, ...));
  1383. Xvoid project_change_append _((project_ty *, long));
  1384. Xvoid project_change_delete _((project_ty *, long));
  1385. Xstring_ty *project_version_get _((project_ty *));
  1386. Xstring_ty *project_owner _((project_ty *));
  1387. Xstring_ty *project_group _((project_ty *));
  1388. Xstring_ty *project_default_development_directory _((project_ty *));
  1389. Xstruct user_ty *project_user _((project_ty *));
  1390. Xvoid project_become _((project_ty *));
  1391. Xvoid project_become_undo _((void));
  1392. Xint project_umask _((project_ty *));
  1393. Xint project_delta_exists _((project_ty *pp, long dn));
  1394. Xstring_ty *project_delta_to_edit _((project_ty *pp, long delta, string_ty *fn));
  1395. X
  1396. X#endif /* PROJECT_H */
  1397. END_OF_FILE
  1398. if test 4262 -ne `wc -c <'aegis/project.h'`; then
  1399.     echo shar: \"'aegis/project.h'\" unpacked with wrong size!
  1400. fi
  1401. # end of 'aegis/project.h'
  1402. fi
  1403. if test -f 'aegis/pstate.def' -a "${1}" != "-c" ; then 
  1404.   echo shar: Will not clobber existing file \"'aegis/pstate.def'\"
  1405. else
  1406. echo shar: Extracting \"'aegis/pstate.def'\" \(3934 characters\)
  1407. sed "s/^X//" >'aegis/pstate.def' <<'END_OF_FILE'
  1408. X/*
  1409. X *    aegis - project change supervisor
  1410. X *    Copyright (C) 1991, 1992, 1993 Peter Miller.
  1411. X *    All rights reserved.
  1412. X *
  1413. X *    This program is free software; you can redistribute it and/or modify
  1414. X *    it under the terms of the GNU General Public License as published by
  1415. X *    the Free Software Foundation; either version 2 of the License, or
  1416. X *    (at your option) any later version.
  1417. X *
  1418. X *    This program is distributed in the hope that it will be useful,
  1419. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1420. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1421. X *    GNU General Public License for more details.
  1422. X *
  1423. X *    You should have received a copy of the GNU General Public License
  1424. X *    along with this program; if not, write to the Free Software
  1425. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1426. X * 
  1427. X * MANIFEST: project state file contents definition
  1428. X *
  1429. X * normally resides at "projdir"/info/state
  1430. X *
  1431. X * read and written by aegis, so it needs locking
  1432. X *
  1433. X * If you change this file, don't forget to change
  1434. X *    man5/aepstate.5
  1435. X */
  1436. X
  1437. X#include <pattr.def>
  1438. X
  1439. X/*
  1440. X * Changes are numbered sequentially from one.
  1441. X * This field records the next unused change number.
  1442. X */
  1443. Xnext_change_number = integer;
  1444. X
  1445. X/*
  1446. X * Deltas are numbered sequentailly from one.
  1447. X * This field records the next unused delta number.
  1448. X */
  1449. Xnext_delta_number = integer;
  1450. X
  1451. X/*
  1452. X * Each test is numbered uniquely.
  1453. X * The name is of the form t[0-9][0-9][0-9][0-9][am].sh
  1454. X * ('a' for automatic and 'm' for manual.)
  1455. X * It would be possible to number each test within each change,
  1456. X * (of the form C???T??[AM].sh)
  1457. X * but this would not cover -New_ReLeaSe, where the test numbering
  1458. X * can not start at 1 again, otherwise tests could not be retained
  1459. X * across releases.
  1460. X */
  1461. Xnext_test_number = integer;
  1462. X
  1463. X/*
  1464. X * This field is a list of the files in the project.
  1465. X */
  1466. Xsrc =
  1467. X[
  1468. X    {
  1469. X    /*
  1470. X     * The name of the file, relative to the baseline.
  1471. X     */
  1472. X    file_name = string;
  1473. X
  1474. X    /*
  1475. X     * What the file is for.
  1476. X     */
  1477. X    usage = file_usage;
  1478. X
  1479. X    /*
  1480. X     * The edit number of the file.
  1481. X     */
  1482. X    edit_number = string;
  1483. X
  1484. X    /*
  1485. X     * The change which locked this file.
  1486. X     *
  1487. X     * Caveat: this field is redundant, you can figure it out by scanning
  1488. X     * all of he change files.  Having it here is very convenient,
  1489. X     * even though it means multiple updates.
  1490. X     */
  1491. X    locked_by = integer;
  1492. X
  1493. X    /*
  1494. X     * The change which is about to create this file
  1495. X     * for the first time.
  1496. X     * Same caveat as above.
  1497. X     */
  1498. X    about_to_be_created_by = integer;
  1499. X
  1500. X    /*
  1501. X     * The change which last deleted this file.
  1502. X     * We never throw them away, becase 
  1503. X     * (a) it may be created again, and more imortant
  1504. X     * (b) we need it to recreate earlier deltas.
  1505. X     */
  1506. X    deleted_by = integer;
  1507. X    }
  1508. X];
  1509. X
  1510. X/*
  1511. X * This field contains a history of integrations for the project.
  1512. X * Update by each successful 'aegis -Integrate_Pass' command.
  1513. X */
  1514. Xhistory =
  1515. X[
  1516. X    {
  1517. X        /*
  1518. X         * The delta number of the integration.
  1519. X         */
  1520. X        delta_number = integer;
  1521. X
  1522. X        /*
  1523. X         * The number of the change which was integrated.
  1524. X         */
  1525. X        change_number = integer;
  1526. X    }
  1527. X];
  1528. X
  1529. X/*
  1530. X * The list of changes which have been created to date.
  1531. X */
  1532. Xchange = [integer];
  1533. X
  1534. X/*
  1535. X * The list of administrators of the project.
  1536. X */
  1537. Xadministrator = [string];
  1538. X
  1539. X/*
  1540. X * The list of developers of the project.
  1541. X */
  1542. Xdeveloper = [string];
  1543. X
  1544. X/*
  1545. X * The list of reviewers of the project.
  1546. X */
  1547. Xreviewer = [string];
  1548. X
  1549. X/*
  1550. X * The list of integrators of the project.
  1551. X */
  1552. Xintegrator = [string];
  1553. X
  1554. X/*
  1555. X * The change currently being integrated.
  1556. X * Only one change (within a project) may be integrated at a time.
  1557. X * Only set when an integration is in progress.
  1558. X */
  1559. Xcurrently_integrating_change = integer;
  1560. X
  1561. X/*
  1562. X * The version numbers for (this release of) the project.
  1563. X *    (The major verion defaults to one if not given,
  1564. X *    the minor version defaults to zero if not given.)
  1565. X */
  1566. Xversion_major = integer;
  1567. Xversion_minor = integer;
  1568. X
  1569. X/*
  1570. X * The version number this project was derived from.
  1571. X * This is of most use when producing "patch" files.
  1572. X */
  1573. Xversion_previous = string;
  1574. END_OF_FILE
  1575. if test 3934 -ne `wc -c <'aegis/pstate.def'`; then
  1576.     echo shar: \"'aegis/pstate.def'\" unpacked with wrong size!
  1577. fi
  1578. # end of 'aegis/pstate.def'
  1579. fi
  1580. if test -f 'common/trace.h' -a "${1}" != "-c" ; then 
  1581.   echo shar: Will not clobber existing file \"'common/trace.h'\"
  1582. else
  1583. echo shar: Extracting \"'common/trace.h'\" \(4879 characters\)
  1584. sed "s/^X//" >'common/trace.h' <<'END_OF_FILE'
  1585. X/*
  1586. X *    aegis - project change supervisor
  1587. X *    Copyright (C) 1991, 1992, 1993 Peter Miller.
  1588. X *    All rights reserved.
  1589. X *
  1590. X *    This program is free software; you can redistribute it and/or modify
  1591. X *    it under the terms of the GNU General Public License as published by
  1592. X *    the Free Software Foundation; either version 2 of the License, or
  1593. X *    (at your option) any later version.
  1594. X *
  1595. X *    This program is distributed in the hope that it will be useful,
  1596. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1597. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1598. X *    GNU General Public License for more details.
  1599. X *
  1600. X *    You should have received a copy of the GNU General Public License
  1601. X *    along with this program; if not, write to the Free Software
  1602. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1603. X *
  1604. X * MANIFEST: interface definition for common/trace.c
  1605. X */
  1606. X
  1607. X
  1608. X#ifndef TRACE_H
  1609. X#define TRACE_H
  1610. X
  1611. X#include <stddef.h>
  1612. X
  1613. X#include <main.h>
  1614. X
  1615. X#ifdef DEBUG
  1616. X#define trace_pretest_ \
  1617. X    (                            \
  1618. X        (                        \
  1619. X            trace_pretest_result            \
  1620. X        ?                        \
  1621. X            trace_pretest_result            \
  1622. X        :                        \
  1623. X            trace_pretest(__FILE__, &trace_pretest_result) \
  1624. X        )                        \
  1625. X    &                            \
  1626. X        1                        \
  1627. X    )
  1628. X#define trace_where_ trace_where(__FILE__, __LINE__)
  1629. X#define trace(x) (void)(trace_pretest_ && (trace_where_, trace_printf x, 0))
  1630. X#define trace_if() (trace_pretest_ && (trace_where_, 1))
  1631. X#else
  1632. X#define trace(x)
  1633. X#define trace_if() 0
  1634. X#endif
  1635. X
  1636. X/*
  1637. X * This variable is static to each file which
  1638. X * includes the "trace.h" file.
  1639. X * Tracing is file-by-file, but need only test this once.
  1640. X * Files will fail to trace if a trace call is executed in them
  1641. X * prior to a call to trace_enable turning it on.
  1642. X */
  1643. X#ifdef DEBUG
  1644. Xstatic int trace_pretest_result;
  1645. X#endif
  1646. X
  1647. Xint trace_pretest _((char *file, int *result));
  1648. Xvoid trace_where _((char *file, int line));
  1649. Xvoid trace_printf _((char *, ...));
  1650. Xvoid trace_enable _((char *));
  1651. Xvoid trace_indent_reset _((void));
  1652. X
  1653. X
  1654. X#if defined(__STDC__) || defined(__stdc__)
  1655. X#define trace_stringize(x) #x
  1656. X#else
  1657. X#define trace_stringize(x) "x"
  1658. X#endif
  1659. X
  1660. Xvoid trace_char_real _((char *, char *));
  1661. Xvoid trace_char_unsigned_real _((char *, unsigned char *));
  1662. Xvoid trace_int_real _((char *, int *));
  1663. Xvoid trace_int_unsigned_real _((char *, unsigned *));
  1664. Xvoid trace_long_real _((char *, long *));
  1665. Xvoid trace_long_unsigned_real _((char *, unsigned long *));
  1666. Xvoid trace_pointer_real _((char *, void *));
  1667. Xvoid trace_short_real _((char *, short *));
  1668. Xvoid trace_short_unsigned_real _((char *, unsigned short *));
  1669. Xvoid trace_string_real _((char *, char *));
  1670. X
  1671. X#ifdef DEBUG
  1672. X
  1673. X#define trace_char(x)                        \
  1674. X    (void)                            \
  1675. X    (                            \
  1676. X        trace_pretest_                    \
  1677. X    &&                            \
  1678. X        (                        \
  1679. X            trace_where_,                \
  1680. X            trace_char_real(trace_stringize(x), &x), \
  1681. X            0                    \
  1682. X        )                        \
  1683. X    )
  1684. X
  1685. X#define trace_char_unsigned(x)                    \
  1686. X    (void)                            \
  1687. X    (                            \
  1688. X        trace_pretest_                    \
  1689. X    &&                            \
  1690. X        (                        \
  1691. X            trace_where_,                \
  1692. X            trace_char_unsigned_real(trace_stringize(x), &x), \
  1693. X            0                    \
  1694. X        )                        \
  1695. X    )
  1696. X
  1697. X#define trace_int(x)                        \
  1698. X    (void)                            \
  1699. X    (                            \
  1700. X        trace_pretest_                    \
  1701. X    &&                            \
  1702. X        (                        \
  1703. X            trace_where_,                \
  1704. X            trace_int_real(trace_stringize(x), &x),    \
  1705. X            0                    \
  1706. X        )                        \
  1707. X    )
  1708. X
  1709. X#define trace_int_unsigned(x)                    \
  1710. X    (void)                            \
  1711. X    (                            \
  1712. X        trace_pretest_                    \
  1713. X    &&                            \
  1714. X        (                        \
  1715. X            trace_where_,                \
  1716. X            trace_int_unsigned_real(trace_stringize(x), &x), \
  1717. X            0                    \
  1718. X        )                        \
  1719. X    )
  1720. X
  1721. X#define trace_long(x)                        \
  1722. X    (void)                            \
  1723. X    (                            \
  1724. X        trace_pretest_                    \
  1725. X    &&                            \
  1726. X        (                        \
  1727. X            trace_where_,                \
  1728. X            trace_long_real(trace_stringize(x), &x), \
  1729. X            0                    \
  1730. X        )                        \
  1731. X    )
  1732. X
  1733. X#define trace_long_unsigned(x)                    \
  1734. X    (void)                            \
  1735. X    (                            \
  1736. X        trace_pretest_                    \
  1737. X    &&                            \
  1738. X        (                        \
  1739. X            trace_where_,                \
  1740. X            trace_long_unsigned_real(trace_stringize(x), &x), \
  1741. X            0                    \
  1742. X        )                        \
  1743. X    )
  1744. X
  1745. X#define trace_pointer(x)                    \
  1746. X    (void)                            \
  1747. X    (                            \
  1748. X        trace_pretest_                    \
  1749. X    &&                            \
  1750. X        (                        \
  1751. X            trace_where_,                \
  1752. X            trace_pointer_real(trace_stringize(x), &x), \
  1753. X            0                    \
  1754. X        )                        \
  1755. X    )
  1756. X
  1757. X#define trace_short(x)                        \
  1758. X    (void)                            \
  1759. X    (                            \
  1760. X        trace_pretest_                    \
  1761. X    &&                            \
  1762. X        (                        \
  1763. X            trace_where_,                \
  1764. X            trace_short_real(trace_stringize(x), &x), \
  1765. X            0                    \
  1766. X        )                        \
  1767. X    )
  1768. X
  1769. X#define trace_short_unsigned(x)                    \
  1770. X    (void)                            \
  1771. X    (                            \
  1772. X        trace_pretest_                    \
  1773. X    &&                            \
  1774. X        (                        \
  1775. X            trace_where_,                \
  1776. X            trace_short_unsigned_real(trace_stringize(x), &x), \
  1777. X            0                    \
  1778. X        )                        \
  1779. X    )
  1780. X
  1781. X#define trace_string(x)                        \
  1782. X    (void)                            \
  1783. X    (                            \
  1784. X        trace_pretest_                    \
  1785. X    &&                            \
  1786. X        (                        \
  1787. X            trace_where_,                \
  1788. X            trace_string_real(trace_stringize(x), x), \
  1789. X            0                    \
  1790. X        )                        \
  1791. X    )
  1792. X
  1793. X#else
  1794. X
  1795. X#define trace_char(x)
  1796. X#define trace_char_unsigned(x)
  1797. X#define trace_int(x)
  1798. X#define trace_int_unsigned(x)
  1799. X#define trace_long(x)
  1800. X#define trace_long_unsigned(x)
  1801. X#define trace_pointer(x)
  1802. X#define trace_short(x)
  1803. X#define trace_short_unsigned(x)
  1804. X#define trace_string(x)
  1805. X
  1806. X#endif
  1807. X
  1808. X#endif /* TRACE_H */
  1809. END_OF_FILE
  1810. if test 4879 -ne `wc -c <'common/trace.h'`; then
  1811.     echo shar: \"'common/trace.h'\" unpacked with wrong size!
  1812. fi
  1813. # end of 'common/trace.h'
  1814. fi
  1815. if test -f 'conf/AIX-3.2' -a "${1}" != "-c" ; then 
  1816.   echo shar: Will not clobber existing file \"'conf/AIX-3.2'\"
  1817. else
  1818. echo shar: Extracting \"'conf/AIX-3.2'\" \(4207 characters\)
  1819. sed "s/^X//" >'conf/AIX-3.2' <<'END_OF_FILE'
  1820. X/*
  1821. X *    aegis - project change supervisor
  1822. X *    Copyright (C) 1992, 1993 Peter Miller.
  1823. X *    All rights reserved.
  1824. X *
  1825. X *    This program is free software; you can redistribute it and/or modify
  1826. X *    it under the terms of the GNU General Public License as published by
  1827. X *    the Free Software Foundation; either version 1, or (at your option)
  1828. X *    any later version.
  1829. X *
  1830. X *    This program is distributed in the hope that it will be useful,
  1831. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1832. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1833. X *    GNU General Public License for more details.
  1834. X *
  1835. X *    You should have received a copy of the GNU General Public License
  1836. X *    along with this program; if not, write to the Free Software
  1837. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1838. X *
  1839. X * MANIFEST: aegis configuration for AIX 3.2 system
  1840. X */
  1841. X
  1842. X#ifndef CONF_H
  1843. X#define CONF_H
  1844. X
  1845. X/*
  1846. X * Define this symbol if your system does NOT
  1847. X * have the ANSI C strerror system call, and
  1848. X * does not define strerror in <string.h>.
  1849. X *
  1850. X#define CONF_NO_strerror
  1851. X */
  1852. X
  1853. X/*
  1854. X * Define this symbol if your system does NOT
  1855. X * have the POSIX tcgetpgrp system call.
  1856. X *
  1857. X#define CONF_NO_tcgetpgrp
  1858. X */
  1859. X
  1860. X/*
  1861. X * Define this symbol if your system does NOT
  1862. X * have the stdarg.h include file mandated by ANSI C.
  1863. X *
  1864. X#ifndef __STDC__
  1865. X#define CONF_NO_stdarg
  1866. X#endif
  1867. X */
  1868. X
  1869. X/*
  1870. X * Define one of these symbols to indicate which
  1871. X * universe your UNIX is derived from.
  1872. X * If you have a choice, define both.
  1873. X */
  1874. X#define BSD
  1875. X#define SYSV
  1876. X
  1877. X/*
  1878. X * Define this symbol as an appropriate arguemnt to
  1879. X * the getpgrp system call for your system.
  1880. X * Ignore if your system does not have a getpgrp system call.
  1881. X */
  1882. X/* #define CONF_getpgrp_arg 0 */
  1883. X#define CONF_getpgrp_arg
  1884. X
  1885. X/*
  1886. X * Suitable user for storing aegis' global files.
  1887. X * The group will be derived from the relevant entry in /etc/passwd.
  1888. X *
  1889. X * Do not confuse this with the fact that aegis must be set-uid-root.
  1890. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  1891. X *
  1892. X * This string defines the owner of aegis' global files, so that aegis
  1893. X * may access them when they are on NFS mounted partitions (when root
  1894. X * is mapped to "nobody").
  1895. X */
  1896. X#define AEGIS_USER    "bin"
  1897. X
  1898. X/*
  1899. X * This defines the file creation mask.  See umask(2) for more information.
  1900. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  1901. X * Owner: always has read, write and search/exec.
  1902. X * Group: always has read and search/exec, so that developers can get at the
  1903. X *    baseline.  There is never group write, because then developers
  1904. X *    could trash the baseline, which is counter-productive.
  1905. X * Others: There is never others write, for the same reason as group.
  1906. X *    Others read and search/execute is configurable.
  1907. X *
  1908. X * The permissions mask in binary looks like
  1909. X *    000 010 X1X
  1910. X * where the Xs may be configured.
  1911. X *
  1912. X * Alternatives for default umask are thus
  1913. X *    027    others get nothing
  1914. X *    026    others can execute the results if they know where they are going
  1915. X *    022    others can see and copy and execute anything
  1916. X *    023    don't do this (why is left as an exersize for the reader)
  1917. X *
  1918. X * Projects have a configurable umask, this is just the default.
  1919. X *    See aepattr(1) for more information.
  1920. X */
  1921. X#define DEFAULT_UMASK 026
  1922. X
  1923. X/*
  1924. X * Define this symbol if your system does NOT have the strftime
  1925. X * function mandated by the ANSI C standard.
  1926. X *
  1927. X#define CONF_NO_strftime
  1928. X */
  1929. X
  1930. X/*
  1931. X * Define this symbol if your system does NOT
  1932. X * have the pw_comment field in struct passwd in <pwd.h>
  1933. X */
  1934. X#define CONF_NO_pw_comment
  1935. X
  1936. X/*
  1937. X * Define this symbol if your system does NOT
  1938. X * have the seteuid system call.
  1939. X *
  1940. X * In this case, one is present, but with crippled semantics.
  1941. X */
  1942. X#define CONF_NO_seteuid
  1943. X
  1944. X/*
  1945. X * Define this symbol to be the pathname of your shell.
  1946. X * Leave it as a Bourne shell whenever possible.
  1947. X * Some systems have different versions of the Bourne shell,
  1948. X * with and without functions; choose the one *with* functions if so.
  1949. X */
  1950. X#define CONF_SHELL "/bin/sh"
  1951. X
  1952. X/*
  1953. X * These symbols define where non-system user IDs start,
  1954. X * and where non-system group IDs start.
  1955. X * This is mostly to ensure that accounts "root" and "bin"
  1956. X * and "uucp" are not project owners.
  1957. X */
  1958. X#define AEGIS_MIN_UID 100
  1959. X#define AEGIS_MIN_GID 10
  1960. X
  1961. X#endif /* CONF_H */
  1962. END_OF_FILE
  1963. if test 4207 -ne `wc -c <'conf/AIX-3.2'`; then
  1964.     echo shar: \"'conf/AIX-3.2'\" unpacked with wrong size!
  1965. fi
  1966. # end of 'conf/AIX-3.2'
  1967. fi
  1968. if test -f 'conf/ConvexOS-10' -a "${1}" != "-c" ; then 
  1969.   echo shar: Will not clobber existing file \"'conf/ConvexOS-10'\"
  1970. else
  1971. echo shar: Extracting \"'conf/ConvexOS-10'\" \(4166 characters\)
  1972. sed "s/^X//" >'conf/ConvexOS-10' <<'END_OF_FILE'
  1973. X/*
  1974. X *    aegis - project change supervisor
  1975. X *    Copyright (C) 1992, 1993 Peter Miller.
  1976. X *    All rights reserved.
  1977. X *
  1978. X *    This program is free software; you can redistribute it and/or modify
  1979. X *    it under the terms of the GNU General Public License as published by
  1980. X *    the Free Software Foundation; either version 2 of the License, or
  1981. X *    (at your option) any later version.
  1982. X *
  1983. X *    This program is distributed in the hope that it will be useful,
  1984. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1985. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1986. X *    GNU General Public License for more details.
  1987. X *
  1988. X *    You should have received a copy of the GNU General Public License
  1989. X *    along with this program; if not, write to the Free Software
  1990. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1991. X *
  1992. X * MANIFEST: aegis configuration for ConvexOS 10
  1993. X */
  1994. X
  1995. X#ifndef CONF_H
  1996. X#define CONF_H
  1997. X
  1998. X/*
  1999. X * Define this symbol if your system does NOT
  2000. X * have the ANSI C strerror system call, and
  2001. X * does not define strerror in <string.h>.
  2002. X *
  2003. X#define CONF_NO_strerror
  2004. X */
  2005. X
  2006. X/*
  2007. X * Define this symbol if your system does NOT
  2008. X * have the POSIX tcgetpgrp system call.
  2009. X *
  2010. X#define CONF_NO_tcgetpgrp
  2011. X */
  2012. X
  2013. X/*
  2014. X * Define this symbol if your system does NOT
  2015. X * have the stdarg.h include file mandated by ANSI C.
  2016. X */
  2017. X#ifndef __STDC__
  2018. X#define CONF_NO_stdarg
  2019. X#endif
  2020. X
  2021. X/*
  2022. X * Define one of these symbols to indicate which
  2023. X * universe your UNIX is derived from.
  2024. X * If you have a choice, define both.
  2025. X */
  2026. X#define    BSD
  2027. X/* #define SYSV */
  2028. X
  2029. X/*
  2030. X * Define this symbol as an appropriate arguemnt to
  2031. X * the getpgrp system call for your system.
  2032. X * Ignore if your system does not have a getpgrp system call.
  2033. X */
  2034. X/* #define CONF_getpgrp_arg 0 */
  2035. X#define CONF_getpgrp_arg
  2036. X
  2037. X/*
  2038. X * Suitable user for storing aegis' global files.
  2039. X * The group will be derived from the relevant entry in /etc/passwd.
  2040. X *
  2041. X * Do not confuse this with the fact that aegis must be set-uid-root.
  2042. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  2043. X *
  2044. X * This string defines the owner of aegis' global files, so that aegis
  2045. X * may access them when they are on NFS mounted partitions (when root
  2046. X * is mapped to "nobody").
  2047. X */
  2048. X#define AEGIS_USER    "daemon"
  2049. X
  2050. X/*
  2051. X * This defines the file creation mask.  See umask(2) for more information.
  2052. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  2053. X * Owner: always has read, write and search/exec.
  2054. X * Group: always has read and search/exec, so that developers can get at the
  2055. X *    baseline.  There is never group write, because then developers
  2056. X *    could trash the baseline, which is counter-productive.
  2057. X * Others: There is never others write, for the same reason as group.
  2058. X *    Others read and search/execute is configurable.
  2059. X *
  2060. X * The permissions mask in binary looks like
  2061. X *    000 010 X1X
  2062. X * where the Xs may be configured.
  2063. X *
  2064. X * Alternatives for default umask are thus
  2065. X *    027    others get nothing
  2066. X *    026    others can execute the results if they know where they are going
  2067. X *    022    others can see and copy and execute anything
  2068. X *    023    don't do this (why is left as an exersize for the reader)
  2069. X *
  2070. X * Projects have a configurable umask, this is just the default.
  2071. X *    See aepattr(1) for more information.
  2072. X */
  2073. X#define DEFAULT_UMASK 026
  2074. X
  2075. X/*
  2076. X * Define this symbol if your system does NOT have the strftime
  2077. X * function mandated by the ANSI C standard.
  2078. X *
  2079. X#define CONF_NO_strftime
  2080. X */
  2081. X
  2082. X/*
  2083. X * Define this symbol if your system does NOT
  2084. X * have the pw_comment field in struct passwd in <pwd.h>
  2085. X *
  2086. X#define CONF_NO_pw_comment
  2087. X */
  2088. X
  2089. X/*
  2090. X * Define this symbol if your system does NOT
  2091. X * have the seteuid system call.
  2092. X *
  2093. X#define CONF_NO_seteuid
  2094. X */
  2095. X
  2096. X/*
  2097. X * Define this symbol to be the pathname of your shell.
  2098. X * Leave it as a Bourne shell whenever possible.
  2099. X * Some systems have different versions of the Bourne shell,
  2100. X * with and without functions; choose the one *with* functions if so.
  2101. X */
  2102. X#define CONF_SHELL "/bin/sh"
  2103. X
  2104. X/*
  2105. X * These symbols define where non-system user IDs start,
  2106. X * and where non-system group IDs start.
  2107. X * This is mostly to ensure that accounts "root" and "bin"
  2108. X * and "uucp" are not project owners.
  2109. X */
  2110. X#define AEGIS_MIN_UID 100
  2111. X#define AEGIS_MIN_GID 10
  2112. X
  2113. X#endif /* CONF_H */
  2114. END_OF_FILE
  2115. if test 4166 -ne `wc -c <'conf/ConvexOS-10'`; then
  2116.     echo shar: \"'conf/ConvexOS-10'\" unpacked with wrong size!
  2117. fi
  2118. # end of 'conf/ConvexOS-10'
  2119. fi
  2120. if test -f 'conf/IRIX-4.0' -a "${1}" != "-c" ; then 
  2121.   echo shar: Will not clobber existing file \"'conf/IRIX-4.0'\"
  2122. else
  2123. echo shar: Extracting \"'conf/IRIX-4.0'\" \(4167 characters\)
  2124. sed "s/^X//" >'conf/IRIX-4.0' <<'END_OF_FILE'
  2125. X/*
  2126. X *    aegis - project change supervisor
  2127. X *    Copyright (C) 1993 Peter Miller.
  2128. X *    All rights reserved.
  2129. X *
  2130. X *    This program is free software; you can redistribute it and/or modify
  2131. X *    it under the terms of the GNU General Public License as published by
  2132. X *    the Free Software Foundation; either version 2 of the License, or
  2133. X *    (at your option) any later version.
  2134. X *
  2135. X *    This program is distributed in the hope that it will be useful,
  2136. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2137. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2138. X *    GNU General Public License for more details.
  2139. X *
  2140. X *    You should have received a copy of the GNU General Public License
  2141. X *    along with this program; if not, write to the Free Software
  2142. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  2143. X *
  2144. X * MANIFEST: aegis configuration for IRIX 4.0 (Silicon Graphics)
  2145. X */
  2146. X
  2147. X#ifndef CONF_H
  2148. X#define CONF_H
  2149. X
  2150. X/*
  2151. X * Define this symbol if your system does NOT
  2152. X * have the ANSI C strerror system call, and
  2153. X * does not define strerror in <string.h>.
  2154. X */
  2155. X#define CONF_NO_strerror
  2156. X
  2157. X/*
  2158. X * Define this symbol if your system does NOT
  2159. X * have the POSIX tcgetpgrp system call.
  2160. X */
  2161. X#define CONF_NO_tcgetpgrp
  2162. X
  2163. X/*
  2164. X * Define this symbol if your system does NOT
  2165. X * have the stdarg.h include file mandated by ANSI C.
  2166. X */
  2167. X#ifndef __STDC__
  2168. X#define CONF_NO_stdarg
  2169. X#endif
  2170. X
  2171. X/*
  2172. X * Define one of these symbols to indicate which
  2173. X * universe your UNIX is derived from.
  2174. X * If you have a choice, define both.
  2175. X */
  2176. X/* #define BSD */
  2177. X#define SYSV
  2178. X
  2179. X/*
  2180. X * Define this symbol as an appropriate arguemnt to
  2181. X * the getpgrp system call for your system.
  2182. X * Ignore if your system does not have a getpgrp system call.
  2183. X */
  2184. X/* #define CONF_getpgrp_arg 0 */
  2185. X#define CONF_getpgrp_arg
  2186. X
  2187. X/*
  2188. X * Suitable user for storing aegis' global files.
  2189. X * The group will be derived from the relevant entry in /etc/passwd.
  2190. X *
  2191. X * Do not confuse this with the fact that aegis must be set-uid-root.
  2192. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  2193. X *
  2194. X * This string defines the owner of aegis' global files, so that aegis
  2195. X * may access them when they are on NFS mounted partitions (when root
  2196. X * is mapped to "nobody").
  2197. X */
  2198. X#define AEGIS_USER    "bin"
  2199. X
  2200. X/*
  2201. X * This defines the file creation mask.  See umask(2) for more information.
  2202. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  2203. X * Owner: always has read, write and search/exec.
  2204. X * Group: always has read and search/exec, so that developers can get at the
  2205. X *    baseline.  There is never group write, because then developers
  2206. X *    could trash the baseline, which is counter-productive.
  2207. X * Others: There is never others write, for the same reason as group.
  2208. X *    Others read and search/execute is configurable.
  2209. X *
  2210. X * The permissions mask in binary looks like
  2211. X *    000 010 X1X
  2212. X * where the Xs may be configured.
  2213. X *
  2214. X * Alternatives for default umask are thus
  2215. X *    027    others get nothing
  2216. X *    026    others can execute the results if they know where they are going
  2217. X *    022    others can see and copy and execute anything
  2218. X *    023    don't do this (why is left as an exersize for the reader)
  2219. X *
  2220. X * Projects have a configurable umask, this is just the default.
  2221. X *    See aepattr(1) for more information.
  2222. X */
  2223. X#define DEFAULT_UMASK 026
  2224. X
  2225. X/*
  2226. X * Define this symbol if your system does NOT have the strftime
  2227. X * function mandated by the ANSI C standard.
  2228. X *
  2229. X#define CONF_NO_strftime
  2230. X */
  2231. X
  2232. X/*
  2233. X * Define this symbol if your system does NOT
  2234. X * have the pw_comment field in struct passwd in <pwd.h>
  2235. X *
  2236. X#define CONF_NO_pw_comment
  2237. X */
  2238. X
  2239. X/*
  2240. X * Define this symbol if your system does NOT
  2241. X * have the seteuid system call.
  2242. X *
  2243. X#define CONF_NO_seteuid
  2244. X */
  2245. X
  2246. X/*
  2247. X * Define this symbol to be the pathname of your shell.
  2248. X * Leave it as a Bourne shell whenever possible.
  2249. X * Some systems have different versions of the Bourne shell,
  2250. X * with and without functions; choose the one *with* functions if so.
  2251. X */
  2252. X#define CONF_SHELL "/bin/sh"
  2253. X
  2254. X/*
  2255. X * These symbols define where non-system user IDs start,
  2256. X * and where non-system group IDs start.
  2257. X * This is mostly to ensure that accounts "root" and "bin"
  2258. X * and "uucp" are not project owners.
  2259. X */
  2260. X#define AEGIS_MIN_UID 100
  2261. X#define AEGIS_MIN_GID 10
  2262. X
  2263. X#endif /* CONF_H */
  2264. END_OF_FILE
  2265. if test 4167 -ne `wc -c <'conf/IRIX-4.0'`; then
  2266.     echo shar: \"'conf/IRIX-4.0'\" unpacked with wrong size!
  2267. fi
  2268. # end of 'conf/IRIX-4.0'
  2269. fi
  2270. if test -f 'conf/Linux-0.99' -a "${1}" != "-c" ; then 
  2271.   echo shar: Will not clobber existing file \"'conf/Linux-0.99'\"
  2272. else
  2273. echo shar: Extracting \"'conf/Linux-0.99'\" \(4375 characters\)
  2274. sed "s/^X//" >'conf/Linux-0.99' <<'END_OF_FILE'
  2275. X/*
  2276. X *    aegis - project change supervisor
  2277. X *    Copyright (C) 1993 Peter Miller.
  2278. X *    All rights reserved.
  2279. X *
  2280. X *    This program is free software; you can redistribute it and/or modify
  2281. X *    it under the terms of the GNU General Public License as published by
  2282. X *    the Free Software Foundation; either version 2 of the License, or
  2283. X *    (at your option) any later version.
  2284. X *
  2285. X *    This program is distributed in the hope that it will be useful,
  2286. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2287. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2288. X *    GNU General Public License for more details.
  2289. X *
  2290. X *    You should have received a copy of the GNU General Public License
  2291. X *    along with this program; if not, write to the Free Software
  2292. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  2293. X *
  2294. X * MANIFEST: aegis configuration for Linux 0.99
  2295. X */
  2296. X
  2297. X#ifndef CONF_H
  2298. X#define CONF_H
  2299. X
  2300. X/*
  2301. X * Define this symbol if your system does NOT
  2302. X * have the ANSI C strerror system call, and
  2303. X * does not define strerror in <string.h>.
  2304. X *
  2305. X#define CONF_NO_strerror
  2306. X */
  2307. X
  2308. X/*
  2309. X * Define this symbol if your system does NOT
  2310. X * have the POSIX tcgetpgrp system call.
  2311. X *
  2312. X#define CONF_NO_tcgetpgrp
  2313. X */
  2314. X
  2315. X/*
  2316. X * Define this symbol if your system does NOT
  2317. X * have the stdarg.h include file mandated by ANSI C.
  2318. X *
  2319. X#ifndef __STDC__
  2320. X#define CONF_NO_stdarg
  2321. X#endif
  2322. X */
  2323. X
  2324. X/*
  2325. X * Define one of these symbols to indicate which
  2326. X * universe your UNIX is derived from.
  2327. X * If you have a choice, define both.
  2328. X */
  2329. X#define    BSD
  2330. X#define SYSV
  2331. X
  2332. X/*
  2333. X * Define this symbol as an appropriate arguemnt to
  2334. X * the getpgrp system call for your system.
  2335. X * Ignore if your system does not have a getpgrp system call.
  2336. X */
  2337. X/* #define CONF_getpgrp_arg 0 */
  2338. X#define CONF_getpgrp_arg
  2339. X
  2340. X/*
  2341. X * Suitable user for storing aegis' global files.
  2342. X * The group will be derived from the relevant entry in /etc/passwd.
  2343. X *
  2344. X * Do not confuse this with the fact that aegis must be set-uid-root.
  2345. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  2346. X *
  2347. X * This string defines the owner of aegis' global files, so that aegis
  2348. X * may access them when they are on NFS mounted partitions (when root
  2349. X * is mapped to "nobody").
  2350. X */
  2351. X#define AEGIS_USER    "bin"
  2352. X
  2353. X/*
  2354. X * This defines the file creation mask.  See umask(2) for more information.
  2355. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  2356. X * Owner: always has read, write and search/exec.
  2357. X * Group: always has read and search/exec, so that developers can get at the
  2358. X *    baseline.  There is never group write, because then developers
  2359. X *    could trash the baseline, which is counter-productive.
  2360. X * Others: There is never others write, for the same reason as group.
  2361. X *    Others read and search/execute is configurable.
  2362. X *
  2363. X * The permissions mask in binary looks like
  2364. X *    000 010 X1X
  2365. X * where the Xs may be configured.
  2366. X *
  2367. X * Alternatives for default umask are thus
  2368. X *    027    others get nothing
  2369. X *    026    others can execute the results if they know where they are going
  2370. X *    022    others can see and copy and execute anything
  2371. X *    023    don't do this (why is left as an exersize for the reader)
  2372. X *
  2373. X * Projects have a configurable umask, this is just the default.
  2374. X *    See aepattr(1) for more information.
  2375. X */
  2376. X#define DEFAULT_UMASK 026
  2377. X
  2378. X/*
  2379. X * Define this symbol if your system does NOT have the strftime
  2380. X * function mandated by the ANSI C standard.
  2381. X *
  2382. X#define CONF_NO_strftime
  2383. X */
  2384. X
  2385. X/*
  2386. X * Define this symbol if your system does NOT
  2387. X * have the pw_comment field in struct passwd in <pwd.h>
  2388. X */
  2389. X#define CONF_NO_pw_comment
  2390. X
  2391. X/*
  2392. X * Define this symbol if your system does NOT
  2393. X * have the seteuid system call.
  2394. X * Linux does not, but see CONF_HAS_setreuid, below.
  2395. X *
  2396. X#define CONF_NO_seteuid
  2397. X */
  2398. X
  2399. X/*
  2400. X * Linux does not have seteuid in libc, but it does have setreuid.
  2401. X * The setreuid function can be used to synthesize a seteuid function.
  2402. X */
  2403. X#define CONF_HAS_setreuid
  2404. X
  2405. X/*
  2406. X * Define this symbol to be the pathname of your shell.
  2407. X * Leave it as a Bourne shell whenever possible.
  2408. X * Some systems have different versions of the Bourne shell,
  2409. X * with and without functions; choose the one *with* functions if so.
  2410. X */
  2411. X#define CONF_SHELL "/bin/sh"
  2412. X
  2413. X/*
  2414. X * These symbols define where non-system user IDs start,
  2415. X * and where non-system group IDs start.
  2416. X * This is mostly to ensure that accounts "root" and "bin"
  2417. X * and "uucp" are not project owners.
  2418. X */
  2419. X#define AEGIS_MIN_UID 100
  2420. X#define AEGIS_MIN_GID 10
  2421. X
  2422. X#endif /* CONF_H */
  2423. END_OF_FILE
  2424. if test 4375 -ne `wc -c <'conf/Linux-0.99'`; then
  2425.     echo shar: \"'conf/Linux-0.99'\" unpacked with wrong size!
  2426. fi
  2427. # end of 'conf/Linux-0.99'
  2428. fi
  2429. if test -f 'conf/SCO-2.4' -a "${1}" != "-c" ; then 
  2430.   echo shar: Will not clobber existing file \"'conf/SCO-2.4'\"
  2431. else
  2432. echo shar: Extracting \"'conf/SCO-2.4'\" \(4153 characters\)
  2433. sed "s/^X//" >'conf/SCO-2.4' <<'END_OF_FILE'
  2434. X/*
  2435. X *    aegis - project change supervisor
  2436. X *    Copyright (C) 1993 Peter Miller.
  2437. X *    All rights reserved.
  2438. X *
  2439. X *    This program is free software; you can redistribute it and/or modify
  2440. X *    it under the terms of the GNU General Public License as published by
  2441. X *    the Free Software Foundation; either version 2 of the License, or
  2442. X *    (at your option) any later version.
  2443. X *
  2444. X *    This program is distributed in the hope that it will be useful,
  2445. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2446. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2447. X *    GNU General Public License for more details.
  2448. X *
  2449. X *    You should have received a copy of the GNU General Public License
  2450. X *    along with this program; if not, write to the Free Software
  2451. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  2452. X *
  2453. X * MANIFEST: aegis configuration for SCO 2.4
  2454. X */
  2455. X
  2456. X#ifndef CONF_H
  2457. X#define CONF_H
  2458. X
  2459. X/*
  2460. X * Define this symbol if your system does NOT
  2461. X * have the ANSI C strerror system call, and
  2462. X * does not define strerror in <string.h>.
  2463. X *
  2464. X#define CONF_NO_strerror
  2465. X */
  2466. X
  2467. X/*
  2468. X * Define this symbol if your system does NOT
  2469. X * have the POSIX tcgetpgrp system call.
  2470. X *
  2471. X#define CONF_NO_tcgetpgrp
  2472. X */
  2473. X
  2474. X/*
  2475. X * Define this symbol if your system does NOT
  2476. X * have the stdarg.h include file mandated by ANSI C.
  2477. X */
  2478. X#ifndef __STDC__
  2479. X#define CONF_NO_stdarg
  2480. X#endif
  2481. X
  2482. X/*
  2483. X * Define one of these symbols to indicate which
  2484. X * universe your UNIX is derived from.
  2485. X * If you have a choice, define both.
  2486. X */
  2487. X/* #define BSD */
  2488. X#define SYSV
  2489. X
  2490. X/*
  2491. X * Define this symbol as an appropriate arguemnt to
  2492. X * the getpgrp system call for your system.
  2493. X * Ignore if your system does not have a getpgrp system call.
  2494. X */
  2495. X/* #define CONF_getpgrp_arg 0 */
  2496. X#define CONF_getpgrp_arg
  2497. X
  2498. X/*
  2499. X * Suitable user for storing aegis' global files.
  2500. X * The group will be derived from the relevant entry in /etc/passwd.
  2501. X *
  2502. X * Do not confuse this with the fact that aegis must be set-uid-root.
  2503. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  2504. X *
  2505. X * This string defines the owner of aegis' global files, so that aegis
  2506. X * may access them when they are on NFS mounted partitions (when root
  2507. X * is mapped to "nobody").
  2508. X */
  2509. X#define AEGIS_USER    "bin"
  2510. X
  2511. X/*
  2512. X * This defines the file creation mask.  See umask(2) for more information.
  2513. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  2514. X * Owner: always has read, write and search/exec.
  2515. X * Group: always has read and search/exec, so that developers can get at the
  2516. X *    baseline.  There is never group write, because then developers
  2517. X *    could trash the baseline, which is counter-productive.
  2518. X * Others: There is never others write, for the same reason as group.
  2519. X *    Others read and search/execute is configurable.
  2520. X *
  2521. X * The permissions mask in binary looks like
  2522. X *    000 010 X1X
  2523. X * where the Xs may be configured.
  2524. X *
  2525. X * Alternatives for default umask are thus
  2526. X *    027    others get nothing
  2527. X *    026    others can execute the results if they know where they are going
  2528. X *    022    others can see and copy and execute anything
  2529. X *    023    don't do this (why is left as an exersize for the reader)
  2530. X *
  2531. X * Projects have a configurable umask, this is just the default.
  2532. X *    See aepattr(1) for more information.
  2533. X */
  2534. X#define DEFAULT_UMASK 026
  2535. X
  2536. X/*
  2537. X * Define this symbol if your system does NOT have the strftime
  2538. X * function mandated by the ANSI C standard.
  2539. X *
  2540. X#define CONF_NO_strftime
  2541. X */
  2542. X
  2543. X/*
  2544. X * Define this symbol if your system does NOT
  2545. X * have the pw_comment field in struct passwd in <pwd.h>
  2546. X *
  2547. X#define CONF_NO_pw_comment
  2548. X */
  2549. X
  2550. X/*
  2551. X * Define this symbol if your system does NOT
  2552. X * have the seteuid system call.
  2553. X *
  2554. X#define CONF_NO_seteuid
  2555. X */
  2556. X
  2557. X/*
  2558. X * Define this symbol to be the pathname of your shell.
  2559. X * Leave it as a Bourne shell whenever possible.
  2560. X * Some systems have different versions of the Bourne shell,
  2561. X * with and without functions; choose the one *with* functions if so.
  2562. X */
  2563. X#define CONF_SHELL "/bin/sh"
  2564. X
  2565. X/*
  2566. X * These symbols define where non-system user IDs start,
  2567. X * and where non-system group IDs start.
  2568. X * This is mostly to ensure that accounts "root" and "bin"
  2569. X * and "uucp" are not project owners.
  2570. X */
  2571. X#define AEGIS_MIN_UID 100
  2572. X#define AEGIS_MIN_GID 10
  2573. X
  2574. X#endif /* CONF_H */
  2575. END_OF_FILE
  2576. if test 4153 -ne `wc -c <'conf/SCO-2.4'`; then
  2577.     echo shar: \"'conf/SCO-2.4'\" unpacked with wrong size!
  2578. fi
  2579. # end of 'conf/SCO-2.4'
  2580. fi
  2581. if test -f 'conf/SunOS-4.1.1' -a "${1}" != "-c" ; then 
  2582.   echo shar: Will not clobber existing file \"'conf/SunOS-4.1.1'\"
  2583. else
  2584. echo shar: Extracting \"'conf/SunOS-4.1.1'\" \(4160 characters\)
  2585. sed "s/^X//" >'conf/SunOS-4.1.1' <<'END_OF_FILE'
  2586. X/*
  2587. X *    aegis - project change supervisor
  2588. X *    Copyright (C) 1992, 1993 Peter Miller.
  2589. X *    All rights reserved.
  2590. X *
  2591. X *    This program is free software; you can redistribute it and/or modify
  2592. X *    it under the terms of the GNU General Public License as published by
  2593. X *    the Free Software Foundation; either version 2 of the License, or
  2594. X *    (at your option) any later version.
  2595. X *
  2596. X *    This program is distributed in the hope that it will be useful,
  2597. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2598. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2599. X *    GNU General Public License for more details.
  2600. X *
  2601. X *    You should have received a copy of the GNU General Public License
  2602. X *    along with this program; if not, write to the Free Software
  2603. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  2604. X *
  2605. X * MANIFEST: aegis configuration for SunOS 4.1.1
  2606. X */
  2607. X
  2608. X#ifndef CONF_H
  2609. X#define CONF_H
  2610. X
  2611. X/*
  2612. X * Define this symbol if your system does NOT
  2613. X * have the ANSI C strerror system call, and
  2614. X * does not define strerror in <string.h>.
  2615. X */
  2616. X#define CONF_NO_strerror
  2617. X
  2618. X/*
  2619. X * Define this symbol if your system does NOT
  2620. X * have the POSIX tcgetpgrp system call.
  2621. X *
  2622. X#define CONF_NO_tcgetpgrp
  2623. X */
  2624. X
  2625. X/*
  2626. X * Define this symbol if your system does NOT
  2627. X * have the stdarg.h include file mandated by ANSI C.
  2628. X */
  2629. X#ifndef __STDC__
  2630. X#define CONF_NO_stdarg
  2631. X#endif
  2632. X
  2633. X/*
  2634. X * Define one of these symbols to indicate which
  2635. X * universe your UNIX is derived from.
  2636. X * If you have a choice, define both.
  2637. X */
  2638. X#define    BSD
  2639. X/* #define SYSV */
  2640. X
  2641. X/*
  2642. X * Define this symbol as an appropriate arguemnt to
  2643. X * the getpgrp system call for your system.
  2644. X * Ignore if your system does not have a getpgrp system call.
  2645. X */
  2646. X#define CONF_getpgrp_arg 0
  2647. X/* #define CONF_getpgrp_arg */
  2648. X
  2649. X/*
  2650. X * Suitable user for storing aegis' global files.
  2651. X * The group will be derived from the relevant entry in /etc/passwd.
  2652. X *
  2653. X * Do not confuse this with the fact that aegis must be set-uid-root.
  2654. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  2655. X *
  2656. X * This string defines the owner of aegis' global files, so that aegis
  2657. X * may access them when they are on NFS mounted partitions (when root
  2658. X * is mapped to "nobody").
  2659. X */
  2660. X#define AEGIS_USER    "bin"
  2661. X
  2662. X/*
  2663. X * This defines the file creation mask.  See umask(2) for more information.
  2664. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  2665. X * Owner: always has read, write and search/exec.
  2666. X * Group: always has read and search/exec, so that developers can get at the
  2667. X *    baseline.  There is never group write, because then developers
  2668. X *    could trash the baseline, which is counter-productive.
  2669. X * Others: There is never others write, for the same reason as group.
  2670. X *    Others read and search/execute is configurable.
  2671. X *
  2672. X * The permissions mask in binary looks like
  2673. X *    000 010 X1X
  2674. X * where the Xs may be configured.
  2675. X *
  2676. X * Alternatives for default umask are thus
  2677. X *    027    others get nothing
  2678. X *    026    others can execute the results if they know where they are going
  2679. X *    022    others can see and copy and execute anything
  2680. X *    023    don't do this (why is left as an exersize for the reader)
  2681. X *
  2682. X * Projects have a configurable umask, this is just the default.
  2683. X *    See aepattr(1) for more information.
  2684. X */
  2685. X#define DEFAULT_UMASK 026
  2686. X
  2687. X/*
  2688. X * Define this symbol if your system does NOT have the strftime
  2689. X * function mandated by the ANSI C standard.
  2690. X *
  2691. X#define CONF_NO_strftime
  2692. X */
  2693. X
  2694. X/*
  2695. X * Define this symbol if your system does NOT
  2696. X * have the pw_comment field in struct passwd in <pwd.h>
  2697. X *
  2698. X#define CONF_NO_pw_comment
  2699. X */
  2700. X
  2701. X/*
  2702. X * Define this symbol if your system does NOT
  2703. X * have the seteuid system call.
  2704. X *
  2705. X#define CONF_NO_seteuid
  2706. X */
  2707. X
  2708. X/*
  2709. X * Define this symbol to be the pathname of your shell.
  2710. X * Leave it as a Bourne shell whenever possible.
  2711. X * Some systems have different versions of the Bourne shell,
  2712. X * with and without functions; choose the one *with* functions if so.
  2713. X */
  2714. X#define CONF_SHELL "/bin/sh"
  2715. X
  2716. X/*
  2717. X * These symbols define where non-system user IDs start,
  2718. X * and where non-system group IDs start.
  2719. X * This is mostly to ensure that accounts "root" and "bin"
  2720. X * and "uucp" are not project owners.
  2721. X */
  2722. X#define AEGIS_MIN_UID 100
  2723. X#define AEGIS_MIN_GID 10
  2724. X
  2725. X#endif /* CONF_H */
  2726. END_OF_FILE
  2727. if test 4160 -ne `wc -c <'conf/SunOS-4.1.1'`; then
  2728.     echo shar: \"'conf/SunOS-4.1.1'\" unpacked with wrong size!
  2729. fi
  2730. # end of 'conf/SunOS-4.1.1'
  2731. fi
  2732. if test -f 'conf/SunOS-4.1.2' -a "${1}" != "-c" ; then 
  2733.   echo shar: Will not clobber existing file \"'conf/SunOS-4.1.2'\"
  2734. else
  2735. echo shar: Extracting \"'conf/SunOS-4.1.2'\" \(4160 characters\)
  2736. sed "s/^X//" >'conf/SunOS-4.1.2' <<'END_OF_FILE'
  2737. X/*
  2738. X *    aegis - project change supervisor
  2739. X *    Copyright (C) 1992, 1993 Peter Miller.
  2740. X *    All rights reserved.
  2741. X *
  2742. X *    This program is free software; you can redistribute it and/or modify
  2743. X *    it under the terms of the GNU General Public License as published by
  2744. X *    the Free Software Foundation; either version 2 of the License, or
  2745. X *    (at your option) any later version.
  2746. X *
  2747. X *    This program is distributed in the hope that it will be useful,
  2748. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2749. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2750. X *    GNU General Public License for more details.
  2751. X *
  2752. X *    You should have received a copy of the GNU General Public License
  2753. X *    along with this program; if not, write to the Free Software
  2754. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  2755. X *
  2756. X * MANIFEST: aegis configuration for SunOS 4.1.2
  2757. X */
  2758. X
  2759. X#ifndef CONF_H
  2760. X#define CONF_H
  2761. X
  2762. X/*
  2763. X * Define this symbol if your system does NOT
  2764. X * have the ANSI C strerror system call, and
  2765. X * does not define strerror in <string.h>.
  2766. X */
  2767. X#define CONF_NO_strerror
  2768. X
  2769. X/*
  2770. X * Define this symbol if your system does NOT
  2771. X * have the POSIX tcgetpgrp system call.
  2772. X *
  2773. X#define CONF_NO_tcgetpgrp
  2774. X */
  2775. X
  2776. X/*
  2777. X * Define this symbol if your system does NOT
  2778. X * have the stdarg.h include file mandated by ANSI C.
  2779. X */
  2780. X#ifndef __STDC__
  2781. X#define CONF_NO_stdarg
  2782. X#endif
  2783. X
  2784. X/*
  2785. X * Define one of these symbols to indicate which
  2786. X * universe your UNIX is derived from.
  2787. X * If you have a choice, define both.
  2788. X */
  2789. X#define    BSD
  2790. X/* #define SYSV */
  2791. X
  2792. X/*
  2793. X * Define this symbol as an appropriate arguemnt to
  2794. X * the getpgrp system call for your system.
  2795. X * Ignore if your system does not have a getpgrp system call.
  2796. X */
  2797. X#define CONF_getpgrp_arg 0
  2798. X/* #define CONF_getpgrp_arg */
  2799. X
  2800. X/*
  2801. X * Suitable user for storing aegis' global files.
  2802. X * The group will be derived from the relevant entry in /etc/passwd.
  2803. X *
  2804. X * Do not confuse this with the fact that aegis must be set-uid-root.
  2805. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  2806. X *
  2807. X * This string defines the owner of aegis' global files, so that aegis
  2808. X * may access them when they are on NFS mounted partitions (when root
  2809. X * is mapped to "nobody").
  2810. X */
  2811. X#define AEGIS_USER    "bin"
  2812. X
  2813. X/*
  2814. X * This defines the file creation mask.  See umask(2) for more information.
  2815. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  2816. X * Owner: always has read, write and search/exec.
  2817. X * Group: always has read and search/exec, so that developers can get at the
  2818. X *    baseline.  There is never group write, because then developers
  2819. X *    could trash the baseline, which is counter-productive.
  2820. X * Others: There is never others write, for the same reason as group.
  2821. X *    Others read and search/execute is configurable.
  2822. X *
  2823. X * The permissions mask in binary looks like
  2824. X *    000 010 X1X
  2825. X * where the Xs may be configured.
  2826. X *
  2827. X * Alternatives for default umask are thus
  2828. X *    027    others get nothing
  2829. X *    026    others can execute the results if they know where they are going
  2830. X *    022    others can see and copy and execute anything
  2831. X *    023    don't do this (why is left as an exersize for the reader)
  2832. X *
  2833. X * Projects have a configurable umask, this is just the default.
  2834. X *    See aepattr(1) for more information.
  2835. X */
  2836. X#define DEFAULT_UMASK 026
  2837. X
  2838. X/*
  2839. X * Define this symbol if your system does NOT have the strftime
  2840. X * function mandated by the ANSI C standard.
  2841. X *
  2842. X#define CONF_NO_strftime
  2843. X */
  2844. X
  2845. X/*
  2846. X * Define this symbol if your system does NOT
  2847. X * have the pw_comment field in struct passwd in <pwd.h>
  2848. X *
  2849. X#define CONF_NO_pw_comment
  2850. X */
  2851. X
  2852. X/*
  2853. X * Define this symbol if your system does NOT
  2854. X * have the seteuid system call.
  2855. X *
  2856. X#define CONF_NO_seteuid
  2857. X */
  2858. X
  2859. X/*
  2860. X * Define this symbol to be the pathname of your shell.
  2861. X * Leave it as a Bourne shell whenever possible.
  2862. X * Some systems have different versions of the Bourne shell,
  2863. X * with and without functions; choose the one *with* functions if so.
  2864. X */
  2865. X#define CONF_SHELL "/bin/sh"
  2866. X
  2867. X/*
  2868. X * These symbols define where non-system user IDs start,
  2869. X * and where non-system group IDs start.
  2870. X * This is mostly to ensure that accounts "root" and "bin"
  2871. X * and "uucp" are not project owners.
  2872. X */
  2873. X#define AEGIS_MIN_UID 100
  2874. X#define AEGIS_MIN_GID 10
  2875. X
  2876. X#endif /* CONF_H */
  2877. END_OF_FILE
  2878. if test 4160 -ne `wc -c <'conf/SunOS-4.1.2'`; then
  2879.     echo shar: \"'conf/SunOS-4.1.2'\" unpacked with wrong size!
  2880. fi
  2881. # end of 'conf/SunOS-4.1.2'
  2882. fi
  2883. if test -f 'conf/SunOS-4.1.3' -a "${1}" != "-c" ; then 
  2884.   echo shar: Will not clobber existing file \"'conf/SunOS-4.1.3'\"
  2885. else
  2886. echo shar: Extracting \"'conf/SunOS-4.1.3'\" \(4160 characters\)
  2887. sed "s/^X//" >'conf/SunOS-4.1.3' <<'END_OF_FILE'
  2888. X/*
  2889. X *    aegis - project change supervisor
  2890. X *    Copyright (C) 1992, 1993 Peter Miller.
  2891. X *    All rights reserved.
  2892. X *
  2893. X *    This program is free software; you can redistribute it and/or modify
  2894. X *    it under the terms of the GNU General Public License as published by
  2895. X *    the Free Software Foundation; either version 2 of the License, or
  2896. X *    (at your option) any later version.
  2897. X *
  2898. X *    This program is distributed in the hope that it will be useful,
  2899. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2900. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2901. X *    GNU General Public License for more details.
  2902. X *
  2903. X *    You should have received a copy of the GNU General Public License
  2904. X *    along with this program; if not, write to the Free Software
  2905. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  2906. X *
  2907. X * MANIFEST: aegis configuration for SunOS 4.1.3
  2908. X */
  2909. X
  2910. X#ifndef CONF_H
  2911. X#define CONF_H
  2912. X
  2913. X/*
  2914. X * Define this symbol if your system does NOT
  2915. X * have the ANSI C strerror system call, and
  2916. X * does not define strerror in <string.h>.
  2917. X */
  2918. X#define CONF_NO_strerror
  2919. X
  2920. X/*
  2921. X * Define this symbol if your system does NOT
  2922. X * have the POSIX tcgetpgrp system call.
  2923. X *
  2924. X#define CONF_NO_tcgetpgrp
  2925. X */
  2926. X
  2927. X/*
  2928. X * Define this symbol if your system does NOT
  2929. X * have the stdarg.h include file mandated by ANSI C.
  2930. X */
  2931. X#ifndef __STDC__
  2932. X#define CONF_NO_stdarg
  2933. X#endif
  2934. X
  2935. X/*
  2936. X * Define one of these symbols to indicate which
  2937. X * universe your UNIX is derived from.
  2938. X * If you have a choice, define both.
  2939. X */
  2940. X#define    BSD
  2941. X/* #define SYSV */
  2942. X
  2943. X/*
  2944. X * Define this symbol as an appropriate arguemnt to
  2945. X * the getpgrp system call for your system.
  2946. X * Ignore if your system does not have a getpgrp system call.
  2947. X */
  2948. X#define CONF_getpgrp_arg 0
  2949. X/* #define CONF_getpgrp_arg */
  2950. X
  2951. X/*
  2952. X * Suitable user for storing aegis' global files.
  2953. X * The group will be derived from the relevant entry in /etc/passwd.
  2954. X *
  2955. X * Do not confuse this with the fact that aegis must be set-uid-root.
  2956. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  2957. X *
  2958. X * This string defines the owner of aegis' global files, so that aegis
  2959. X * may access them when they are on NFS mounted partitions (when root
  2960. X * is mapped to "nobody").
  2961. X */
  2962. X#define AEGIS_USER    "bin"
  2963. X
  2964. X/*
  2965. X * This defines the file creation mask.  See umask(2) for more information.
  2966. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  2967. X * Owner: always has read, write and search/exec.
  2968. X * Group: always has read and search/exec, so that developers can get at the
  2969. X *    baseline.  There is never group write, because then developers
  2970. X *    could trash the baseline, which is counter-productive.
  2971. X * Others: There is never others write, for the same reason as group.
  2972. X *    Others read and search/execute is configurable.
  2973. X *
  2974. X * The permissions mask in binary looks like
  2975. X *    000 010 X1X
  2976. X * where the Xs may be configured.
  2977. X *
  2978. X * Alternatives for default umask are thus
  2979. X *    027    others get nothing
  2980. X *    026    others can execute the results if they know where they are going
  2981. X *    022    others can see and copy and execute anything
  2982. X *    023    don't do this (why is left as an exersize for the reader)
  2983. X *
  2984. X * Projects have a configurable umask, this is just the default.
  2985. X *    See aepattr(1) for more information.
  2986. X */
  2987. X#define DEFAULT_UMASK 026
  2988. X
  2989. X/*
  2990. X * Define this symbol if your system does NOT have the strftime
  2991. X * function mandated by the ANSI C standard.
  2992. X *
  2993. X#define CONF_NO_strftime
  2994. X */
  2995. X
  2996. X/*
  2997. X * Define this symbol if your system does NOT
  2998. X * have the pw_comment field in struct passwd in <pwd.h>
  2999. X *
  3000. X#define CONF_NO_pw_comment
  3001. X */
  3002. X
  3003. X/*
  3004. X * Define this symbol if your system does NOT
  3005. X * have the seteuid system call.
  3006. X *
  3007. X#define CONF_NO_seteuid
  3008. X */
  3009. X
  3010. X/*
  3011. X * Define this symbol to be the pathname of your shell.
  3012. X * Leave it as a Bourne shell whenever possible.
  3013. X * Some systems have different versions of the Bourne shell,
  3014. X * with and without functions; choose the one *with* functions if so.
  3015. X */
  3016. X#define CONF_SHELL "/bin/sh"
  3017. X
  3018. X/*
  3019. X * These symbols define where non-system user IDs start,
  3020. X * and where non-system group IDs start.
  3021. X * This is mostly to ensure that accounts "root" and "bin"
  3022. X * and "uucp" are not project owners.
  3023. X */
  3024. X#define AEGIS_MIN_UID 100
  3025. X#define AEGIS_MIN_GID 10
  3026. X
  3027. X#endif /* CONF_H */
  3028. END_OF_FILE
  3029. if test 4160 -ne `wc -c <'conf/SunOS-4.1.3'`; then
  3030.     echo shar: \"'conf/SunOS-4.1.3'\" unpacked with wrong size!
  3031. fi
  3032. # end of 'conf/SunOS-4.1.3'
  3033. fi
  3034. if test -f 'conf/SunOS-5.1' -a "${1}" != "-c" ; then 
  3035.   echo shar: Will not clobber existing file \"'conf/SunOS-5.1'\"
  3036. else
  3037. echo shar: Extracting \"'conf/SunOS-5.1'\" \(4166 characters\)
  3038. sed "s/^X//" >'conf/SunOS-5.1' <<'END_OF_FILE'
  3039. X/*
  3040. X *    aegis - project change supervisor
  3041. X *    Copyright (C) 1993 Peter Miller.
  3042. X *    All rights reserved.
  3043. X *
  3044. X *    This program is free software; you can redistribute it and/or modify
  3045. X *    it under the terms of the GNU General Public License as published by
  3046. X *    the Free Software Foundation; either version 2 of the License, or
  3047. X *    (at your option) any later version.
  3048. X *
  3049. X *    This program is distributed in the hope that it will be useful,
  3050. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3051. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  3052. X *    GNU General Public License for more details.
  3053. X *
  3054. X *    You should have received a copy of the GNU General Public License
  3055. X *    along with this program; if not, write to the Free Software
  3056. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  3057. X *
  3058. X * MANIFEST: aegis configuration for SunOS 5.1 (Solaris 2.1)
  3059. X */
  3060. X
  3061. X#ifndef CONF_H
  3062. X#define CONF_H
  3063. X
  3064. X/*
  3065. X * Define this symbol if your system does NOT
  3066. X * have the ANSI C strerror system call, and
  3067. X * does not define strerror in <string.h>.
  3068. X */
  3069. X#define CONF_NO_strerror
  3070. X
  3071. X/*
  3072. X * Define this symbol if your system does NOT
  3073. X * have the POSIX tcgetpgrp system call.
  3074. X *
  3075. X#define CONF_NO_tcgetpgrp
  3076. X */
  3077. X
  3078. X/*
  3079. X * Define this symbol if your system does NOT
  3080. X * have the stdarg.h include file mandated by ANSI C.
  3081. X */
  3082. X#ifndef __STDC__
  3083. X#define CONF_NO_stdarg
  3084. X#endif
  3085. X
  3086. X/*
  3087. X * Define one of these symbols to indicate which
  3088. X * universe your UNIX is derived from.
  3089. X * If you have a choice, define both.
  3090. X */
  3091. X#define    BSD
  3092. X/* #define SYSV */
  3093. X
  3094. X/*
  3095. X * Define this symbol as an appropriate arguemnt to
  3096. X * the getpgrp system call for your system.
  3097. X * Ignore if your system does not have a getpgrp system call.
  3098. X */
  3099. X#define CONF_getpgrp_arg 0
  3100. X/* #define CONF_getpgrp_arg */
  3101. X
  3102. X/*
  3103. X * Suitable user for storing aegis' global files.
  3104. X * The group will be derived from the relevant entry in /etc/passwd.
  3105. X *
  3106. X * Do not confuse this with the fact that aegis must be set-uid-root.
  3107. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  3108. X *
  3109. X * This string defines the owner of aegis' global files, so that aegis
  3110. X * may access them when they are on NFS mounted partitions (when root
  3111. X * is mapped to "nobody").
  3112. X */
  3113. X#define AEGIS_USER    "bin"
  3114. X
  3115. X/*
  3116. X * This defines the file creation mask.  See umask(2) for more information.
  3117. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  3118. X * Owner: always has read, write and search/exec.
  3119. X * Group: always has read and search/exec, so that developers can get at the
  3120. X *    baseline.  There is never group write, because then developers
  3121. X *    could trash the baseline, which is counter-productive.
  3122. X * Others: There is never others write, for the same reason as group.
  3123. X *    Others read and search/execute is configurable.
  3124. X *
  3125. X * The permissions mask in binary looks like
  3126. X *    000 010 X1X
  3127. X * where the Xs may be configured.
  3128. X *
  3129. X * Alternatives for default umask are thus
  3130. X *    027    others get nothing
  3131. X *    026    others can execute the results if they know where they are going
  3132. X *    022    others can see and copy and execute anything
  3133. X *    023    don't do this (why is left as an exersize for the reader)
  3134. X *
  3135. X * Projects have a configurable umask, this is just the default.
  3136. X *    See aepattr(1) for more information.
  3137. X */
  3138. X#define DEFAULT_UMASK 026
  3139. X
  3140. X/*
  3141. X * Define this symbol if your system does NOT have the strftime
  3142. X * function mandated by the ANSI C standard.
  3143. X *
  3144. X#define CONF_NO_strftime
  3145. X */
  3146. X
  3147. X/*
  3148. X * Define this symbol if your system does NOT
  3149. X * have the pw_comment field in struct passwd in <pwd.h>
  3150. X *
  3151. X#define CONF_NO_pw_comment
  3152. X */
  3153. X
  3154. X/*
  3155. X * Define this symbol if your system does NOT
  3156. X * have the seteuid system call.
  3157. X *
  3158. X#define CONF_NO_seteuid
  3159. X */
  3160. X
  3161. X/*
  3162. X * Define this symbol to be the pathname of your shell.
  3163. X * Leave it as a Bourne shell whenever possible.
  3164. X * Some systems have different versions of the Bourne shell,
  3165. X * with and without functions; choose the one *with* functions if so.
  3166. X */
  3167. X#define CONF_SHELL "/bin/sh"
  3168. X
  3169. X/*
  3170. X * These symbols define where non-system user IDs start,
  3171. X * and where non-system group IDs start.
  3172. X * This is mostly to ensure that accounts "root" and "bin"
  3173. X * and "uucp" are not project owners.
  3174. X */
  3175. X#define AEGIS_MIN_UID 100
  3176. X#define AEGIS_MIN_GID 10
  3177. X
  3178. X#endif /* CONF_H */
  3179. END_OF_FILE
  3180. if test 4166 -ne `wc -c <'conf/SunOS-5.1'`; then
  3181.     echo shar: \"'conf/SunOS-5.1'\" unpacked with wrong size!
  3182. fi
  3183. # end of 'conf/SunOS-5.1'
  3184. fi
  3185. if test -f 'conf/SysV-4.0' -a "${1}" != "-c" ; then 
  3186.   echo shar: Will not clobber existing file \"'conf/SysV-4.0'\"
  3187. else
  3188. echo shar: Extracting \"'conf/SysV-4.0'\" \(4165 characters\)
  3189. sed "s/^X//" >'conf/SysV-4.0' <<'END_OF_FILE'
  3190. X/*
  3191. X *    aegis - project change supervisor
  3192. X *    Copyright (C) 1992, 1993 Peter Miller.
  3193. X *    All rights reserved.
  3194. X *
  3195. X *    This program is free software; you can redistribute it and/or modify
  3196. X *    it under the terms of the GNU General Public License as published by
  3197. X *    the Free Software Foundation; either version 2 of the License, or
  3198. X *    (at your option) any later version.
  3199. X *
  3200. X *    This program is distributed in the hope that it will be useful,
  3201. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3202. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  3203. X *    GNU General Public License for more details.
  3204. X *
  3205. X *    You should have received a copy of the GNU General Public License
  3206. X *    along with this program; if not, write to the Free Software
  3207. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  3208. X *
  3209. X * MANIFEST: aegis configuration for generic SVR4 system
  3210. X */
  3211. X
  3212. X#ifndef CONF_H
  3213. X#define CONF_H
  3214. X
  3215. X/*
  3216. X * Define this symbol if your system does NOT
  3217. X * have the ANSI C strerror system call, and
  3218. X * does not define strerror in <string.h>.
  3219. X */
  3220. X#define CONF_NO_strerror
  3221. X
  3222. X/*
  3223. X * Define this symbol if your system does NOT
  3224. X * have the POSIX tcgetpgrp system call.
  3225. X */
  3226. X#define CONF_NO_tcgetpgrp
  3227. X
  3228. X/*
  3229. X * Define this symbol if your system does NOT
  3230. X * have the stdarg.h include file mandated by ANSI C.
  3231. X */
  3232. X#ifndef __STDC__
  3233. X#define CONF_NO_stdarg
  3234. X#endif
  3235. X
  3236. X/*
  3237. X * Define one of these symbols to indicate which
  3238. X * universe your UNIX is derived from.
  3239. X * If you have a choice, define both.
  3240. X */
  3241. X/* #define BSD */
  3242. X#define SYSV
  3243. X
  3244. X/*
  3245. X * Define this symbol as an appropriate arguemnt to
  3246. X * the getpgrp system call for your system.
  3247. X * Ignore if your system does not have a getpgrp system call.
  3248. X */
  3249. X/* #define CONF_getpgrp_arg 0 */
  3250. X#define CONF_getpgrp_arg
  3251. X
  3252. X/*
  3253. X * Suitable user for storing aegis' global files.
  3254. X * The group will be derived from the relevant entry in /etc/passwd.
  3255. X *
  3256. X * Do not confuse this with the fact that aegis must be set-uid-root.
  3257. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  3258. X *
  3259. X * This string defines the owner of aegis' global files, so that aegis
  3260. X * may access them when they are on NFS mounted partitions (when root
  3261. X * is mapped to "nobody").
  3262. X */
  3263. X#define AEGIS_USER    "bin"
  3264. X
  3265. X/*
  3266. X * This defines the file creation mask.  See umask(2) for more information.
  3267. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  3268. X * Owner: always has read, write and search/exec.
  3269. X * Group: always has read and search/exec, so that developers can get at the
  3270. X *    baseline.  There is never group write, because then developers
  3271. X *    could trash the baseline, which is counter-productive.
  3272. X * Others: There is never others write, for the same reason as group.
  3273. X *    Others read and search/execute is configurable.
  3274. X *
  3275. X * The permissions mask in binary looks like
  3276. X *    000 010 X1X
  3277. X * where the Xs may be configured.
  3278. X *
  3279. X * Alternatives for default umask are thus
  3280. X *    027    others get nothing
  3281. X *    026    others can execute the results if they know where they are going
  3282. X *    022    others can see and copy and execute anything
  3283. X *    023    don't do this (why is left as an exersize for the reader)
  3284. X *
  3285. X * Projects have a configurable umask, this is just the default.
  3286. X *    See aepattr(1) for more information.
  3287. X */
  3288. X#define DEFAULT_UMASK 026
  3289. X
  3290. X/*
  3291. X * Define this symbol if your system does NOT have the strftime
  3292. X * function mandated by the ANSI C standard.
  3293. X *
  3294. X#define CONF_NO_strftime
  3295. X */
  3296. X
  3297. X/*
  3298. X * Define this symbol if your system does NOT
  3299. X * have the pw_comment field in struct passwd in <pwd.h>
  3300. X *
  3301. X#define CONF_NO_pw_comment
  3302. X */
  3303. X
  3304. X/*
  3305. X * Define this symbol if your system does NOT
  3306. X * have the seteuid system call.
  3307. X *
  3308. X#define CONF_NO_seteuid
  3309. X */
  3310. X
  3311. X/*
  3312. X * Define this symbol to be the pathname of your shell.
  3313. X * Leave it as a Bourne shell whenever possible.
  3314. X * Some systems have different versions of the Bourne shell,
  3315. X * with and without functions; choose the one *with* functions if so.
  3316. X */
  3317. X#define CONF_SHELL "/bin/sh"
  3318. X
  3319. X/*
  3320. X * These symbols define where non-system user IDs start,
  3321. X * and where non-system group IDs start.
  3322. X * This is mostly to ensure that accounts "root" and "bin"
  3323. X * and "uucp" are not project owners.
  3324. X */
  3325. X#define AEGIS_MIN_UID 100
  3326. X#define AEGIS_MIN_GID 10
  3327. X
  3328. X#endif /* CONF_H */
  3329. END_OF_FILE
  3330. if test 4165 -ne `wc -c <'conf/SysV-4.0'`; then
  3331.     echo shar: \"'conf/SysV-4.0'\" unpacked with wrong size!
  3332. fi
  3333. # end of 'conf/SysV-4.0'
  3334. fi
  3335. if test -f 'conf/ULTRIX-4.2' -a "${1}" != "-c" ; then 
  3336.   echo shar: Will not clobber existing file \"'conf/ULTRIX-4.2'\"
  3337. else
  3338. echo shar: Extracting \"'conf/ULTRIX-4.2'\" \(4141 characters\)
  3339. sed "s/^X//" >'conf/ULTRIX-4.2' <<'END_OF_FILE'
  3340. X/*
  3341. X *    aegis - project change supervisor
  3342. X *    Copyright (C) 1993 Peter Miller.
  3343. X *    All rights reserved.
  3344. X *
  3345. X *    This program is free software; you can redistribute it and/or modify
  3346. X *    it under the terms of the GNU General Public License as published by
  3347. X *    the Free Software Foundation; either version 2 of the License, or
  3348. X *    (at your option) any later version.
  3349. X *
  3350. X *    This program is distributed in the hope that it will be useful,
  3351. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3352. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  3353. X *    GNU General Public License for more details.
  3354. X *
  3355. X *    You should have received a copy of the GNU General Public License
  3356. X *    along with this program; if not, write to the Free Software
  3357. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  3358. X *
  3359. X * MANIFEST: aegis configuration for ULTRIX version 4.2
  3360. X */
  3361. X
  3362. X#ifndef CONF_H
  3363. X#define CONF_H
  3364. X
  3365. X/*
  3366. X * Define this symbol if your system does NOT
  3367. X * have the ANSI C strerror system call, and
  3368. X * does not define strerror in <string.h>.
  3369. X *
  3370. X#define CONF_NO_strerror
  3371. X */
  3372. X
  3373. X/*
  3374. X * Define this symbol if your system does NOT
  3375. X * have the POSIX tcgetpgrp system call.
  3376. X *
  3377. X#define CONF_NO_tcgetpgrp
  3378. X */
  3379. X
  3380. X/*
  3381. X * Define this symbol if your system does NOT
  3382. X * have the stdarg.h include file mandated by ANSI C.
  3383. X */
  3384. X#define CONF_NO_stdarg
  3385. X
  3386. X/*
  3387. X * Define one of these symbols to indicate which
  3388. X * universe your UNIX is derived from.
  3389. X * If you have a choice, define both.
  3390. X */
  3391. X/* #define BSD */
  3392. X#define SYSV
  3393. X
  3394. X/*
  3395. X * Define this symbol as an appropriate arguemnt to
  3396. X * the getpgrp system call for your system.
  3397. X * Ignore if your system does not have a getpgrp system call.
  3398. X */
  3399. X/* #define CONF_getpgrp_arg 0 */
  3400. X#define CONF_getpgrp_arg
  3401. X
  3402. X/*
  3403. X * Suitable user for storing aegis' global files.
  3404. X * The group will be derived from the relevant entry in /etc/passwd.
  3405. X *
  3406. X * Do not confuse this with the fact that aegis must be set-uid-root.
  3407. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  3408. X *
  3409. X * This string defines the owner of aegis' global files, so that aegis
  3410. X * may access them when they are on NFS mounted partitions (when root
  3411. X * is mapped to "nobody").
  3412. X */
  3413. X#define AEGIS_USER    "bin"
  3414. X
  3415. X/*
  3416. X * This defines the file creation mask.  See umask(2) for more information.
  3417. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  3418. X * Owner: always has read, write and search/exec.
  3419. X * Group: always has read and search/exec, so that developers can get at the
  3420. X *    baseline.  There is never group write, because then developers
  3421. X *    could trash the baseline, which is counter-productive.
  3422. X * Others: There is never others write, for the same reason as group.
  3423. X *    Others read and search/execute is configurable.
  3424. X *
  3425. X * The permissions mask in binary looks like
  3426. X *    000 010 X1X
  3427. X * where the Xs may be configured.
  3428. X *
  3429. X * Alternatives for default umask are thus
  3430. X *    027    others get nothing
  3431. X *    026    others can execute the results if they know where they are going
  3432. X *    022    others can see and copy and execute anything
  3433. X *    023    don't do this (why is left as an exersize for the reader)
  3434. X *
  3435. X * Projects have a configurable umask, this is just the default.
  3436. X *    See aepattr(1) for more information.
  3437. X */
  3438. X#define DEFAULT_UMASK 026
  3439. X
  3440. X/*
  3441. X * Define this symbol if your system does NOT have the strftime
  3442. X * function mandated by the ANSI C standard.
  3443. X *
  3444. X#define CONF_NO_strftime
  3445. X */
  3446. X
  3447. X/*
  3448. X * Define this symbol if your system does NOT
  3449. X * have the pw_comment field in struct passwd in <pwd.h>
  3450. X *
  3451. X#define CONF_NO_pw_comment
  3452. X */
  3453. X
  3454. X/*
  3455. X * Define this symbol if your system does NOT
  3456. X * have the seteuid system call.
  3457. X *
  3458. X#define CONF_NO_seteuid
  3459. X */
  3460. X
  3461. X/*
  3462. X * Define this symbol to be the pathname of your shell.
  3463. X * Leave it as a Bourne shell whenever possible.
  3464. X * Some systems have different versions of the Bourne shell,
  3465. X * with and without functions; choose the one *with* functions if so.
  3466. X */
  3467. X#define CONF_SHELL "/bin/sh5"
  3468. X
  3469. X/*
  3470. X * These symbols define where non-system user IDs start,
  3471. X * and where non-system group IDs start.
  3472. X * This is mostly to ensure that accounts "root" and "bin"
  3473. X * and "uucp" are not project owners.
  3474. X */
  3475. X#define AEGIS_MIN_UID 100
  3476. X#define AEGIS_MIN_GID 10
  3477. X
  3478. X#endif /* CONF_H */
  3479. END_OF_FILE
  3480. if test 4141 -ne `wc -c <'conf/ULTRIX-4.2'`; then
  3481.     echo shar: \"'conf/ULTRIX-4.2'\" unpacked with wrong size!
  3482. fi
  3483. # end of 'conf/ULTRIX-4.2'
  3484. fi
  3485. if test -f 'conf/apollo' -a "${1}" != "-c" ; then 
  3486.   echo shar: Will not clobber existing file \"'conf/apollo'\"
  3487. else
  3488. echo shar: Extracting \"'conf/apollo'\" \(4235 characters\)
  3489. sed "s/^X//" >'conf/apollo' <<'END_OF_FILE'
  3490. X/*
  3491. X *    aegis - project change supervisor
  3492. X *    Copyright (C) 1993 Peter Miller.
  3493. X *    All rights reserved.
  3494. X *
  3495. X *    This program is free software; you can redistribute it and/or modify
  3496. X *    it under the terms of the GNU General Public License as published by
  3497. X *    the Free Software Foundation; either version 2 of the License, or
  3498. X *    (at your option) any later version.
  3499. X *
  3500. X *    This program is distributed in the hope that it will be useful,
  3501. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3502. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  3503. X *    GNU General Public License for more details.
  3504. X *
  3505. X *    You should have received a copy of the GNU General Public License
  3506. X *    along with this program; if not, write to the Free Software
  3507. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  3508. X *
  3509. X * MANIFEST: aegis configuration for apollo domain
  3510. X *
  3511. X * Aegis is not known to work on apollos, but then
  3512. X * aegis isn't know not to work on apollos, either...
  3513. X */
  3514. X
  3515. X#ifndef CONF_H
  3516. X#define CONF_H
  3517. X
  3518. X/*
  3519. X * Define this symbol if your system does NOT
  3520. X * have the ANSI C strerror system call, and
  3521. X * does not define strerror in <string.h>.
  3522. X */
  3523. X#define CONF_NO_strerror
  3524. X
  3525. X/*
  3526. X * Define this symbol if your system does NOT
  3527. X * have the POSIX tcgetpgrp system call.
  3528. X */
  3529. X#define CONF_NO_tcgetpgrp
  3530. X
  3531. X/*
  3532. X * Define this symbol if your system does NOT
  3533. X * have the stdarg.h include file mandated by ANSI C.
  3534. X */
  3535. X#define CONF_NO_stdarg
  3536. X
  3537. X/*
  3538. X * Define one of these symbols to indicate which
  3539. X * universe your UNIX is derived from.
  3540. X * If you have a choice, define both.
  3541. X */
  3542. X/* #define BSD */
  3543. X#define SYSV
  3544. X
  3545. X/*
  3546. X * Define this symbol as an appropriate arguemnt to
  3547. X * the getpgrp system call for your system.
  3548. X * Ignore if your system does not have a getpgrp system call.
  3549. X */
  3550. X/* #define CONF_getpgrp_arg 0 */
  3551. X#define CONF_getpgrp_arg
  3552. X
  3553. X/*
  3554. X * Suitable user for storing aegis' global files.
  3555. X * The group will be derived from the relevant entry in /etc/passwd.
  3556. X *
  3557. X * Do not confuse this with the fact that aegis must be set-uid-root.
  3558. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  3559. X *
  3560. X * This string defines the owner of aegis' global files, so that aegis
  3561. X * may access them when they are on NFS mounted partitions (when root
  3562. X * is mapped to "nobody").
  3563. X */
  3564. X#define AEGIS_USER    "bin"
  3565. X
  3566. X/*
  3567. X * This defines the file creation mask.  See umask(2) for more information.
  3568. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  3569. X * Owner: always has read, write and search/exec.
  3570. X * Group: always has read and search/exec, so that developers can get at the
  3571. X *    baseline.  There is never group write, because then developers
  3572. X *    could trash the baseline, which is counter-productive.
  3573. X * Others: There is never others write, for the same reason as group.
  3574. X *    Others read and search/execute is configurable.
  3575. X *
  3576. X * The permissions mask in binary looks like
  3577. X *    000 010 X1X
  3578. X * where the Xs may be configured.
  3579. X *
  3580. X * Alternatives for default umask are thus
  3581. X *    027    others get nothing
  3582. X *    026    others can execute the results if they know where they are going
  3583. X *    022    others can see and copy and execute anything
  3584. X *    023    don't do this (why is left as an exersize for the reader)
  3585. X *
  3586. X * Projects have a configurable umask, this is just the default.
  3587. X *    See aepattr(1) for more information.
  3588. X */
  3589. X#define DEFAULT_UMASK 026
  3590. X
  3591. X/*
  3592. X * Define this symbol if your system does NOT have the strftime
  3593. X * function mandated by the ANSI C standard.
  3594. X */
  3595. X#define CONF_NO_strftime
  3596. X
  3597. X/*
  3598. X * Define this symbol if your system does NOT
  3599. X * have the pw_comment field in struct passwd in <pwd.h>
  3600. X *
  3601. X#define CONF_NO_pw_comment
  3602. X */
  3603. X
  3604. X/*
  3605. X * Define this symbol if your system does NOT
  3606. X * have the seteuid system call.
  3607. X *
  3608. X#define CONF_NO_seteuid
  3609. X */
  3610. X
  3611. X/*
  3612. X * Define this symbol to be the pathname of your shell.
  3613. X * Leave it as a Bourne shell whenever possible.
  3614. X * Some systems have different versions of the Bourne shell,
  3615. X * with and without functions; choose the one *with* functions if so.
  3616. X */
  3617. X#define CONF_SHELL "/bin/ksh"
  3618. X
  3619. X/*
  3620. X * These symbols define where non-system user IDs start,
  3621. X * and where non-system group IDs start.
  3622. X * This is mostly to ensure that accounts "root" and "bin"
  3623. X * and "uucp" are not project owners.
  3624. X */
  3625. X#define AEGIS_MIN_UID 100
  3626. X#define AEGIS_MIN_GID 10
  3627. X
  3628. X#endif /* CONF_H */
  3629. END_OF_FILE
  3630. if test 4235 -ne `wc -c <'conf/apollo'`; then
  3631.     echo shar: \"'conf/apollo'\" unpacked with wrong size!
  3632. fi
  3633. # end of 'conf/apollo'
  3634. fi
  3635. if test -f 'conf/dcosx' -a "${1}" != "-c" ; then 
  3636.   echo shar: Will not clobber existing file \"'conf/dcosx'\"
  3637. else
  3638. echo shar: Extracting \"'conf/dcosx'\" \(4405 characters\)
  3639. sed "s/^X//" >'conf/dcosx' <<'END_OF_FILE'
  3640. X/*
  3641. X *    aegis - project change supervisor
  3642. X *    Copyright (C) 1993 Peter Miller.
  3643. X *    All rights reserved.
  3644. X *
  3645. X *    This program is free software; you can redistribute it and/or modify
  3646. X *    it under the terms of the GNU General Public License as published by
  3647. X *    the Free Software Foundation; either version 2 of the License, or
  3648. X *    (at your option) any later version.
  3649. X *
  3650. X *    This program is distributed in the hope that it will be useful,
  3651. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3652. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  3653. X *    GNU General Public License for more details.
  3654. X *
  3655. X *    You should have received a copy of the GNU General Public License
  3656. X *    along with this program; if not, write to the Free Software
  3657. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  3658. X *
  3659. X * MANIFEST: aegis configuration for Pyramid SMP DC/OSx
  3660. X */
  3661. X
  3662. X#ifndef CONF_H
  3663. X#define CONF_H
  3664. X
  3665. X/*
  3666. X * Define this symbol if your system does NOT
  3667. X * have the ANSI C strerror system call, and
  3668. X * does not define strerror in <string.h>.
  3669. X */
  3670. X#define CONF_NO_strerror
  3671. X
  3672. X/*
  3673. X * Define this symbol if your system does NOT
  3674. X * have the POSIX tcgetpgrp system call.
  3675. X *
  3676. X#define CONF_NO_tcgetpgrp
  3677. X */
  3678. X
  3679. X/*
  3680. X * Define this symbol if your system does NOT
  3681. X * have the stdarg.h include file mandated by ANSI C.
  3682. X */
  3683. X#ifndef __STDC__
  3684. X#define CONF_NO_stdarg
  3685. X#endif
  3686. X
  3687. X/*
  3688. X * Define one of these symbols to indicate which
  3689. X * universe your UNIX is derived from.
  3690. X * If you have a choice, define both.
  3691. X */
  3692. X/* #define BSD */
  3693. X#define SYSV
  3694. X
  3695. X/*
  3696. X * Define this symbol as an appropriate arguemnt to
  3697. X * the getpgrp system call for your system.
  3698. X * Ignore if your system does not have a getpgrp system call.
  3699. X */
  3700. X/* #define CONF_getpgrp_arg 0 */
  3701. X#define CONF_getpgrp_arg
  3702. X
  3703. X/*
  3704. X * Suitable user for storing aegis' global files.
  3705. X * The group will be derived from the relevant entry in /etc/passwd.
  3706. X *
  3707. X * Do not confuse this with the fact that aegis must be set-uid-root.
  3708. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  3709. X *
  3710. X * This string defines the owner of aegis' global files, so that aegis
  3711. X * may access them when they are on NFS mounted partitions (when root
  3712. X * is mapped to "nobody").
  3713. X */
  3714. X#define AEGIS_USER    "bin"
  3715. X
  3716. X/*
  3717. X * This defines the file creation mask.  See umask(2) for more information.
  3718. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  3719. X * Owner: always has read, write and search/exec.
  3720. X * Group: always has read and search/exec, so that developers can get at the
  3721. X *    baseline.  There is never group write, because then developers
  3722. X *    could trash the baseline, which is counter-productive.
  3723. X * Others: There is never others write, for the same reason as group.
  3724. X *    Others read and search/execute is configurable.
  3725. X *
  3726. X * The permissions mask in binary looks like
  3727. X *    000 010 X1X
  3728. X * where the Xs may be configured.
  3729. X *
  3730. X * Alternatives for default umask are thus
  3731. X *    027    others get nothing
  3732. X *    026    others can execute the results if they know where they are going
  3733. X *    022    others can see and copy and execute anything
  3734. X *    023    don't do this (why is left as an exersize for the reader)
  3735. X *
  3736. X * Projects have a configurable umask, this is just the default.
  3737. X *    See aepattr(1) for more information.
  3738. X */
  3739. X#define DEFAULT_UMASK 026
  3740. X
  3741. X/*
  3742. X * Define this symbol if your system does NOT have the strftime
  3743. X * function mandated by the ANSI C standard.
  3744. X *
  3745. X#define CONF_NO_strftime
  3746. X */
  3747. X
  3748. X/*
  3749. X * Define this symbol if your system does NOT
  3750. X * have the pw_comment field in struct passwd in <pwd.h>
  3751. X *
  3752. X#define CONF_NO_pw_comment
  3753. X */
  3754. X
  3755. X/*
  3756. X * Define this symbol if your system does NOT
  3757. X * have the seteuid system call.
  3758. X *
  3759. X#define CONF_NO_seteuid
  3760. X */
  3761. X
  3762. X/*
  3763. X * Define this symbol to be the pathname of your shell.
  3764. X * Leave it as a Bourne shell whenever possible.
  3765. X * Some systems have different versions of the Bourne shell,
  3766. X * with and without functions; choose the one *with* functions if so.
  3767. X */
  3768. X#define CONF_SHELL "/bin/sh"
  3769. X
  3770. X/*
  3771. X * These symbols define where non-system user IDs start,
  3772. X * and where non-system group IDs start.
  3773. X * This is mostly to ensure that accounts "root" and "bin"
  3774. X * and "uucp" are not project owners.
  3775. X */
  3776. X#define AEGIS_MIN_UID 100
  3777. X#define AEGIS_MIN_GID 10
  3778. X
  3779. X/*
  3780. X * On the pyramid the author used to test aegis,
  3781. X * the readdir function returned a structure that 
  3782. X * had the name starting in the wrong place.
  3783. X * Maybe a version later than 1.0-92b023 has fixed it.
  3784. X */
  3785. X#define CONF_pyramid_broken_readdir
  3786. X
  3787. X#endif /* CONF_H */
  3788. END_OF_FILE
  3789. if test 4405 -ne `wc -c <'conf/dcosx'`; then
  3790.     echo shar: \"'conf/dcosx'\" unpacked with wrong size!
  3791. fi
  3792. # end of 'conf/dcosx'
  3793. fi
  3794. if test -f 'conf/dgux-5.4.1' -a "${1}" != "-c" ; then 
  3795.   echo shar: Will not clobber existing file \"'conf/dgux-5.4.1'\"
  3796. else
  3797. echo shar: Extracting \"'conf/dgux-5.4.1'\" \(4162 characters\)
  3798. sed "s/^X//" >'conf/dgux-5.4.1' <<'END_OF_FILE'
  3799. X/*
  3800. X *    aegis - project change supervisor
  3801. X *    Copyright (C) 1992, 1993 Peter Miller.
  3802. X *    All rights reserved.
  3803. X *
  3804. X *    This program is free software; you can redistribute it and/or modify
  3805. X *    it under the terms of the GNU General Public License as published by
  3806. X *    the Free Software Foundation; either version 2 of the License, or
  3807. X *    (at your option) any later version.
  3808. X *
  3809. X *    This program is distributed in the hope that it will be useful,
  3810. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3811. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  3812. X *    GNU General Public License for more details.
  3813. X *
  3814. X *    You should have received a copy of the GNU General Public License
  3815. X *    along with this program; if not, write to the Free Software
  3816. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  3817. X *
  3818. X * MANIFEST: aegis configuration for dgux 5.4.1
  3819. X */
  3820. X
  3821. X#ifndef CONF_H
  3822. X#define CONF_H
  3823. X
  3824. X/*
  3825. X * Define this symbol if your system does NOT
  3826. X * have the ANSI C strerror system call, and
  3827. X * does not define strerror in <string.h>.
  3828. X *
  3829. X#define CONF_NO_strerror
  3830. X */
  3831. X
  3832. X/*
  3833. X * Define this symbol if your system does NOT
  3834. X * have the POSIX tcgetpgrp system call.
  3835. X *
  3836. X#define CONF_NO_tcgetpgrp
  3837. X */
  3838. X
  3839. X/*
  3840. X * Define this symbol if your system does NOT
  3841. X * have the stdarg.h include file mandated by ANSI C.
  3842. X */
  3843. X#ifndef __STDC__
  3844. X#define CONF_NO_stdarg
  3845. X#endif
  3846. X
  3847. X/*
  3848. X * Define one of these symbols to indicate which
  3849. X * universe your UNIX is derived from.
  3850. X * If you have a choice, define both.
  3851. X */
  3852. X/* #define BSD */
  3853. X#define SYSV
  3854. X
  3855. X/*
  3856. X * Define this symbol as an appropriate arguemnt to
  3857. X * the getpgrp system call for your system.
  3858. X * Ignore if your system does not have a getpgrp system call.
  3859. X */
  3860. X/* #define CONF_getpgrp_arg 0 */
  3861. X#define CONF_getpgrp_arg
  3862. X
  3863. X/*
  3864. X * Suitable user for storing aegis' global files.
  3865. X * The group will be derived from the relevant entry in /etc/passwd.
  3866. X *
  3867. X * Do not confuse this with the fact that aegis must be set-uid-root.
  3868. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  3869. X *
  3870. X * This string defines the owner of aegis' global files, so that aegis
  3871. X * may access them when they are on NFS mounted partitions (when root
  3872. X * is mapped to "nobody").
  3873. X */
  3874. X#define AEGIS_USER    "bin"
  3875. X
  3876. X/*
  3877. X * This defines the file creation mask.  See umask(2) for more information.
  3878. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  3879. X * Owner: always has read, write and search/exec.
  3880. X * Group: always has read and search/exec, so that developers can get at the
  3881. X *    baseline.  There is never group write, because then developers
  3882. X *    could trash the baseline, which is counter-productive.
  3883. X * Others: There is never others write, for the same reason as group.
  3884. X *    Others read and search/execute is configurable.
  3885. X *
  3886. X * The permissions mask in binary looks like
  3887. X *    000 010 X1X
  3888. X * where the Xs may be configured.
  3889. X *
  3890. X * Alternatives for default umask are thus
  3891. X *    027    others get nothing
  3892. X *    026    others can execute the results if they know where they are going
  3893. X *    022    others can see and copy and execute anything
  3894. X *    023    don't do this (why is left as an exersize for the reader)
  3895. X *
  3896. X * Projects have a configurable umask, this is just the default.
  3897. X *    See aepattr(1) for more information.
  3898. X */
  3899. X#define DEFAULT_UMASK 026
  3900. X
  3901. X/*
  3902. X * Define this symbol if your system does NOT have the strftime
  3903. X * function mandated by the ANSI C standard.
  3904. X *
  3905. X#define CONF_NO_strftime
  3906. X */
  3907. X
  3908. X/*
  3909. X * Define this symbol if your system does NOT
  3910. X * have the pw_comment field in struct passwd in <pwd.h>
  3911. X *
  3912. X#define CONF_NO_pw_comment
  3913. X */
  3914. X
  3915. X/*
  3916. X * Define this symbol if your system does NOT
  3917. X * have the seteuid system call.
  3918. X *
  3919. X#define CONF_NO_seteuid
  3920. X */
  3921. X
  3922. X/*
  3923. X * Define this symbol to be the pathname of your shell.
  3924. X * Leave it as a Bourne shell whenever possible.
  3925. X * Some systems have different versions of the Bourne shell,
  3926. X * with and without functions; choose the one *with* functions if so.
  3927. X */
  3928. X#define CONF_SHELL "/bin/sh"
  3929. X
  3930. X/*
  3931. X * These symbols define where non-system user IDs start,
  3932. X * and where non-system group IDs start.
  3933. X * This is mostly to ensure that accounts "root" and "bin"
  3934. X * and "uucp" are not project owners.
  3935. X */
  3936. X#define AEGIS_MIN_UID 100
  3937. X#define AEGIS_MIN_GID 10
  3938. X
  3939. X#endif /* CONF_H */
  3940. END_OF_FILE
  3941. if test 4162 -ne `wc -c <'conf/dgux-5.4.1'`; then
  3942.     echo shar: \"'conf/dgux-5.4.1'\" unpacked with wrong size!
  3943. fi
  3944. # end of 'conf/dgux-5.4.1'
  3945. fi
  3946. if test -f 'conf/hpux-8.07' -a "${1}" != "-c" ; then 
  3947.   echo shar: Will not clobber existing file \"'conf/hpux-8.07'\"
  3948. else
  3949. echo shar: Extracting \"'conf/hpux-8.07'\" \(4489 characters\)
  3950. sed "s/^X//" >'conf/hpux-8.07' <<'END_OF_FILE'
  3951. X/*
  3952. X *    aegis - project change supervisor
  3953. X *    Copyright (C) 1992, 1993 Peter Miller.
  3954. X *    All rights reserved.
  3955. X *
  3956. X *    This program is free software; you can redistribute it and/or modify
  3957. X *    it under the terms of the GNU General Public License as published by
  3958. X *    the Free Software Foundation; either version 2 of the License, or
  3959. X *    (at your option) any later version.
  3960. X *
  3961. X *    This program is distributed in the hope that it will be useful,
  3962. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3963. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  3964. X *    GNU General Public License for more details.
  3965. X *
  3966. X *    You should have received a copy of the GNU General Public License
  3967. X *    along with this program; if not, write to the Free Software
  3968. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  3969. X *
  3970. X * MANIFEST: aegis configuration for HP/UX 8.07
  3971. X */
  3972. X
  3973. X#ifndef CONF_H
  3974. X#define CONF_H
  3975. X
  3976. X#define HPUX
  3977. X
  3978. X/*
  3979. X * Define this symbol if your system does NOT
  3980. X * have the ANSI C strerror system call, and
  3981. X * does not define strerror in <string.h>.
  3982. X */
  3983. X#define CONF_NO_strerror
  3984. X
  3985. X/*
  3986. X * Define this symbol if your system does NOT
  3987. X * have the POSIX tcgetpgrp system call.
  3988. X *
  3989. X#define CONF_NO_tcgetpgrp
  3990. X */
  3991. X
  3992. X/*
  3993. X * Define this symbol if your system does NOT
  3994. X * have the stdarg.h include file mandated by ANSI C.
  3995. X */
  3996. X#ifndef __STDC__
  3997. X#define CONF_NO_stdarg
  3998. X#endif
  3999. X
  4000. X/*
  4001. X * Define one of these symbols to indicate which
  4002. X * universe your UNIX is derived from.
  4003. X * If you have a choice, define both.
  4004. X */
  4005. X/* #define BSD */
  4006. X#define SYSV
  4007. X
  4008. X/*
  4009. X * Define this symbol as an appropriate arguemnt to
  4010. X * the getpgrp system call for your system.
  4011. X * Ignore if your system does not have a getpgrp system call.
  4012. X */
  4013. X#define CONF_getpgrp_arg 0
  4014. X
  4015. X/*
  4016. X * Suitable user for storing aegis' global files.
  4017. X * The group will be derived from the relevant entry in /etc/passwd.
  4018. X *
  4019. X * Do not confuse this with the fact that aegis must be set-uid-root.
  4020. X * Aegis MUST be set-uid-root to manipulate file ownerships, etc.
  4021. X *
  4022. X * This string defines the owner of aegis' global files, so that aegis
  4023. X * may access them when they are on NFS mounted partitions (when root
  4024. X * is mapped to "nobody").
  4025. X */
  4026. X#define AEGIS_USER    "bin"
  4027. X
  4028. X/*
  4029. X * This defines the file creation mask.  See umask(2) for more information.
  4030. X * Some bits are not available, because aegis is _meant_ to be paranoid.
  4031. X * Owner: always has read, write and search/exec.
  4032. X * Group: always has read and search/exec, so that developers can get at the
  4033. X *    baseline.  There is never group write, because then developers
  4034. X *    could trash the baseline, which is counter-productive.
  4035. X * Others: There is never others write, for the same reason as group.
  4036. X *    Others read and search/execute is configurable.
  4037. X *
  4038. X * The permissions mask in binary looks like
  4039. X *    000 010 X1X
  4040. X * where the Xs may be configured.
  4041. X *
  4042. X * Alternatives for default umask are thus
  4043. X *    027    others get nothing
  4044. X *    026    others can execute the results if they know where they are going
  4045. X *    022    others can see and copy and execute anything
  4046. X *    023    don't do this (why is left as an exersize for the reader)
  4047. X *
  4048. X * Projects have a configurable umask, this is just the default.
  4049. X *    See aepattr(1) for more information.
  4050. X */
  4051. X#define DEFAULT_UMASK 026
  4052. X
  4053. X/*
  4054. X * Define this symbol if your system does NOT have the strftime
  4055. X * function mandated by the ANSI C standard.
  4056. X *
  4057. X#define CONF_NO_strftime
  4058. X */
  4059. X
  4060. X/*
  4061. X * Define this symbol if your system does NOT
  4062. X * have the pw_comment field in struct passwd in <pwd.h>
  4063. X *
  4064. X#define CONF_NO_pw_comment
  4065. X */
  4066. X
  4067. X/*
  4068. X * Define this symbol if your system does NOT
  4069. X * have the seteuid system call.
  4070. X *
  4071. X * HP/UX does not have this system call in the libraries,
  4072. X * but it can be simulated using an existing system call,
  4073. X * see the CONF_HAS_setresuid define, below.
  4074. X *
  4075. X#define CONF_NO_seteuid
  4076. X */
  4077. X
  4078. X/*
  4079. X * Define this symbol if your systems has setresuid,
  4080. X * but does NOT have seteuid.  Similarly for setresgid.
  4081. X * Hopefully, this us unique to HP-UX.
  4082. X */
  4083. X#define CONF_HAS_setresuid
  4084. X
  4085. X/*
  4086. X * Define this symbol to be the pathname of your shell.
  4087. X * Leave it as a Bourne shell whenever possible.
  4088. X * Some systems have different versions of the Bourne shell,
  4089. X * with and without functions; choose the one *with* functions if so.
  4090. X */
  4091. X#define CONF_SHELL "/bin/sh"
  4092. X
  4093. X/*
  4094. X * These symbols define where non-system user IDs start,
  4095. X * and where non-system group IDs start.
  4096. X * This is mostly to ensure that accounts "root" and "bin"
  4097. X * and "uucp" are not project owners.
  4098. X */
  4099. X#define AEGIS_MIN_UID 100
  4100. X#define AEGIS_MIN_GID 10
  4101. X
  4102. X#endif /* CONF_H */
  4103. END_OF_FILE
  4104. if test 4489 -ne `wc -c <'conf/hpux-8.07'`; then
  4105.     echo shar: \"'conf/hpux-8.07'\" unpacked with wrong size!
  4106. fi
  4107. # end of 'conf/hpux-8.07'
  4108. fi
  4109. if test -f 'doc/c3.1.so' -a "${1}" != "-c" ; then 
  4110.   echo shar: Will not clobber existing file \"'doc/c3.1.so'\"
  4111. else
  4112. echo shar: Extracting \"'doc/c3.1.so'\" \(3915 characters\)
  4113. sed "s/^X//" >'doc/c3.1.so' <<'END_OF_FILE'
  4114. X.\"
  4115. X.\"    aegis - project change supervisor
  4116. X.\"    Copyright (C) 1991, 1992, 1993 Peter Miller.
  4117. X.\"    All rights reserved.
  4118. X.\"
  4119. X.\"    This program is free software; you can redistribute it and/or modify
  4120. X.\"    it under the terms of the GNU General Public License as published by
  4121. X.\"    the Free Software Foundation; either version 2 of the License, or
  4122. X.\"    (at your option) any later version.
  4123. X.\"
  4124. X.\"    This program is distributed in the hope that it will be useful,
  4125. X.\"    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4126. X.\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  4127. X.\"    GNU General Public License for more details.
  4128. X.\"
  4129. X.\"    You should have received a copy of the GNU General Public License
  4130. X.\"    along with this program; if not, write to the Free Software
  4131. X.\"    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  4132. X.\"
  4133. X.\" MANIFEST: User Guide, The History Tool, Using SCCS
  4134. X.\"
  4135. X.bp
  4136. X.nh 2 "Using SCCS"
  4137. X.LP
  4138. XThe entries for the commands are listed below.
  4139. XSCCS uses a slightly different model than aegis wants,
  4140. Xso some maneuvering is required.
  4141. XThe command strings in this section assume that the SCCS commands
  4142. X.I admin
  4143. Xand
  4144. X.I get
  4145. Xand
  4146. X.I delta
  4147. Xare in the command search PATH,
  4148. Xbut you may like to hard-wire the paths,
  4149. Xor set PATH at the start of each.
  4150. XYou should also note that the strings are always handed to
  4151. Xthe Bourne shell to be executed,
  4152. Xand are set to exit with an error immediately a sub-command fails.
  4153. X.nh 3 "history_create_command"
  4154. X.LP
  4155. XThis command is used to create a new project history.
  4156. XThe command is always executed as the project owner.
  4157. X.LP
  4158. XThe following substitutions are available:
  4159. X.DS
  4160. X.TS
  4161. Xtab(;);
  4162. Xl l.
  4163. X${Input};absolute path of the source file
  4164. X${History};absolute path of the history file
  4165. X.TE
  4166. X.DE
  4167. X.LP
  4168. XThe entry in the
  4169. X.I "config"
  4170. Xfile looks like this:
  4171. X.E(
  4172. Xhistory_create_command =
  4173. X    "admin -n -i$i -y ${d $h}/s.${b $h}; \e
  4174. X    admin -di ${d $h}/s.${b $h}; \e
  4175. X    get -e -t -p -s ${d $h}/s.${b $h} > /dev/null";
  4176. X.E)
  4177. X.LP
  4178. XNote that the "get -e" is necessary to put the s.file into the edit state,
  4179. Xbut the result of the get can be discarded,
  4180. Xbecause the "admin -i" did not remove the file.
  4181. X.nh 3 "history_get_command"
  4182. X.LP
  4183. XThis command is used to get a specific edit back from history.
  4184. XThe command may be executed by developers.
  4185. X.LP
  4186. XThe following substitutions are available:
  4187. X.DS
  4188. X.TS
  4189. Xtab(;);
  4190. Xl l.
  4191. X${History};absolute path of the history file
  4192. X${Edit};edit number, as given by history_query_command
  4193. X${Output};absolute path of the destination file
  4194. X.TE
  4195. X.DE
  4196. X.LP
  4197. XThe entry in the
  4198. X.I "config"
  4199. Xfile looks like this:
  4200. X.E(
  4201. Xhistory_get_command =
  4202. X    "get -r'$e' -s -p -k ${d $h}/s.${b $h} > $o";
  4203. X.E)
  4204. X.nh 3 "history_put_command"
  4205. X.LP
  4206. XThis command is used to add a new "top-most" entry to the
  4207. Xhistory file.
  4208. XThis command is always executed as the project owner.
  4209. X.LP
  4210. XThe following substitutions are available:
  4211. X.DS
  4212. X.TS
  4213. Xtab(;);
  4214. Xl l.
  4215. X${Input};absolute path of source file
  4216. X${History};absolute path of history file
  4217. X.TE
  4218. X.DE
  4219. X.LP
  4220. XThe entry in the
  4221. X.I "config"
  4222. Xfile looks like this:
  4223. X.E(
  4224. Xhistory_put_command =
  4225. X    "cd ${d $i}; \e
  4226. X    delta -s -y ${d $h}/s.${b $h}; \e
  4227. X    get -e -t -p -s ${d $h}/s.${b $h} > $i";
  4228. X.E)
  4229. X.LP
  4230. XNote that the SCCS file is left in the edit state,
  4231. Xand that the source file is left in the baseline.
  4232. X.nh 3 "history_query_command"
  4233. X.LP
  4234. XThis command is used to query what the history mechanism calls the top-most
  4235. Xedit of a history file.
  4236. XThe result may be any arbitrary string,
  4237. Xit need not be anything like a number,
  4238. Xjust so long as it uniquely identifies the edit
  4239. Xfor use by the
  4240. X.I history_get_command
  4241. Xat a later date.
  4242. XThe edit number is to be printed on the standard output.
  4243. XThis command may be executed by developers.
  4244. X.LP
  4245. XThe following substitutions are available:
  4246. X.DS
  4247. X.TS
  4248. Xtab(;);
  4249. Xl l.
  4250. X${History};absolute path of the history file
  4251. X.TE
  4252. X.DE
  4253. X.LP
  4254. XThe entry in the
  4255. X.I "config"
  4256. Xfile looks like this:
  4257. X.E(
  4258. Xhistory_query_command =
  4259. X    "get -t -g ${d $h}/s.${b $h} 2>&1";
  4260. X.E)
  4261. X.LP
  4262. XNote that "get" reports the edit number on stderr.
  4263. END_OF_FILE
  4264. if test 3915 -ne `wc -c <'doc/c3.1.so'`; then
  4265.     echo shar: \"'doc/c3.1.so'\" unpacked with wrong size!
  4266. fi
  4267. # end of 'doc/c3.1.so'
  4268. fi
  4269. if test -f 'doc/c3.2.so' -a "${1}" != "-c" ; then 
  4270.   echo shar: Will not clobber existing file \"'doc/c3.2.so'\"
  4271. else
  4272. echo shar: Extracting \"'doc/c3.2.so'\" \(4346 characters\)
  4273. sed "s/^X//" >'doc/c3.2.so' <<'END_OF_FILE'
  4274. X.\"
  4275. X.\"    aegis - project change supervisor
  4276. X.\"    Copyright (C) 1991, 1992, 1993 Peter Miller.
  4277. X.\"    All rights reserved.
  4278. X.\"
  4279. X.\"    This program is free software; you can redistribute it and/or modify
  4280. X.\"    it under the terms of the GNU General Public License as published by
  4281. X.\"    the Free Software Foundation; either version 2 of the License, or
  4282. X.\"    (at your option) any later version.
  4283. X.\"
  4284. X.\"    This program is distributed in the hope that it will be useful,
  4285. X.\"    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4286. X.\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  4287. X.\"    GNU General Public License for more details.
  4288. X.\"
  4289. X.\"    You should have received a copy of the GNU General Public License
  4290. X.\"    along with this program; if not, write to the Free Software
  4291. X.\"    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  4292. X.\"
  4293. X.\" MANIFEST: User Guide,  The History Tool, Using RCS
  4294. X.\"
  4295. X.bp
  4296. X.nh 2 "Using RCS"
  4297. X.LP
  4298. XThe entries for the commands are listed below.
  4299. XRCS uses a slightly different model than aegis wants,
  4300. Xso some maneuvering is required.
  4301. XThe command strings in this section assume that the RCS commands
  4302. X.I ci
  4303. Xand
  4304. X.I co
  4305. Xand
  4306. X.I rcs
  4307. Xand
  4308. X.I rlog
  4309. Xare in the command search PATH,
  4310. Xbut you may like to hard-wire the paths,
  4311. Xor set PATH at the start of each.
  4312. XYou should also note that the strings are always handed to
  4313. Xthe Bourne shell to be executed,
  4314. Xand are set to exit with an error immediately a sub-command fails.
  4315. X.LP
  4316. XIn these commands,
  4317. Xthe RCS file is kept unlocked,
  4318. Xsince only the owner will be checking changes in.
  4319. XThe RCS functionality for coordinating shared access is not required.
  4320. X.LP
  4321. XOne advantage of using RCS version 5.6 or later is that
  4322. Xbinary files are supported,
  4323. Xshould you want to have binary files in the baseline.
  4324. X.nh 3 "history_create_command"
  4325. X.LP
  4326. XThis command is used to create a new project history.
  4327. XThe command is always executed as the project owner.
  4328. X.LP
  4329. XThe following substitutions are available:
  4330. X.DS
  4331. X.TS
  4332. Xtab(;);
  4333. Xl l.
  4334. X${Input};absolute path of the source file
  4335. X${History};absolute path of the history file
  4336. X.TE
  4337. X.DE
  4338. X.LP
  4339. XThe entry in the
  4340. X.I "config"
  4341. Xfile looks like this:
  4342. X.E(
  4343. Xhistory_create_command =
  4344. X    "ci -u -t/dev/null $i $h,v; \e
  4345. X    rcs -U $h,v";
  4346. X.E)
  4347. X.LP
  4348. XThe "ci -u" is so that a copy remains in the baseline.
  4349. XThe "rcs -U" is necessary to set unstrict locking.
  4350. X.nh 3 "history_get_command"
  4351. X.LP
  4352. XThis command is used to get a specific edit back from history.
  4353. XThe command may be executed by developers.
  4354. X.LP
  4355. XThe following substitutions are available:
  4356. X.DS
  4357. X.TS
  4358. Xtab(;);
  4359. Xl l.
  4360. X${History};absolute path of the history file
  4361. X${Edit};edit number, as given by history_query_command
  4362. X${Output};absolute path of the destination file
  4363. X.TE
  4364. X.DE
  4365. X.LP
  4366. XThe entry in the
  4367. X.I "config"
  4368. Xfile looks like this:
  4369. X.E(
  4370. Xhistory_get_command =
  4371. X    "co -u'$e' -p $h,v > $o";
  4372. X.E)
  4373. X.LP
  4374. XNote that the destination filename will
  4375. X.I never
  4376. Xlook anything like the history source filename,
  4377. Xso the -p is essential.
  4378. X.nh 3 "history_put_command"
  4379. X.LP
  4380. XThis command is used to add a new "top-most" entry to the
  4381. Xhistory file.
  4382. XThis command is always executed as the project owner.
  4383. X.LP
  4384. XThe following substitutions are available:
  4385. X.DS
  4386. X.TS
  4387. Xtab(;);
  4388. Xl l.
  4389. X${Input};absolute path of source file
  4390. X${History};absolute path of history file
  4391. X.TE
  4392. X.DE
  4393. X.LP
  4394. XThe entry in the
  4395. X.I "config"
  4396. Xfile looks like this:
  4397. X.E(
  4398. Xhistory_put_command =
  4399. X    "ci -u -m/dev/null $i $h,v";
  4400. X.E)
  4401. X.LP
  4402. XNote that the source file is left in the baseline.
  4403. X.LP
  4404. XIt is possible that a very cautious approach could be taken,
  4405. Xand combine history_create_command with history_put_command,
  4406. Xviz:
  4407. X.E(
  4408. Xhistory_create_command =
  4409. X    "ci -u -m/dev/null -t/dev/null $i $h,v; \e
  4410. X    rcs -U $h,v";
  4411. Xhistory_put_command =
  4412. X    "ci -u -m/dev/null -t/dev/null $i $h,v; \e
  4413. X    rcs -U $h,v";
  4414. X.E)
  4415. X.nh 3 "history_query_command"
  4416. X.LP
  4417. XThis command is used to query what the history mechanism calls the top-most
  4418. Xedit of a history file.
  4419. XThe result may be any arbitrary string,
  4420. Xit need not be anything like a number,
  4421. Xjust so long as it uniquely identifies the edit
  4422. Xfor use by the
  4423. X.I history_get_command
  4424. Xat a later date.
  4425. XThe edit number is to be printed on the standard output.
  4426. XThis command may be executed by developers.
  4427. X.LP
  4428. XThe following substitutions are available:
  4429. X.DS
  4430. X.TS
  4431. Xtab(;);
  4432. Xl l.
  4433. X${History};absolute path of the history file
  4434. X.TE
  4435. X.DE
  4436. X.LP
  4437. XThe entry in the
  4438. X.I "config"
  4439. Xfile looks like this:
  4440. X.E(
  4441. Xhistory_query_command =
  4442. X    "rlog -r $h,v | awk '/^head:/ {print $$2}'";
  4443. X.E)
  4444. END_OF_FILE
  4445. if test 4346 -ne `wc -c <'doc/c3.2.so'`; then
  4446.     echo shar: \"'doc/c3.2.so'\" unpacked with wrong size!
  4447. fi
  4448. # end of 'doc/c3.2.so'
  4449. fi
  4450. if test -f 'doc/c7.2.so' -a "${1}" != "-c" ; then 
  4451.   echo shar: Will not clobber existing file \"'doc/c7.2.so'\"
  4452. else
  4453. echo shar: Extracting \"'doc/c7.2.so'\" \(3651 characters\)
  4454. sed "s/^X//" >'doc/c7.2.so' <<'END_OF_FILE'
  4455. X.\"
  4456. X.\"    aegis - project change supervisor
  4457. X.\"    Copyright (C) 1991, 1992, 1993 Peter Miller.
  4458. X.\"    All rights reserved.
  4459. X.\"
  4460. X.\"    This program is free software; you can redistribute it and/or modify
  4461. X.\"    it under the terms of the GNU General Public License as published by
  4462. X.\"    the Free Software Foundation; either version 2 of the License, or
  4463. X.\"    (at your option) any later version.
  4464. X.\"
  4465. X.\"    This program is distributed in the hope that it will be useful,
  4466. X.\"    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4467. X.\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  4468. X.\"    GNU General Public License for more details.
  4469. X.\"
  4470. X.\"    You should have received a copy of the GNU General Public License
  4471. X.\"    along with this program; if not, write to the Free Software
  4472. X.\"    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  4473. X.\"
  4474. X.\" MANIFEST: User Guide, How Aegis Works, Philosophy
  4475. X.\"
  4476. X.bp
  4477. X.nh 2 "Philosophy"
  4478. X.LP
  4479. XThe philosophy is simple,
  4480. Xand that makes some of the implementation complex.
  4481. X.BL
  4482. X.LI
  4483. XWhen a change is in the
  4484. X.I "being developed"
  4485. Xstate,
  4486. Xthe aegis program is a developer's tool.
  4487. XIts purpose is to make it as easy for a developer
  4488. Xto develop changes as possible.
  4489. X.LI
  4490. XWhen a change leaves (or attempts to leave) the
  4491. X.I "being developed"
  4492. Xstate,
  4493. Xthe aegis program is protecting the  project baseline,
  4494. Xand does not exist to make the developer happy.
  4495. X.LI
  4496. XThe aegis program attempts to adhere to the 
  4497. X.UX
  4498. Xminimalist philosophy.
  4499. XLeast unnecessary output,
  4500. Xleast command line length,
  4501. Xleast dependence on 3rd party tools.
  4502. X.LI
  4503. XNo overlap in functionality of other tools.
  4504. X.LE
  4505. X.nh 3 "Development"
  4506. X.LP
  4507. XDuring the development of a change,
  4508. Xthe aegis program exists to help the developer.
  4509. XIt helps him navigate around his change and the project,
  4510. Xit copies file for him,
  4511. Xand keeps track of the versions.
  4512. XIt can even tell him what changes he has made.
  4513. X.nh 3 "Post Development"
  4514. X.LP
  4515. XWhen a change has left the "being developed" state,
  4516. Xor when it is attempting to leave that state,
  4517. Xthe aegis program ceases to attempt to help the developer
  4518. Xand proceeds to defend the project baseline.
  4519. XThe model used by aegis states that "the baseline always works",
  4520. Xand aegis attempts to guarantee this.
  4521. X.nh 3 "Minimalism"
  4522. X.LP
  4523. XThe idea of minimalism is to help the user out.
  4524. XIt is the intention that the aegis program can work out
  4525. Xunstated command line options for itself,
  4526. Xin cases where it is "safe" to do so.
  4527. XThis means a number of defaulting mechanisms,
  4528. Xall designed to help the user.
  4529. X.nh 3 "Overlap"
  4530. X.LP
  4531. XIt was very tempting while writing the aegis program
  4532. Xto have it grow and cover 
  4533. Xsource control and dependency maintenance roles.
  4534. XUnfortunately,
  4535. Xthis would have meant that the user would have been trapped
  4536. Xwith whatever the aegis program provided,
  4537. Xand the aegis program is already plenty big.
  4538. XTo add this functionality would have diverted effort,
  4539. Xresulting in an inferior result.
  4540. XIt would also have violated the underlying 
  4541. X.UX
  4542. Xphilosophy.
  4543. X.nh 3 "Design Goals"
  4544. X.LP
  4545. XA number of specific ideas molded the shape of the aegis program.
  4546. XThese include:
  4547. X.LP
  4548. XThe 
  4549. X.UX
  4550. Xphilosophy of writing small tools for specific tasks with little
  4551. Xor no overlap.
  4552. XTools should be written with the expectation of use in
  4553. Xpipes or scripts,
  4554. Xor other combinations.
  4555. X.LP
  4556. X\(bu Stay out of the way.
  4557. XIf it is possible to let a project do whatever it
  4558. Xlikes,
  4559. Xwrite the code to let it.
  4560. XIt is not possible to anticipate even
  4561. Xa fraction of the applications of a software tool.
  4562. X.LP
  4563. X\(bu People.
  4564. XThe staff using aegis should be in charge of the development
  4565. Xprocess.
  4566. XThey should not feel that some machine is giving them orders.
  4567. X.LP
  4568. X\(bu Users aren't psychic.
  4569. XFeedback must be clear,
  4570. Xaccurate and appropriate.
  4571. END_OF_FILE
  4572. if test 3651 -ne `wc -c <'doc/c7.2.so'`; then
  4573.     echo shar: \"'doc/c7.2.so'\" unpacked with wrong size!
  4574. fi
  4575. # end of 'doc/c7.2.so'
  4576. fi
  4577. if test -f 'fmtgen/indent.c' -a "${1}" != "-c" ; then 
  4578.   echo shar: Will not clobber existing file \"'fmtgen/indent.c'\"
  4579. else
  4580. echo shar: Extracting \"'fmtgen/indent.c'\" \(4412 characters\)
  4581. sed "s/^X//" >'fmtgen/indent.c' <<'END_OF_FILE'
  4582. X/*
  4583. X *    aegis - project change supervisor
  4584. X *    Copyright (C) 1991, 1992, 1993 Peter Miller.
  4585. X *    All rights reserved.
  4586. X *
  4587. X *    This program is free software; you can redistribute it and/or modify
  4588. X *    it under the terms of the GNU General Public License as published by
  4589. X *    the Free Software Foundation; either version 2 of the License, or
  4590. X *    (at your option) any later version.
  4591. X *
  4592. X *    This program is distributed in the hope that it will be useful,
  4593. X *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4594. X *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  4595. X *    GNU General Public License for more details.
  4596. X *
  4597. X *    You should have received a copy of the GNU General Public License
  4598. X *    along with this program; if not, write to the Free Software
  4599. X *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  4600. X *
  4601. X * MANIFEST: functions to automatically indent output
  4602. X */
  4603. X
  4604. X#include <stdio.h>
  4605. X#include <errno.h>
  4606. X
  4607. X#include <error.h>
  4608. X#include <indent.h>
  4609. X#include <s-v-arg.h>
  4610. X#include <trace.h>
  4611. X
  4612. X
  4613. X#define INDENT 8
  4614. X
  4615. Xstatic    FILE    *fp;
  4616. Xstatic    char    *fn;
  4617. Xstatic int    depth;
  4618. Xstatic int    in_col;
  4619. Xstatic int    out_col;
  4620. Xstatic    int    continuation_line;
  4621. X
  4622. X
  4623. X/*
  4624. X * Function Name:
  4625. X *    indent_more
  4626. X *
  4627. X * Description:
  4628. X *    The indent_more function is used to increase the indenting
  4629. X *    beyond the automatically calculated indent.
  4630. X *
  4631. X * Preconditions:
  4632. X *    There must be a matching indent_less call.
  4633. X *
  4634. X * validataion:
  4635. X *    none
  4636. X *
  4637. X * Passed:
  4638. X *    nothing
  4639. X *
  4640. X * Returns:
  4641. X *    nothing
  4642. X */
  4643. X
  4644. Xvoid
  4645. Xindent_more()
  4646. X{
  4647. X    ++depth;
  4648. X}
  4649. X
  4650. X
  4651. X/*
  4652. X * Function Name:
  4653. X *    indent_less
  4654. X *
  4655. X * Description:
  4656. X *    The indent_less function is used to decrease the indenting
  4657. X *    to less than the automatically calculated indent.
  4658. X *
  4659. X * Preconditions:
  4660. X *    There must be a matching indent_more call.
  4661. X *
  4662. X * validataion:
  4663. X *    none
  4664. X *
  4665. X * Passed:
  4666. X *    nothing
  4667. X *
  4668. X * Returns:
  4669. X *    nothing
  4670. X */
  4671. X
  4672. Xvoid
  4673. Xindent_less()
  4674. X{
  4675. X    --depth;
  4676. X}
  4677. X
  4678. X
  4679. X/*
  4680. X * Function Name:
  4681. X *    indent_putchar
  4682. X *
  4683. X * Description:
  4684. X *    The indent_putchar function is used to emity characters.
  4685. X *    It keeps track of (){}[] pairs and indents between them.
  4686. X *    Leading whitespace is suppressed and replaced with its own
  4687. X *    idea of indenting.
  4688. X *
  4689. X * Preconditions:
  4690. X *    none
  4691. X *
  4692. X * validation:
  4693. X *    none
  4694. X *
  4695. X * Passed:
  4696. X *    'c' the character to emit.
  4697. X */
  4698. X
  4699. Xvoid
  4700. Xindent_putchar(c)
  4701. X    char    c;
  4702. X{
  4703. X    assert(fp);
  4704. X    switch (c)
  4705. X    {
  4706. X    case '\n':
  4707. X        fputc('\n', fp);
  4708. X#ifdef DEBUG
  4709. X        fflush(fp);
  4710. X#endif
  4711. X        in_col = 0;
  4712. X        out_col = 0;
  4713. X        if (continuation_line == 1)
  4714. X            continuation_line = 2;
  4715. X        else
  4716. X            continuation_line = 0;
  4717. X        break;
  4718. X
  4719. X    case ' ':
  4720. X        if (out_col)
  4721. X            ++in_col;
  4722. X        break;
  4723. X
  4724. X    case '\t':
  4725. X        if (out_col)
  4726. X            in_col = (in_col / INDENT + 1) * INDENT;
  4727. X        break;
  4728. X
  4729. X    case '\1':
  4730. X        if (!out_col)
  4731. X            break;
  4732. X        if (in_col >= INDENT * (depth + 2))
  4733. X            ++in_col;
  4734. X        else
  4735. X            in_col = INDENT * (depth + 2);
  4736. X        break;
  4737. X
  4738. X    case /*{*/'}':
  4739. X    case /*(*/')':
  4740. X    case /*[*/']':
  4741. X        --depth;
  4742. X        /* fall through */
  4743. X
  4744. X    default:
  4745. X        if (!out_col && c != '#' && continuation_line != 2)
  4746. X            in_col += INDENT * depth;
  4747. X        while (((out_col + 8) & -8) <= in_col && out_col + 1 < in_col)
  4748. X        {
  4749. X            fputc('\t', fp);
  4750. X            out_col = (out_col + 8) & -8;
  4751. X        }
  4752. X        while (out_col < in_col)
  4753. X        {
  4754. X            fputc(' ', fp);
  4755. X            ++out_col;
  4756. X        }
  4757. X        if (c == '{'/*}*/ || c == '('/*)*/ || c == '['/*]*/)
  4758. X            ++depth;
  4759. X        fputc(c, fp);
  4760. X        in_col++;
  4761. X        out_col = in_col;
  4762. X        continuation_line = (c == '\\');
  4763. X        break;
  4764. X    }
  4765. X    if (ferror(fp))
  4766. X        nfatal("write \"%s\"", fn);
  4767. X}
  4768. X
  4769. X
  4770. X/*
  4771. X * Function Name:
  4772. X *    indent_printf
  4773. X *
  4774. X * Description:
  4775. X *    As putchar is to indent_putchasr, printf is to indent_printf.
  4776. X *
  4777. X * Preconditions:
  4778. X *    none
  4779. X *
  4780. X * Validation:
  4781. X *    none
  4782. X *
  4783. X * Passed:
  4784. X *    's' format string
  4785. X *    ... and optional arguments
  4786. X *
  4787. X * Returns:
  4788. X *    nothing
  4789. X */
  4790. X
  4791. X/*VARARGS1*/
  4792. Xvoid
  4793. Xindent_printf(s sva_last)
  4794. X    char        *s;
  4795. X    sva_last_decl
  4796. X{
  4797. X    va_list        ap;
  4798. X    char        buffer[2000];
  4799. X
  4800. X    sva_init(ap, s);
  4801. X    vsprintf(buffer, s, ap);
  4802. X    va_end(ap);
  4803. X    for (s = buffer; *s; ++s)
  4804. X        indent_putchar(*s);
  4805. X}
  4806. X
  4807. X
  4808. Xvoid
  4809. Xindent_open(s)
  4810. X    char    *s;
  4811. X{
  4812. X    trace(("indent_open(s = %08lX)\n{\n"/*}*/, s));
  4813. X    if (!s)
  4814. X    {
  4815. X        fp = stdout;
  4816. X        s = "(stdout)";
  4817. X    }
  4818. X    else
  4819. X    {
  4820. X        trace_string(s);
  4821. X        fp = fopen(s, "w");
  4822. X        if (!fp)
  4823. X            nfatal("open \"%s\"", s);
  4824. X    }
  4825. X    trace_pointer(fp);
  4826. X    fn = s;
  4827. X    depth = 0;
  4828. X    in_col = 0;
  4829. X    out_col = 0;
  4830. X    continuation_line = 0;
  4831. X    trace((/*{*/"}\n"));
  4832. X}
  4833. X
  4834. X
  4835. Xvoid
  4836. Xindent_close()
  4837. X{
  4838. X    trace(("indent_close()\n{\n"/*}*/));
  4839. X    trace_pointer(fp);
  4840. X    if (out_col)
  4841. X        indent_putchar('\n');
  4842. X    if (fflush(fp))
  4843. X        nfatal("write \"%s\"", fn);
  4844. X    if (fp != stdout && fclose(fp))
  4845. X        nfatal("close \"%s\"", fn);
  4846. X    fp = 0;
  4847. X    fn = 0;
  4848. X    trace((/*{*/"}\n"));
  4849. X}
  4850. END_OF_FILE
  4851. if test 4412 -ne `wc -c <'fmtgen/indent.c'`; then
  4852.     echo shar: \"'fmtgen/indent.c'\" unpacked with wrong size!
  4853. fi
  4854. # end of 'fmtgen/indent.c'
  4855. fi
  4856. if test -f 'man1/aenrls.1' -a "${1}" != "-c" ; then 
  4857.   echo shar: Will not clobber existing file \"'man1/aenrls.1'\"
  4858. else
  4859. echo shar: Extracting \"'man1/aenrls.1'\" \(4022 characters\)
  4860. sed "s/^X//" >'man1/aenrls.1' <<'END_OF_FILE'
  4861. X'\" t
  4862. X.\"    aegis - project change supervisor
  4863. X.\"    Copyright (C) 1991, 1992, 1993 Peter Miller.
  4864. X.\"    All rights reserved.
  4865. X.\"
  4866. X.\"    This program is free software; you can redistribute it and/or modify
  4867. X.\"    it under the terms of the GNU General Public License as published by
  4868. X.\"    the Free Software Foundation; either version 2 of the License, or
  4869. X.\"    (at your option) any later version.
  4870. X.\"
  4871. X.\"    This program is distributed in the hope that it will be useful,
  4872. X.\"    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4873. X.\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  4874. X.\"    GNU General Public License for more details.
  4875. X.\"
  4876. X.\"    You should have received a copy of the GNU General Public License
  4877. X.\"    along with this program; if not, write to the Free Software
  4878. X.\"    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  4879. X.\"
  4880. X.\" MANIFEST: manual entry for 'aegis -New_ReLeaSe' command
  4881. X.\"
  4882. X.so z_name.so
  4883. X.TH "\*(n) -New_ReLeaSe" 1 \*(N)
  4884. X.SH NAME
  4885. X\*(n) -New_ReLeaSe \- create a new project from an existing project.
  4886. X.SH SYNOPSIS
  4887. X.B \*(n)
  4888. X.B -New_ReLeaSe
  4889. Xproject-name
  4890. X[
  4891. X.I new-project-name
  4892. X][
  4893. X.IR option ...
  4894. X]
  4895. X.br
  4896. X.B \*(n)
  4897. X.B -New_ReLeaSe
  4898. X.B -List
  4899. X[
  4900. X.IR option ...
  4901. X]
  4902. X.br
  4903. X.B \*(n)
  4904. X.B -New_ReLeaSe
  4905. X.B -Help
  4906. X.SH DESCRIPTION
  4907. XThe
  4908. X.I \*(n)
  4909. X.I -New_ReLeaSe
  4910. Xcommand is used to
  4911. Xcreate a new project from an existing project.
  4912. X.PP
  4913. XIf no 
  4914. X.I new-project-name
  4915. Xis specified,
  4916. Xit will be derived from the project given as follows:
  4917. Xany minor version dot suffix will be removed from the name,
  4918. Xthen
  4919. Xany major version dot suffix will be removed from the name.
  4920. XA major version dot suffix will be appended, and then
  4921. Xa minor version dot suffix will be appended.
  4922. XAs an example, "foo.1.0" would become "foo.1.1" assuming
  4923. Xthe default minor version increment,
  4924. Xand "foo" would become "foo.1.1" assuming the same minor version increment.
  4925. X.PP
  4926. XThe entire project baseline will be copied.
  4927. XThe project state will be as if change 1 had already been integrated,
  4928. Xnaming every file (in the old project) as a new file.
  4929. XThe history files will reflect this.
  4930. XNo build will be necessary;
  4931. Xit is assumed that the old baseline was built successfully.
  4932. XChange numbers will commence at 2,
  4933. Xas will build numbers.
  4934. XTest numbers will commence where the old project left off
  4935. X(because all the earlier test numbers were used by the old project).
  4936. X.PP
  4937. XThe default is for the minor version number to be incremented.
  4938. XIf the major version number is incremented or set,
  4939. Xthe minor version number will be set to zero if it is not explicitly given.
  4940. X.PP
  4941. XThe pointer to the new project will be added to the first element
  4942. Xof the search path,
  4943. Xor
  4944. X.I /usr/local/lib/aegis
  4945. Xif none is set.
  4946. XIf this is inappropriate, use the
  4947. X.B -LIBrary
  4948. Xoption to explicitly set the desired location.
  4949. XSee the
  4950. X.B -LIBrary
  4951. Xoption for more information.
  4952. X.PP
  4953. XThe project directory,
  4954. Xunder which the project baseline and history and
  4955. Xstate and change data are kept,
  4956. Xwill be created at this time.
  4957. XIf the 
  4958. X.B -DIRectory 
  4959. Xoption is not given,
  4960. Xthe project directory will be created in the
  4961. Xdirectory specified by the default_\%project_\%directory field of
  4962. Xthe project user's
  4963. X.IR aeuconf (5),
  4964. Xor if not set
  4965. Xin project user's home directory;
  4966. Xin either case with the same name as the project.
  4967. X.PP
  4968. XAll staff will be copied from the old project to the new project
  4969. Xwithout change,
  4970. Xas will all of the project attributes.
  4971. X.SH OPTIONS
  4972. XThe following options are understood:
  4973. X.so o_dir.so
  4974. X.so o_help.so
  4975. X.so o_lib.so
  4976. X.so o_list.so
  4977. X.so o_major.so
  4978. X.so o_minor.so
  4979. X.so o_nolog.so
  4980. X.so o_terse.so
  4981. X.so o_verbose.so
  4982. X.so o__rules.so
  4983. X.SH RECOMMENDED ALIAS
  4984. XThe recommended alias for this command is
  4985. X.nf
  4986. X.ta 8n 16n
  4987. Xcsh%    alias aenrls '\*(n) -nrls \e!* -v'
  4988. Xsh$    aenrls(){\*(n) -nrls $* -v}
  4989. X.fi
  4990. X.SH ERRORS
  4991. XIt is an error if
  4992. Xthe old project named does not exist.
  4993. X.PP
  4994. XIt is an error if
  4995. Xthe old project named has not yet had any changes integrated.
  4996. X.PP
  4997. XIt is an error if
  4998. Xthe old project named has any changes not in the
  4999. X.I completed
  5000. Xstate.
  5001. X.PP
  5002. XIt is an error if
  5003. Xthe current user is not an administrator of the old project.
  5004. X.so z_exit.so
  5005. X.so z_cr.so
  5006. END_OF_FILE
  5007. if test 4022 -ne `wc -c <'man1/aenrls.1'`; then
  5008.     echo shar: \"'man1/aenrls.1'\" unpacked with wrong size!
  5009. fi
  5010. # end of 'man1/aenrls.1'
  5011. fi
  5012. if test -f 'man5/aedir.5' -a "${1}" != "-c" ; then 
  5013.   echo shar: Will not clobber existing file \"'man5/aedir.5'\"
  5014. else
  5015. echo shar: Extracting \"'man5/aedir.5'\" \(3475 characters\)
  5016. sed "s/^X//" >'man5/aedir.5' <<'END_OF_FILE'
  5017. X'\" t
  5018. X.\"    aegis - project change supervisor
  5019. X.\"    Copyright (C) 1991, 1992, 1993 Peter Miller.
  5020. X.\"    All rights reserved.
  5021. X.\"
  5022. X.\"    This program is free software; you can redistribute it and/or modify
  5023. X.\"    it under the terms of the GNU General Public License as published by
  5024. X.\"    the Free Software Foundation; either version 2 of the License, or
  5025. X.\"    (at your option) any later version.
  5026. X.\"
  5027. X.\"    This program is distributed in the hope that it will be useful,
  5028. X.\"    but WITHOUT ANY WARRANTY; without even the implied warranty of
  5029. X.\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  5030. X.\"    GNU General Public License for more details.
  5031. X.\"
  5032. X.\"    You should have received a copy of the GNU General Public License
  5033. X.\"    along with this program; if not, write to the Free Software
  5034. X.\"    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  5035. X.\"
  5036. X.\" MANIFEST: description of aegis project directory structure
  5037. X.\"
  5038. X.so z_name.so
  5039. X.TH aedir 5 \*(N)
  5040. X.SH NAME
  5041. Xaedir - \*(n) directory structures
  5042. X.SH DESCRIPTION
  5043. XThe project directory structure is dictated by 
  5044. X.I \*(n)
  5045. Xat the top level,
  5046. Xbut is completely under the project's control
  5047. Xfrom various points
  5048. Xbelow the top level.
  5049. X.PP
  5050. XThe project directory has the following contents
  5051. X.eB
  5052. X\fIproject\fP/
  5053. X    baseline/
  5054. X        config
  5055. X        \fI...project specific...\fP
  5056. X        test/
  5057. X            \fI[0-9][0-9]\fP/
  5058. X                t\fI[0-9][0-9][0-9][0-9]\fPa.sh
  5059. X                t\fI[0-9][0-9][0-9][0-9]\fPm.sh
  5060. X    history/
  5061. X        \fI...echo of baseline...\fP
  5062. X    delta.\fI[0-9][0-9][0-9]\fP/
  5063. X        \fI...echo of baseline...\fP
  5064. X    info/
  5065. X        state
  5066. X        change/
  5067. X            \fI[0-9]\fP/
  5068. X                \fI[0-9][0-9][0-9]\fP
  5069. X.eE
  5070. X.PP
  5071. XThe directory is structured in this way so that it is possible
  5072. Xto pick an entire project up off the disk,
  5073. Xand be confident that you got it all.
  5074. X.PP
  5075. XThe location of the root of this tree is configurable,
  5076. Xand may even be changed during the life of a project.
  5077. X.PP
  5078. XThe contents of the
  5079. X.I baseline
  5080. Xsubdirectory,
  5081. Xother than those given,
  5082. Xare defined by the project,
  5083. Xand not dictated by \*(n).
  5084. X.PP
  5085. XThe contents of the
  5086. X.I delta.NNN
  5087. Xdirectory,
  5088. Xwhen it exists,
  5089. Xare an image of the
  5090. X.I baseline 
  5091. Xdirectory.
  5092. XIt is frequently linked with the baseline,
  5093. Xrather than a copy of it;
  5094. Xsee the
  5095. X.I link_integration_directory
  5096. Xfield description in
  5097. X.IR aepconf (5)
  5098. Xfor more information.
  5099. X.PP
  5100. XThe contents of the
  5101. X.I history
  5102. Xcontains the edit histories of the
  5103. X.I baseline
  5104. Xdirectory,
  5105. Xand is in all other ways an image of it.
  5106. XNote that 
  5107. X.I baseline
  5108. Xalways contains the latest source;
  5109. Xthe
  5110. X.I history
  5111. Xdirectory is just history.
  5112. XThe actual files in the history directory tree
  5113. Xwill not always have names the same as those in the baseline;
  5114. Xcompare the methods used by SCCS and RCS.
  5115. X.PP
  5116. XThe contents of the
  5117. X.I baseline/test
  5118. Xdirectory are the tests which are created by changes.
  5119. XTest histories are also stored in the
  5120. X.I history
  5121. Xsubdirectory.
  5122. XTests are treated as project source.
  5123. X.PP
  5124. XThe edit histories are separated out to simplify
  5125. Xthe task of taking a "snapshot" of the source of a project,
  5126. Xwithout airing all the dirty laundry.
  5127. X.PP
  5128. XThe
  5129. X.I baseline
  5130. Xdirectory always contains the latest source,
  5131. Xand so the
  5132. X.I history
  5133. Xdirectory need not be readily accessible,
  5134. Xbecause the build mechanism
  5135. X(something like
  5136. X.IR make (1),
  5137. Xbut preferably better)
  5138. Xdoes not need to know anything about it.
  5139. XSimilarly for tests.
  5140. X.PP
  5141. XThe
  5142. X.I baseline/config
  5143. Xfile is used to tell \*(n) everything else it needs to know about a project.
  5144. XSee
  5145. X.IR aepconf (5)
  5146. Xfor more information.
  5147. XThis file  is a source file of the project,
  5148. Xand is treated in the same way as all source files.
  5149. X.so z_cr.so
  5150. END_OF_FILE
  5151. if test 3475 -ne `wc -c <'man5/aedir.5'`; then
  5152.     echo shar: \"'man5/aedir.5'\" unpacked with wrong size!
  5153. fi
  5154. # end of 'man5/aedir.5'
  5155. fi
  5156. if test -f 'man5/aepstate.5' -a "${1}" != "-c" ; then 
  5157.   echo shar: Will not clobber existing file \"'man5/aepstate.5'\"
  5158. else
  5159. echo shar: Extracting \"'man5/aepstate.5'\" \(3733 characters\)
  5160. sed "s/^X//" >'man5/aepstate.5' <<'END_OF_FILE'
  5161. X'\" t
  5162. X.\"    aegis - project change supervisor
  5163. X.\"    Copyright (C) 1991, 1992, 1993 Peter Miller.
  5164. X.\"    All rights reserved.
  5165. X.\"
  5166. X.\"    This program is free software; you can redistribute it and/or modify
  5167. X.\"    it under the terms of the GNU General Public License as published by
  5168. X.\"    the Free Software Foundation; either version 2 of the License, or
  5169. X.\"    (at your option) any later version.
  5170. X.\"
  5171. X.\"    This program is distributed in the hope that it will be useful,
  5172. X.\"    but WITHOUT ANY WARRANTY; without even the implied warranty of
  5173. X.\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  5174. X.\"    GNU General Public License for more details.
  5175. X.\"
  5176. X.\"    You should have received a copy of the GNU General Public License
  5177. X.\"    along with this program; if not, write to the Free Software
  5178. X.\"    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  5179. X.\"
  5180. X.\" MANIFEST: description of aegis project state file format
  5181. X.\"
  5182. X.so z_name.so
  5183. X.TH aepstate 5 \*(N)
  5184. X.SH NAME
  5185. Xaepstate -  project state file
  5186. X.SH SYNOPSIS
  5187. X\fIproject\fP\f(CW/info/state\fP
  5188. X.SH DESCRIPTION
  5189. XThe
  5190. X\fIproject\fP\f(CW/info/state\fP
  5191. Xfile is used to store state information about a project.
  5192. X.PP
  5193. XThis file is maintained by
  5194. X.B \*(n)
  5195. Xand thus should not be edited by humans.
  5196. X.SH CONTENTS
  5197. X.so aepattr.so
  5198. X.TP 8n
  5199. Xnext_change_number = integer;
  5200. XChanges are numbered sequentially from one.
  5201. XThis field records the next unused change number.
  5202. X.TP 8n
  5203. Xnext_delta_number = integer;
  5204. XDeltas are numbered sequentially from one.
  5205. XThis field records the next unused delta number.
  5206. X.TP 8n
  5207. Xnext_test_number = integer;
  5208. XEach test is numbered uniquely.
  5209. XThe name is of the form
  5210. X.I "t[0-9][0-9][0-9][0-9][am].sh"
  5211. X('a' for automatic and 'm' for manual.)
  5212. X.TP 8n
  5213. Xsrc = [ { ... } ];
  5214. XThis field is a list of files in the project.
  5215. XEach list item has the form:
  5216. X.RS
  5217. X.TP 8n
  5218. Xfile_name = string;
  5219. XThe name of the file, relative to the baseline.
  5220. X.TP 8n
  5221. Xusage = file_usage;
  5222. XWhat the file is for.
  5223. X.TP
  5224. Xedit_number = string;
  5225. XThe edit number of the file.
  5226. X.TP 8n
  5227. Xlocked_by = integer;
  5228. XThe change which locked this file.
  5229. X.br
  5230. XCaveat: this field is redundant,
  5231. Xyou can figure it out by scanning all of he change files.
  5232. XHaving it here is very convenient,
  5233. Xeven though it means multiple updates.
  5234. X.TP 8n
  5235. Xabout_to_be_created_by = integer;
  5236. XThe change which is about to create this file for the first time.
  5237. XSame caveat as above.
  5238. X.TP 8n
  5239. Xdeleted_by = integer;
  5240. XThe change which last deleted this file.
  5241. XWe never throw them away, because 
  5242. X(a) it may be created again, and more important
  5243. X(b) we need it to recreate earlier deltas.
  5244. X.RE
  5245. X.TP
  5246. Xhistory = [{ ... }];
  5247. XThis field contains a history of integrations for the project.
  5248. XUpdated by each successful '\*(n) -Integrate_Pass' command.
  5249. X.RS
  5250. X.TP 8n
  5251. Xdelta_number = integer;
  5252. XThe delta number of the integration.
  5253. X.TP 8n
  5254. Xchange_number = integer;
  5255. XThe number of the change which was integrated.
  5256. X.RE
  5257. X.TP 8n
  5258. Xchange = [integer];
  5259. XThe list of changes which have been created to date.
  5260. X.TP 8n
  5261. Xadministrator = [string];
  5262. XThe list of administrators of the project.
  5263. X.TP 8n
  5264. Xdeveloper = [string];
  5265. XThe list of developers of the project.
  5266. X.TP 8n
  5267. Xreviewer = [string];
  5268. XThe list of reviewers of the project.
  5269. X.TP 8n
  5270. Xintegrator = [string];
  5271. XThe list of integrators of the project.
  5272. X.TP 8n
  5273. Xcurrently_integrating_change = integer;
  5274. XThe change currently being integrated.
  5275. XOnly one change (within a project) may be integrated at a time.
  5276. XOnly set when an integration is in progress.
  5277. X.TP 8n
  5278. Xversion_major = integer;
  5279. XThe major version number of this release of the project.
  5280. XAlways one or more.
  5281. X.TP 8n
  5282. Xversion_minor = integer;
  5283. XThe minor version number of this release of the project.
  5284. XAlways zero or more.
  5285. X.TP 8n
  5286. Xversion_previous = string;
  5287. XThe version number this project was derived from.
  5288. XThis is of most use when producing "patch" files.
  5289. X.so z_cr.so
  5290. END_OF_FILE
  5291. if test 3733 -ne `wc -c <'man5/aepstate.5'`; then
  5292.     echo shar: \"'man5/aepstate.5'\" unpacked with wrong size!
  5293. fi
  5294. # end of 'man5/aepstate.5'
  5295. fi
  5296. if test -f 'test/00/t0010a.sh' -a "${1}" != "-c" ; then 
  5297.   echo shar: Will not clobber existing file \"'test/00/t0010a.sh'\"
  5298. else
  5299. echo shar: Extracting \"'test/00/t0010a.sh'\" \(4945 characters\)
  5300. sed "s/^X//" >'test/00/t0010a.sh' <<'END_OF_FILE'
  5301. X#! /bin/sh
  5302. X#
  5303. X#    aegis - project change supervisor
  5304. X#    Copyright (C) 1991, 1992, 1993 Peter Miller.
  5305. X#    All rights reserved.
  5306. X#
  5307. X#    This program is free software; you can redistribute it and/or modify
  5308. X#    it under the terms of the GNU General Public License as published by
  5309. X#    the Free Software Foundation; either version 2 of the License, or
  5310. X#    (at your option) any later version.
  5311. X#
  5312. X#    This program is distributed in the hope that it will be useful,
  5313. X#    but WITHOUT ANY WARRANTY; without even the implied warranty of
  5314. X#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  5315. X#    GNU General Public License for more details.
  5316. X#
  5317. X#    You should have received a copy of the GNU General Public License
  5318. X#    along with this program; if not, write to the Free Software
  5319. X#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  5320. X#
  5321. X# MANIFEST: Test -Review_Pass_Undo functionality.
  5322. X#
  5323. X
  5324. Xunset AEGIS_PROJECT
  5325. Xunset AEGIS_CHANGE
  5326. Xumask 022
  5327. X
  5328. XUSER=${USER:-${LOGNAME:-`whoami`}}
  5329. X
  5330. XPAGER=cat
  5331. Xexport PAGER
  5332. Xwork=${AEGIS_TMP:-/tmp}/$$
  5333. X
  5334. Xfail()
  5335. X{
  5336. X    set +x
  5337. X    echo FAILED test of -Review_Pass_Undo functionality 1>&2
  5338. X    find $work -type d -user $USER -exec chmod u+w {} \;
  5339. X    rm -rf $work
  5340. X    exit 1
  5341. X}
  5342. Xpass()
  5343. X{
  5344. X    set +x
  5345. X    echo PASSED 1>&2
  5346. X    find $work -type d -user $USER -exec chmod u+w {} \;
  5347. X    rm -rf $work
  5348. X    exit 0
  5349. X}
  5350. Xtrap "fail" 1 2 3 15
  5351. X
  5352. X#
  5353. X# some variable to make things earier to read
  5354. X#
  5355. Xworklib=$work/lib
  5356. Xworkproj=$work/foo.proj
  5357. Xworkproj2=$work/foo.proj2
  5358. Xworkchan=$work/foo.chan
  5359. Xtmp=$work/tmp
  5360. X
  5361. X#
  5362. X# echo commands so we can tell what failed
  5363. X#
  5364. Xset -x
  5365. X
  5366. X#
  5367. X# make the directories
  5368. X#
  5369. Xmkdir $work
  5370. X
  5371. X#
  5372. X# make a new project
  5373. X#    and check files it should have made
  5374. X#
  5375. X./bin/aegis -newpro foo -dir $workproj -v -lib $worklib
  5376. Xif test $? -ne 0 ; then fail; fi
  5377. X
  5378. X#
  5379. X# change project attributes
  5380. X#
  5381. Xcat > $tmp << 'end'
  5382. Xdescription = "A bogus project created to test things.";
  5383. Xdeveloper_may_review = true;
  5384. Xdeveloper_may_integrate = true;
  5385. Xreviewer_may_integrate = true;
  5386. Xend
  5387. X./bin/aegis -proatt $tmp -proj foo -v -lib $worklib
  5388. Xif test $? -ne 0 ; then fail; fi
  5389. X
  5390. X#
  5391. X# create a new change
  5392. X#
  5393. Xcat > $tmp << 'end'
  5394. Xbrief_description = "This change is used to test the aegis functionality \
  5395. Xwith respect to change descriptions.";
  5396. Xcause = internal_bug;
  5397. Xend
  5398. X./bin/aegis -new_change $tmp -project foo -v -lib $worklib
  5399. Xif test $? -ne 0 ; then fail; fi
  5400. X
  5401. X#
  5402. X# add a new developer
  5403. X#
  5404. X./bin/aegis -newdev $USER -p foo -v -lib $worklib
  5405. Xif test $? -ne 0 ; then fail; fi
  5406. X
  5407. X#
  5408. X# begin development of a change
  5409. X#
  5410. X./bin/aegis -devbeg 1 -p foo -dir $workchan -v -lib $worklib
  5411. Xif test $? -ne 0 ; then fail; fi
  5412. X
  5413. X#
  5414. X# add a new files to the change
  5415. X#
  5416. X./bin/aegis -new_file $workchan/main.c -nl -v -lib $worklib -p foo
  5417. Xif test $? -ne 0 ; then fail; fi
  5418. X./bin/aegis -new_file $workchan/config -nl -v -lib $worklib -p foo
  5419. Xif test $? -ne 0 ; then fail; fi
  5420. Xcat > $workchan/main.c << 'end'
  5421. Xvoid
  5422. Xmain()
  5423. X{
  5424. X    exit(0);
  5425. X}
  5426. Xend
  5427. Xif test $? -ne 0 ; then fail; fi
  5428. Xcat > $workchan/config << 'end'
  5429. Xbuild_command = "rm -f foo; cc -o foo -D'VERSION=\"$v\"' main.c";
  5430. Xlink_integration_directory = true;
  5431. X
  5432. Xhistory_get_command =
  5433. X    "co -u'$e' -p $h,v > $o";
  5434. Xhistory_create_command =
  5435. X    "ci -u -m/dev/null -t/dev/null $i $h,v; rcs -U $h,v";
  5436. Xhistory_put_command =
  5437. X    "ci -u -m/dev/null -t/dev/null $i $h,v; rcs -U $h,v";
  5438. Xhistory_query_command =
  5439. X    "rlog -r $h,v | awk '/^head:/ {print $$2}'";
  5440. X
  5441. Xdiff_command = "set +e; diff $orig $i > $out; test $$? -le 1";
  5442. X
  5443. Xdiff3_command = "(diff3 -e $mr $orig $i | sed -e '/^w$$/d' -e '/^q$$/d'; \
  5444. X    echo '1,$$p' ) | ed - $mr > $out";
  5445. Xend
  5446. Xif test $? -ne 0 ; then fail; fi
  5447. X
  5448. X#
  5449. X# create a new test
  5450. X#
  5451. X./bin/aegis -nt -v -lib $worklib -p foo
  5452. Xif test $? -ne 0 ; then fail; fi
  5453. Xcat > $workchan/test/00/t0001a.sh << 'end'
  5454. X#!/bin/sh
  5455. X#
  5456. X# Project: "foo"
  5457. X# Change: 1
  5458. X#
  5459. X
  5460. Xfail()
  5461. X{
  5462. X    echo SHUZBUTT 1>&2
  5463. X    exit 1
  5464. X}
  5465. Xpass()
  5466. X{
  5467. X    exit 0
  5468. X}
  5469. Xtrap "fail" 1 2 3 15
  5470. X
  5471. X./foo
  5472. Xq=$?
  5473. X
  5474. X# check for signals
  5475. Xif test $q -ge 128 
  5476. Xthen
  5477. X    fail
  5478. Xfi
  5479. X
  5480. X# should not complain
  5481. Xif test $q -ne 0 
  5482. Xthen
  5483. X    fail
  5484. Xfi
  5485. X
  5486. X# it probably worked
  5487. Xpass
  5488. Xend
  5489. Xif test $? -ne 0 ; then fail; fi
  5490. X
  5491. X#
  5492. X# let the clock tick over, so the build will be happy
  5493. X#
  5494. Xsleep 1
  5495. X
  5496. X#
  5497. X# build the change
  5498. X#
  5499. X./bin/aegis -build -nl -v -lib $worklib -p foo
  5500. Xif test $? -ne 0 ; then fail; fi
  5501. X
  5502. X#
  5503. X# difference the change
  5504. X#
  5505. X./bin/aegis -diff -nl -v -lib $worklib -p foo
  5506. Xif test $? -ne 0 ; then fail; fi
  5507. X
  5508. X#
  5509. X# test the change
  5510. X#
  5511. X./bin/aegis -test -nl -v -lib $worklib -p foo
  5512. Xif test $? -ne 0 ; then fail; fi
  5513. X
  5514. X#
  5515. X# finish development of the change
  5516. X#
  5517. X./bin/aegis -dev_end -v -lib $worklib -p foo
  5518. Xif test $? -ne 0 ; then fail; fi
  5519. X
  5520. X#
  5521. X# add a new reviewer
  5522. X#
  5523. X./bin/aegis -newrev $USER -p foo -v -lib $worklib
  5524. Xif test $? -ne 0 ; then fail; fi
  5525. X
  5526. X#
  5527. X# pass the review
  5528. X#
  5529. X./bin/aegis -review_pass -chan 1 -proj foo -v -lib $worklib
  5530. Xif test $? -ne 0 ; then fail; fi
  5531. X
  5532. X#
  5533. X# undo the review pass
  5534. X#
  5535. X./bin/aegis -review_pass_undo -chan 1 -proj foo -v -lib $worklib
  5536. Xif test $? -ne 0 ; then fail; fi
  5537. X
  5538. X#
  5539. X# make sure it worked
  5540. X#
  5541. X./bin/aegis -list change_details -project foo -change 1 -verbose -lib $worklib
  5542. Xif test $? -ne 0 ; then fail; fi
  5543. X
  5544. X#
  5545. X# the things tested in this test, worked
  5546. X#
  5547. Xpass
  5548. END_OF_FILE
  5549. if test 4945 -ne `wc -c <'test/00/t0010a.sh'`; then
  5550.     echo shar: \"'test/00/t0010a.sh'\" unpacked with wrong size!
  5551. fi
  5552. # end of 'test/00/t0010a.sh'
  5553. fi
  5554. if test -f 'test/00/t0015a.sh' -a "${1}" != "-c" ; then 
  5555.   echo shar: Will not clobber existing file \"'test/00/t0015a.sh'\"
  5556. else
  5557. echo shar: Extracting \"'test/00/t0015a.sh'\" \(5057 characters\)
  5558. sed "s/^X//" >'test/00/t0015a.sh' <<'END_OF_FILE'
  5559. X#! /bin/sh
  5560. X#
  5561. X#    aegis - project change supervisor
  5562. X#    Copyright (C) 1993 Peter Miller.
  5563. X#    All rights reserved.
  5564. X#
  5565. X#    This program is free software; you can redistribute it and/or modify
  5566. X#    it under the terms of the GNU General Public License as published by
  5567. X#    the Free Software Foundation; either version 2 of the License, or
  5568. X#    (at your option) any later version.
  5569. X#
  5570. X#    This program is distributed in the hope that it will be useful,
  5571. X#    but WITHOUT ANY WARRANTY; without even the implied warranty of
  5572. X#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  5573. X#    GNU General Public License for more details.
  5574. X#
  5575. X#    You should have received a copy of the GNU General Public License
  5576. X#    along with this program; if not, write to the Free Software
  5577. X#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  5578. X#
  5579. X# MANIFEST: Test the -Integrate_Begin_Undo functionality
  5580. X#
  5581. X
  5582. Xunset AEGIS_PROJECT
  5583. Xunset AEGIS_CHANGE
  5584. Xumask 022
  5585. X
  5586. XUSER=${USER:-${LOGNAME:-`whoami`}}
  5587. X
  5588. Xwork=${AEGIS_TMP:-/tmp}/$$
  5589. XPAGER=cat
  5590. Xexport PAGER
  5591. X
  5592. Xhere=`pwd`
  5593. Xif test $? -ne 0 ; then exit 1; fi
  5594. Xmkdir $work
  5595. Xif test $? -ne 0 ; then exit 1; fi
  5596. X
  5597. Xfail()
  5598. X{
  5599. X    set +x
  5600. X    echo FAILED test of the -Integrate_Begin_Undo functionality 1>&2
  5601. X    cd $here
  5602. X    find $work -type d -user $USER -exec chmod u+w {} \;
  5603. X    rm -rf $work
  5604. X    exit 1
  5605. X}
  5606. Xpass()
  5607. X{
  5608. X    set +x
  5609. X    echo PASSED 1>&2
  5610. X    cd $here
  5611. X    find $work -type d -user $USER -exec chmod u+w {} \;
  5612. X    rm -rf $work
  5613. X    exit 0
  5614. X}
  5615. Xtrap "fail" 1 2 3 15
  5616. X
  5617. Xcd $work
  5618. Xif test $? -ne 0 ; then fail; fi
  5619. X
  5620. X#
  5621. X# some variable to make things earier to read
  5622. X#
  5623. Xworklib=$work/lib
  5624. Xworkproj=$work/foo.proj
  5625. Xworkchan=$work/foo.chan
  5626. Xtmp=$work/tmp
  5627. X
  5628. X#
  5629. X# make a new project
  5630. X#    and check files it should have made
  5631. X#
  5632. X$here/bin/aegis -newpro foo -dir $workproj -lib $worklib
  5633. Xif test $? -ne 0 ; then fail; fi
  5634. X
  5635. X#
  5636. X# change project attributes
  5637. X#
  5638. Xcat > $tmp << 'end'
  5639. Xdescription = "A bogus project created to test things.";
  5640. Xdeveloper_may_review = true;
  5641. Xdeveloper_may_integrate = true;
  5642. Xreviewer_may_integrate = true;
  5643. Xend
  5644. X$here/bin/aegis -proatt $tmp -proj foo -lib $worklib
  5645. Xif test $? -ne 0 ; then fail; fi
  5646. X
  5647. X#
  5648. X# create a new change
  5649. X#    make sure it creates the files it should
  5650. X#
  5651. Xcat > $tmp << 'end'
  5652. Xbrief_description = "This change is used to test the aegis functionality \
  5653. Xwith respect to change descriptions.";
  5654. Xcause = internal_bug;
  5655. Xend
  5656. X$here/bin/aegis -new_change $tmp -project foo -lib $worklib
  5657. Xif test $? -ne 0 ; then fail; fi
  5658. X
  5659. X#
  5660. X# add a new developer
  5661. X#
  5662. X$here/bin/aegis -newdev $USER -p foo -lib $worklib
  5663. Xif test $? -ne 0 ; then fail; fi
  5664. X
  5665. X#
  5666. X# begin development of a change
  5667. X#    check it made the files it should
  5668. X#
  5669. X$here/bin/aegis -devbeg 1 -p foo -dir $workchan -lib $worklib
  5670. Xif test $? -ne 0 ; then fail; fi
  5671. X
  5672. X#
  5673. X# add a new files to the change
  5674. X#
  5675. X$here/bin/aegis -new_file $workchan/main.c -nl -lib $worklib -p foo
  5676. Xif test $? -ne 0 ; then fail; fi
  5677. X$here/bin/aegis -new_file $workchan/config -nl -lib $worklib -p foo
  5678. Xif test $? -ne 0 ; then fail; fi
  5679. Xcat > $workchan/main.c << 'end'
  5680. Xvoid
  5681. Xmain()
  5682. X{
  5683. X    exit(0);
  5684. X}
  5685. Xend
  5686. Xcat > $workchan/config << 'end'
  5687. Xbuild_command = "rm -f foo; cc -o foo -D'VERSION=\"$v\"' main.c";
  5688. Xlink_integration_directory = true;
  5689. X
  5690. Xhistory_get_command =
  5691. X    "co -u'$e' -p $h,v > $o";
  5692. Xhistory_create_command =
  5693. X    "ci -u -m/dev/null -t/dev/null $i $h,v; rcs -U $h,v";
  5694. Xhistory_put_command =
  5695. X    "ci -u -m/dev/null -t/dev/null $i $h,v; rcs -U $h,v";
  5696. Xhistory_query_command =
  5697. X    "rlog -r $h,v | awk '/^head:/ {print $$2}'";
  5698. X
  5699. Xdiff_command = "set +e; diff $orig $i > $out; test $$? -le 1";
  5700. X
  5701. Xdiff3_command = "(diff3 -e $mr $orig $i | sed -e '/^w$$/d' -e '/^q$$/d'; \
  5702. X    echo '1,$$p' ) | ed - $mr > $out";
  5703. Xend
  5704. X
  5705. X#
  5706. X# create a new test
  5707. X#
  5708. X$here/bin/aegis -nt -lib $worklib -p foo
  5709. Xif test $? -ne 0 ; then fail; fi
  5710. Xcat > $workchan/test/00/t0001a.sh << 'end'
  5711. X#!/bin/sh
  5712. X#
  5713. X# Project: "foo"
  5714. Xfail()
  5715. X{
  5716. X    echo SHUZBUTT 1>&2
  5717. X    exit 1
  5718. X}
  5719. Xpass()
  5720. X{
  5721. X    exit 0
  5722. X}
  5723. Xtrap "fail" 1 2 3 15
  5724. X
  5725. X./foo
  5726. Xq=$?
  5727. X
  5728. X# check for signals
  5729. Xif test $q -ge 128 
  5730. Xthen
  5731. X    fail
  5732. Xfi
  5733. X
  5734. X# should not complain
  5735. Xif test $q -ne 0 
  5736. Xthen
  5737. X    fail
  5738. Xfi
  5739. X
  5740. X# it probably worked
  5741. Xpass
  5742. Xend
  5743. X
  5744. X#
  5745. X# let the clock tick over, so the build will be happy
  5746. X#
  5747. Xsleep 1
  5748. X
  5749. X#
  5750. X# build the change
  5751. X#
  5752. X$here/bin/aegis -build -nl -lib $worklib -p foo > /dev/null 2>&1
  5753. Xif test $? -ne 0 ; then fail; fi
  5754. X
  5755. X#
  5756. X# difference the change
  5757. X#
  5758. X$here/bin/aegis -diff -nl -lib $worklib -p foo > /dev/null 2>&1
  5759. Xif test $? -ne 0 ; then fail; fi
  5760. X
  5761. X#
  5762. X# test the change
  5763. X#
  5764. X$here/bin/aegis -test -nl -lib $worklib -p foo > /dev/null 2>&1
  5765. Xif test $? -ne 0 ; then fail; fi
  5766. X
  5767. X#
  5768. X# finish development of the change
  5769. X#
  5770. X$here/bin/aegis -dev_end -lib $worklib -p foo
  5771. Xif test $? -ne 0 ; then fail; fi
  5772. X
  5773. X#
  5774. X# add a new reviewer
  5775. X#
  5776. X$here/bin/aegis -newrev $USER -p foo -lib $worklib
  5777. Xif test $? -ne 0 ; then fail; fi
  5778. X
  5779. X#
  5780. X# pass the review
  5781. X#
  5782. X$here/bin/aegis -review_pass -chan 1 -proj foo -lib $worklib
  5783. Xif test $? -ne 0 ; then fail; fi
  5784. X
  5785. X#
  5786. X# add an integrator
  5787. X#
  5788. X$here/bin/aegis -newint $USER -p foo -lib $worklib
  5789. Xif test $? -ne 0 ; then fail; fi
  5790. X
  5791. X#
  5792. X# start integrating
  5793. X#
  5794. X$here/bin/aegis -ib 1 -p foo -lib $worklib
  5795. Xif test $? -ne 0 ; then fail; fi
  5796. X
  5797. X#
  5798. X# integrate build
  5799. X#
  5800. X$here/bin/aegis -ibu -lib $worklib -p foo
  5801. Xif test $? -ne 0 ; then fail; fi
  5802. X
  5803. X#
  5804. X# the things tested in this test, worked
  5805. X#
  5806. Xpass
  5807. END_OF_FILE
  5808. if test 5057 -ne `wc -c <'test/00/t0015a.sh'`; then
  5809.     echo shar: \"'test/00/t0015a.sh'\" unpacked with wrong size!
  5810. fi
  5811. # end of 'test/00/t0015a.sh'
  5812. fi
  5813. echo shar: End of archive 4 \(of 19\).
  5814. cp /dev/null ark4isdone
  5815. MISSING=""
  5816. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ; do
  5817.     if test ! -f ark${I}isdone ; then
  5818.     MISSING="${MISSING} ${I}"
  5819.     fi
  5820. done
  5821. if test "${MISSING}" = "" ; then
  5822.     echo You have unpacked all 19 archives.
  5823.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  5824. else
  5825.     echo You still need to unpack the following archives:
  5826.     echo "        " ${MISSING}
  5827. fi
  5828. ##  End of shell archive.
  5829. exit 0
  5830.