mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-28 23:34:53 +03:00 
			
		
		
		
	[BZ #282]
Update. 2004-07-23 Jakub Jelinek <jakub@redhat.com> [BZ #282] * libio/iopopen.c (_IO_new_popen): Use _IO_init instead of _IO_no_init. Remove wd from struct locked_FILE. (_IO_wproc_jumps): Remove. Reported by Andrew Josey <a.josey@opengroup.org>. * stdio-common/Makefile (tests): Add tst-popen. * stdio-common/tst-popen.c: New test.
This commit is contained in:
		
							
								
								
									
										10
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -1,3 +1,13 @@ | |||||||
|  | 2004-07-23  Jakub Jelinek  <jakub@redhat.com> | ||||||
|  |  | ||||||
|  | 	[BZ #282] | ||||||
|  | 	* libio/iopopen.c (_IO_new_popen): Use _IO_init instead of | ||||||
|  | 	_IO_no_init.  Remove wd from struct locked_FILE. | ||||||
|  | 	(_IO_wproc_jumps): Remove. | ||||||
|  | 	Reported by Andrew Josey <a.josey@opengroup.org>. | ||||||
|  | 	* stdio-common/Makefile (tests): Add tst-popen. | ||||||
|  | 	* stdio-common/tst-popen.c: New test. | ||||||
|  |  | ||||||
| 2004-07-23  Ulrich Drepper  <drepper@redhat.com> | 2004-07-23  Ulrich Drepper  <drepper@redhat.com> | ||||||
|  |  | ||||||
| 	* posix/bits/posix1_lim.h: Fix values for _POSIX_CHILD_MAX and | 	* posix/bits/posix1_lim.h: Fix values for _POSIX_CHILD_MAX and | ||||||
|   | |||||||
| @@ -106,7 +106,6 @@ struct _IO_proc_file | |||||||
| typedef struct _IO_proc_file _IO_proc_file; | typedef struct _IO_proc_file _IO_proc_file; | ||||||
|  |  | ||||||
| static const struct _IO_jump_t _IO_proc_jumps; | static const struct _IO_jump_t _IO_proc_jumps; | ||||||
| static const struct _IO_jump_t _IO_wproc_jumps; |  | ||||||
|  |  | ||||||
| static struct _IO_proc_file *proc_file_chain; | static struct _IO_proc_file *proc_file_chain; | ||||||
|  |  | ||||||
| @@ -213,7 +212,6 @@ _IO_new_popen (command, mode) | |||||||
| #ifdef _IO_MTSAFE_IO | #ifdef _IO_MTSAFE_IO | ||||||
|     _IO_lock_t lock; |     _IO_lock_t lock; | ||||||
| #endif | #endif | ||||||
|     struct _IO_wide_data wd; |  | ||||||
|   } *new_f; |   } *new_f; | ||||||
|   _IO_FILE *fp; |   _IO_FILE *fp; | ||||||
|  |  | ||||||
| @@ -224,7 +222,7 @@ _IO_new_popen (command, mode) | |||||||
|   new_f->fpx.file.file._lock = &new_f->lock; |   new_f->fpx.file.file._lock = &new_f->lock; | ||||||
| #endif | #endif | ||||||
|   fp = &new_f->fpx.file.file; |   fp = &new_f->fpx.file.file; | ||||||
|   _IO_no_init (fp, 0, 0, &new_f->wd, &_IO_wproc_jumps); |   INTUSE(_IO_init) (fp, 0); | ||||||
|   _IO_JUMPS (&new_f->fpx.file) = &_IO_proc_jumps; |   _IO_JUMPS (&new_f->fpx.file) = &_IO_proc_jumps; | ||||||
|   _IO_new_file_init (&new_f->fpx.file); |   _IO_new_file_init (&new_f->fpx.file); | ||||||
| #if  !_IO_UNIFIED_JUMPTABLES | #if  !_IO_UNIFIED_JUMPTABLES | ||||||
| @@ -309,29 +307,6 @@ static const struct _IO_jump_t _IO_proc_jumps = { | |||||||
|   JUMP_INIT(imbue, _IO_default_imbue) |   JUMP_INIT(imbue, _IO_default_imbue) | ||||||
| }; | }; | ||||||
|  |  | ||||||
| static const struct _IO_jump_t _IO_wproc_jumps = { |  | ||||||
|   JUMP_INIT_DUMMY, |  | ||||||
|   JUMP_INIT(finish, _IO_new_file_finish), |  | ||||||
|   JUMP_INIT(overflow, _IO_new_file_overflow), |  | ||||||
|   JUMP_INIT(underflow, _IO_new_file_underflow), |  | ||||||
|   JUMP_INIT(uflow, INTUSE(_IO_default_uflow)), |  | ||||||
|   JUMP_INIT(pbackfail, INTUSE(_IO_default_pbackfail)), |  | ||||||
|   JUMP_INIT(xsputn, _IO_new_file_xsputn), |  | ||||||
|   JUMP_INIT(xsgetn, INTUSE(_IO_default_xsgetn)), |  | ||||||
|   JUMP_INIT(seekoff, _IO_new_file_seekoff), |  | ||||||
|   JUMP_INIT(seekpos, _IO_default_seekpos), |  | ||||||
|   JUMP_INIT(setbuf, _IO_new_file_setbuf), |  | ||||||
|   JUMP_INIT(sync, _IO_new_file_sync), |  | ||||||
|   JUMP_INIT(doallocate, INTUSE(_IO_file_doallocate)), |  | ||||||
|   JUMP_INIT(read, INTUSE(_IO_file_read)), |  | ||||||
|   JUMP_INIT(write, _IO_new_file_write), |  | ||||||
|   JUMP_INIT(seek, INTUSE(_IO_file_seek)), |  | ||||||
|   JUMP_INIT(close, _IO_new_proc_close), |  | ||||||
|   JUMP_INIT(stat, INTUSE(_IO_file_stat)), |  | ||||||
|   JUMP_INIT(showmanyc, _IO_default_showmanyc), |  | ||||||
|   JUMP_INIT(imbue, _IO_default_imbue) |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| strong_alias (_IO_new_popen, __new_popen) | strong_alias (_IO_new_popen, __new_popen) | ||||||
| versioned_symbol (libc, _IO_new_popen, _IO_popen, GLIBC_2_1); | versioned_symbol (libc, _IO_new_popen, _IO_popen, GLIBC_2_1); | ||||||
| versioned_symbol (libc, __new_popen, popen, GLIBC_2_1); | versioned_symbol (libc, __new_popen, popen, GLIBC_2_1); | ||||||
|   | |||||||
| @@ -1,3 +1,9 @@ | |||||||
|  | 2004-07-14  Petter Reinholdtsen  <pere@hungry.com> | ||||||
|  |  | ||||||
|  | 	* locales/kr_KO: Change month names to use latin numbers instead | ||||||
|  | 	of hangul numeric pronounciation.  Patch from Changwoo | ||||||
|  | 	Ryu.[BZ #25] | ||||||
|  |  | ||||||
| 2004-07-17  Petter Reinholdtsen  <pere@hungry.com> | 2004-07-17  Petter Reinholdtsen  <pere@hungry.com> | ||||||
|  |  | ||||||
| 	* charmaps/IBM874: Add new alias WINDOWS-874 for IBM874 [BZ #244]. | 	* charmaps/IBM874: Add new alias WINDOWS-874 for IBM874 [BZ #244]. | ||||||
|   | |||||||
| @@ -6153,12 +6153,12 @@ abmon    "<U0020><U0031><UC6D4>";"<U0020><U0032><UC6D4>";/ | |||||||
|          "<U0020><U0039><UC6D4>";"<U0031><U0030><UC6D4>";/ |          "<U0020><U0039><UC6D4>";"<U0031><U0030><UC6D4>";/ | ||||||
|          "<U0031><U0031><UC6D4>";"<U0031><U0032><UC6D4>" |          "<U0031><U0031><UC6D4>";"<U0031><U0032><UC6D4>" | ||||||
|  |  | ||||||
| mon      "<UC77C><UC6D4>";"<UC774><UC6D4>";/ | mon      "<U0031><UC6D4>";"<U0032><UC6D4>";/ | ||||||
|          "<UC0BC><UC6D4>";"<UC0AC><UC6D4>";/ |          "<U0033><UC6D4>";"<U0034><UC6D4>";/ | ||||||
|          "<UC624><UC6D4>";"<UC720><UC6D4>";/ |          "<U0035><UC6D4>";"<U0036><UC6D4>";/ | ||||||
|          "<UCE60><UC6D4>";"<UD314><UC6D4>";/ |          "<U0037><UC6D4>";"<U0038><UC6D4>";/ | ||||||
|          "<UAD6C><UC6D4>";"<UC2DC><UC6D4>";/ |          "<U0039><UC6D4>";"<U0031><U0030><UC6D4>";/ | ||||||
|          "<UC2ED><UC77C><UC6D4>";"<UC2ED><UC774><UC6D4>" |          "<U0031><U0031><UC6D4>";"<U0031><U0032><UC6D4>" | ||||||
|  |  | ||||||
| % Appropriate date and time representation (%c) | % Appropriate date and time representation (%c) | ||||||
| % "%x (%a) %r" | % "%x (%a) %r" | ||||||
|   | |||||||
| @@ -52,7 +52,8 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \ | |||||||
| 	 scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \ | 	 scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \ | ||||||
| 	 scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \ | 	 scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \ | ||||||
| 	 tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \ | 	 tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \ | ||||||
| 	 tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 bug15 | 	 tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 bug15 \ | ||||||
|  | 	 tst-popen | ||||||
|  |  | ||||||
| test-srcs = tst-unbputc tst-printf | test-srcs = tst-unbputc tst-printf | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										72
									
								
								stdio-common/tst-popen.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								stdio-common/tst-popen.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | /* Copyright (C) 2004 Free Software Foundation, Inc. | ||||||
|  |    This file is part of the GNU C Library. | ||||||
|  |    Contributed by Jakub Jelinek <jakub@redhat.com>, 2004. | ||||||
|  |  | ||||||
|  |    The GNU C Library is free software; you can redistribute it and/or | ||||||
|  |    modify it under the terms of the GNU Lesser General Public | ||||||
|  |    License as published by the Free Software Foundation; either | ||||||
|  |    version 2.1 of the License, or (at your option) any later version. | ||||||
|  |  | ||||||
|  |    The GNU C Library is distributed in the hope that it will be useful, | ||||||
|  |    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||||
|  |    Lesser General Public License for more details. | ||||||
|  |  | ||||||
|  |    You should have received a copy of the GNU Lesser General Public | ||||||
|  |    License along with the GNU C Library; if not, write to the Free | ||||||
|  |    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||||||
|  |    02111-1307 USA.  */ | ||||||
|  |  | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <wchar.h> | ||||||
|  |  | ||||||
|  | static int | ||||||
|  | do_test (void) | ||||||
|  | { | ||||||
|  |   FILE *f = popen ("echo test", "r"); | ||||||
|  |   int result = 0, ret; | ||||||
|  |   char *line = NULL; | ||||||
|  |   size_t len = 0; | ||||||
|  |  | ||||||
|  |   if (f == NULL) | ||||||
|  |     { | ||||||
|  |       printf ("popen failed %m"); | ||||||
|  |       return 1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |   /* POSIX says that pipe streams are byte-oriented.  */ | ||||||
|  |   if (fwide (f, 0) >= 0) | ||||||
|  |     { | ||||||
|  |       puts ("popen did not return byte-oriented stream"); | ||||||
|  |       result = 1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |   if (getline (&line, &len, f) != 5) | ||||||
|  |     { | ||||||
|  |       puts ("could not read line from popen"); | ||||||
|  |       result = 1; | ||||||
|  |     } | ||||||
|  |   else if (strcmp (line, "test\n") != 0) | ||||||
|  |     { | ||||||
|  |       printf ("read \"%s\"\n", line); | ||||||
|  |       result = 1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |   if (getline (&line, &len, f) != -1) | ||||||
|  |     { | ||||||
|  |       puts ("second getline did not return -1"); | ||||||
|  |       result = 1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |   ret = pclose (f); | ||||||
|  |   if (ret != 0) | ||||||
|  |     { | ||||||
|  |       printf ("pclose returned %d\n", ret); | ||||||
|  |       result = 1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |   return result; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #define TEST_FUNCTION do_test () | ||||||
|  | #include "../test-skeleton.c" | ||||||
		Reference in New Issue
	
	Block a user