version 1.97, 2015/10/17 18:30:43 |
version 1.98, 2015/10/18 20:42:42 |
|
|
__dead void client_exec(const char *); |
__dead void client_exec(const char *); |
int client_get_lock(char *); |
int client_get_lock(char *); |
int client_connect(struct event_base *, char *, int); |
int client_connect(struct event_base *, char *, int); |
void client_send_identify(const char *, int); |
void client_send_identify(const char *, const char *); |
int client_write_one(enum msgtype, int, const void *, size_t); |
int client_write_one(enum msgtype, int, const void *, size_t); |
int client_write_server(enum msgtype, const void *, size_t); |
int client_write_server(enum msgtype, const void *, size_t); |
void client_update_event(void); |
void client_update_event(void); |
|
|
struct cmd *cmd; |
struct cmd *cmd; |
struct cmd_list *cmdlist; |
struct cmd_list *cmdlist; |
struct msg_command_data *data; |
struct msg_command_data *data; |
int cmdflags, fd, i, cwd; |
int cmdflags, fd, i; |
const char* ttynam; |
const char *ttynam, *cwd; |
pid_t ppid; |
pid_t ppid; |
enum msgtype msg; |
enum msgtype msg; |
char *cause; |
char *cause, path[PATH_MAX]; |
struct termios tio, saved_tio; |
struct termios tio, saved_tio; |
size_t size; |
size_t size; |
|
|
|
|
} |
} |
|
|
/* Save these before pledge(). */ |
/* Save these before pledge(). */ |
if ((cwd = open(".", O_RDONLY)) == -1) |
if ((cwd = getcwd(path, sizeof path)) == NULL) |
cwd = open("/", O_RDONLY); |
cwd = "/"; |
if ((ttynam = ttyname(STDIN_FILENO)) == NULL) |
if ((ttynam = ttyname(STDIN_FILENO)) == NULL) |
ttynam = ""; |
ttynam = ""; |
|
|
|
|
} |
} |
|
|
/* Send identify messages. */ |
/* Send identify messages. */ |
client_send_identify(ttynam, cwd); /* closes cwd */ |
client_send_identify(ttynam, cwd); |
|
|
/* Send first command. */ |
/* Send first command. */ |
if (msg == MSG_COMMAND) { |
if (msg == MSG_COMMAND) { |
|
|
|
|
/* Send identify messages to server. */ |
/* Send identify messages to server. */ |
void |
void |
client_send_identify(const char *ttynam, int cwd) |
client_send_identify(const char *ttynam, const char *cwd) |
{ |
{ |
const char *s; |
const char *s; |
char **ss; |
char **ss; |
|
|
client_write_one(MSG_IDENTIFY_TERM, -1, s, strlen(s) + 1); |
client_write_one(MSG_IDENTIFY_TERM, -1, s, strlen(s) + 1); |
|
|
client_write_one(MSG_IDENTIFY_TTYNAME, -1, ttynam, strlen(ttynam) + 1); |
client_write_one(MSG_IDENTIFY_TTYNAME, -1, ttynam, strlen(ttynam) + 1); |
client_write_one(MSG_IDENTIFY_CWD, cwd, NULL, 0); |
client_write_one(MSG_IDENTIFY_CWD, -1, cwd, strlen(cwd) + 1); |
|
|
if ((fd = dup(STDIN_FILENO)) == -1) |
if ((fd = dup(STDIN_FILENO)) == -1) |
fatal("dup failed"); |
fatal("dup failed"); |