mirror of
https://github.com/tmux/tmux.git
synced 2026-05-30 14:16:18 +00:00
Merge branch 'obsd-master'
This commit is contained in:
@@ -118,7 +118,7 @@ cmd_join_pane_exec(struct cmd *self, struct cmdq_item *item)
|
||||
size = args_percentage_and_expand(args, 'l', 0, INT_MAX, curval,
|
||||
item, &cause);
|
||||
} else if (args_has(args, 'p')) {
|
||||
size = args_strtonum_and_expand(args, 'l', 0, 100, item,
|
||||
size = args_strtonum_and_expand(args, 'p', 0, 100, item,
|
||||
&cause);
|
||||
if (cause == NULL)
|
||||
size = curval * size / 100;
|
||||
|
||||
@@ -128,6 +128,8 @@ cmd_pipe_pane_exec(struct cmd *self, struct cmdq_item *item)
|
||||
sigprocmask(SIG_SETMASK, &oldset, NULL);
|
||||
cmdq_error(item, "fork error: %s", strerror(errno));
|
||||
|
||||
close(pipe_fd[0]);
|
||||
close(pipe_fd[1]);
|
||||
free(cmd);
|
||||
return (CMD_RETURN_ERROR);
|
||||
case 0:
|
||||
|
||||
@@ -198,8 +198,17 @@ cmd_run_shell_timer(__unused int fd, __unused short events, void* arg)
|
||||
}
|
||||
if (job_run(cmd, 0, NULL, NULL, cdata->s, cdata->cwd, NULL,
|
||||
cmd_run_shell_callback, cmd_run_shell_free, cdata,
|
||||
cdata->flags, -1, -1) == NULL)
|
||||
cdata->flags, -1, -1) == NULL) {
|
||||
if (cdata->item == NULL)
|
||||
status_message_set(c, -1, 1, 0, 0,
|
||||
"failed to run command: %s", cmd);
|
||||
else {
|
||||
cmdq_error(cdata->item,
|
||||
"failed to run command: %s", cmd);
|
||||
cmdq_continue(cdata->item);
|
||||
}
|
||||
cmd_run_shell_free(cdata);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
33
paste.c
33
paste.c
@@ -204,6 +204,7 @@ int
|
||||
paste_rename(const char *oldname, const char *newname, char **cause)
|
||||
{
|
||||
struct paste_buffer *pb, *pb_new;
|
||||
char *name;
|
||||
|
||||
if (cause != NULL)
|
||||
*cause = NULL;
|
||||
@@ -219,23 +220,33 @@ paste_rename(const char *oldname, const char *newname, char **cause)
|
||||
return (-1);
|
||||
}
|
||||
|
||||
name = clean_name(newname, "");
|
||||
if (name == NULL) {
|
||||
if (cause != NULL)
|
||||
xasprintf(cause, "invalid buffer name: %s", newname);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
pb = paste_get_name(oldname);
|
||||
if (pb == NULL) {
|
||||
if (cause != NULL)
|
||||
xasprintf(cause, "no buffer %s", oldname);
|
||||
free(name);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
pb_new = paste_get_name(newname);
|
||||
if (pb_new == pb)
|
||||
pb_new = paste_get_name(name);
|
||||
if (pb_new == pb) {
|
||||
free(name);
|
||||
return (0);
|
||||
}
|
||||
if (pb_new != NULL)
|
||||
paste_free(pb_new);
|
||||
|
||||
RB_REMOVE(paste_name_tree, &paste_by_name, pb);
|
||||
|
||||
free(pb->name);
|
||||
pb->name = xstrdup(newname);
|
||||
pb->name = name;
|
||||
|
||||
if (pb->automatic)
|
||||
paste_num_automatic--;
|
||||
@@ -244,7 +255,7 @@ paste_rename(const char *oldname, const char *newname, char **cause)
|
||||
RB_INSERT(paste_name_tree, &paste_by_name, pb);
|
||||
|
||||
notify_paste_buffer(oldname, 1);
|
||||
notify_paste_buffer(newname, 0);
|
||||
notify_paste_buffer(pb->name, 0);
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -257,6 +268,7 @@ int
|
||||
paste_set(char *data, size_t size, const char *name, char **cause)
|
||||
{
|
||||
struct paste_buffer *pb, *old;
|
||||
char *newname;
|
||||
|
||||
if (cause != NULL)
|
||||
*cause = NULL;
|
||||
@@ -276,9 +288,16 @@ paste_set(char *data, size_t size, const char *name, char **cause)
|
||||
return (-1);
|
||||
}
|
||||
|
||||
newname = clean_name(name, "");
|
||||
if (newname == NULL) {
|
||||
if (cause != NULL)
|
||||
xasprintf(cause, "invalid buffer name: %s", name);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
pb = xmalloc(sizeof *pb);
|
||||
|
||||
pb->name = xstrdup(name);
|
||||
pb->name = newname;
|
||||
|
||||
pb->data = data;
|
||||
pb->size = size;
|
||||
@@ -288,13 +307,13 @@ paste_set(char *data, size_t size, const char *name, char **cause)
|
||||
|
||||
pb->created = time(NULL);
|
||||
|
||||
if ((old = paste_get_name(name)) != NULL)
|
||||
if ((old = paste_get_name(pb->name)) != NULL)
|
||||
paste_free(old);
|
||||
|
||||
RB_INSERT(paste_name_tree, &paste_by_name, pb);
|
||||
RB_INSERT(paste_time_tree, &paste_by_time, pb);
|
||||
|
||||
notify_paste_buffer(name, 0);
|
||||
notify_paste_buffer(pb->name, 0);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -5171,7 +5171,8 @@ window_copy_pipe_run(struct window_mode_entry *wme, struct session *s,
|
||||
if (cmd != NULL && *cmd != '\0') {
|
||||
job = job_run(cmd, 0, NULL, NULL, s, NULL, NULL, NULL, NULL,
|
||||
NULL, JOB_NOWAIT, -1, -1);
|
||||
bufferevent_write(job_get_event(job), buf, *len);
|
||||
if (job != NULL)
|
||||
bufferevent_write(job_get_event(job), buf, *len);
|
||||
}
|
||||
return (buf);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user