- nice(-100);
- nice(20);
- nice(0);
- if (argc > 1 && !strcmp(argv[1], "-r")) {
- rflag++;
- rhost = argv[2];
- argc = 1;
- getstr(rusername, sizeof (rusername), "remuser");
- getstr(lusername, sizeof (lusername), "locuser");
- getstr(term+5, sizeof(term)-5, "Terminal type");
- if (getuid())
- goto abnormal;
- setpwent();
- pwd = getpwnam(lusername);
- endpwent();
- if (pwd == NULL) {
- if (strcmp(rusername, lusername))
- printf("%s: No such user\r\n", lusername);
- goto abnormal;
- }
- hostf = pwd->pw_uid ? fopen("/etc/hosts.equiv", "r") : 0;
- again:
- if (hostf) {
- char ahost[32];
-
- while (fgets(ahost, sizeof (ahost), hostf)) {
- char *user;
-
- if (index(ahost, '\n'))
- *index(ahost, '\n') = 0;
- user = index(ahost, ' ');
- if (user)
- *user++ = 0;
- if (!strcmp(rhost, ahost) &&
- !strcmp(rusername, user ?
- user : lusername)) {
- fclose(hostf);
- goto normal;
- }
+ setpriority(PRIO_PROCESS, 0, 0);
+ quota(Q_SETUID, 0, 0, 0);
+ /*
+ * -p is used by getty to tell login not to destroy the environment
+ * -r is used by rlogind to cause the autologin protocol;
+ * -h is used by other servers to pass the name of the
+ * remote host to login so that it may be placed in utmp and wtmp
+ */
+ (void) gethostname(me, sizeof(me));
+ domain = index(me, '.');
+ while (argc > 1) {
+ if (strcmp(argv[1], "-r") == 0) {
+ if (rflag || hflag) {
+ printf("Only one of -r and -h allowed\n");
+ exit(1);