4 * Private file definitions for CUPS.
6 * Since stdio files max out at 256 files on many systems, we have to
7 * write similar functions without this limit. At the same time, using
8 * our own file functions allows us to provide transparent support of
9 * gzip'd print files, PPD files, etc.
11 * Copyright 2007-2014 by Apple Inc.
12 * Copyright 1997-2007 by Easy Software Products, all rights reserved.
14 * These coded instructions, statements, and computer programs are the
15 * property of Apple Inc. and are protected by Federal copyright
16 * law. Distribution and use rights are outlined in the file "LICENSE.txt"
17 * which should have been included with this file. If this file is
18 * file is missing or damaged, see the license at "http://www.cups.org/".
20 * This file is subject to the Apple OS-Developed Software exception.
23 #ifndef _CUPS_FILE_PRIVATE_H_
24 # define _CUPS_FILE_PRIVATE_H_
27 * Include necessary headers...
30 # include "cups-private.h"
38 # endif /* HAVE_LIBZ */
41 # include <sys/locking.h>
46 * Some operating systems support large files via open flag O_LARGEFILE...
50 # define O_LARGEFILE 0
51 # endif /* !O_LARGEFILE */
55 * Some operating systems don't define O_BINARY, which is used by Microsoft
56 * and IBM to flag binary files...
61 # endif /* !O_BINARY */
66 # endif /* __cplusplus */
70 * Types and structures...
73 typedef enum /**** _cupsFileCheck return values ****/
75 _CUPS_FILE_CHECK_OK
= 0, /* Everything OK */
76 _CUPS_FILE_CHECK_MISSING
= 1, /* File is missing */
77 _CUPS_FILE_CHECK_PERMISSIONS
= 2, /* File (or parent dir) has bad perms */
78 _CUPS_FILE_CHECK_WRONG_TYPE
= 3, /* File has wrong type */
79 _CUPS_FILE_CHECK_RELATIVE_PATH
= 4 /* File contains a relative path */
82 typedef enum /**** _cupsFileCheck file type values ****/
84 _CUPS_FILE_CHECK_FILE
= 0, /* Check the file and parent directory */
85 _CUPS_FILE_CHECK_PROGRAM
= 1, /* Check the program and parent directory */
86 _CUPS_FILE_CHECK_FILE_ONLY
= 2, /* Check the file only */
87 _CUPS_FILE_CHECK_DIRECTORY
= 3 /* Check the directory */
88 } _cups_fc_filetype_t
;
90 typedef void (*_cups_fc_func_t
)(void *context
, _cups_fc_result_t result
,
93 struct _cups_file_s
/**** CUPS file structure... ****/
96 int fd
; /* File descriptor */
97 char mode
, /* Mode ('r' or 'w') */
98 compressed
, /* Compression used? */
99 is_stdio
, /* stdin/out/err? */
100 eof
, /* End of file? */
101 buf
[4096], /* Buffer */
102 *ptr
, /* Pointer into buffer */
103 *end
; /* End of buffer data */
104 off_t pos
, /* Position in file */
105 bufpos
; /* File position for start of buffer */
108 z_stream stream
; /* (De)compression stream */
109 Bytef cbuf
[4096]; /* (De)compression buffer */
110 uLong crc
; /* (De)compression CRC */
111 #endif /* HAVE_LIBZ */
113 char *printf_buffer
; /* cupsFilePrintf buffer */
114 size_t printf_size
; /* Size of cupsFilePrintf buffer */
122 extern _cups_fc_result_t
_cupsFileCheck(const char *filename
,
123 _cups_fc_filetype_t filetype
,
127 extern void _cupsFileCheckFilter(void *context
,
128 _cups_fc_result_t result
,
129 const char *message
);
133 # endif /* __cplusplus */
135 #endif /* !_CUPS_FILE_PRIVATE_H_ */