]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - cups/file-private.h
Greatly simplify the man page handling.
[thirdparty/cups.git] / cups / file-private.h
index 0cfd9a549a19ef1ad4240a271176c720bf802623..bb6f2130cca0e6ac03f8a17d6142bdd056150ded 100644 (file)
@@ -1,21 +1,16 @@
 /*
- * "$Id$"
+ * Private file definitions for CUPS.
  *
- *   Private file definitions for CUPS.
+ * Since stdio files max out at 256 files on many systems, we have to
+ * write similar functions without this limit.  At the same time, using
+ * our own file functions allows us to provide transparent support of
+ * different line endings, gzip'd print files, PPD files, etc.
  *
- *   Since stdio files max out at 256 files on many systems, we have to
- *   write similar functions without this limit.  At the same time, using
- *   our own file functions allows us to provide transparent support of
- *   gzip'd print files, PPD files, etc.
+ * Copyright © 2007-2018 by Apple Inc.
+ * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- *   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/".
+ * Licensed under Apache License v2.0.  See the file "LICENSE" for more
+ * information.
  */
 
 #ifndef _CUPS_FILE_PRIVATE_H_
 #  include <stdarg.h>
 #  include <fcntl.h>
 
-#  ifdef HAVE_LIBZ
-#    include <zlib.h>
-#  endif /* HAVE_LIBZ */
-#  ifdef WIN32
+#  ifdef _WIN32
 #    include <io.h>
 #    include <sys/locking.h>
-#  endif /* WIN32 */
+#  endif /* _WIN32 */
 
 
 /*
 #  endif /* !O_BINARY */
 
 
+#  ifdef __cplusplus
+extern "C" {
+#  endif /* __cplusplus */
+
+
 /*
  * Types and structures...
  */
 
-struct _cups_file_s                    /**** CUPS file structure... ****/
-
+typedef enum                           /**** _cupsFileCheck return values ****/
+{
+  _CUPS_FILE_CHECK_OK = 0,             /* Everything OK */
+  _CUPS_FILE_CHECK_MISSING = 1,                /* File is missing */
+  _CUPS_FILE_CHECK_PERMISSIONS = 2,    /* File (or parent dir) has bad perms */
+  _CUPS_FILE_CHECK_WRONG_TYPE = 3,     /* File has wrong type */
+  _CUPS_FILE_CHECK_RELATIVE_PATH = 4   /* File contains a relative path */
+} _cups_fc_result_t;
+
+typedef enum                           /**** _cupsFileCheck file type values ****/
 {
-  int          fd;                     /* File descriptor */
-  char         mode,                   /* Mode ('r' or 'w') */
-               compressed,             /* Compression used? */
-               is_stdio,               /* stdin/out/err? */
-               eof,                    /* End of file? */
-               buf[4096],              /* Buffer */
-               *ptr,                   /* Pointer into buffer */
-               *end;                   /* End of buffer data */
-  off_t                pos,                    /* Position in file */
-               bufpos;                 /* File position for start of buffer */
-
-#ifdef HAVE_LIBZ
-  z_stream     stream;                 /* (De)compression stream */
-  Bytef                cbuf[4096];             /* (De)compression buffer */
-  uLong                crc;                    /* (De)compression CRC */
-#endif /* HAVE_LIBZ */
-
-  char         *printf_buffer;         /* cupsFilePrintf buffer */
-  size_t       printf_size;            /* Size of cupsFilePrintf buffer */
-};
+  _CUPS_FILE_CHECK_FILE = 0,           /* Check the file and parent directory */
+  _CUPS_FILE_CHECK_PROGRAM = 1,                /* Check the program and parent directory */
+  _CUPS_FILE_CHECK_FILE_ONLY = 2,      /* Check the file only */
+  _CUPS_FILE_CHECK_DIRECTORY = 3       /* Check the directory */
+} _cups_fc_filetype_t;
 
-
-#endif /* !_CUPS_FILE_PRIVATE_H_ */
+typedef void (*_cups_fc_func_t)(void *context, _cups_fc_result_t result,
+                               const char *message);
 
 /*
- * End of "$Id$".
+ * Prototypes...
  */
+
+extern _cups_fc_result_t       _cupsFileCheck(const char *filename, _cups_fc_filetype_t filetype, int dorootchecks, _cups_fc_func_t cb, void *context) _CUPS_PRIVATE;
+extern void                    _cupsFileCheckFilter(void *context, _cups_fc_result_t result, const char *message) _CUPS_PRIVATE;
+extern int                     _cupsFilePeekAhead(cups_file_t *fp, int ch);
+
+#  ifdef __cplusplus
+}
+#  endif /* __cplusplus */
+
+#endif /* !_CUPS_FILE_PRIVATE_H_ */