=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-show-environment.c,v retrieving revision 1.21 retrieving revision 1.22 diff -c -r1.21 -r1.22 *** src/usr.bin/tmux/cmd-show-environment.c 2016/10/14 22:14:22 1.21 --- src/usr.bin/tmux/cmd-show-environment.c 2016/10/16 19:04:05 1.22 *************** *** 1,4 **** ! /* $OpenBSD: cmd-show-environment.c,v 1.21 2016/10/14 22:14:22 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-show-environment.c,v 1.22 2016/10/16 19:04:05 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott *************** *** 27,36 **** * Show environment. */ ! static enum cmd_retval cmd_show_environment_exec(struct cmd *, struct cmd_q *); static char *cmd_show_environment_escape(struct environ_entry *); ! static void cmd_show_environment_print(struct cmd *, struct cmd_q *, struct environ_entry *); const struct cmd_entry cmd_show_environment_entry = { --- 27,37 ---- * Show environment. */ ! static enum cmd_retval cmd_show_environment_exec(struct cmd *, ! struct cmdq_item *); static char *cmd_show_environment_escape(struct environ_entry *); ! static void cmd_show_environment_print(struct cmd *, struct cmdq_item *, struct environ_entry *); const struct cmd_entry cmd_show_environment_entry = { *************** *** 65,94 **** } static void ! cmd_show_environment_print(struct cmd *self, struct cmd_q *cmdq, struct environ_entry *envent) { char *escaped; if (!args_has(self->args, 's')) { if (envent->value != NULL) ! cmdq_print(cmdq, "%s=%s", envent->name, envent->value); else ! cmdq_print(cmdq, "-%s", envent->name); return; } if (envent->value != NULL) { escaped = cmd_show_environment_escape(envent); ! cmdq_print(cmdq, "%s=\"%s\"; export %s;", envent->name, escaped, envent->name); free(escaped); } else ! cmdq_print(cmdq, "unset %s;", envent->name); } static enum cmd_retval ! cmd_show_environment_exec(struct cmd *self, struct cmd_q *cmdq) { struct args *args = self->args; struct environ *env; --- 66,95 ---- } static void ! cmd_show_environment_print(struct cmd *self, struct cmdq_item *item, struct environ_entry *envent) { char *escaped; if (!args_has(self->args, 's')) { if (envent->value != NULL) ! cmdq_print(item, "%s=%s", envent->name, envent->value); else ! cmdq_print(item, "-%s", envent->name); return; } if (envent->value != NULL) { escaped = cmd_show_environment_escape(envent); ! cmdq_print(item, "%s=\"%s\"; export %s;", envent->name, escaped, envent->name); free(escaped); } else ! cmdq_print(item, "unset %s;", envent->name); } static enum cmd_retval ! cmd_show_environment_exec(struct cmd *self, struct cmdq_item *item) { struct args *args = self->args; struct environ *env; *************** *** 96,103 **** const char *target; if ((target = args_get(args, 't')) != NULL) { ! if (cmdq->state.tflag.s == NULL) { ! cmdq_error(cmdq, "no such session: %s", target); return (CMD_RETURN_ERROR); } } --- 97,104 ---- const char *target; if ((target = args_get(args, 't')) != NULL) { ! if (item->state.tflag.s == NULL) { ! cmdq_error(item, "no such session: %s", target); return (CMD_RETURN_ERROR); } } *************** *** 105,134 **** if (args_has(self->args, 'g')) env = global_environ; else { ! if (cmdq->state.tflag.s == NULL) { target = args_get(args, 't'); if (target != NULL) ! cmdq_error(cmdq, "no such session: %s", target); else ! cmdq_error(cmdq, "no current session"); return (CMD_RETURN_ERROR); } ! env = cmdq->state.tflag.s->environ; } if (args->argc != 0) { envent = environ_find(env, args->argv[0]); if (envent == NULL) { ! cmdq_error(cmdq, "unknown variable: %s", args->argv[0]); return (CMD_RETURN_ERROR); } ! cmd_show_environment_print(self, cmdq, envent); return (CMD_RETURN_NORMAL); } envent = environ_first(env); while (envent != NULL) { ! cmd_show_environment_print(self, cmdq, envent); envent = environ_next(envent); } return (CMD_RETURN_NORMAL); --- 106,135 ---- if (args_has(self->args, 'g')) env = global_environ; else { ! if (item->state.tflag.s == NULL) { target = args_get(args, 't'); if (target != NULL) ! cmdq_error(item, "no such session: %s", target); else ! cmdq_error(item, "no current session"); return (CMD_RETURN_ERROR); } ! env = item->state.tflag.s->environ; } if (args->argc != 0) { envent = environ_find(env, args->argv[0]); if (envent == NULL) { ! cmdq_error(item, "unknown variable: %s", args->argv[0]); return (CMD_RETURN_ERROR); } ! cmd_show_environment_print(self, item, envent); return (CMD_RETURN_NORMAL); } envent = environ_first(env); while (envent != NULL) { ! cmd_show_environment_print(self, item, envent); envent = environ_next(envent); } return (CMD_RETURN_NORMAL);