Browse Source

Correct mistake introduced by my last commit on these files;

*_from_pipe() is for process-pipes created by fopen, not generic pipes
created from proc_open().
Correctly implemented the fifo/pipe check for *_from_file() and it seems
to be working correctly now.
PHP-5
Wez Furlong 23 years ago
parent
commit
602734c7d9
  1. 2
      ext/standard/exec.c
  2. 9
      main/streams.c

2
ext/standard/exec.c

@ -976,7 +976,7 @@ PHP_FUNCTION(proc_open)
fp = fdopen(descriptors[i].parentend, mode_string);
#endif
if (fp) {
stream = php_stream_fopen_from_pipe(fp, mode_string);
stream = php_stream_fopen_from_file(fp, mode_string);
if (stream) {
zval *retfp;

9
main/streams.c

@ -1298,6 +1298,7 @@ PHPAPI php_stream *_php_stream_fopen_tmpfile(int dummy STREAMS_DC TSRMLS_DC)
PHPAPI php_stream *_php_stream_fopen_from_file(FILE *file, const char *mode STREAMS_DC TSRMLS_DC)
{
php_stdio_stream_data *self;
php_stream *stream;
self = emalloc_rel_orig(sizeof(*self));
self->file = file;
@ -1314,7 +1315,13 @@ PHPAPI php_stream *_php_stream_fopen_from_file(FILE *file, const char *mode STRE
}
#endif
return php_stream_alloc_rel(&php_stream_stdio_ops, self, 0, mode);
stream = php_stream_alloc_rel(&php_stream_stdio_ops, self, 0, mode);
if (stream && self->is_pipe) {
stream->flags |= PHP_STREAM_FLAG_NO_SEEK;
}
return stream;
}
PHPAPI php_stream *_php_stream_fopen_from_pipe(FILE *file, const char *mode STREAMS_DC TSRMLS_DC)

Loading…
Cancel
Save