[5804] in Athena Bugs

home help back first fref pref prev next nref lref last post

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 $

home help back first fref pref prev next nref lref last post