Back to index

php5  5.3.10
Functions
php_open_temporary_file.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

PHPAPI FILE * php_open_temporary_file (const char *dir, const char *pfx, char **opened_path_p TSRMLS_DC)
PHPAPI int php_open_temporary_fd_ex (const char *dir, const char *pfx, char **opened_path_p, zend_bool open_basedir_check TSRMLS_DC)
PHPAPI int php_open_temporary_fd (const char *dir, const char *pfx, char **opened_path_p TSRMLS_DC)
PHPAPI const char * php_get_temporary_directory (void)
PHPAPI void php_shutdown_temporary_directory (void)

Function Documentation

PHPAPI const char* php_get_temporary_directory ( void  )

Definition at line 192 of file php_open_temporary_file.c.

{
       /* Did we determine the temporary directory already? */
       if (temporary_directory) {
              return temporary_directory;
       }

#ifdef PHP_WIN32
       /* We can't count on the environment variables TEMP or TMP,
        * and so must make the Win32 API call to get the default
        * directory for temporary files.  Note this call checks
        * the environment values TMP and TEMP (in order) first.
        */
       {
              char sTemp[MAX_PATH];
              DWORD len = GetTempPath(sizeof(sTemp),sTemp);
              assert(0 < len);  /* should *never* fail! */
              if (sTemp[len - 1] == DEFAULT_SLASH) {
                     temporary_directory = zend_strndup(sTemp, len - 1);
              } else {
                     temporary_directory = zend_strndup(sTemp, len);
              }
              return temporary_directory;
       }
#else
       /* On Unix use the (usual) TMPDIR environment variable. */
       {
              char* s = getenv("TMPDIR");
              if (s && *s) {
                     int len = strlen(s);

                     if (s[len - 1] == DEFAULT_SLASH) {
                            temporary_directory = zend_strndup(s, len - 1);
                     } else {
                            temporary_directory = zend_strndup(s, len);
                     }

                     return temporary_directory;
              }
       }
#ifdef P_tmpdir
       /* Use the standard default temporary directory. */
       if (P_tmpdir) {
              temporary_directory = strdup(P_tmpdir);
              return temporary_directory;
       }
#endif
       /* Shouldn't ever(!) end up here ... last ditch default. */
       temporary_directory = strdup("/tmp");
       return temporary_directory;
#endif
}

Here is the call graph for this function:

Here is the caller graph for this function:

PHPAPI int php_open_temporary_fd ( const char *  dir,
const char *  pfx,
char **opened_path_p  TSRMLS_DC 
)

Definition at line 284 of file php_open_temporary_file.c.

{
       return php_open_temporary_fd_ex(dir, pfx, opened_path_p, 0 TSRMLS_CC);
}

Here is the call graph for this function:

Here is the caller graph for this function:

PHPAPI int php_open_temporary_fd_ex ( const char *  dir,
const char *  pfx,
char **  opened_path_p,
zend_bool open_basedir_check  TSRMLS_DC 
)

Definition at line 252 of file php_open_temporary_file.c.

{
       int fd;
       const char *temp_dir;

       if (!pfx) {
              pfx = "tmp.";
       }
       if (opened_path_p) {
              *opened_path_p = NULL;
       }

       if (!dir || *dir == '\0') {
def_tmp:
              temp_dir = php_get_temporary_directory();

              if (temp_dir && *temp_dir != '\0' && (!open_basedir_check || !php_check_open_basedir(temp_dir TSRMLS_CC))) {
                     return php_do_open_temporary_file(temp_dir, pfx, opened_path_p TSRMLS_CC);
              } else {
                     return -1;
              }
       }

       /* Try the directory given as parameter. */
       fd = php_do_open_temporary_file(dir, pfx, opened_path_p TSRMLS_CC);
       if (fd == -1) {
              /* Use default temporary directory. */
              goto def_tmp;
       }
       return fd;
}

Here is the call graph for this function:

Here is the caller graph for this function:

PHPAPI FILE* php_open_temporary_file ( const char *  dir,
const char *  pfx,
char **opened_path_p  TSRMLS_DC 
)

Definition at line 289 of file php_open_temporary_file.c.

{
       FILE *fp;
       int fd = php_open_temporary_fd(dir, pfx, opened_path_p TSRMLS_CC);

       if (fd == -1) {
              return NULL;
       }
       
       fp = fdopen(fd, "r+b");
       if (fp == NULL) {
              close(fd);
       }
       
       return fp;
}

Here is the call graph for this function:

Definition at line 181 of file php_open_temporary_file.c.

Here is the caller graph for this function: