home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / upgrade / src / setenv.c < prev    next >
C/C++ Source or Header  |  1980-02-17  |  876b  |  47 lines

  1. #include <retrofit.h>
  2. #include <stdio.h>
  3.  
  4. /*
  5.  * Simulate version 7 setenv in version 6 using htmp.
  6.  */
  7. struct htmp {
  8.     int    uid;
  9.     char    home[28];
  10.     int    ttytype;
  11. } hentry;
  12.  
  13. main(argc, argv)
  14.     char **argv;
  15. {
  16.     int t;
  17.  
  18.     argc--, argv++;
  19.     if (argc != 2 || strcmp(argv[0], "TERM") && strcmp(argv[0], "HOME")) {
  20.         fprintf(stderr, "Usage: setenv TERM type\nor:    setenv HOME dir\n");
  21.         exit(1);
  22.     }
  23.     t = ttyn(2);
  24.     if (t == 'x') {
  25.         fprintf(stderr, "Unit 2 not teletype.\n");
  26.         exit(1);
  27.     }
  28.     if (hget(t) < 0) {
  29.         fprintf(stderr, "Can't access data base.\n");
  30.         exit(1);
  31.     }
  32.     if (!strcmp(argv[0], "TERM")) {
  33.         char buf[512];
  34.         if (tgetent(buf, argv[1]) <= 0) {
  35.             fprintf(stderr, "Unknown terminal type.\n");
  36.             exit(1);
  37.         }
  38.         hsettype(buf[0] | (buf[1] << 8));
  39.     } else
  40.         hsethome(argv[1]);
  41.     hsetuid(getuid());
  42.     if (hput(t) < 0) {
  43.         fprintf(stderr, "Can't update data base.\n");
  44.         exit(1);
  45.     }
  46. }
  47.