cvs: php4 /ext/standard file.c file.h /ext/swf swf.c /main Makefile.in php_open_temporary_file.c php_open_temporary_file.h rfc1867.c
| From: | Andi Gutmans | Date: | Mon, 11 Sep 2000 18:56:48 +0000 |
| Subject: | cvs: php4 /ext/standard file.c file.h /ext/swf swf.c /main Makefile.in php_open_temporary_file.c php_open_temporary_file.h rfc1867.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-1712@lists.php.net to get a copy of this message | ||
andi Mon Sep 11 11:56:48 2000 EDT
Added files:
/php4/main php_open_temporary_file.c php_open_temporary_file.h
Modified files:
/php4/ext/standard file.c file.h
/php4/ext/swf swf.c
/php4/main Makefile.in rfc1867.c
Log:
- Move php_open_temporary_file() out of file.c
Index: php4/ext/standard/file.c
diff -u php4/ext/standard/file.c:1.113 php4/ext/standard/file.c:1.114
--- php4/ext/standard/file.c:1.113 Mon Sep 11 09:25:36 2000
+++ php4/ext/standard/file.c Mon Sep 11 11:56:46 2000
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.c,v 1.113 2000/09/11 16:25:36 sas Exp $ */
+/* $Id: file.c,v 1.114 2000/09/11 18:56:46 andi Exp $ */
/* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
@@ -31,6 +31,7 @@
#include "ext/standard/flock_compat.h"
#include "ext/standard/exec.h"
#include "ext/standard/php_filestat.h"
+#include "php_open_temporary_file.h"
#include <stdio.h>
#include <stdlib.h>
@@ -113,158 +114,6 @@
/* sharing globals is *evil* */
static int le_fopen, le_popen, le_socket;
-
-
-/* }}} */
-/* {{{ php_open_temporary_file */
-
-/* Loosely based on a tempnam() implementation by UCLA */
-
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifndef MAXPATHLEN
-# ifdef PATH_MAX
-# define MAXPATHLEN PATH_MAX
-# else
-# define MAXPATHLEN 255
-# endif
-#endif
-
-static FILE *php_do_open_temporary_file(char *path, const char *pfx, char **opened_path_p)
-{
- char *trailing_slash;
- FILE *fp;
- char *opened_path;
- int fd;
-
- if (!path) {
- return NULL;
- }
-
- if (!(opened_path = emalloc(MAXPATHLEN))) {
- return NULL;
- }
-
- if (*path+strlen(path)-1 == '/') {
- trailing_slash = "";
- } else {
- trailing_slash = "/";
- }
-
- (void)snprintf(opened_path, MAXPATHLEN, "%s%s%sXXXXXX", path, trailing_slash, pfx);
-
-#ifdef PHP_WIN32
- if (GetTempFileName(path, pfx, 0, opened_path)) {
- fp = V_FOPEN(opened_path, "wb");
- } else {
- fp = NULL;
- }
-#elif defined(HAVE_MKSTEMP)
- fd = mkstemp(opened_path);
- if (fd==-1) {
- fp = NULL;
- } else {
- fp = fdopen(fd, "wb");
- }
-#else
- if (mktemp(opened_path)) {
- fp = V_FOPEN(opened_path, "wb");
- } else {
- fp = NULL;
- }
-#endif
- if (!fp || !opened_path_p) {
- efree(opened_path);
- } else {
- *opened_path_p = opened_path;
- }
- return fp;
-}
-
-/* Unlike tempnam(), the supplied dir argument takes precedence
- * over the TMPDIR environment variable
- * This function should do its best to return a file pointer to a newly created
- * unique file, on every platform.
- */
-FILE *php_open_temporary_file(const char *dir, const char *pfx, char **opened_path_p)
-{
- static char path_tmp[] = "/tmp";
- FILE *fp;
-
-
- if (!pfx) {
- pfx = "tmp.";
- }
-
- if (opened_path_p) {
- *opened_path_p = NULL;
- }
-
- if ((fp=php_do_open_temporary_file((char *) dir, pfx, opened_path_p))) {
- return fp;
- }
-
- if ((fp=php_do_open_temporary_file(getenv("TMPDIR"), pfx, opened_path_p))) {
- return fp;
- }
-#if PHP_WIN32
- {
- char *TempPath;
-
- TempPath = (char *) emalloc(MAXPATHLEN);
- if (GetTempPath(MAXPATHLEN, TempPath)) {
- fp = php_do_open_temporary_file(TempPath, pfx, opened_path_p);
- }
- efree(TempPath);
- return fp;
- }
-#else
- if ((fp=php_do_open_temporary_file(P_tmpdir, pfx, opened_path_p))) {
- return fp;
- }
-
- if ((fp=php_do_open_temporary_file(path_tmp, pfx, opened_path_p))) {
- return fp;
- }
-#endif
-
- return NULL;
-}
/* }}} */
Index: php4/ext/standard/file.h
diff -u php4/ext/standard/file.h:1.27 php4/ext/standard/file.h:1.28
--- php4/ext/standard/file.h:1.27 Sat Sep 9 04:41:14 2000
+++ php4/ext/standard/file.h Mon Sep 11 11:56:47 2000
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.h,v 1.27 2000/09/09 11:41:14 zeev Exp $ */
+/* $Id: file.h,v 1.28 2000/09/11 18:56:47 andi Exp $ */
/* Synced with php 3.0 revision 1.30 1999-06-16 [ssb] */
@@ -71,6 +71,8 @@
PHPAPI int php_file_le_popen(void);
PHPAPI int php_file_le_socket(void);
PHPAPI int php_copy_file(char *src, char *dest);
+#if 0
PHPAPI FILE *php_open_temporary_file(const char *dir, const char *pfx, char **opened_path_p);
+#endif
#endif /* FILE_H */
Index: php4/ext/swf/swf.c
diff -u php4/ext/swf/swf.c:1.23 php4/ext/swf/swf.c:1.24
--- php4/ext/swf/swf.c:1.23 Sun Sep 10 21:31:04 2000
+++ php4/ext/swf/swf.c Mon Sep 11 11:56:47 2000
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: swf.c,v 1.23 2000/09/11 04:31:04 andi Exp $ */
+/* $Id: swf.c,v 1.24 2000/09/11 18:56:47 andi Exp $ */
#include "php.h"
@@ -25,7 +25,7 @@
#include <stdio.h>
#include <swf.h>
#include "ext/standard/info.h"
-#include "ext/standard/file.h"
+#include "php_open_temporary_file.h"
#include "php_swf.h"
#ifdef ZTS
Index: php4/main/Makefile.in
diff -u php4/main/Makefile.in:1.8 php4/main/Makefile.in:1.9
--- php4/main/Makefile.in:1.8 Sun Sep 3 11:45:02 2000
+++ php4/main/Makefile.in Mon Sep 11 11:56:47 2000
@@ -6,7 +6,7 @@
safe_mode.c fopen-wrappers.c alloca.c \
php_ini.c SAPI.c rfc1867.c fdfdata.c php_content_types.c strlcpy.c \
strlcat.c mergesort.c reentrancy.c php_variables.c php_ticks.c \
- network.c
+ network.c php_open_temporary_file.c
include $(top_srcdir)/build/ltlib.mk
Index: php4/main/rfc1867.c
diff -u php4/main/rfc1867.c:1.50 php4/main/rfc1867.c:1.51
--- php4/main/rfc1867.c:1.50 Sat Sep 9 08:02:15 2000
+++ php4/main/rfc1867.c Mon Sep 11 11:56:47 2000
@@ -15,11 +15,11 @@
| Authors: Rasmus Lerdorf <rasmus@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: rfc1867.c,v 1.50 2000/09/09 15:02:15 zeev Exp $ */
+/* $Id: rfc1867.c,v 1.51 2000/09/11 18:56:47 andi Exp $ */
#include <stdio.h>
#include "php.h"
-#include "ext/standard/php_standard.h"
+#include "php_open_temporary_file.h"
#include "zend_globals.h"
#include "php_globals.h"
#include "php_variables.h"
Index: php4/main/php_open_temporary_file.c
+++ php4/main/php_open_temporary_file.c
/*
+----------------------------------------------------------------------+
| PHP version 4.0 |
+----------------------------------------------------------------------+
| Copyright (c) 1997, 1998, 1999, 2000 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 2.02 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available at through the world-wide-web at |
| http://www.php.net/license/2_02.txt.
|
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Authors: Zeev Suraski <zeev@zend.com> |
+----------------------------------------------------------------------+
*/
#include "php.h"
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#ifdef PHP_WIN32
#include <windows.h>
#include <winsock.h>
#define O_RDONLY _O_RDONLY
#include "win32/param.h"
#include "win32/winutil.h"
#else
#include <sys/param.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#endif
#if HAVE_PWD_H
#ifdef PHP_WIN32
#include "win32/pwd.h"
#else
#include <pwd.h>
#endif
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
#endif
/* {{{ php_open_temporary_file */
/* Loosely based on a tempnam() implementation by UCLA */
/*
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifndef MAXPATHLEN
# ifdef PATH_MAX
# define MAXPATHLEN PATH_MAX
# else
# define MAXPATHLEN 255
# endif
#endif
static FILE *php_do_open_temporary_file(char *path, const char *pfx, char **opened_path_p)
{
char *trailing_slash;
FILE *fp;
char *opened_path;
int fd;
if (!path) {
return NULL;
}
if (!(opened_path = emalloc(MAXPATHLEN))) {
return NULL;
}
if (*path+strlen(path)-1 == '/') {
trailing_slash = "";
} else {
trailing_slash = "/";
}
(void)snprintf(opened_path, MAXPATHLEN, "%s%s%sXXXXXX", path, trailing_slash, pfx);
#ifdef PHP_WIN32
if (GetTempFileName(path, pfx, 0, opened_path)) {
fp = V_FOPEN(opened_path, "wb");
} else {
fp = NULL;
}
#elif defined(HAVE_MKSTEMP)
fd = mkstemp(opened_path);
if (fd==-1) {
fp = NULL;
} else {
fp = fdopen(fd, "wb");
}
#else
if (mktemp(opened_path)) {
fp = V_FOPEN(opened_path, "wb");
} else {
fp = NULL;
}
#endif
if (!fp || !opened_path_p) {
efree(opened_path);
} else {
*opened_path_p = opened_path;
}
return fp;
}
/* Unlike tempnam(), the supplied dir argument takes precedence
* over the TMPDIR environment variable
* This function should do its best to return a file pointer to a newly created
* unique file, on every platform.
*/
FILE *php_open_temporary_file(const char *dir, const char *pfx, char **opened_path_p)
{
static char path_tmp[] = "/tmp";
FILE *fp;
if (!pfx) {
pfx = "tmp.";
}
if (opened_path_p) {
*opened_path_p = NULL;
}
if ((fp=php_do_open_temporary_file((char *) dir, pfx, opened_path_p))) {
return fp;
}
if ((fp=php_do_open_temporary_file(getenv("TMPDIR"), pfx, opened_path_p))) {
return fp;
}
#if PHP_WIN32
{
char *TempPath;
TempPath = (char *) emalloc(MAXPATHLEN);
if (GetTempPath(MAXPATHLEN, TempPath)) {
fp = php_do_open_temporary_file(TempPath, pfx, opened_path_p);
}
efree(TempPath);
return fp;
}
#else
if ((fp=php_do_open_temporary_file(P_tmpdir, pfx, opened_path_p))) {
return fp;
}
if ((fp=php_do_open_temporary_file(path_tmp, pfx, opened_path_p))) {
return fp;
}
#endif
return NULL;
}
Index: php4/main/php_open_temporary_file.h
+++ php4/main/php_open_temporary_file.h
/*
+----------------------------------------------------------------------+
| PHP version 4.0 |
+----------------------------------------------------------------------+
| Copyright (c) 1997, 1998, 1999, 2000 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 2.02 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available at through the world-wide-web at |
| http://www.php.net/license/2_02.txt.
|
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Authors: Zeev Suraski <zeev@zend.com> |
+----------------------------------------------------------------------+
*/
#ifndef PHP_OPEN_TEMPORARY_FILE_H
#define PHP_OPEN_TEMPORARY_FILE_H
PHPAPI FILE *php_open_temporary_file(const char *dir, const char *pfx, char **opened_path_p);
#endif /* PHP_OPEN_TEMPORARY_FILE_H */