ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvtd.C
(Generate patch)

Comparing rxvt-unicode/src/rxvtd.C (file contents):
Revision 1.8 by pcg, Fri Feb 13 12:16:21 2004 UTC vs.
Revision 1.9 by pcg, Fri Feb 13 13:28:17 2004 UTC

1#include "../config.h"
1#include "rxvtlib.h" 2#include "rxvt.h"
2#include "rxvtdaemon.h" 3#include "rxvtdaemon.h"
3#include "iom.h" 4#include "iom.h"
4 5
5#include <cstdio> 6#include <cstdio>
6#include <cstdlib> 7#include <cstdlib>
105 106
106 if (recv (tok)) 107 if (recv (tok))
107 { 108 {
108 if (!strcmp (tok, "NEW")) 109 if (!strcmp (tok, "NEW"))
109 { 110 {
110 stringvec argv; 111 stringvec *argv = new stringvec;
111 stringvec envv; 112 stringvec *envv = new stringvec;
112 113
113 for (;;) 114 for (;;)
114 { 115 {
115 if (!recv (tok)) 116 if (!recv (tok))
116 return err (); 117 return err ();
117 118
118 if (!strcmp (tok, "END")) 119 if (!strcmp (tok, "END"))
119 break; 120 break;
120 else if (!strcmp (tok, "ENV") && recv (tok)) 121 else if (!strcmp (tok, "ENV") && recv (tok))
121 envv.push_back (tok.get ()); 122 envv->push_back (tok.get ());
122 else if (!strcmp (tok, "CWD") && recv (tok)) 123 else if (!strcmp (tok, "CWD") && recv (tok))
123 { 124 {
124 if (chdir (tok)) 125 if (chdir (tok))
125 err ("unable to change to working directory to '%s': %s", 126 err ("unable to change to working directory to '%s': %s",
126 (char *)tok, strerror (errno)); 127 (char *)tok, strerror (errno));
127 } 128 }
128 else if (!strcmp (tok, "ARG") && recv (tok)) 129 else if (!strcmp (tok, "ARG") && recv (tok))
129 argv.push_back (tok.get ()); 130 argv->push_back (tok.get ());
130 else 131 else
131 return err ("protocol error: unexpected NEW token"); 132 return err ("protocol error: unexpected NEW token");
132 } 133 }
133 134
134 envv.push_back (0); 135 envv->push_back (0);
135 136
136 { 137 {
137 char **old_environ = environ; 138 char **old_environ = environ;
138 environ = envv.begin (); 139 environ = envv->begin ();
139 140
140 rxvt_init (argv.size (), argv.begin ()); 141 rxvt_term *term = rxvt_init (argv->size (), argv->begin ());
142
143 term->argv = argv;
144 term->envv = envv;
141 145
142 environ = old_environ; 146 environ = old_environ;
143 envv.clear (); // can't yet save the env 'cause rxvt modifies it : (
144 } 147 }
145 } 148 }
146 else 149 else
147 return err ("protocol error: request '%s' unsupported.", (char *)tok); 150 return err ("protocol error: request '%s' unsupported.", (char *)tok);
148 } 151 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines