[5804] in Athena Bugs
moira changes for pmax/Ingres v.6
daemon@ATHENA.MIT.EDU (John T Kohl)
Thu Aug 23 15:52:49 1990
Date: Thu, 23 Aug 90 15:51:29 -0400
From: John T Kohl <jtkohl@ATHENA.MIT.EDU>
To: bugs@ATHENA.MIT.EDU
Here are the diffs not related to configuration changes that I had to
make.
Some known bugs not fixed here:
dcm dumps core when timing out to an update server (somewhere in gdb
code, a null pointer deref probably)
moira client scrolling under curses is bizarrely broken.
*** /tmp/,RCSt1002579 Thu Aug 23 15:20:39 1990
--- dcm/startdcm.c Fri Aug 3 07:42:45 1990
***************
*** 28,68 ****
#define PROG "dcm"
int rdpipe[2];
! char *sigdescr[] = {
! 0,
! "hangup",
! "interrupt",
! "quit",
! "illegal instruction",
! "trace/BPT trap",
! "IOT trap",
! "EMT trap",
! "floating exception",
! "kill",
! "bus error",
! "segmentation violation",
! "bad system call",
! "broken pipe",
! "alarm clock",
! "termination",
! "urgent I/O condition",
! "stopped",
! "stopped",
! "continued",
! "child exited",
! "stopped (tty input)",
! "stopped (tty output)",
! "I/O possible",
! "cputime limit exceeded",
! "filesize limit exceeded",
! "virtual timer expired",
! "profiling timer expired",
! "window size changed",
! "signal 29",
! "user defined signal 1",
! "user defined signal 2",
! "signal 32"
! };
cleanup()
{
--- 28,34 ----
#define PROG "dcm"
int rdpipe[2];
! extern char *sys_siglist[];
cleanup()
{
***************
*** 82,88 ****
}
if (WIFSIGNALED(stat)) {
sprintf(buf, "exited on %s signal%s\n",
! sigdescr[stat.w_termsig],
(stat.w_coredump?"; Core dumped":0));
}
write(rdpipe[1], buf, strlen(buf));
--- 48,54 ----
}
if (WIFSIGNALED(stat)) {
sprintf(buf, "exited on %s signal%s\n",
! sys_siglist[stat.w_termsig],
(stat.w_coredump?"; Core dumped":0));
}
write(rdpipe[1], buf, strlen(buf));
***************
*** 118,124 ****
}
pipe(rdpipe);
if (fork()) {
! exit();
}
chdir("/");
close(0);
--- 84,90 ----
}
pipe(rdpipe);
if (fork()) {
! exit(0);
}
chdir("/");
close(0);
***************
*** 133,138 ****
--- 99,107 ----
close(tty);
sprintf(buf, "%s/%s", BIN_DIR, PROG);
+ #if INGRESVER == 6
+ setenv("II_SYSTEM", INGVER6DIR, 1);
+ #endif
if ((pid = fork()) == 0) {
dup2(inf, 0);
*** /tmp/,RCSt1002604 Thu Aug 23 15:22:15 1990
--- gen/aliases.qc Fri Aug 3 04:01:01 1990
***************
*** 186,192 ****
strcpy(u->login, strtrim(name));
if (type[0] == 'P') {
if (s = hash_lookup(machines, pid)) {
! sprintf(buf, "%s@%s", name, s);
u->pobox = strsave(buf);
} else {
u->pobox = (char *) NULL;
--- 186,192 ----
strcpy(u->login, strtrim(name));
if (type[0] == 'P') {
if (s = hash_lookup(machines, pid)) {
! sprintf(buf, "%s@%s.POP", name, s);
u->pobox = strsave(buf);
} else {
u->pobox = (char *) NULL;
*** /tmp/,RCSt1002604 Thu Aug 23 15:22:24 1990
--- gen/hesiod.qc Sat Aug 4 10:19:34 1990
***************
*** 69,79 ****
--- 69,84 ----
changed += do_filsys();
changed += do_cluster();
changed += do_printcap();
+ #ifdef notdef
changed += do_palladium();
+ #endif
changed += do_sloc();
+ #ifdef notdef
changed += do_service();
+ #endif
changed += do_groups();
+
## exit
if (!changed) {
***************
*** 203,209 ****
strcpy(u->name, login);
u->lists = NULL;
hash_store(users, id, u);
! fprintf(pout, "%s.passwd\tHS %s \"%s:*:%d:101:%s,%s,%s,%s,%s:/mit/%s:%s\"\n",
login, HTYPE, login, uid, fullname, nn, oa, op, hp, login, shell);
fprintf(uout, "%d.uid\tHS CNAME %s.passwd\n", uid, login);
if (ptype[0] == 'P' && (mach = hash_lookup(machines, pid))) {
--- 208,214 ----
strcpy(u->name, login);
u->lists = NULL;
hash_store(users, id, u);
! fprintf(pout, "%s.passwd\tHS %s \"%s:*:%d:15:%s,%s,%s,%s,%s:/decworld/%s:%s\"\n",
login, HTYPE, login, uid, fullname, nn, oa, op, hp, login, shell);
fprintf(uout, "%d.uid\tHS CNAME %s.passwd\n", uid, login);
if (ptype[0] == 'P' && (mach = hash_lookup(machines, pid))) {
***************
*** 698,703 ****
--- 703,709 ----
##}
+ #ifdef notdef
do_palladium()
##{
FILE *out;
***************
*** 754,761 ****
fix_file(outf);
return(1);
##}
-
do_sloc()
##{
FILE *out;
--- 760,767 ----
fix_file(outf);
return(1);
##}
+ #endif notdef
do_sloc()
##{
FILE *out;
***************
*** 807,812 ****
--- 813,819 ----
return(1);
##}
+ #ifdef notdef
do_service()
##{
FILE *out;
***************
*** 861,863 ****
--- 868,871 ----
fix_file(outf);
return(1);
##}
+ #endif
*** /tmp/,RCSt1002604 Thu Aug 23 15:22:30 1990
--- gen/hesiod.sh Sat Aug 4 03:14:52 1990
***************
*** 15,23 ****
# File that will contain the necessary information to be updated
set TARFILE=/tmp/hesiod.out
# Directory into which we will empty the tarfile
! set SRC_DIR=/etc/athena/_nameserver
# Directory into which we will put the final product
! set DEST_DIR=/etc/athena/nameserver
# Create the destination directory if it doesn't exist
if (! -d $DEST_DIR) then
--- 15,23 ----
# File that will contain the necessary information to be updated
set TARFILE=/tmp/hesiod.out
# Directory into which we will empty the tarfile
! set SRC_DIR=/etc/_nameserver
# Directory into which we will put the final product
! set DEST_DIR=/etc/namedb
# Create the destination directory if it doesn't exist
if (! -d $DEST_DIR) then
***************
*** 49,56 ****
--- 49,64 ----
/bin/tar xf $TARFILE $file
# Don't put up with errors extracting the information
if ($status) exit $MR_TARERR
+ chmod a+r $file
# Make sure the file is not zero-length
if (! -z $file) then
+ # noencryption changes: put passwd field into output
+ if ("./passwd.db" == $file) then
+ if ( -x $DEST_DIR/pw_merge.sh) then
+ $DEST_DIR/pw_merge.sh passwd.db /etc/passwd
+ if ($status) exit $MR_HESFILE
+ endif
+ endif
/bin/mv -f $file $DEST_DIR
if ($status != 0) exit $MR_HESFILE
else
***************
*** 69,78 ****
rm -f /etc/named.pid
# Restart named.
! (unlimit; /etc/named&)
sleep 5
- mv /etc/named.pid /etc/named.pid.restart
# This timeout is implemented by having the shell check TIMEOUT times
# for the existance of /etc/named.pid and to sleep INTERVAL seconds
# between each check.
--- 77,88 ----
rm -f /etc/named.pid
# Restart named.
! (unlimit; /usr/etc/named /etc/named.boot&)
sleep 5
+ # The timings below expect that the startup takes a long time...
+
+
# This timeout is implemented by having the shell check TIMEOUT times
# for the existance of /etc/named.pid and to sleep INTERVAL seconds
# between each check.
***************
*** 81,88 ****
set INTERVAL=60 # number of seconds between checks
set i = 0
while ($i < $TIMEOUT)
- sleep $INTERVAL
if (-f /etc/named.pid) break
@ i++
end
--- 91,98 ----
set INTERVAL=60 # number of seconds between checks
set i = 0
while ($i < $TIMEOUT)
if (-f /etc/named.pid) break
+ sleep $INTERVAL
@ i++
end
***************
*** 90,95 ****
--- 100,106 ----
if ($i == $TIMEOUT) exit $MR_NAMED
# Clean up!
+
/bin/rm -f $TARFILE
/bin/rm -f $0
*** /tmp/,RCSt1002604 Thu Aug 23 15:22:34 1990
--- gen/install_dirs Sun Aug 5 09:52:23 1990
***************
*** 42,48 ****
endif
end
if (! -d $tmpdir) continue
! chown $uid.$gid $tmpdir
# At some point, we may wish to add a more elegant way of handling
# locker types. The current arrangement allows for easy adding of
--- 42,49 ----
endif
end
if (! -d $tmpdir) continue
! chown $uid $tmpdir
! chgrp $gid $tmpdir
# At some point, we may wish to add a more elegant way of handling
# locker types. The current arrangement allows for easy adding of
***************
*** 58,64 ****
# Give user prototype files
(cd $tmpdir; tar xf $USERTAR)
if ($status) set WARN
! chown $uid.$gid $tmpdir $tmpdir/.??* $tmpdir/*
breaksw
case COURSE:
/bin/chmod 775 $tmpdir
--- 59,66 ----
# Give user prototype files
(cd $tmpdir; tar xf $USERTAR)
if ($status) set WARN
! chown $uid $tmpdir $tmpdir/.??* $tmpdir/*
! chgrp $gid $tmpdir $tmpdir/.??* $tmpdir/*
breaksw
case COURSE:
/bin/chmod 775 $tmpdir
*** /tmp/,RCSt1002604 Thu Aug 23 15:22:37 1990
--- gen/install_quotas Sun Aug 5 09:05:26 1990
***************
*** 4,14 ****
set dev=$1
! # Checking for /etc/enforce_quota is transitional code and should be
! # removed when the SMS database has an accurate understanding of what
! # everyone's quotas are.
! if ( -f /etc/enforce_quota ) then
! while (1)
# set args = $< will NOT work. $< will be treated as a single word
set args = `echo $<`
--- 4,10 ----
set dev=$1
! while (1)
# set args = $< will NOT work. $< will be treated as a single word
set args = `echo $<`
***************
*** 18,29 ****
set quota = $args[2]
setquota $dev $uid $quota
! end
! endif
exit 0
#
! # $Source: /hecate/u4/lockers/decworld/PANSS/services/moira/gen/RCS/install_quotas,v $
! # $Header: /hecate/u4/lockers/decworld/PANSS/services/moira/gen/RCS/install_quotas,v 1.1 90/08/05 21:35:33 jtkohl Exp $
#
--- 14,24 ----
set quota = $args[2]
setquota $dev $uid $quota
! end
exit 0
#
! # $Source: /u1/athena/PANSS/services/moira/gen/RCS/install_quotas,v $
! # $Header: /u1/athena/PANSS/services/moira/gen/RCS/install_quotas,v 1.2 90/08/05 23:05:19 jtkohl Exp $
#
*** /tmp/,RCSt1002604 Thu Aug 23 15:22:41 1990
--- gen/nfs.qc Fri Aug 3 05:37:11 1990
***************
*** 22,27 ****
--- 22,28 ----
char *malloc(), *strsave();
char *ingres_date_and_time(), *ingres_time(), *ingres_date();
char nfs_dir[64];
+ extern int errno;
main(argc, argv)
int argc;
***************
*** 176,183 ****
if (u = hash_lookup(users, id))
fprintf(fd, "%s\n", u);
## }
! if (fclose(fd)) {
! fprintf(stderr, "error closing %s\n", file);
exit(MR_CCONFIG);
}
}
--- 177,184 ----
if (u = hash_lookup(users, id))
fprintf(fd, "%s\n", u);
## }
! if (fclose(fd) == EOF) {
! fprintf(stderr, "error %d closing %s\n", errno, file);
exit(MR_CCONFIG);
}
}
***************
*** 350,357 ****
## }
if (quotasum)
fprintf(fd, "%d %d\n", prevuid, quotasum);
! if (fclose(fd)) {
! fprintf(stderr, "error closing %s", file);
exit(MR_CCONFIG);
}
--- 351,358 ----
## }
if (quotasum)
fprintf(fd, "%d %d\n", prevuid, quotasum);
! if (fclose(fd) == EOF) {
! fprintf(stderr, "error %d closing %s", errno, file);
exit(MR_CCONFIG);
}
***************
*** 378,386 ****
}
fprintf(fd, "%s %d %d %s\n", strtrim(dir), uid, gid, strtrim(fstype));
## }
! if (fclose(fd)) {
! fprintf(stderr, "error closing %s", file);
! exit(MR_CCONFIG);
}
## end transaction
return(1);
--- 379,389 ----
}
fprintf(fd, "%s %d %d %s\n", strtrim(dir), uid, gid, strtrim(fstype));
## }
! if (olddev != -1 && oldmach != -1) {
! if (fclose(fd) == EOF) {
! fprintf(stderr, "error %d closing %s", errno, file);
! exit(MR_CCONFIG);
! }
}
## end transaction
return(1);
*** /tmp/,RCSt1002604 Thu Aug 23 15:22:46 1990
--- gen/nfs.sh Sun Aug 5 09:07:00 1990
***************
*** 1,9 ****
#!/bin/csh -f
# This script performs nfs updates on servers.
#
! # $Source: /hecate/u4/lockers/decworld/PANSS/services/moira/gen/RCS/nfs.sh,v $
! echo '$Header: /hecate/u4/lockers/decworld/PANSS/services/moira/gen/RCS/nfs.sh,v 1.1 90/08/02 13:37:08 jtkohl Exp $'
# The following exit codes are defined and MUST BE CONSISTENT with the
# MR error codes the library uses:
set MR_NOCRED = 47836470
--- 1,10 ----
#!/bin/csh -f
# This script performs nfs updates on servers.
#
! # $Source: /u1/athena/PANSS/services/moira/gen/RCS/nfs.sh,v $
! echo '$Header: /u1/athena/PANSS/services/moira/gen/RCS/nfs.sh,v 1.7 90/08/05 23:06:56 jtkohl Exp $'
+ umask 22
# The following exit codes are defined and MUST BE CONSISTENT with the
# MR error codes the library uses:
set MR_NOCRED = 47836470
***************
*** 10,16 ****
set MR_MKCRED = 47836474
set MR_TARERR = 47836476
! set path=(/etc /bin /usr/bin /usr/etc)
set nonomatch
# The file containg the information for the update
--- 11,17 ----
set MR_MKCRED = 47836474
set MR_TARERR = 47836476
! set path=(/etc /bin /usr/bin /usr/etc /usr/athena/etc)
set nonomatch
# The file containg the information for the update
***************
*** 32,39 ****
# incorrect. For now however, it is probably not worth the effort
# to canonicalize the hostname, especially with the upcoming update
# protocol redesign
! set uchost=`/bin/hostname | tr a-z A-Z`.MIT.EDU
!
cd $SRC_DIR
# Just extract everything since some of what we need exists as
--- 33,40 ----
# incorrect. For now however, it is probably not worth the effort
# to canonicalize the hostname, especially with the upcoming update
# protocol redesign
! set uchost=`/bin/hostname | tr a-z A-Z`
! if ("$uchost" !~ *.*) set uchost=$uchost.DECWORLD.DEC.COM
cd $SRC_DIR
# Just extract everything since some of what we need exists as
***************
*** 50,77 ****
echo ${uchost}:$dev
./install_${type} $dev < $i
if ($status) exit $status
! if ($type == quotas) ./zero_quotas $dev < $i
! if ($status) exit $status
endif
end
end
# build new credentials files.
! rm -f /usr/etc/credentials.new
! cp ${uchost}.cred /usr/etc/credentials.new
if ($status) exit $MR_NOCRED
! /usr/etc/mkcred /usr/etc/credentials.new
if ($status) exit $MR_MKCRED
# Try to install the files
foreach e ( "" .dir .pag)
! mv -f /usr/etc/credentials.new$e /usr/etc/credentials$e
end
# If any of them didn't get installed, fail
foreach e ( "" .dir .pag)
! if (! -e /usr/etc/credentials$e) exit $MR_NOCRED
end
--- 51,79 ----
echo ${uchost}:$dev
./install_${type} $dev < $i
if ($status) exit $status
! # if ($type == quotas) ./zero_quotas $dev < $i
! # if ($status) exit $status
endif
end
end
# build new credentials files.
! rm -f /usr/athena/etc/credentials.new
! cp ${uchost}.cred /usr/athena/etc/credentials.new
if ($status) exit $MR_NOCRED
+ chmod a+r /usr/athena/etc/credentials.new
! /usr/athena/etc/mkcred /usr/athena/etc/credentials.new
if ($status) exit $MR_MKCRED
# Try to install the files
foreach e ( "" .dir .pag)
! mv -f /usr/athena/etc/credentials.new$e /usr/athena/etc/credentials$e
end
# If any of them didn't get installed, fail
foreach e ( "" .dir .pag)
! if (! -e /usr/athena/etc/credentials$e) exit $MR_NOCRED
end
*** /tmp/,RCSt1002604 Thu Aug 23 15:22:58 1990
--- gen/setquota.c Sun Aug 5 09:00:57 1990
***************
*** 11,16 ****
--- 11,19 ----
* quota system.
*
* $Log: setquota.c,v $
+ * Revision 1.2 90/08/05 23:00:52 jtkohl
+ * ultrix version.
+ *
* Revision 1.1 90/08/05 22:29:19 jtkohl
* Initial revision
*
***************
*** 35,45 ****
*/
#ifndef lint
! static char *rcsid_setquota_c = "$Header: /hecate/u4/lockers/decworld/PANSS/services/moira/gen/RCS/setquota.c,v 1.1 90/08/05 22:29:19 jtkohl Exp $";
#endif lint
#include <stdio.h>
#include <ctype.h>
#include <mntent.h>
#include <sys/file.h>
--- 38,189 ----
*/
#ifndef lint
! static char *rcsid_setquota_c = "$Header: /u1/athena/PANSS/services/moira/gen/RCS/setquota.c,v 1.2 90/08/05 23:00:52 jtkohl Exp $";
#endif lint
+ #ifdef ultrix
+
#include <stdio.h>
#include <ctype.h>
+
+ #include <sys/types.h>
+ #include <sys/file.h>
+ #include <sys/param.h>
+ #include <sys/time.h>
+ #include <sys/quota.h>
+ #include <sys/mount.h>
+
+ #define kb(n) (howmany(dbtob(n), 1024))
+
+ static dev_t dev;
+ static char quotafilename[30];
+ static struct dqblk zblk = {0};
+
+ main(argc, argv)
+ int argc;
+ char **argv;
+ {
+ int uid, uid_low, uid_high, soft_quota, qfd;
+ struct dqblk db, odb;
+ int uflag = 0;
+ int range_mode = 0;
+
+ while (argc > 4 && *argv[1] == '-') {
+ switch(argv[1][1]) {
+ case 'u':
+ uflag = 1;
+ --argc;
+ ++argv;
+ break;
+ case 'r':
+ range_mode = 1;
+ --argc;
+ ++argv;
+ break;
+ default:
+ goto usage;
+ }
+ }
+
+ if ((argc != 4 && !range_mode) || (argc != 5 && range_mode)) {
+ usage:
+ fprintf(stderr, "usage: setquota [-u] special uid quota\n\
+ setquota -r [-u] special uid_low uid_high quota\n\
+ -u means set limit to <quota> + cur usage\n\
+ special is a mounted filesystem special device\n\
+ quota is in 1KB units\n");
+ exit(1);
+ }
+
+ if ((!range_mode &&
+ (!isdigit(*argv[2]) || !isdigit(*argv[3]))) ||
+ (range_mode &&
+ (!isdigit(*argv[2]) || !isdigit(*argv[3]) ||
+ !isdigit(*argv[4])))) {
+ fprintf(stderr, "setquota: uid and quota must be numeric\n");
+ goto usage;
+ }
+
+ if (range_mode){
+ uid_low = atoi(argv[2]);
+ uid_high = atoi(argv[3]);
+ soft_quota = atoi(argv[4]);
+ if (uid_low > uid_high){
+ fprintf(stderr, "setquota: range error\n");
+ exit(1);
+ }
+ }
+ else{
+ uid_low = uid_high = atoi(argv[2]);
+ soft_quota = atoi(argv[3]);
+ }
+
+ get_device(argv[1]);
+
+ for(uid = uid_low; uid <= uid_high; uid++){
+
+ if (quota(Q_GETDLIM, uid, dev, &odb) != 0) {
+ bzero(&odb, sizeof(odb));
+ odb.dqb_bwarn = 3;
+ odb.dqb_iwarn = 3;
+ }
+
+ db.dqb_bsoftlimit = soft_quota;
+ db.dqb_bhardlimit = (db.dqb_bsoftlimit * 6) / 5;
+ db.dqb_isoftlimit = soft_quota / 2;
+ db.dqb_ihardlimit = (db.dqb_isoftlimit * 6) / 5;
+ db.dqb_bwarn = odb.dqb_bwarn;
+ db.dqb_iwarn = odb.dqb_iwarn;
+
+ db.dqb_bsoftlimit *= btodb(1024);
+ db.dqb_bhardlimit *= btodb(1024);
+ db.dqb_curblocks = odb.dqb_curblocks;
+ db.dqb_curinodes = odb.dqb_curinodes;
+
+ if (uflag) {
+ db.dqb_bhardlimit += odb.dqb_curblocks;
+ db.dqb_bsoftlimit += odb.dqb_curblocks;
+ db.dqb_ihardlimit += odb.dqb_curinodes;
+ db.dqb_isoftlimit += odb.dqb_curinodes;
+ }
+
+ if (quota(Q_SETDLIM, uid, dev, &db) < 0) {
+ fprintf (stderr, "quota: %d on ", uid);
+ perror (argv[1]);
+ exit (1);
+ }
+ }
+
+ if (quota(Q_SYNC, 0, dev, 0) < 0) {
+ perror ("can't sync disk quota");
+ exit (1);
+ }
+
+ exit (0);
+ }
+
+ get_device(device_or_dir)
+ char *device_or_dir;
+ {
+ struct fs_data fsbuffer;
+ int number = 0;
+
+ while (getmountent(&number, &fsbuffer, 1) == 1) {
+ if ((strcmp(fsbuffer.fd_devname, device_or_dir) == 0) ||
+ (strcmp(fsbuffer.fd_path, device_or_dir) == 0)){
+ dev = fsbuffer.fd_dev;
+ sprintf(quotafilename, "%s/quotas", fsbuffer.fd_path);
+ return;
+ }
+ }
+ fprintf(stderr, "%s not mounted.\n", device_or_dir);
+ exit(1);
+ }
+
+ #else
+ /* 4.3/Sun code */
+ #include <stdio.h>
+ #include <ctype.h>
#include <mntent.h>
#include <sys/file.h>
***************
*** 184,186 ****
--- 328,331 ----
fprintf(stderr, "%s not mounted.\n", device_or_dir);
exit(1);
}
+ #endif /* ultrix */
*** /tmp/,RCSt1002684 Thu Aug 23 15:29:00 1990
--- reg_svr/Makefile Sat Aug 4 10:52:36 1990
***************
*** 9,15 ****
# <mit-copyright.h>.
! CFLAGS= -O -I../include
SRCS = requests.c reg_svr.c startreg.c
OBJS = requests.o reg_svr.o
--- 9,15 ----
# <mit-copyright.h>.
! CFLAGS= -O -I../include -I/usr/athena/include -DNOENCRYPTION
SRCS = requests.c reg_svr.c startreg.c
OBJS = requests.o reg_svr.o
***************
*** 16,30 ****
all: reg_svr startreg
reg_svr: $(OBJS)
! cc ${CFLAGS} -o reg_svr $(OBJS) -L../lib \
../server/libmoiraglue.a \
-lmoira -lkadm -lkrb -ldes -lzephyr -lcom_err \
! /usr/rtingres/lib/libqlib /usr/rtingres/lib/compatlib
reg_svr.o requests.o: reg_svr.h
startreg: startreg.o
! cc -o startreg startreg.o
clean: /tmp
rm -f a.out core *.o
--- 16,30 ----
all: reg_svr startreg
reg_svr: $(OBJS)
! cc ${CFLAGS} -o reg_svr $(OBJS) -L../lib -L/usr/athena/lib \
../server/libmoiraglue.a \
-lmoira -lkadm -lkrb -ldes -lzephyr -lcom_err \
! /usr/rtingres/lib/libingres.a -lm
reg_svr.o requests.o: reg_svr.h
startreg: startreg.o
! cc -o startreg startreg.o -L/usr/athena/lib -lkrb
clean: /tmp
rm -f a.out core *.o
*** /tmp/,RCSt1002684 Thu Aug 23 15:29:06 1990
--- reg_svr/reg_svr.c Sat Aug 4 10:58:22 1990
***************
*** 168,173 ****
--- 168,176 ----
because of the DES encryption routines. */
decrypt_len = (long)message->encrypted_len;
+ #ifdef NOENCRYPTION
+ bcopy(message->encrypted, decrypt, decrypt_len);
+ #else
/* Get key from the one-way encrypted ID in the Moira database */
des_string_to_key(data->mit_id, key);
/* Get schedule from key */
***************
*** 177,182 ****
--- 180,186 ----
padded. */
des_pcbc_encrypt(message->encrypted, decrypt, decrypt_len,
sched, key, DES_DECRYPT);
+ #endif
/* Extract the plain text and encrypted ID fields from the decrypted
packet information. */
***************
*** 507,513 ****
--- 511,522 ----
SET_FIELD(KADM_DESKEY, new.fields);
SET_FIELD(KADM_NAME, new.fields);
+ #ifdef NOENCRYPTION
+ bzero(key, sizeof(des_cblock));
+ key[0] = 127;
+ #else
(void) des_random_key(key);
+ #endif
new.key_low = htonl(lkey[0]);
new.key_high = htonl(lkey[1]);
strcpy(new.name, login);
***************
*** 543,549 ****
--- 552,563 ----
SET_FIELD(KADM_DESKEY, new.fields);
SET_FIELD(KADM_NAME, new.fields);
+ #ifdef NOENCRYPTION
+ bzero(key, sizeof(des_cblock));
+ key[0] = 127;
+ #else
(void) des_string_to_key(password, key);
+ #endif
new.key_low = htonl(lkey[0]);
new.key_high = htonl(lkey[1]);
strcpy(new.name, login);
*** /tmp/,RCSt1002684 Thu Aug 23 15:29:11 1990
--- reg_svr/startreg.c Fri Aug 3 07:44:38 1990
***************
*** 28,69 ****
#define PROG "reg_svr"
int rdpipe[2];
! char *sigdescr[] = {
! 0,
! "hangup",
! "interrupt",
! "quit",
! "illegal instruction",
! "trace/BPT trap",
! "IOT trap",
! "EMT trap",
! "floating exception",
! "kill",
! "bus error",
! "segmentation violation",
! "bad system call",
! "broken pipe",
! "alarm clock",
! "termination",
! "urgent I/O condition",
! "stopped",
! "stopped",
! "continued",
! "child exited",
! "stopped (tty input)",
! "stopped (tty output)",
! "I/O possible",
! "cputime limit exceeded",
! "filesize limit exceeded",
! "virtual timer expired",
! "profiling timer expired",
! "window size changed",
! "signal 29",
! "user defined signal 1",
! "user defined signal 2",
! "signal 32"
! };
!
cleanup()
{
union wait stat;
--- 28,34 ----
#define PROG "reg_svr"
int rdpipe[2];
! extern char *sys_siglist[];
cleanup()
{
union wait stat;
***************
*** 82,88 ****
}
if (WIFSIGNALED(stat)) {
sprintf(buf, "exited on %s signal%s\n",
! sigdescr[stat.w_termsig],
(stat.w_coredump?"; Core dumped":0));
}
write(rdpipe[1], buf, strlen(buf));
--- 47,53 ----
}
if (WIFSIGNALED(stat)) {
sprintf(buf, "exited on %s signal%s\n",
! sys_siglist[stat.w_termsig],
(stat.w_coredump?"; Core dumped":0));
}
write(rdpipe[1], buf, strlen(buf));
***************
*** 118,124 ****
}
pipe(rdpipe);
if (fork()) {
! exit();
}
chdir("/");
close(0);
--- 83,89 ----
}
pipe(rdpipe);
if (fork()) {
! exit(0);
}
chdir("/");
close(0);
***************
*** 133,138 ****
--- 98,106 ----
close(tty);
sprintf(buf, "%s/%s", BIN_DIR, PROG);
+ #if INGRESVER == 6
+ setenv("II_SYSTEM", INGVER6DIR, 1);
+ #endif
if ((pid = fork()) == 0) {
dup2(inf, 0);
*** /tmp/,RCSt1002728 Thu Aug 23 15:33:00 1990
--- server/Makefile Fri Aug 3 11:46:39 1990
***************
*** 25,38 ****
LIBS=../rpc/libmoira.a ../gdb/libgdb.a
PLIBS=../../rpc/libmoira_p.a ../../gdb/libgdb_p.a
! LLIBS= -L../lib -lzephyr -lkrb -ldes -lcom_err -lm
! PLLIBS= -L../../lib -lzephyr -lkrb -ldes -lcom_err_p -lm
! SLIBS= /usr/rtingres/lib/libqlib /usr/rtingres/lib/compatlib
COPTS= -g
! INCDIRS=-I../include
CFLAGS= ${INCDIRS} ${COPTS}
LINTFLAGS= -uhv
--- 25,38 ----
LIBS=../rpc/libmoira.a ../gdb/libgdb.a
PLIBS=../../rpc/libmoira_p.a ../../gdb/libgdb_p.a
! LLIBS= -L../lib -L/usr/athena/lib -lzephyr -lkrb -ldes -lcom_err -lm
! PLLIBS= -L../../lib -L/usr/athena/lib -lzephyr -lkrb -ldes -lcom_err_p -lm
! SLIBS= /usr/rtingres/lib/libingres.a -lm
COPTS= -g
! INCDIRS=-I../include -I/usr/athena/include
CFLAGS= ${INCDIRS} ${COPTS}
LINTFLAGS= -uhv
***************
*** 72,78 ****
./startmoira
startmoira: startmoira.o
! cc -o startmoira ${COPTS} startmoira.o
install: moirad startmoira
install -c moirad ../bin/moirad
--- 72,78 ----
./startmoira
startmoira: startmoira.o
! cc -o startmoira ${COPTS} startmoira.o -L/usr/athena/lib -lkrb
install: moirad startmoira
install -c moirad ../bin/moirad
*** /tmp/,RCSt1002728 Thu Aug 23 15:33:05 1990
--- server/qrtn.qc Fri Aug 3 11:31:09 1990
***************
*** 93,101 ****
--- 93,103 ----
/* open the database */
## ingres sms
+ #if INGRESVER < 6
## set lockmode session where level = table, timeout = query_timeout
## set lockmode on capacls where readlock = shared
## set lockmode on alias where readlock = shared
+ #endif
return ingres_errno;
}
***************
*** 370,376 ****
--- 374,382 ----
}
incremental_flush();
}
+ #if INGRESVER < 6
## set lockmode session where readlock = system
+ #endif
}
if (status != MR_SUCCESS && log_flags & LOG_RES)
*** /tmp/,RCSt1002728 Thu Aug 23 15:33:15 1990
--- server/qsupport.qc Sun Aug 5 09:50:55 1990
***************
*** 865,871 ****
--- 865,873 ----
char **argv;
client *cl;
##{
+ #if INGRESVER < 6
## set lockmode session where readlock = system
+ #endif
##}
***************
*** 1853,1858 ****
--- 1855,1865 ----
who = cl->client_id;
## repeat replace list (modtime = "now", modby = @who, modwith = @entity)
## where list.#list_id = @lid
+
+ ## repeat replace tblstats (appends = tblstats.appends + 1,
+ ## modtime = "now")
+ ## where tblstats.#table = "imembers"
+
if (ingres_errno) return(mr_errcode);
return(MR_SUCCESS);
##}
***************
*** 1968,1973 ****
--- 1975,1985 ----
who = cl->client_id;
## repeat replace list (modtime = "now", modby = @who, modwith = @entity)
## where list.#list_id = @lid
+
+ ## repeat replace tblstats (deletes = tblstats.deletes + 1,
+ ## modtime = "now")
+ ## where tblstats.#table = "imembers"
+
if (ingres_errno) return(mr_errcode);
return(MR_SUCCESS);
##}
***************
*** 2615,2621 ****
## repeat append filesys (filsys_id = values.value, phys_id = @pid,
## label = @login, type = "NFS", mach_id = @m_id,
## name = @directory + "/" + @login,
! ## mount = "/mit/" + @login,
## access = "w", comments = "User Locker",
## owner = @users_id, owners = @list_id, createflg = 1,
## lockertype = "HOMEDIR", modtime = "now",
--- 2627,2633 ----
## repeat append filesys (filsys_id = values.value, phys_id = @pid,
## label = @login, type = "NFS", mach_id = @m_id,
## name = @directory + "/" + @login,
! ## mount = "/decworld/" + @login,
## access = "w", comments = "User Locker",
## owner = @users_id, owners = @list_id, createflg = 1,
## lockertype = "HOMEDIR", modtime = "now",
*** /tmp/,RCSt1002728 Thu Aug 23 15:33:31 1990
--- server/startmoira.c Fri Aug 3 07:43:55 1990
***************
*** 29,69 ****
#define PROG "moirad"
int rdpipe[2];
! char *sigdescr[] = {
! 0,
! "hangup",
! "interrupt",
! "quit",
! "illegal instruction",
! "trace/BPT trap",
! "IOT trap",
! "EMT trap",
! "floating exception",
! "kill",
! "bus error",
! "segmentation violation",
! "bad system call",
! "broken pipe",
! "alarm clock",
! "termination",
! "urgent I/O condition",
! "stopped",
! "stopped",
! "continued",
! "child exited",
! "stopped (tty input)",
! "stopped (tty output)",
! "I/O possible",
! "cputime limit exceeded",
! "filesize limit exceeded",
! "virtual timer expired",
! "profiling timer expired",
! "window size changed",
! "signal 29",
! "user defined signal 1",
! "user defined signal 2",
! "signal 32"
! };
cleanup()
{
--- 29,35 ----
#define PROG "moirad"
int rdpipe[2];
! extern char *sys_siglist[];
cleanup()
{
***************
*** 83,89 ****
}
if (WIFSIGNALED(stat)) {
sprintf(buf, "exited on %s signal%s\n",
! sigdescr[stat.w_termsig],
(stat.w_coredump?"; Core dumped":0));
}
write(rdpipe[1], buf, strlen(buf));
--- 49,55 ----
}
if (WIFSIGNALED(stat)) {
sprintf(buf, "exited on %s signal%s\n",
! sys_siglist[stat.w_termsig],
(stat.w_coredump?"; Core dumped":0));
}
write(rdpipe[1], buf, strlen(buf));
***************
*** 119,125 ****
}
pipe(rdpipe);
if (fork()) {
! exit();
}
chdir("/");
close(0);
--- 85,91 ----
}
pipe(rdpipe);
if (fork()) {
! exit(0);
}
chdir("/");
close(0);
***************
*** 134,139 ****
--- 100,108 ----
close(tty);
sprintf(buf, "%s/%s", BIN_DIR, PROG);
+ #if INGRESVER == 6
+ setenv("II_SYSTEM", INGVER6DIR, 1);
+ #endif
if ((pid = fork()) == 0) {
dup2(inf, 0);
*** /tmp/,RCSt1002769 Thu Aug 23 15:36:43 1990
--- backup/bkup.qc Thu Aug 23 15:36:43 1990
***************
*** 621,628 ****
## int t_phys_id;
/* label = c32, */
## char t_label[33];
! /* order = i2, */
! ## int t_order;
/* type = c8, */
## char t_type[9];
/* mach_id = i4, */
--- 621,628 ----
## int t_phys_id;
/* label = c32, */
## char t_label[33];
! /* mr_order = i2, */
! ## int t_mr_order;
/* type = c8, */
## char t_type[9];
/* mach_id = i4, */
***************
*** 654,660 ****
## t_filsys_id = f.filsys_id,
## t_phys_id = f.phys_id,
## t_label = f.label,
! ## t_order = f.order,
## t_type = f.type,
## t_mach_id = f.mach_id,
## t_name = f.name,
--- 654,660 ----
## t_filsys_id = f.filsys_id,
## t_phys_id = f.phys_id,
## t_label = f.label,
! ## t_mr_order = f.mr_order,
## t_type = f.type,
## t_mach_id = f.mach_id,
## t_name = f.name,
***************
*** 675,681 ****
dump_sep(f);
dump_str(f, t_label);
dump_sep(f);
! dump_int(f, t_order);
dump_sep(f);
dump_str(f, t_type);
dump_sep(f);
--- 675,681 ----
dump_sep(f);
dump_str(f, t_label);
dump_sep(f);
! dump_int(f, t_mr_order);
dump_sep(f);
dump_str(f, t_type);
dump_sep(f);
*** /tmp/,RCSt1002769 Thu Aug 23 15:36:46 1990
--- backup/rest.qc Thu Aug 23 15:36:47 1990
***************
*** 622,629 ****
## int t_phys_id;
/* label = c32, */
## char t_label[33];
! /* order = i2, */
! ## int t_order;
/* type = c8, */
## char t_type[9];
/* mach_id = i4, */
--- 622,629 ----
## int t_phys_id;
/* label = c32, */
## char t_label[33];
! /* mr_order = i2, */
! ## int t_mr_order;
/* type = c8, */
## char t_type[9];
/* mach_id = i4, */
***************
*** 658,664 ****
parse_sep(f);
parse_str(f, t_label, 33);
parse_sep(f);
! t_order = parse_int(f);
parse_sep(f);
parse_str(f, t_type, 9);
parse_sep(f);
--- 658,664 ----
parse_sep(f);
parse_str(f, t_label, 33);
parse_sep(f);
! t_mr_order = parse_int(f);
parse_sep(f);
parse_str(f, t_type, 9);
parse_sep(f);
***************
*** 690,696 ****
## filsys_id = t_filsys_id,
## phys_id = t_phys_id,
## label = t_label,
! ## order = t_order,
## type = t_type,
## mach_id = t_mach_id,
## name = t_name,
--- 690,696 ----
## filsys_id = t_filsys_id,
## phys_id = t_phys_id,
## label = t_label,
! ## mr_order = t_mr_order,
## type = t_type,
## mach_id = t_mach_id,
## name = t_name,
*** /tmp/,RCSt1002834 Thu Aug 23 15:39:49 1990
--- clients/moira/Makefile Mon Aug 6 03:59:28 1990
***************
*** 16,24 ****
#
DESTDIR=
! CFLAGS = -I../../include -I. -O
! LDFLAGS = -L../../lib
! CONFDIR = ${DESTDIR}/usr/athena
BINDIR = ${DESTDIR}/bin
MOIRALIB = -lmoira -lgdb -lcom_err
--- 16,24 ----
#
DESTDIR=
! CFLAGS = -I../../include -I. -I/usr/athena/include -O
! LDFLAGS = -L../../lib -L/usr/athena/lib
! CONFDIR = /usr/athena/bin
BINDIR = ${DESTDIR}/bin
MOIRALIB = -lmoira -lgdb -lcom_err
***************
*** 39,54 ****
cc ${CFLAGS} ${LDFLAGS} -o moira ${OBJS} ${LIBS}
lint:
! lint -I../../include *.c
install: moira
! install -c -s moira ${DESTDIR}/usr/athena/moira
! rm -f ${DESTDIR}/usr/athena/usermaint
! rm -f ${DESTDIR}/usr/athena/listmaint
! rm -f ${DESTDIR}/usr/athena/dcmmaint
! ln -s /usr/athena/moira ${DESTDIR}/usr/athena/usermaint
! ln -s /usr/athena/moira ${DESTDIR}/usr/athena/listmaint
! ln -s /usr/athena/moira ${DESTDIR}/usr/athena/dcmmaint
clean:
rm -f *.o *~
--- 39,54 ----
cc ${CFLAGS} ${LDFLAGS} -o moira ${OBJS} ${LIBS}
lint:
! lint -I../../include -I/usr/athena/include *.c
install: moira
! install -c -s moira ${DESTDIR}${CONFDIR}/moira
! rm -f ${DESTDIR}${CONFDIR}/usermaint
! rm -f ${DESTDIR}${CONFDIR}/listmaint
! rm -f ${DESTDIR}${CONFDIR}/dcmmaint
! ln -s moira ${DESTDIR}${CONFDIR}/usermaint
! ln -s moira ${DESTDIR}${CONFDIR}/listmaint
! ln -s moira ${DESTDIR}${CONFDIR}/dcmmaint
clean:
rm -f *.o *~
*** /tmp/,RCSt1002834 Thu Aug 23 15:39:54 1990
--- clients/moira/attach.c Mon Aug 6 03:58:39 1990
***************
*** 103,109 ****
case LABEL:
if ( (stat = do_mr_query("get_filesys_by_label", 1, &name,
StoreInfo, (char *)&elem)) != 0) {
! com_err(program_name, stat, NULL);
return(NULL);
}
break;
--- 103,109 ----
case LABEL:
if ( (stat = do_mr_query("get_filesys_by_label", 1, &name,
StoreInfo, (char *)&elem)) != 0) {
! com_err(program_name, stat, "");
return(NULL);
}
break;
***************
*** 110,116 ****
case MACHINE:
if ( (stat = do_mr_query("get_filesys_by_machine", 1, &name,
StoreInfo, (char *)&elem)) != 0) {
! com_err(program_name, stat, NULL);
return(NULL);
}
break;
--- 110,116 ----
case MACHINE:
if ( (stat = do_mr_query("get_filesys_by_machine", 1, &name,
StoreInfo, (char *)&elem)) != 0) {
! com_err(program_name, stat, "");
return(NULL);
}
break;
***************
*** 117,123 ****
case GROUP:
if ( (stat = do_mr_query("get_filesys_by_group", 1, &name,
StoreInfo, (char *)&elem)) != 0) {
! com_err(program_name, stat, NULL);
return(NULL);
}
break;
--- 117,123 ----
case GROUP:
if ( (stat = do_mr_query("get_filesys_by_group", 1, &name,
StoreInfo, (char *)&elem)) != 0) {
! com_err(program_name, stat, "");
return(NULL);
}
break;
***************
*** 199,205 ****
if (stat == MR_NO_MATCH)
Put_message(" [no members]");
else
! com_err(program_name, stat, NULL);
} else {
fsgCount = 1;
Loop(QueueTop(elem), (void *) PrintFSGMembers);
--- 199,205 ----
if (stat == MR_NO_MATCH)
Put_message(" [no members]");
else
! com_err(program_name, stat, "");
} else {
fsgCount = 1;
Loop(QueueTop(elem), (void *) PrintFSGMembers);
*** /tmp/,RCSt1002834 Thu Aug 23 15:40:00 1990
--- clients/moira/menu.c Mon Aug 6 03:59:04 1990
***************
*** 68,83 ****
/*
* Hook function to cause error messages to be printed through
! * curses instead of around it. Takes at most 5 args to the
! * printf string (crock...)
*/
void
! menu_com_err_hook(who, code, fmt, arg1, arg2, arg3, arg4, arg5)
const char *who;
long code;
const char *fmt;
! caddr_t arg1, arg2, arg3, arg4, arg5;
{
char buf[BUFSIZ], *cp;
--- 68,82 ----
/*
* Hook function to cause error messages to be printed through
! * curses instead of around it.
*/
void
! menu_com_err_hook(who, code, fmt, args)
const char *who;
long code;
const char *fmt;
! va_list args;
{
char buf[BUFSIZ], *cp;
***************
*** 90,96 ****
while (*cp)
cp++;
}
! sprintf(cp, fmt, arg1, arg2, arg3, arg4, arg5);
Put_message(buf);
}
--- 89,95 ----
while (*cp)
cp++;
}
! vsprintf(cp, fmt, args);
Put_message(buf);
}
*** /tmp/,RCSt1002834 Thu Aug 23 15:40:04 1990
--- clients/moira/nfs.c Mon Aug 6 03:59:06 1990
***************
*** 259,265 ****
args = AskNFSInfo(info);
if ((stat = do_mr_query("update_nfsphys", CountArgs(args), args,
Scream, (char *)NULL)) != MR_SUCCESS)
! com_err(program_name, stat, (char *) NULL);
}
/* Function Name: UpdateNFSService
--- 259,265 ----
args = AskNFSInfo(info);
if ((stat = do_mr_query("update_nfsphys", CountArgs(args), args,
Scream, (char *)NULL)) != MR_SUCCESS)
! com_err(program_name, stat, "");
}
/* Function Name: UpdateNFSService
*** /tmp/,RCSt1002834 Thu Aug 23 15:40:09 1990
--- clients/moira/printer.c Mon Aug 6 03:59:09 1990
***************
*** 77,83 ****
if ( (stat = do_mr_query("get_printcap", 1, &name,
StoreInfo, (char *)&elem)) != 0) {
! com_err(program_name, stat, NULL);
return(NULL);
}
return(QueueTop(elem));
--- 77,83 ----
if ( (stat = do_mr_query("get_printcap", 1, &name,
StoreInfo, (char *)&elem)) != 0) {
! com_err(program_name, stat, "");
return(NULL);
}
return(QueueTop(elem));
***************
*** 379,385 ****
if ((status = do_mr_query("get_palladium", 1, &name, StoreInfo, &elem))
!= 0) {
! com_err(program_name, status, NULL);
return(NULL);
}
return(QueueTop(elem));
--- 379,385 ----
if ((status = do_mr_query("get_palladium", 1, &name, StoreInfo, &elem))
!= 0) {
! com_err(program_name, status, "");
return(NULL);
}
return(QueueTop(elem));
*** /tmp/,RCSt1002895 Thu Aug 23 15:43:11 1990
--- clients/userreg/reg_stubs.c Sat Aug 4 10:53:42 1990
***************
*** 116,124 ****
--- 116,130 ----
bcopy(hashidnumber, crypt_src+len, 13);
+ #ifdef NOENCRYPTION
+ #define roundup(x,y) ((((x)+(y)-1)/(y))*(y))
+ bzero(bp, roundup(len+13,8));
+ bcopy(crypt_src, bp, len+13);
+ #else
des_string_to_key(hashidnumber, key);
des_key_sched(key, ks);
des_pcbc_encrypt(crypt_src, bp, len+13, ks, key, DES_ENCRYPT);
+ #endif
bp += len+14+8;
len = bp - buf;
return do_call(buf, len, seq_no, login);
***************
*** 170,178 ****
--- 176,188 ----
cbp += len;
len = cbp - crypt_src;
+ #ifdef NOENCRYPTION
+ bcopy(crypt_src, bp, len);
+ #else
des_string_to_key(hashidnumber, key);
des_key_sched(key, ks);
des_pcbc_encrypt(crypt_src, bp, len, ks, key, 1);
+ #endif
len = ((len + 7) >> 3) << 3;
bp += len;
*** /tmp/,RCSt1002895 Thu Aug 23 15:43:13 1990
--- register Fri Aug 3 12:01:21 1990
***************
*** 1,7 ****
#!/bin/csh -f
reset
while (1)
! /mit/register/userreg.`/bin/athena/machtype`
reset
echo -n "Do you want to register another user? "
set answer = $<
--- 1,7 ----
#!/bin/csh -f
reset
while (1)
! /decworld/register/userreg
reset
echo -n "Do you want to register another user? "
set answer = $<
*** /tmp/,RCSt1002922 Thu Aug 23 15:45:00 1990
--- db/newdb Thu Aug 2 04:47:56 1990
***************
*** 137,143 ****
filsys_id = i4,
phys_id = i4,
label = c32,
! order = i2,
type = c8,
mach_id = i4,
name = c80,
--- 137,143 ----
filsys_id = i4,
phys_id = i4,
label = c32,
! mr_order = i2,
type = c8,
mach_id = i4,
name = c80,
*** /tmp/,RCSt1002939 Thu Aug 23 15:45:46 1990
--- dbck/dbck.qc Thu Aug 2 07:20:44 1990
***************
*** 21,27 ****
int mode = MODE_ASK;
int fast = 0;
int warn = 1;
! int abort = 0;
struct hash *users, *machines, *clusters, *lists, *filesys, *nfsphys;
struct hash *strings, *members;
##int dcmenable;
--- 21,27 ----
int mode = MODE_ASK;
int fast = 0;
int warn = 1;
! int mr_abort = 0;
struct hash *users, *machines, *clusters, *lists, *filesys, *nfsphys;
struct hash *strings, *members;
##int dcmenable;
***************
*** 124,131 ****
{
printf("An ingres error occuurred, code %d\n", *num);
printf("Aborting...\n");
! if (!abort) {
! abort++;
## abort
}
exit(1);
--- 124,131 ----
{
printf("An ingres error occuurred, code %d\n", *num);
printf("Aborting...\n");
! if (!mr_abort) {
! mr_abort++;
## abort
}
exit(1);
***************
*** 143,150 ****
exit(0);
}
printf("Aborting transaction\n");
! if (!abort) {
! abort++;
/* break out of a retrieve loop */
IIbreak();
## abort
--- 143,150 ----
exit(0);
}
printf("Aborting transaction\n");
! if (!mr_abort) {
! mr_abort++;
/* break out of a retrieve loop */
IIbreak();
## abort
*** /tmp/,RCSt1002954 Thu Aug 23 15:46:37 1990
--- update/client.c Fri Aug 3 04:51:43 1990
***************
*** 145,151 ****
com_err(whoami, 0, "starting update for %s", service_updated);
/* open connection */
! conn = start_server_connection(service_address, 0);
if (!conn || (connection_status(conn) == CON_STOPPED)) {
com_err(whoami, connection_errno(conn),
" can't connect to update %s", service_address);
--- 145,151 ----
com_err(whoami, 0, "starting update for %s", service_updated);
/* open connection */
! conn = start_server_connection(service_address, "");
if (!conn || (connection_status(conn) == CON_STOPPED)) {
com_err(whoami, connection_errno(conn),
" can't connect to update %s", service_address);
*** /dev/null Thu Aug 23 08:29:08 1990
--- gen/pw_merge.sh Fri Aug 3 04:35:41 1990
***************
*** 0 ****
--- 1,30 ----
+ #!/bin/sh
+ # pw_merge: merge the passwords from /etc/passwd into a hesiod data file.
+ # This is only really necessary on systems without encryption in their
+ # kerberos.
+ if [ $# != 2 ]; then
+ echo "usage: pw_merge <hesdb file> <passwd file>"
+ exit 1
+ fi
+ hesdbfile=$1
+ pwfile=$2
+ exec 0<$hesdbfile
+ rm -f $hesdbfile.new
+ read line
+ while [ "$line" != "" ]; do
+ user=`echo $line|sed -e s/\\\..\*//`
+ pwdline=`fgrep $user $pwfile`
+ if [ 0 != $? ]; then
+ echo $line >>$hesdbfile.new
+
+ read line
+ continue;
+ fi
+ pwd=`echo $pwdline |awk -F: '{print $2}'`
+ newline=`echo $line |sed -e "s/\*/$pwd/"`
+ echo $newline >>$hesdbfile.new
+ read line
+ done
+ mv -f $hesdbfile.new $hesdbfile
+ exit $?
+ # $Header: /u1/athena/PANSS/services/moira/gen/RCS/pw_merge.sh,v 1.1 90/08/03 18:35:37 jtkohl Exp $