Annotation of 42BSD/ucb/talk/get_names.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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