1 changed files with 121 additions and 0 deletions
			
			
		| @ -0,0 +1,121 @@ | ||||
| # --- SDE-COPYRIGHT-NOTE-BEGIN ---
 | ||||
| # This copyright note is auto-generated by ./scripts/Create-CopyPatch.
 | ||||
| #
 | ||||
| # Filename: package/.../musl/pkg/lvm2/lvm2-musl-0001-read-only-assignment.patch
 | ||||
| # Copyright (C) 2012 - 2013 The OpenSDE Project
 | ||||
| #
 | ||||
| # More information can be found in the files COPYING and README.
 | ||||
| #
 | ||||
| # This patch file is dual-licensed. It is available under the license the
 | ||||
| # patched project is licensed under, as long as it is an OpenSource license
 | ||||
| # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
 | ||||
| # of the GNU General Public License as published by the Free Software
 | ||||
| # Foundation; either version 2 of the License, or (at your option) any later
 | ||||
| # version.
 | ||||
| # --- SDE-COPYRIGHT-NOTE-END ---
 | ||||
| 
 | ||||
| --- a/tools/lvmcmdline.c	2012-11-24 19:32:51.319288478 +0100
 | ||||
| +++ b/tools/lvmcmdline.c	2012-11-24 19:34:46.381960596 +0100
 | ||||
| @@ -1194,9 +1194,12 @@
 | ||||
|  static int _check_standard_fds(void)
 | ||||
