char**
ftp_genlist(ftpbuf_t *ftp, const char *cmd, const char *path TSRMLS_DC)
{
- FILE *tmpfp = NULL;
+ php_stream *tmpstream = NULL;
databuf_t *data = NULL;
char *ptr;
int ch, lastch;
char *text;
- if ((tmpfp = tmpfile()) == NULL) {
+ if ((tmpstream = php_stream_fopen_tmpfile()) == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create temporary file. Check permissions in temporary files directory.");
return NULL;
}
goto bail;
}
- fwrite(data->buf, rcvd, 1, tmpfp);
+ php_stream_write(tmpstream, data->buf, rcvd);
size += rcvd;
for (ptr = data->buf; rcvd; rcvd--, ptr++) {
ftp->data = data = data_close(ftp, data);
- if (ferror(tmpfp)) {
- goto bail;
- }
-
- rewind(tmpfp);
+ php_stream_rewind(tmpstream);
ret = safe_emalloc((lines + 1), sizeof(char**), size * sizeof(char*));
text = (char*) (ret + lines + 1);
*entry = text;
lastch = 0;
- while ((ch = getc(tmpfp)) != EOF) {
+ while ((ch = php_stream_getc(tmpstream)) != EOF) {
if (ch == '\n' && lastch == '\r') {
*(text - 1) = 0;
*++entry = text;
}
*entry = NULL;
- if (ferror(tmpfp)) {
- goto bail;
- }
- fclose(tmpfp);
+ php_stream_close(tmpstream);
if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) {
efree(ret);
return ret;
bail:
ftp->data = data_close(ftp, data);
- fclose(tmpfp);
+ php_stream_close(tmpstream);
if (ret)
efree(ret);
return NULL;