1 /*- 2 * Copyright (c) 1983-2003, Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. Neither the name of the University of California, San Francisco nor 15 * the names of its contributors may be used to endorse or promote 16 * products derived from this software without specific prior written 17 * permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 20 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 22 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 * 31 * $OpenBSD: connect.c,v 1.6 2003/06/11 08:45:24 pjanzen Exp $ 32 * $NetBSD: connect.c,v 1.3 1997/10/11 08:13:40 lukem Exp $ 33 */ 34 35 #include <sys/types.h> 36 #include <arpa/inet.h> 37 #include <signal.h> 38 #include <unistd.h> 39 #include <string.h> 40 41 #include "hunt.h" 42 #include "client.h" 43 44 void 45 do_connect(char *name, u_int8_t team, u_int32_t enter_status) 46 { 47 u_int32_t uid; 48 u_int32_t mode; 49 const char * Ttyname; 50 char buf[NAMELEN]; 51 52 if (Send_message != NULL) 53 mode = C_MESSAGE; 54 else if (Am_monitor) 55 mode = C_MONITOR; 56 else 57 mode = C_PLAYER; 58 59 Ttyname = ttyname(STDOUT_FILENO); 60 if (Ttyname == NULL) 61 Ttyname = "not a tty"; 62 memset(buf, '\0', sizeof buf); 63 strlcpy(buf, Ttyname, sizeof buf); 64 65 uid = htonl(getuid()); 66 enter_status = htonl(enter_status); 67 mode = htonl(mode); 68 69 write(Socket, &uid, sizeof uid); 70 write(Socket, name, NAMELEN); 71 write(Socket, &team, sizeof team); 72 write(Socket, &enter_status, sizeof enter_status); 73 write(Socket, buf, NAMELEN); 74 write(Socket, &mode, sizeof mode); 75 } 76