=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-save-buffer.c,v retrieving revision 1.6 retrieving revision 1.7 diff -c -r1.6 -r1.7 *** src/usr.bin/tmux/cmd-save-buffer.c 2009/11/13 19:53:29 1.6 --- src/usr.bin/tmux/cmd-save-buffer.c 2010/06/28 22:10:42 1.7 *************** *** 1,4 **** ! /* $OpenBSD: cmd-save-buffer.c,v 1.6 2009/11/13 19:53:29 nicm Exp $ */ /* * Copyright (c) 2009 Tiago Cunha --- 1,4 ---- ! /* $OpenBSD: cmd-save-buffer.c,v 1.7 2010/06/28 22:10:42 nicm Exp $ */ /* * Copyright (c) 2009 Tiago Cunha *************** *** 48,54 **** struct session *s; struct paste_buffer *pb; mode_t mask; ! FILE *f; if ((s = cmd_find_session(ctx, data->target)) == NULL) return (-1); --- 48,54 ---- struct session *s; struct paste_buffer *pb; mode_t mask; ! FILE *f, *close_f; if ((s = cmd_find_session(ctx, data->target)) == NULL) return (-1); *************** *** 65,79 **** } } ! mask = umask(S_IRWXG | S_IRWXO); ! if (cmd_check_flag(data->chflags, 'a')) ! f = fopen(data->arg, "ab"); ! else ! f = fopen(data->arg, "wb"); ! umask(mask); ! if (f == NULL) { ! ctx->error(ctx, "%s: %s", data->arg, strerror(errno)); ! return (-1); } if (fwrite(pb->data, 1, pb->size, f) != pb->size) { --- 65,89 ---- } } ! if (strcmp(data->arg, "-") == 0) { ! if (ctx->cmdclient == NULL) { ! ctx->error(ctx, "%s: can't write to stdout", data->arg); ! return (-1); ! } ! f = ctx->cmdclient->stdout_file; ! close_f = NULL; ! } else { ! mask = umask(S_IRWXG | S_IRWXO); ! if (cmd_check_flag(data->chflags, 'a')) ! f = fopen(data->arg, "ab"); ! else ! f = fopen(data->arg, "wb"); ! umask(mask); ! if (f == NULL) { ! ctx->error(ctx, "%s: %s", data->arg, strerror(errno)); ! return (-1); ! } ! close_f = f; } if (fwrite(pb->data, 1, pb->size, f) != pb->size) { *************** *** 82,88 **** return (-1); } ! fclose(f); return (0); } --- 92,99 ---- return (-1); } ! if (close_f != NULL) ! fclose(close_f); return (0); }