mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08: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:
parent
7a80496fb1
commit
06bfee07cb
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>
|
||||
|
||||
* 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;
|
||||
|
||||
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;
|
||||
|
||||
@ -213,7 +212,6 @@ _IO_new_popen (command, mode)
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
_IO_lock_t lock;
|
||||
#endif
|
||||
struct _IO_wide_data wd;
|
||||
} *new_f;
|
||||
_IO_FILE *fp;
|
||||
|
||||
@ -224,7 +222,7 @@ _IO_new_popen (command, mode)
|
||||
new_f->fpx.file.file._lock = &new_f->lock;
|
||||
#endif
|
||||
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_new_file_init (&new_f->fpx.file);
|
||||
#if !_IO_UNIFIED_JUMPTABLES
|
||||
@ -309,29 +307,6 @@ static const struct _IO_jump_t _IO_proc_jumps = {
|
||||
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)
|
||||
versioned_symbol (libc, _IO_new_popen, _IO_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>
|
||||
|
||||
* charmaps/IBM874: Add new alias WINDOWS-874 for IBM874 [BZ #244].
|
||||
|
@ -1179,13 +1179,13 @@ order_start forward
|
||||
<U044E>
|
||||
<U044F>
|
||||
%%%
|
||||
% HANGUL SYLLABLES
|
||||
% HANGUL SYLLABLES
|
||||
<UAC00>
|
||||
..
|
||||
<UD7A3>
|
||||
%%%
|
||||
% HANJA. For the moment, Hanjas defined in KS X 1001
|
||||
% are enumerated in the order they're listed in KS X 1001.
|
||||
% are enumerated in the order they're listed in KS X 1001.
|
||||
<U4F3D>
|
||||
<U4F73>
|
||||
<U5047>
|
||||
@ -6153,33 +6153,33 @@ abmon "<U0020><U0031><UC6D4>";"<U0020><U0032><UC6D4>";/
|
||||
"<U0020><U0039><UC6D4>";"<U0031><U0030><UC6D4>";/
|
||||
"<U0031><U0031><UC6D4>";"<U0031><U0032><UC6D4>"
|
||||
|
||||
mon "<UC77C><UC6D4>";"<UC774><UC6D4>";/
|
||||
"<UC0BC><UC6D4>";"<UC0AC><UC6D4>";/
|
||||
"<UC624><UC6D4>";"<UC720><UC6D4>";/
|
||||
"<UCE60><UC6D4>";"<UD314><UC6D4>";/
|
||||
"<UAD6C><UC6D4>";"<UC2DC><UC6D4>";/
|
||||
"<UC2ED><UC77C><UC6D4>";"<UC2ED><UC774><UC6D4>"
|
||||
mon "<U0031><UC6D4>";"<U0032><UC6D4>";/
|
||||
"<U0033><UC6D4>";"<U0034><UC6D4>";/
|
||||
"<U0035><UC6D4>";"<U0036><UC6D4>";/
|
||||
"<U0037><UC6D4>";"<U0038><UC6D4>";/
|
||||
"<U0039><UC6D4>";"<U0031><U0030><UC6D4>";/
|
||||
"<U0031><U0031><UC6D4>";"<U0031><U0032><UC6D4>"
|
||||
|
||||
% Appropriate date and time representation (%c)
|
||||
% "%x (%a) %r"
|
||||
d_t_fmt "<U0025><U0078><U0020><U0028><U0025><U0061><U0029><U0020><U0025><U0072>"
|
||||
|
||||
% Appropriate date representation (%x)
|
||||
% "%Y<NYEON> %m<WEOL> %d<IL>
|
||||
% "%Y<NYEON> %m<WEOL> %d<IL>
|
||||
d_fmt /
|
||||
"<U0025><U0059><UB144><U0020><U0025><U006D><UC6D4><U0020><U0025><U0064><UC77C>"
|
||||
%d_fmt "<U0025><U0059><UB144><U0020><U0025><U006D><UC6D4><U0020><U0025><U0065><UC77C>"
|
||||
|
||||
% Appropriate time representation (%X)
|
||||
% "%H<SI> %M<BUN> %S<CHO>"
|
||||
% "%H<SI> %M<BUN> %S<CHO>"
|
||||
t_fmt "<U0025><U0048><UC2DC><U0020><U0025><U004D><UBD84><U0020><U0025><U0053><UCD08>"
|
||||
|
||||
% Strings for AM/PM (%p)
|
||||
% Strings for AM/PM (%p)
|
||||
% "<O><JEON>";"<O><HU>"
|
||||
am_pm "<UC624><UC804>";"<UC624><UD6C4>"
|
||||
|
||||
% Appropriate AM/PM time representation (%r)
|
||||
% "%p %H<SI> %M<BUN> %S<CHO>"
|
||||
% "%p %H<SI> %M<BUN> %S<CHO>"
|
||||
t_fmt_ampm "<U0025><U0070><U0020><U0025><U0049><UC2DC><U0020><U0025><U004D><UBD84><U0020><U0025><U0053><UCD08>"
|
||||
|
||||
% Appropriate date representation (date(1)) "%Y. %m. %d. (%a) %H:%M:%S %Z"
|
||||
@ -6219,7 +6219,7 @@ tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025><U006C>"
|
||||
|
||||
% "(%A) %l" : (areacode) local_number
|
||||
tel_dom_fmt "<U0028><U0025><U0041><U0029><U0020><U0025><U006C>"
|
||||
% Alternative form :
|
||||
% Alternative form :
|
||||
% "%A-%l" : areacode-local_number
|
||||
%tel_dom_fmt "<U0025><U0041><U002D><U0020><U0025><U006C>"
|
||||
int_prefix "<U0038><U0032>"
|
||||
|
@ -52,7 +52,8 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
|
||||
scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \
|
||||
scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \
|
||||
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
|
||||
|
||||
|
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"
|
Loading…
Reference in New Issue
Block a user