… | |
… | |
75 | delete this; |
75 | delete this; |
76 | } |
76 | } |
77 | |
77 | |
78 | void server::read_cb (io_watcher &w, short revents) |
78 | void server::read_cb (io_watcher &w, short revents) |
79 | { |
79 | { |
80 | token cmd; |
80 | auto_str tok; |
81 | |
81 | |
82 | if (recv (cmd)) |
82 | if (recv (tok)) |
83 | { |
83 | { |
84 | if (!strcmp (cmd, "NEW")) |
84 | if (!strcmp (tok, "NEW")) |
85 | { |
85 | { |
|
|
86 | auto_str display, cwd; |
|
|
87 | simplevec<auto_str> argv; |
|
|
88 | |
|
|
89 | for (;;) |
|
|
90 | { |
|
|
91 | if (!recv (tok)) |
|
|
92 | return err (); |
|
|
93 | |
|
|
94 | if (!strcmp (tok, "END")) |
|
|
95 | break; |
|
|
96 | else if (!strcmp (tok, "DISPLAY") && recv (display)) |
|
|
97 | ; |
|
|
98 | else if (!strcmp (tok, "CWD") && recv (cwd)) |
|
|
99 | ; |
|
|
100 | else if (!strcmp (tok, "ARG") && recv (tok)) |
|
|
101 | argv.push_back (tok); |
|
|
102 | else |
|
|
103 | return err (); |
|
|
104 | } |
|
|
105 | |
|
|
106 | // TODO: no setenv, please |
|
|
107 | setenv ("DISPLAY", display.get (), 1); |
|
|
108 | |
|
|
109 | rxvt_init (argv.size (), reinterpret_cast<char **>(argv.begin ())); |
|
|
110 | dR; |
|
|
111 | rxvt_main_loop (aR); |
86 | } |
112 | } |
87 | else |
113 | else |
88 | err (); |
114 | return err (); |
89 | } |
115 | } |
90 | else |
116 | else |
91 | err (); |
117 | return err (); |
92 | } |
118 | } |
93 | |
119 | |
94 | int |
120 | int |
95 | main(int argc, const char *const *argv) |
121 | main(int argc, const char *const *argv) |
96 | { |
122 | { |