|  {
 | ||||
|  	int err = is_valid_fd(STDERR_FILENO);
 | ||||
| +	FILE *stdin_stream = stdin;
 | ||||
| +	FILE *stdout_stream = stdout;
 | ||||
| +	FILE *stderr_stream = stderr;
 | ||||
|  
 | ||||
|  	if (!is_valid_fd(STDIN_FILENO) &&
 | ||||
| -	    !(stdin = fopen(_PATH_DEVNULL, "r"))) {
 | ||||
| +	    !(stdin_stream = fopen(_PATH_DEVNULL, "r"))) {
 | ||||
|  		if (err)
 | ||||
|  			perror("stdin stream open");
 | ||||
|  		else
 | ||||
| @@ -1206,7 +1209,7 @@
 | ||||
|  	}
 | ||||
|  
 | ||||
|  	if (!is_valid_fd(STDOUT_FILENO) &&
 | ||||
| -	    !(stdout = fopen(_PATH_DEVNULL, "w"))) {
 | ||||
| +	    !(stdout_stream = fopen(_PATH_DEVNULL, "w"))) {
 | ||||
|  		if (err)
 | ||||
|  			perror("stdout stream open");
 | ||||
|  		/* else no stdout */
 | ||||
| @@ -1214,7 +1217,7 @@
 | ||||
|  	}
 | ||||
|  
 | ||||
|  	if (!is_valid_fd(STDERR_FILENO) &&
 | ||||
| -	    !(stderr = fopen(_PATH_DEVNULL, "w"))) {
 | ||||
| +	    !(stderr_stream = fopen(_PATH_DEVNULL, "w"))) {
 | ||||
|  		printf("stderr stream open: %s\n",
 | ||||
|  		       strerror(errno));
 | ||||
|  		return 0;
 | ||||
| --- a/lib/commands/toolcontext.c	2012-11-24 19:16:13.532208503 +0100
 | ||||
| +++ b/lib/commands/toolcontext.c	2012-11-24 19:45:44.053159552 +0100
 | ||||
| @@ -1315,6 +1315,8 @@
 | ||||
|  {
 | ||||
|  	struct cmd_context *cmd;
 | ||||
|  	FILE *new_stream;
 | ||||
| +	FILE *stdin_stream = stdin;
 | ||||
| +	FILE *stdout_stream = stdout;
 | ||||
|  
 | ||||
|  #ifdef M_MMAP_MAX
 | ||||
|  	mallopt(M_MMAP_MAX, 0);
 | ||||
| @@ -1359,20 +1361,20 @@
 | ||||
|  		}
 | ||||
|  
 | ||||
|  		if (is_valid_fd(STDIN_FILENO)) {
 | ||||
| -			if (!_reopen_stream(stdin, STDIN_FILENO, "r", "stdin", &new_stream))
 | ||||
| +			if (!_reopen_stream(stdin_stream, STDIN_FILENO, "r", "stdin", &new_stream))
 | ||||
|  				goto_out;
 | ||||
| -			stdin = new_stream;
 | ||||
| -			if (setvbuf(stdin, cmd->linebuffer, _IOLBF, linebuffer_size)) {
 | ||||
| +			stdin_stream = new_stream;
 | ||||
| +			if (setvbuf(stdin_stream, cmd->linebuffer, _IOLBF, linebuffer_size)) {
 | ||||
|  				log_sys_error("setvbuf", "");
 | ||||
|  				goto out;
 | ||||
|  			}
 | ||||
|  		}
 | ||||
|  
 | ||||
|  		if (is_valid_fd(STDOUT_FILENO)) {
 | ||||
| -			if (!_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout", &new_stream))
 | ||||
| +			if (!_reopen_stream(stdout_stream, STDOUT_FILENO, "w", "stdout", &new_stream))
 | ||||
|  				goto_out;
 | ||||
| -			stdout = new_stream;
 | ||||
| -			if (setvbuf(stdout, cmd->linebuffer + linebuffer_size,
 | ||||
| +			stdout_stream = new_stream;
 | ||||
| +			if (setvbuf(stdout_stream, cmd->linebuffer + linebuffer_size,
 | ||||
|  				     _IOLBF, linebuffer_size)) {
 | ||||
|  				log_sys_error("setvbuf", "");
 | ||||
|  				goto out;
 | ||||
| @@ -1629,6 +1631,8 @@
 | ||||
|  {
 | ||||
|  	struct dm_config_tree *cft_cmdline;
 | ||||
|  	FILE *new_stream;
 | ||||
| +	FILE *stdin_stream = stdin;
 | ||||
| +	FILE *stdout_stream = stdout;
 | ||||
|  
 | ||||
|  	if (cmd->dump_filter)
 | ||||
|  		persistent_filter_dump(cmd->filter, 1);
 | ||||
| @@ -1655,17 +1659,17 @@
 | ||||
|  	if (cmd->linebuffer) {
 | ||||
|  		/* Reset stream buffering to defaults */
 | ||||
|  		if (is_valid_fd(STDIN_FILENO)) {
 | ||||
| -			if (_reopen_stream(stdin, STDIN_FILENO, "r", "stdin", &new_stream)) {
 | ||||
| -				stdin = new_stream;
 | ||||
| -				setlinebuf(stdin);
 | ||||
| +			if (_reopen_stream(stdin_stream, STDIN_FILENO, "r", "stdin", &new_stream)) {
 | ||||
| +				stdin_stream = new_stream;
 | ||||
| +				setlinebuf(stdin_stream);
 | ||||
|  			} else
 | ||||
|  				cmd->linebuffer = NULL;	/* Leave buffer in place (deliberate leak) */
 | ||||
|  		}
 | ||||
|  
 | ||||
|  		if (is_valid_fd(STDOUT_FILENO)) {
 | ||||
| -			if (_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout", &new_stream)) {
 | ||||
| -				stdout = new_stream;
 | ||||
| -				setlinebuf(stdout);
 | ||||
| +			if (_reopen_stream(stdout_stream, STDOUT_FILENO, "w", "stdout", &new_stream)) {
 | ||||
| +				stdout_stream = new_stream;
 | ||||
| +				setlinebuf(stdout_stream);
 | ||||
|  			} else
 | ||||
|  				cmd->linebuffer = NULL;	/* Leave buffer in place (deliberate leak) */
 | ||||
|  		}
 | ||||
					Loading…
					
					
				
		Reference in new issue