Annotation of 43BSD/old/talk/get_names.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1983 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  */
                      6: 
                      7: #ifndef lint
                      8: static char sccsid[] = "@(#)get_names.c        5.1 (Berkeley) 6/6/85";
                      9: #endif not lint
                     10: 
                     11: #include "talk.h"
                     12: #include "ctl.h"
                     13: 
                     14: char *getlogin(), *ttyname(), *rindex();
                     15: 
                     16: extern CTL_MSG msg;
                     17: 
                     18: struct hostent *gethostbyname();
                     19: 
                     20: /*
                     21:  * Determine the local and remote user, tty, and machines
                     22:  */
                     23: get_names(argc, argv)
                     24:        int argc;
                     25:        char *argv[];
                     26: {
                     27:        char hostname[HOST_NAME_LENGTH];
                     28:        char *his_name;
                     29:        char *my_name;
                     30:        char *my_machine_name;
                     31:        char *his_machine_name;
                     32:        char *my_tty;
                     33:        char *his_tty;
                     34:        char *ptr;
                     35: 
                     36:        if (argc < 2 ) {
                     37:                printf("Usage:  talk user [ttyname]\n");
                     38:                exit(-1);
                     39:        }
                     40:        if (!isatty(0)) {
                     41:                printf("Standard input must be a tty, not a pipe or a file\n");
                     42:                exit(-1);
                     43:        }
                     44:        my_name = getlogin();
                     45:        if (my_name == NULL) {
                     46:                printf("You don't exist. Go away.\n");
                     47:                exit(-1);
                     48:        }
                     49:        gethostname(hostname, sizeof (hostname));
                     50:        my_machine_name = hostname;
                     51:        my_tty = rindex(ttyname(0), '/') + 1;
                     52:        /* check for, and strip out, the machine name of the target */
                     53:        for (ptr = argv[1]; *ptr != '\0' && *ptr != '@' && *ptr != ':' &&
                     54:            *ptr != '!' && *ptr != '.'; ptr++)
                     55:                ;
                     56:        if (*ptr == '\0') {
                     57:                /* this is a local to local talk */
                     58:                his_name = argv[1];
                     59:                his_machine_name = my_machine_name;
                     60:        } else {
                     61:                if (*ptr == '@') {
                     62:                        /* user@host */
                     63:                        his_name = argv[1];
                     64:                        his_machine_name = ptr + 1;
                     65:                } else {
                     66:                        /* host.user or host!user or host:user */
                     67:                        his_name = ptr + 1;
                     68:                        his_machine_name = argv[1];
                     69:                }
                     70:                *ptr = '\0';
                     71:        }
                     72:        if (argc > 2)
                     73:                his_tty = argv[2];      /* tty name is arg 2 */
                     74:        else
                     75:                his_tty = "";
                     76:        get_addrs(my_machine_name, his_machine_name);
                     77:        /* Load these useful values into the standard message header */
                     78:        msg.id_num = 0;
                     79:        strncpy(msg.l_name, my_name, NAME_SIZE);
                     80:        msg.l_name[NAME_SIZE - 1] = '\0';
                     81:        strncpy(msg.r_name, his_name, NAME_SIZE);
                     82:        msg.r_name[NAME_SIZE - 1] = '\0';
                     83:        strncpy(msg.r_tty, his_tty, TTY_SIZE);
                     84:        msg.r_tty[TTY_SIZE - 1] = '\0';
                     85: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.