Remove useless assignments.
[dana/urxvt.git] / src / rxvtdaemon.C
1 /*----------------------------------------------------------------------*
2  * File:        rxvtdaemon.C
3  *----------------------------------------------------------------------*
4  *
5  * All portions of code are copyright by their respective author/s.
6  * Copyright (c) 2003-2007 Marc Lehmann <pcg@goof.com>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21  *----------------------------------------------------------------------*/
22
23 #include <cstdlib>
24 #include <cstring>
25 #include <cstdio>
26
27 #include <inttypes.h>
28 #include <unistd.h>
29 #include <errno.h>
30 #include <sys/types.h>
31 #include <sys/utsname.h>
32 #include <limits.h>
33
34 #include "rxvtdaemon.h"
35
36 char *rxvt_connection::unix_sockname ()
37 {
38   char name[PATH_MAX];
39   char *path = getenv ("RXVT_SOCKET");
40
41   if (!path)
42     {
43       struct utsname u;
44       uname (&u);
45
46       path = getenv ("HOME");
47       snprintf (name, PATH_MAX, "%s/.rxvt-unicode-%s",
48                 path ? path : "/tmp",
49                 u.nodename);
50
51       path = name;
52     }
53
54   return strdup (path);
55 }
56
57 void rxvt_connection::send (const char *data, int len)
58 {
59   uint8_t s[2];
60
61   if (len > 65535)
62     len = 65535;
63
64   s[0] = len >> 8; s[1] = len;
65
66   write (fd, s, 2);
67   write (fd, data, len);
68 }
69
70 void rxvt_connection::send (const char *data)
71 {
72   send (data, strlen (data));
73 }
74
75 bool rxvt_connection::recv (auto_str &data, int *len)
76 {
77   uint8_t s[2];
78   int l;
79
80   if (read (fd, s, 2) != 2)
81     return false;
82
83   l = (s[0] << 8) + s[1];
84   if (l > 65535)
85     return false;
86
87   if (len)
88     *len = l;
89
90   data = new char[l + 1];
91
92   if (!data)
93     return false;
94
95   if (read (fd, data, l) != l)
96     return false;
97
98   data[l] = 0;
99
100   return true;
101 }
102
103 void rxvt_connection::send (int data)
104 {
105   uint8_t s[4];
106
107   s[0] = data >> 24; s[1] = data >> 16; s[2] = data >> 8; s[3] = data;
108
109   write (fd, s, 4);
110 }
111
112 bool rxvt_connection::recv (int &data)
113 {
114   uint8_t s[4];
115
116   if (read (fd, s, 4) != 4)
117     return false;
118
119   data = (((((s[0] << 8) | s[1]) << 8) | s[2]) << 8) | s[3];
120
121   return true;
122 }
123
124
125