125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann/*
225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * Public file definitions for CUPS.
325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann *
425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * Since stdio files max out at 256 files on many systems, we have to
525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * write similar functions without this limit.  At the same time, using
625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * our own file functions allows us to provide transparent support of
725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * gzip'd print files, PPD files, etc.
825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann *
925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * Copyright 2007-2014 by Apple Inc.
1025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * Copyright 1997-2007 by Easy Software Products, all rights reserved.
1125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann *
1225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * These coded instructions, statements, and computer programs are the
1325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * property of Apple Inc. and are protected by Federal copyright
1425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
1525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * which should have been included with this file.  If this file is
162447373f182dbfeb47fb86c0f5a6ac5773c65ac2Philip P. Moltmann * missing or damaged, see the license at "http://www.cups.org/".
1725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann *
1825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * This file is subject to the Apple OS-Developed Software exception.
1925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann */
2025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
2125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#ifndef _CUPS_FILE_H_
2225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  define _CUPS_FILE_H_
2325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
2425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
2525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann/*
2625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * Include necessary headers...
2725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann */
2825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
2925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  include "versioning.h"
3025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  include <stddef.h>
3125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  include <sys/types.h>
3225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  if defined(WIN32) && !defined(__CUPS_SSIZE_T_DEFINED)
3325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#    define __CUPS_SSIZE_T_DEFINED
3425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann/* Windows does not support the ssize_t type, so map it to off_t... */
3525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmanntypedef off_t ssize_t;			/* @private@ */
3625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  endif /* WIN32 && !__CUPS_SSIZE_T_DEFINED */
3725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
3825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
3925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann/*
4025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * C++ magic...
4125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann */
4225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
4325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  ifdef __cplusplus
4425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern "C" {
4525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  endif /* __cplusplus */
4625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
4725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
4825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann/*
4925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * CUPS file definitions...
5025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann */
5125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
5225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  define CUPS_FILE_NONE	0	/* No compression */
5325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  define CUPS_FILE_GZIP	1	/* GZIP compression */
5425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
5525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
5625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann/*
5725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * Types and structures...
5825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann */
5925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
6025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmanntypedef struct _cups_file_s cups_file_t;/**** CUPS file type ****/
6125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
6225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
6325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann/*
6425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann * Prototypes...
6525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann */
6625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
6725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFileClose(cups_file_t *fp) _CUPS_API_1_2;
6825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFileCompression(cups_file_t *fp) _CUPS_API_1_2;
6925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFileEOF(cups_file_t *fp) _CUPS_API_1_2;
7025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern const char	*cupsFileFind(const char *filename, const char *path,
7125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			              int executable, char *buffer,
7225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann				      int bufsize) _CUPS_API_1_2;
7325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFileFlush(cups_file_t *fp) _CUPS_API_1_2;
7425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFileGetChar(cups_file_t *fp) _CUPS_API_1_2;
7525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern char		*cupsFileGetConf(cups_file_t *fp, char *buf,
7625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			                 size_t buflen, char **value,
7725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			                 int *linenum) _CUPS_API_1_2;
7825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern size_t		cupsFileGetLine(cups_file_t *fp, char *buf,
7925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			                size_t buflen) _CUPS_API_1_2;
8025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern char		*cupsFileGets(cups_file_t *fp, char *buf, size_t buflen)
8125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			_CUPS_API_1_2;
8225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFileLock(cups_file_t *fp, int block) _CUPS_API_1_2;
8325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFileNumber(cups_file_t *fp) _CUPS_API_1_2;
8425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern cups_file_t	*cupsFileOpen(const char *filename, const char *mode)
8525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			_CUPS_API_1_2;
8625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern cups_file_t	*cupsFileOpenFd(int fd, const char *mode) _CUPS_API_1_2;
8725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFilePeekChar(cups_file_t *fp) _CUPS_API_1_2;
8825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFilePrintf(cups_file_t *fp, const char *format, ...)
8925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			__attribute__((__format__ (__printf__, 2, 3)))
9025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			_CUPS_API_1_2;
9125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFilePutChar(cups_file_t *fp, int c) _CUPS_API_1_2;
9225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern ssize_t		cupsFilePutConf(cups_file_t *fp, const char *directive,
9325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			                const char *value) _CUPS_API_1_4;
9425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFilePuts(cups_file_t *fp, const char *s)
9525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			_CUPS_API_1_2;
9625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern ssize_t		cupsFileRead(cups_file_t *fp, char *buf, size_t bytes)
9725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			_CUPS_API_1_2;
9825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern off_t		cupsFileRewind(cups_file_t *fp) _CUPS_API_1_2;
9925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern off_t		cupsFileSeek(cups_file_t *fp, off_t pos) _CUPS_API_1_2;
10025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern cups_file_t	*cupsFileStderr(void) _CUPS_API_1_2;
10125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern cups_file_t	*cupsFileStdin(void) _CUPS_API_1_2;
10225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern cups_file_t	*cupsFileStdout(void) _CUPS_API_1_2;
10325aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern off_t		cupsFileTell(cups_file_t *fp) _CUPS_API_1_2;
10425aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern int		cupsFileUnlock(cups_file_t *fp) _CUPS_API_1_2;
10525aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmannextern ssize_t		cupsFileWrite(cups_file_t *fp, const char *buf,
10625aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann			              size_t bytes) _CUPS_API_1_2;
10725aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
10825aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann
10925aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  ifdef __cplusplus
11025aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann}
11125aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#  endif /* __cplusplus */
11225aee82d491492e1fa3b005e5880e684dc081ffbPhilip P. Moltmann#endif /* !_CUPS_FILE_H_ */
113