]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - cups/tempfile.c
Remove implementation of cupsGetClasses, cupsGetPrinters, and cupsTempFile;
[thirdparty/cups.git] / cups / tempfile.c
index 60dfc81ff9c776bfa7d000fad3673c57418b5a85..495eeb29c62d7c48104bd278376efaa0d0b36444 100644 (file)
@@ -1,43 +1,26 @@
 /*
- * "$Id: tempfile.c 6040 2006-10-17 02:24:49Z mike $"
+ * "$Id$"
  *
- *   Temp file utilities for the Common UNIX Printing System (CUPS).
+ * Temp file utilities for CUPS.
  *
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Easy Software Products and are protected by Federal
- *   copyright law.  Distribution and use rights are outlined in the file
- *   "LICENSE.txt" which should have been included with this file.  If this
- *   file is missing or damaged please contact Easy Software Products
- *   at:
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *       Attn: CUPS Licensing Information
- *       Easy Software Products
- *       44141 Airport View Drive, Suite 204
- *       Hollywood, Maryland 20636 USA
- *
- *       Voice: (301) 373-9600
- *       EMail: cups-info@cups.org
- *         WWW: http://www.cups.org
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   cupsTempFd()    - Creates a temporary file.
- *   cupsTempFile()  - Generates a temporary filename.
- *   cupsTempFile2() - Creates a temporary CUPS file.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
  * Include necessary headers...
  */
 
-#include "globals.h"
-#include "debug.h"
+#include "cups-private.h"
 #include <stdlib.h>
-#include <errno.h>
 #include <fcntl.h>
 #include <sys/stat.h>
 #if defined(WIN32) || defined(__EMX__)
@@ -80,17 +63,19 @@ cupsTempFd(char *filename,          /* I - Pointer to buffer */
     tmpdir = tmppath;
   }
 #else
-  if ((tmpdir = getenv("TMPDIR")) == NULL)
-  {
-   /*
-    * Put root temp files in restricted temp directory...
-    */
+ /*
+  * Previously we put root temporary files in the default CUPS temporary
+  * directory under /var/spool/cups.  However, since the scheduler cleans
+  * out temporary files there and runs independently of the user apps, we
+  * don't want to use it unless specifically told to by cupsd.
+  */
 
-    if (getuid() == 0)
-      tmpdir = CUPS_REQUESTS "/tmp";
-    else
-      tmpdir = "/tmp";
-  }
+  if ((tmpdir = getenv("TMPDIR")) == NULL)
+#  ifdef __APPLE__
+    tmpdir = "/private/tmp";           /* /tmp is a symlink to /private/tmp */
+#  else
+    tmpdir = "/tmp";
+#  endif /* __APPLE__ */
 #endif /* WIN32 */
 
  /*
@@ -112,8 +97,7 @@ cupsTempFd(char *filename,           /* I - Pointer to buffer */
     * Format a string using the hex time values...
     */
 
-    snprintf(filename, len - 1, "%s/%05lx%08lx", tmpdir,
-             GetCurrentProcessId(), curtime);
+    snprintf(filename, (size_t)len - 1, "%s/%05lx%08lx", tmpdir, GetCurrentProcessId(), curtime);
 #else
    /*
     * Get the current time of day...
@@ -125,8 +109,7 @@ cupsTempFd(char *filename,          /* I - Pointer to buffer */
     * Format a string using the hex time values...
     */
 
-    snprintf(filename, len - 1, "%s/%08lx%05lx", tmpdir,
-             (unsigned long)curtime.tv_sec, (unsigned long)curtime.tv_usec);
+    snprintf(filename, (size_t)len - 1, "%s/%05x%08x", tmpdir, (unsigned)getpid(), (unsigned)(curtime.tv_sec + curtime.tv_usec + tries));
 #endif /* WIN32 */
 
    /*
@@ -162,48 +145,22 @@ cupsTempFd(char *filename,                /* I - Pointer to buffer */
  * 'cupsTempFile()' - Generates a temporary filename.
  *
  * The temporary filename is returned in the filename buffer.
- * This function is deprecated - use cupsTempFd() or cupsTempFile2()
- * instead.
+ * This function is deprecated and will no longer generate a temporary
+ * filename - use @link cupsTempFd@ or @link cupsTempFile2@ instead.
  *
  * @deprecated@
  */
 
-char *                                 /* O - Filename or NULL on error */
+char *                                 /* O - Filename or @code NULL@ on error */
 cupsTempFile(char *filename,           /* I - Pointer to buffer */
              int  len)                 /* I - Size of buffer */
 {
-  int          fd;                     /* File descriptor for temp file */
-  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
-
-
- /*
-  * See if a filename was specified...
-  */
-
-  if (filename == NULL)
-  {
-    filename = cg->tempfile;
-    len      = sizeof(cg->tempfile);
-  }
-
- /*
-  * Create the temporary file...
-  */
-
-  if ((fd = cupsTempFd(filename, len)) < 0)
-    return (NULL);
-
- /*
-  * Close the temp file - it'll be reopened later as needed...
-  */
-
-  close(fd);
+  (void)len;
 
- /*
-  * Return the temp filename...
-  */
+  if (filename)
+    *filename = '\0';
 
-  return (filename);
+  return (NULL);
 }
 
 
@@ -213,10 +170,10 @@ cupsTempFile(char *filename,              /* I - Pointer to buffer */
  * The temporary filename is returned in the filename buffer.
  * The temporary file is opened for writing.
  *
- * @since CUPS 1.2@
+ * @since CUPS 1.2/OS X 10.5@
  */
 
-cups_file_t *                          /* O - CUPS file or NULL on error */
+cups_file_t *                          /* O - CUPS file or @code NULL@ on error */
 cupsTempFile2(char *filename,          /* I - Pointer to buffer */
               int  len)                        /* I - Size of buffer */
 {
@@ -238,5 +195,5 @@ cupsTempFile2(char *filename,               /* I - Pointer to buffer */
 
 
 /*
- * End of "$Id: tempfile.c 6040 2006-10-17 02:24:49Z mike $".
+ * End of "$Id$".
  */