From: Michael R Sweet Date: Tue, 12 Sep 2023 19:52:30 +0000 (-0400) Subject: Stop using HAVE_LIBZ. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7fe8a857c7e23e59bd9e300ca436636325f8cb8;p=thirdparty%2Fcups.git Stop using HAVE_LIBZ. --- diff --git a/cups/file.c b/cups/file.c index b0e704f02e..606e2ab6d9 100644 --- a/cups/file.c +++ b/cups/file.c @@ -1,68 +1,55 @@ -/* - * File functions 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. - * - * Copyright © 2021-2023 by OpenPrinting. - * Copyright © 2007-2019 by Apple Inc. - * Copyright © 1997-2007 by Easy Software Products, all rights reserved. - * - * Licensed under Apache License v2.0. See the file "LICENSE" for more - * information. - */ - -/* - * Include necessary headers... - */ +// +// File functions 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. +// +// Copyright © 2021-2023 by OpenPrinting. +// Copyright © 2007-2019 by Apple Inc. +// Copyright © 1997-2007 by Easy Software Products, all rights reserved. +// +// Licensed under Apache License v2.0. See the file "LICENSE" for more +// information. +// #include "file-private.h" #include "debug-internal.h" #include #include +#include -# ifdef HAVE_LIBZ -# include -# endif /* HAVE_LIBZ */ +// +// Internal structures... +// -/* - * Internal structures... - */ - -struct _cups_file_s /**** CUPS file structure... ****/ +struct _cups_file_s // CUPS file structure... { - 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 */ + 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 + z_stream stream; // (De)compression stream + Bytef cbuf[4096]; // (De)compression buffer + uLong crc; // (De)compression CRC + char *printf_buffer; // cupsFilePrintf buffer + size_t printf_size; // Size of cupsFilePrintf buffer }; -/* - * Local functions... - */ +// +// Local functions... +// -#ifdef HAVE_LIBZ static ssize_t cups_compress(cups_file_t *fp, const char *buf, size_t bytes); -#endif /* HAVE_LIBZ */ static ssize_t cups_fill(cups_file_t *fp); static int cups_open(const char *filename, int mode); static ssize_t cups_read(cups_file_t *fp, char *buf, size_t bytes); @@ -70,58 +57,43 @@ static ssize_t cups_write(cups_file_t *fp, const char *buf, size_t bytes); #ifndef _WIN32 -/* - * '_cupsFileCheck()' - Check the permissions of the given filename. - */ +// +// '_cupsFileCheck()' - Check the permissions of the given filename. +// -_cups_fc_result_t /* O - Check result */ +_cups_fc_result_t // O - Check result _cupsFileCheck( - const char *filename, /* I - Filename to check */ - _cups_fc_filetype_t filetype, /* I - Type of file checks? */ - int dorootchecks, /* I - Check for root permissions? */ - _cups_fc_func_t cb, /* I - Callback function */ - void *context) /* I - Context pointer for callback */ + const char *filename, // I - Filename to check + _cups_fc_filetype_t filetype, // I - Type of file checks? + int dorootchecks, // I - Check for root permissions? + _cups_fc_func_t cb, // I - Callback function + void *context) // I - Context pointer for callback { - struct stat fileinfo; /* File information */ - char message[1024], /* Message string */ - temp[1024], /* Parent directory filename */ - *ptr; /* Pointer into parent directory */ - _cups_fc_result_t result; /* Check result */ - + struct stat fileinfo; // File information + char message[1024], // Message string + temp[1024], // Parent directory filename + *ptr; // Pointer into parent directory + _cups_fc_result_t result; // Check result - /* - * Does the filename contain a relative path ("../")? - */ + // Does the filename contain a relative path ("../")? if (strstr(filename, "../")) { - /* - * Yes, fail it! - */ - + // Yes, fail it! result = _CUPS_FILE_CHECK_RELATIVE_PATH; goto finishup; } - /* - * Does the program even exist and is it accessible? - */ - + // Does the program even exist and is it accessible? if (stat(filename, &fileinfo)) { - /* - * Nope... - */ - + // Nope... result = _CUPS_FILE_CHECK_MISSING; goto finishup; } - /* - * Check the execute bit... - */ - + // Check the execute bit... result = _CUPS_FILE_CHECK_OK; if (filetype == _CUPS_FILE_CHECK_DIRECTORY) @@ -137,32 +109,23 @@ _cupsFileCheck( if (result) goto finishup; - /* - * Are we doing root checks? - */ - + // Are we doing root checks? if (!dorootchecks) { - /* - * Nope, so anything (else) goes... - */ - + // Nope, so anything (else) goes... goto finishup; } - /* - * Verify permission of the file itself: - * - * 1. Must be owned by root - * 2. Must not be writable by group - * 3. Must not be setuid - * 4. Must not be writable by others - */ - - if (fileinfo.st_uid || /* 1. Must be owned by root */ - (fileinfo.st_mode & S_IWGRP) || /* 2. Must not be writable by group */ - (fileinfo.st_mode & S_ISUID) || /* 3. Must not be setuid */ - (fileinfo.st_mode & S_IWOTH)) /* 4. Must not be writable by others */ + // Verify permission of the file itself: + // + // 1. Must be owned by root + // 2. Must not be writable by group + // 3. Must not be setuid + // 4. Must not be writable by others + if (fileinfo.st_uid || // 1. Must be owned by root + (fileinfo.st_mode & S_IWGRP) || // 2. Must not be writable by group + (fileinfo.st_mode & S_ISUID) || // 3. Must not be setuid + (fileinfo.st_mode & S_IWOTH)) // 4. Must not be writable by others { result = _CUPS_FILE_CHECK_PERMISSIONS; goto finishup; @@ -172,10 +135,7 @@ _cupsFileCheck( filetype == _CUPS_FILE_CHECK_FILE_ONLY) goto finishup; - /* - * Now check the containing directory... - */ - + // Now check the containing directory... cupsCopyString(temp, filename, sizeof(temp)); if ((ptr = strrchr(temp, '/')) != NULL) { @@ -187,10 +147,7 @@ _cupsFileCheck( if (stat(temp, &fileinfo)) { - /* - * Doesn't exist?!? - */ - + // Doesn't exist?!? result = _CUPS_FILE_CHECK_MISSING; filetype = _CUPS_FILE_CHECK_DIRECTORY; filename = temp; @@ -198,26 +155,23 @@ _cupsFileCheck( goto finishup; } - if (fileinfo.st_uid || /* 1. Must be owned by root */ - (fileinfo.st_mode & S_IWGRP) || /* 2. Must not be writable by group */ - (fileinfo.st_mode & S_ISUID) || /* 3. Must not be setuid */ - (fileinfo.st_mode & S_IWOTH)) /* 4. Must not be writable by others */ + if (fileinfo.st_uid || // 1. Must be owned by root + (fileinfo.st_mode & S_IWGRP) || // 2. Must not be writable by group + (fileinfo.st_mode & S_ISUID) || // 3. Must not be setuid + (fileinfo.st_mode & S_IWOTH)) // 4. Must not be writable by others { result = _CUPS_FILE_CHECK_PERMISSIONS; filetype = _CUPS_FILE_CHECK_DIRECTORY; filename = temp; } - /* - * Common return point... - */ - + // Common return point... finishup: if (cb) { cups_lang_t *lang = cupsLangDefault(); - /* Localization information */ + // Localization information switch (result) { @@ -295,17 +249,17 @@ _cupsFileCheck( } -/* - * '_cupsFileCheckFilter()' - Report file check results as CUPS filter messages. - */ +// +// '_cupsFileCheckFilter()' - Report file check results as CUPS filter messages. +// void _cupsFileCheckFilter( - void *context, /* I - Context pointer (unused) */ - _cups_fc_result_t result, /* I - Result code */ - const char *message) /* I - Message text */ + void *context, // I - Context pointer (unused) + _cups_fc_result_t result, // I - Result code + const char *message) // I - Message text { - const char *prefix; /* Messaging prefix */ + const char *prefix; // Messaging prefix (void)context; @@ -332,60 +286,47 @@ _cupsFileCheckFilter( fprintf(stderr, "%s: %s\n", prefix, message); } -#endif /* !_WIN32 */ +#endif // !_WIN32 -/* - * 'cupsFileClose()' - Close a CUPS file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileClose()' - Close a CUPS file. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - 0 on success, -1 on error */ -cupsFileClose(cups_file_t *fp) /* I - CUPS file */ +int // O - 0 on success, -1 on error +cupsFileClose(cups_file_t *fp) // I - CUPS file { - int fd; /* File descriptor */ - char mode; /* Open mode */ - int status; /* Return status */ + int fd; // File descriptor + char mode; // Open mode + int status; // Return status DEBUG_printf("cupsFileClose(fp=%p)", (void *)fp); - /* - * Range check... - */ - + // Range check... if (!fp) return (-1); - /* - * Flush pending write data... - */ - + // Flush pending write data... if (fp->mode == 'w') status = cupsFileFlush(fp); else status = 0; -#ifdef HAVE_LIBZ if (fp->compressed && status >= 0) { if (fp->mode == 'r') { - /* - * Free decompression data... - */ - + // Free decompression data... inflateEnd(&fp->stream); } else { - /* - * Flush any remaining compressed data... - */ - - unsigned char trailer[8]; /* Trailer CRC and length */ - int done; /* Done writing... */ + // Flush any remaining compressed data... + unsigned char trailer[8]; // Trailer CRC and length + int done; // Done writing... fp->stream.avail_in = 0; @@ -409,10 +350,7 @@ cupsFileClose(cups_file_t *fp) /* I - CUPS file */ fp->stream.next_out == fp->cbuf; } - /* - * Write the CRC and length... - */ - + // Write the CRC and length... trailer[0] = (unsigned char)fp->crc; trailer[1] = (unsigned char)(fp->crc >> 8); trailer[2] = (unsigned char)(fp->crc >> 16); @@ -425,27 +363,17 @@ cupsFileClose(cups_file_t *fp) /* I - CUPS file */ if (cups_write(fp, (char *)trailer, 8) < 0) status = -1; - /* - * Free all memory used by the compression stream... - */ - + // Free all memory used by the compression stream... deflateEnd(&(fp->stream)); } } -#endif /* HAVE_LIBZ */ - - /* - * If this is one of the cupsFileStdin/out/err files, return now and don't - * actually free memory or close (these last the life of the process...) - */ + // If this is one of the cupsFileStdin/out/err files, return now and don't + // actually free memory or close (these last the life of the process...) if (fp->is_stdio) return (status); -/* - * Save the file descriptor we used and free memory... - */ - + // Save the file descriptor we used and free memory... fd = fp->fd; mode = fp->mode; @@ -454,10 +382,7 @@ cupsFileClose(cups_file_t *fp) /* I - CUPS file */ free(fp); - /* - * Close the file, returning the close status... - */ - + // Close the file, returning the close status... if (mode == 's') { if (httpAddrClose(NULL, fd) < 0) @@ -470,59 +395,56 @@ cupsFileClose(cups_file_t *fp) /* I - CUPS file */ } -/* - * 'cupsFileCompression()' - Return whether a file is compressed. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileCompression()' - Return whether a file is compressed. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - @code CUPS_FILE_NONE@ or @code CUPS_FILE_GZIP@ */ -cupsFileCompression(cups_file_t *fp) /* I - CUPS file */ +int // O - @code CUPS_FILE_NONE@ or @code CUPS_FILE_GZIP@ +cupsFileCompression(cups_file_t *fp) // I - CUPS file { return (fp ? fp->compressed : CUPS_FILE_NONE); } -/* - * 'cupsFileEOF()' - Return the end-of-file status. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileEOF()' - Return the end-of-file status. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - 1 on end of file, 0 otherwise */ -cupsFileEOF(cups_file_t *fp) /* I - CUPS file */ +int // O - 1 on end of file, 0 otherwise +cupsFileEOF(cups_file_t *fp) // I - CUPS file { return (fp ? fp->eof : 1); } -/* - * 'cupsFileFind()' - Find a file using the specified path. - * - * This function allows the paths in the path string to be separated by - * colons (UNIX standard) or semicolons (Windows standard) and stores the - * result in the buffer supplied. If the file cannot be found in any of - * the supplied paths, @code NULL@ is returned. A @code NULL@ path only - * matches the current directory. - * - * @since CUPS 1.2/macOS 10.5@ - */ - -const char * /* O - Full path to file or @code NULL@ if not found */ -cupsFileFind(const char *filename, /* I - File to find */ - const char *path, /* I - Colon/semicolon-separated path */ - int executable, /* I - 1 = executable files, 0 = any file/dir */ - char *buffer, /* I - Filename buffer */ - int bufsize) /* I - Size of filename buffer */ +// +// 'cupsFileFind()' - Find a file using the specified path. +// +// This function allows the paths in the path string to be separated by +// colons (UNIX standard) or semicolons (Windows standard) and stores the +// result in the buffer supplied. If the file cannot be found in any of +// the supplied paths, @code NULL@ is returned. A @code NULL@ path only +// matches the current directory. +// +// @since CUPS 1.2/macOS 10.5@ +// + +const char * // O - Full path to file or @code NULL@ if not found +cupsFileFind(const char *filename, // I - File to find + const char *path, // I - Colon/semicolon-separated path + int executable, // I - 1 = executable files, 0 = any file/dir + char *buffer, // I - Filename buffer + int bufsize) // I - Size of filename buffer { - char *bufptr, /* Current position in buffer */ - *bufend; /* End of buffer */ + char *bufptr, // Current position in buffer + *bufend; // End of buffer - /* - * Range check input... - */ - + // Range check input... DEBUG_printf("cupsFileFind(filename=\"%s\", path=\"%s\", executable=%d, buffer=%p, bufsize=%d)", filename, path, executable, (void *)buffer, bufsize); if (!filename || !buffer || bufsize < 2) @@ -530,10 +452,7 @@ cupsFileFind(const char *filename, /* I - File to find */ if (!path) { - /* - * No path, so check current directory... - */ - + // No path, so check current directory... if (!access(filename, 0)) { cupsCopyString(buffer, filename, (size_t)bufsize); @@ -543,10 +462,7 @@ cupsFileFind(const char *filename, /* I - File to find */ return (NULL); } - /* - * Now check each path and return the first match... - */ - + // Now check each path and return the first match... bufend = buffer + bufsize - 1; bufptr = buffer; @@ -556,7 +472,7 @@ cupsFileFind(const char *filename, /* I - File to find */ if (*path == ';' || (*path == ':' && ((bufptr - buffer) > 1 || !isalpha(buffer[0] & 255)))) #else if (*path == ';' || *path == ':') -#endif /* _WIN32 */ +#endif // _WIN32 { if (bufptr > buffer && bufptr[-1] != '/' && bufptr < bufend) *bufptr++ = '/'; @@ -567,7 +483,7 @@ cupsFileFind(const char *filename, /* I - File to find */ if (!access(buffer, 0)) #else if (!access(buffer, executable ? X_OK : 0)) -#endif /* _WIN32 */ +#endif // _WIN32 { DEBUG_printf("1cupsFileFind: Returning \"%s\"", buffer); return (buffer); @@ -581,10 +497,7 @@ cupsFileFind(const char *filename, /* I - File to find */ path ++; } - /* - * Check the last path... - */ - + // Check the last path... if (bufptr > buffer && bufptr[-1] != '/' && bufptr < bufend) *bufptr++ = '/'; @@ -603,24 +516,21 @@ cupsFileFind(const char *filename, /* I - File to find */ } -/* - * 'cupsFileFlush()' - Flush pending output. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileFlush()' - Flush pending output. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - 0 on success, -1 on error */ -cupsFileFlush(cups_file_t *fp) /* I - CUPS file */ +int // O - 0 on success, -1 on error +cupsFileFlush(cups_file_t *fp) // I - CUPS file { - ssize_t bytes; /* Bytes to write */ + ssize_t bytes; // Bytes to write DEBUG_printf("cupsFileFlush(fp=%p)", (void *)fp); - /* - * Range check input... - */ - + // Range check input... if (!fp || fp->mode != 'w') { DEBUG_puts("1cupsFileFlush: Attempt to flush a read-only file..."); @@ -633,11 +543,9 @@ cupsFileFlush(cups_file_t *fp) /* I - CUPS file */ if (bytes > 0) { -#ifdef HAVE_LIBZ if (fp->compressed) bytes = cups_compress(fp, fp->buf, (size_t)bytes); else -#endif /* HAVE_LIBZ */ bytes = cups_write(fp, fp->buf, (size_t)bytes); if (bytes < 0) @@ -650,19 +558,16 @@ cupsFileFlush(cups_file_t *fp) /* I - CUPS file */ } -/* - * 'cupsFileGetChar()' - Get a single character from a file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileGetChar()' - Get a single character from a file. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - Character or -1 on end of file */ -cupsFileGetChar(cups_file_t *fp) /* I - CUPS file */ +int // O - Character or -1 on end of file +cupsFileGetChar(cups_file_t *fp) // I - CUPS file { - /* - * Range check input... - */ - + // Range check input... DEBUG_printf("4cupsFileGetChar(fp=%p)", (void *)fp); if (!fp || (fp->mode != 'r' && fp->mode != 's')) @@ -677,10 +582,7 @@ cupsFileGetChar(cups_file_t *fp) /* I - CUPS file */ return (-1); } - /* - * If the input buffer is empty, try to read more data... - */ - + // If the input buffer is empty, try to read more data... DEBUG_printf("5cupsFileGetChar: fp->eof=%d, fp->ptr=%p, fp->end=%p", fp->eof, (void *)fp->ptr, (void *)fp->end); if (fp->ptr >= fp->end) @@ -690,10 +592,7 @@ cupsFileGetChar(cups_file_t *fp) /* I - CUPS file */ return (-1); } - /* - * Return the next character in the buffer... - */ - + // Return the next character in the buffer... DEBUG_printf("5cupsFileGetChar: Returning %d...", *(fp->ptr) & 255); fp->pos ++; @@ -704,26 +603,23 @@ cupsFileGetChar(cups_file_t *fp) /* I - CUPS file */ } -/* - * 'cupsFileGetConf()' - Get a line from a configuration file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileGetConf()' - Get a line from a configuration file. +// +// @since CUPS 1.2/macOS 10.5@ +// -char * /* O - Line read or @code NULL@ on end of file or error */ -cupsFileGetConf(cups_file_t *fp, /* I - CUPS file */ - char *buf, /* O - String buffer */ - size_t buflen, /* I - Size of string buffer */ - char **value, /* O - Pointer to value */ - int *linenum) /* IO - Current line number */ +char * // O - Line read or @code NULL@ on end of file or error +cupsFileGetConf(cups_file_t *fp, // I - CUPS file + char *buf, // O - String buffer + size_t buflen, // I - Size of string buffer + char **value, // O - Pointer to value + int *linenum) // IO - Current line number { - char *ptr; /* Pointer into line */ - + char *ptr; // Pointer into line - /* - * Range check input... - */ + // Range check input... DEBUG_printf("2cupsFileGetConf(fp=%p, buf=%p, buflen=" CUPS_LLFMT ", value=%p, linenum=%p)", (void *)fp, (void *)buf, CUPS_LLCAST buflen, (void *)value, (void *)linenum); if (!fp || (fp->mode != 'r' && fp->mode != 's') || @@ -735,20 +631,14 @@ cupsFileGetConf(cups_file_t *fp, /* I - CUPS file */ return (NULL); } - /* - * Read the next non-comment line... - */ - + // Read the next non-comment line... *value = NULL; while (cupsFileGets(fp, buf, buflen)) { (*linenum) ++; - /* - * Strip any comments... - */ - + // Strip any comments... if ((ptr = strchr(buf, '#')) != NULL) { if (ptr > buf && ptr[-1] == '\\') @@ -771,55 +661,37 @@ cupsFileGetConf(cups_file_t *fp, /* I - CUPS file */ } } - /* - * Strip leading whitespace... - */ - + // Strip leading whitespace... for (ptr = buf; _cups_isspace(*ptr); ptr ++); if (ptr > buf) _cups_strcpy(buf, ptr); - /* - * See if there is anything left... - */ - + // See if there is anything left... if (buf[0]) { - /* - * Yes, grab any value and return... - */ - + // Yes, grab any value and return... for (ptr = buf; *ptr; ptr ++) if (_cups_isspace(*ptr)) break; if (*ptr) { - /* - * Have a value, skip any other spaces... - */ - + // Have a value, skip any other spaces... while (_cups_isspace(*ptr)) *ptr++ = '\0'; if (*ptr) *value = ptr; - /* - * Strip trailing whitespace and > for lines that begin with <... - */ - + // Strip trailing whitespace and > for lines that begin with <... ptr += strlen(ptr) - 1; if (buf[0] == '<' && *ptr == '>') *ptr-- = '\0'; else if (buf[0] == '<' && *ptr != '>') { - /* - * Syntax error... - */ - + // Syntax error... *value = NULL; return (buf); } @@ -828,10 +700,7 @@ cupsFileGetConf(cups_file_t *fp, /* I - CUPS file */ *ptr-- = '\0'; } - /* - * Return the line... - */ - + // Return the line... return (buf); } } @@ -840,41 +709,35 @@ cupsFileGetConf(cups_file_t *fp, /* I - CUPS file */ } -/* - * 'cupsFileGetLine()' - Get a CR and/or LF-terminated line that may - * contain binary data. - * - * This function differs from @link cupsFileGets@ in that the trailing CR - * and LF are preserved, as is any binary data on the line. The buffer is - * nul-terminated, however you should use the returned length to determine - * the number of bytes on the line. - * - * @since CUPS 1.2/macOS 10.5@ - */ - -size_t /* O - Number of bytes on line or 0 on end of file */ -cupsFileGetLine(cups_file_t *fp, /* I - File to read from */ - char *buf, /* I - Buffer */ - size_t buflen) /* I - Size of buffer */ +// +// 'cupsFileGetLine()' - Get a CR and/or LF-terminated line that may +// contain binary data. +// +// This function differs from @link cupsFileGets@ in that the trailing CR +// and LF are preserved, as is any binary data on the line. The buffer is +// nul-terminated, however you should use the returned length to determine +// the number of bytes on the line. +// +// @since CUPS 1.2/macOS 10.5@ +// + +size_t // O - Number of bytes on line or 0 on end of file +cupsFileGetLine(cups_file_t *fp, // I - File to read from + char *buf, // I - Buffer + size_t buflen) // I - Size of buffer { - int ch; /* Character from file */ - char *ptr, /* Current position in line buffer */ - *end; /* End of line buffer */ + int ch; // Character from file + char *ptr, // Current position in line buffer + *end; // End of line buffer - /* - * Range check input... - */ - + // Range check input... DEBUG_printf("2cupsFileGetLine(fp=%p, buf=%p, buflen=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST buflen); if (!fp || (fp->mode != 'r' && fp->mode != 's') || !buf || buflen < 3) return (0); - /* - * Now loop until we have a valid line... - */ - + // Now loop until we have a valid line... for (ptr = buf, end = buf + buflen - 2; ptr < end ;) { if (fp->ptr >= fp->end) @@ -886,10 +749,7 @@ cupsFileGetLine(cups_file_t *fp, /* I - File to read from */ if (ch == '\r') { - /* - * Check for CR LF... - */ - + // Check for CR LF... if (fp->ptr >= fp->end) if (cups_fill(fp) <= 0) break; @@ -904,10 +764,7 @@ cupsFileGetLine(cups_file_t *fp, /* I - File to read from */ } else if (ch == '\n') { - /* - * Line feed ends a line... - */ - + // Line feed ends a line... break; } } @@ -920,35 +777,29 @@ cupsFileGetLine(cups_file_t *fp, /* I - File to read from */ } -/* - * 'cupsFileGets()' - Get a CR and/or LF-terminated line. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileGets()' - Get a CR and/or LF-terminated line. +// +// @since CUPS 1.2/macOS 10.5@ +// -char * /* O - Line read or @code NULL@ on end of file or error */ -cupsFileGets(cups_file_t *fp, /* I - CUPS file */ - char *buf, /* O - String buffer */ - size_t buflen) /* I - Size of string buffer */ +char * // O - Line read or @code NULL@ on end of file or error +cupsFileGets(cups_file_t *fp, // I - CUPS file + char *buf, // O - String buffer + size_t buflen) // I - Size of string buffer { - int ch; /* Character from file */ - char *ptr, /* Current position in line buffer */ - *end; /* End of line buffer */ + int ch; // Character from file + char *ptr, // Current position in line buffer + *end; // End of line buffer - /* - * Range check input... - */ - + // Range check input... DEBUG_printf("2cupsFileGets(fp=%p, buf=%p, buflen=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST buflen); if (!fp || (fp->mode != 'r' && fp->mode != 's') || !buf || buflen < 2) return (NULL); - /* - * Now loop until we have a valid line... - */ - + // Now loop until we have a valid line... for (ptr = buf, end = buf + buflen - 1; ptr < end ;) { if (fp->ptr >= fp->end) @@ -965,10 +816,7 @@ cupsFileGets(cups_file_t *fp, /* I - CUPS file */ if (ch == '\r') { - /* - * Check for CR LF... - */ - + // Check for CR LF... if (fp->ptr >= fp->end) if (cups_fill(fp) <= 0) break; @@ -983,10 +831,7 @@ cupsFileGets(cups_file_t *fp, /* I - CUPS file */ } else if (ch == '\n') { - /* - * Line feed ends a line... - */ - + // Line feed ends a line... break; } else @@ -1001,43 +846,37 @@ cupsFileGets(cups_file_t *fp, /* I - CUPS file */ } -/* - * 'cupsFileLock()' - Temporarily lock access to a file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileLock()' - Temporarily lock access to a file. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - 0 on success, -1 on error */ -cupsFileLock(cups_file_t *fp, /* I - CUPS file */ - int block) /* I - 1 to wait for the lock, 0 to fail right away */ +int // O - 0 on success, -1 on error +cupsFileLock(cups_file_t *fp, // I - CUPS file + int block) // I - 1 to wait for the lock, 0 to fail right away { - /* - * Range check... - */ - + // Range check... if (!fp || fp->mode == 's') return (-1); - /* - * Try the lock... - */ - + // Try the lock... #ifdef _WIN32 return (_locking(fp->fd, block ? _LK_LOCK : _LK_NBLCK, 0)); #else return (lockf(fp->fd, block ? F_LOCK : F_TLOCK, 0)); -#endif /* _WIN32 */ +#endif // _WIN32 } -/* - * 'cupsFileNumber()' - Return the file descriptor associated with a CUPS file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileNumber()' - Return the file descriptor associated with a CUPS file. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - File descriptor */ -cupsFileNumber(cups_file_t *fp) /* I - CUPS file */ +int // O - File descriptor +cupsFileNumber(cups_file_t *fp) // I - CUPS file { if (fp) return (fp->fd); @@ -1046,62 +885,56 @@ cupsFileNumber(cups_file_t *fp) /* I - CUPS file */ } -/* - * 'cupsFileOpen()' - Open a CUPS file. - * - * The "mode" parameter can be "r" to read, "w" to write, overwriting any - * existing file, "a" to append to an existing file or create a new file, - * or "s" to open a socket connection. - * - * When opening for writing ("w"), an optional number from 1 to 9 can be - * supplied which enables Flate compression of the file. Compression is - * not supported for the "a" (append) mode. - * - * When opening a socket connection, the filename is a string of the form - * "address:port" or "hostname:port". The socket will make an IPv4 or IPv6 - * connection as needed, generally preferring IPv6 connections when there is - * a choice. - * - * @since CUPS 1.2/macOS 10.5@ - */ - -cups_file_t * /* O - CUPS file or @code NULL@ if the file or socket cannot be opened */ -cupsFileOpen(const char *filename, /* I - Name of file */ - const char *mode) /* I - Open mode */ +// +// 'cupsFileOpen()' - Open a CUPS file. +// +// The "mode" parameter can be "r" to read, "w" to write, overwriting any +// existing file, "a" to append to an existing file or create a new file, +// or "s" to open a socket connection. +// +// When opening for writing ("w"), an optional number from 1 to 9 can be +// supplied which enables Flate compression of the file. Compression is +// not supported for the "a" (append) mode. +// +// When opening a socket connection, the filename is a string of the form +// "address:port" or "hostname:port". The socket will make an IPv4 or IPv6 +// connection as needed, generally preferring IPv6 connections when there is +// a choice. +// +// @since CUPS 1.2/macOS 10.5@ +// + +cups_file_t * // O - CUPS file or @code NULL@ if the file or socket cannot be opened +cupsFileOpen(const char *filename, // I - Name of file + const char *mode) // I - Open mode { - cups_file_t *fp; /* New CUPS file */ - int fd; /* File descriptor */ - char hostname[1024], /* Hostname */ - *portname; /* Port "name" (number or service) */ - http_addrlist_t *addrlist; /* Host address list */ + cups_file_t *fp; // New CUPS file + int fd; // File descriptor + char hostname[1024], // Hostname + *portname; // Port "name" (number or service) + http_addrlist_t *addrlist; // Host address list DEBUG_printf("cupsFileOpen(filename=\"%s\", mode=\"%s\")", filename, mode); - /* - * Range check input... - */ - + // Range check input... if (!filename || !mode || (*mode != 'r' && *mode != 'w' && *mode != 'a' && *mode != 's') || (*mode == 'a' && isdigit(mode[1] & 255))) return (NULL); - /* - * Open the file... - */ - + // Open the file... switch (*mode) { - case 'a' : /* Append file */ + case 'a' : // Append file fd = cups_open(filename, O_WRONLY | O_CREAT | O_APPEND | O_LARGEFILE | O_BINARY); break; - case 'r' : /* Read file */ + case 'r' : // Read file fd = open(filename, O_RDONLY | O_LARGEFILE | O_BINARY, 0); break; - case 'w' : /* Write file */ + case 'w' : // Write file fd = cups_open(filename, O_WRONLY | O_LARGEFILE | O_BINARY); if (fd < 0 && errno == ENOENT) { @@ -1115,27 +948,21 @@ cupsFileOpen(const char *filename, /* I - Name of file */ _chsize(fd, 0); #else ftruncate(fd, 0); -#endif /* _WIN32 */ +#endif // _WIN32 break; - case 's' : /* Read/write socket */ + case 's' : // Read/write socket cupsCopyString(hostname, filename, sizeof(hostname)); if ((portname = strrchr(hostname, ':')) != NULL) *portname++ = '\0'; else return (NULL); - /* - * Lookup the hostname and service... - */ - + // Lookup the hostname and service... if ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portname)) == NULL) return (NULL); - /* - * Connect to the server... - */ - + // Connect to the server... if (!httpAddrConnect(addrlist, &fd)) { httpAddrFreeList(addrlist); @@ -1145,17 +972,14 @@ cupsFileOpen(const char *filename, /* I - Name of file */ httpAddrFreeList(addrlist); break; - default : /* Remove bogus compiler warning... */ + default : // Remove bogus compiler warning... return (NULL); } if (fd < 0) return (NULL); - /* - * Create the CUPS file structure... - */ - + // Create the CUPS file structure... if ((fp = cupsFileOpenFd(fd, mode)) == NULL) { if (*mode == 's') @@ -1164,55 +988,43 @@ cupsFileOpen(const char *filename, /* I - Name of file */ close(fd); } - /* - * Return it... - */ - + // Return it... return (fp); } -/* - * 'cupsFileOpenFd()' - Open a CUPS file using a file descriptor. - * - * The "mode" parameter can be "r" to read, "w" to write, "a" to append, - * or "s" to treat the file descriptor as a bidirectional socket connection. - * - * When opening for writing ("w"), an optional number from 1 to 9 can be - * supplied which enables Flate compression of the file. Compression is - * not supported for the "a" (append) mode. - * - * @since CUPS 1.2/macOS 10.5@ - */ - -cups_file_t * /* O - CUPS file or @code NULL@ if the file could not be opened */ -cupsFileOpenFd(int fd, /* I - File descriptor */ - const char *mode) /* I - Open mode */ +// +// 'cupsFileOpenFd()' - Open a CUPS file using a file descriptor. +// +// The "mode" parameter can be "r" to read, "w" to write, "a" to append, +// or "s" to treat the file descriptor as a bidirectional socket connection. +// +// When opening for writing ("w"), an optional number from 1 to 9 can be +// supplied which enables Flate compression of the file. Compression is +// not supported for the "a" (append) mode. +// +// @since CUPS 1.2/macOS 10.5@ +// + +cups_file_t * // O - CUPS file or @code NULL@ if the file could not be opened +cupsFileOpenFd(int fd, // I - File descriptor + const char *mode) // I - Open mode { - cups_file_t *fp; /* New CUPS file */ + cups_file_t *fp; // New CUPS file DEBUG_printf("cupsFileOpenFd(fd=%d, mode=\"%s\")", fd, mode); - /* - * Range check input... - */ - + // Range check input... if (fd < 0 || !mode || (*mode != 'r' && *mode != 'w' && *mode != 'a' && *mode != 's') || (*mode == 'a' && isdigit(mode[1] & 255))) return (NULL); - /* - * Allocate memory... - */ - + // Allocate memory... if ((fp = calloc(1, sizeof(cups_file_t))) == NULL) return (NULL); - /* - * Open the file... - */ - + // Open the file... fp->fd = fd; switch (*mode) @@ -1225,16 +1037,11 @@ cupsFileOpenFd(int fd, /* I - File descriptor */ fp->ptr = fp->buf; fp->end = fp->buf + sizeof(fp->buf); -#ifdef HAVE_LIBZ if (mode[1] >= '1' && mode[1] <= '9') { - /* - * Open a compressed stream, so write the standard gzip file - * header... - */ - - unsigned char header[10]; /* gzip file header */ - time_t curtime; /* Current time */ + // Open a compressed stream, so write the standard gzip file header... + unsigned char header[10]; // gzip file header + time_t curtime; // Current time curtime = time(NULL); @@ -1251,10 +1058,7 @@ cupsFileOpenFd(int fd, /* I - File descriptor */ cups_write(fp, (char *)header, 10); - /* - * Initialize the compressor... - */ - + // Initialize the compressor... if (deflateInit2(&(fp->stream), mode[1] - '0', Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY) < Z_OK) { close(fd); @@ -1267,7 +1071,6 @@ cupsFileOpenFd(int fd, /* I - File descriptor */ fp->compressed = 1; fp->crc = crc32(0L, Z_NULL, 0); } -#endif /* HAVE_LIBZ */ break; case 'r' : @@ -1278,79 +1081,67 @@ cupsFileOpenFd(int fd, /* I - File descriptor */ fp->mode = 's'; break; - default : /* Remove bogus compiler warning... */ + default : // Remove bogus compiler warning... return (NULL); } - /* - * Don't pass this file to child processes... - */ - + // Don't pass this file to child processes... #ifndef _WIN32 fcntl(fp->fd, F_SETFD, fcntl(fp->fd, F_GETFD) | FD_CLOEXEC); -#endif /* !_WIN32 */ +#endif // !_WIN32 return (fp); } -/* - * '_cupsFilePeekAhead()' - See if the requested character is buffered up. - */ +// +// '_cupsFilePeekAhead()' - See if the requested character is buffered up. +// -int /* O - 1 if present, 0 otherwise */ -_cupsFilePeekAhead(cups_file_t *fp, /* I - CUPS file */ - int ch) /* I - Character */ +int // O - 1 if present, 0 otherwise +_cupsFilePeekAhead(cups_file_t *fp, // I - CUPS file + int ch) // I - Character { return (fp && fp->ptr && memchr(fp->ptr, ch, (size_t)(fp->end - fp->ptr))); } -/* - * 'cupsFilePeekChar()' - Peek at the next character from a file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFilePeekChar()' - Peek at the next character from a file. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - Character or -1 on end of file */ -cupsFilePeekChar(cups_file_t *fp) /* I - CUPS file */ +int // O - Character or -1 on end of file +cupsFilePeekChar(cups_file_t *fp) // I - CUPS file { - /* - * Range check input... - */ - + // Range check input... if (!fp || (fp->mode != 'r' && fp->mode != 's')) return (-1); - /* - * If the input buffer is empty, try to read more data... - */ - + // If the input buffer is empty, try to read more data... if (fp->ptr >= fp->end) if (cups_fill(fp) <= 0) return (-1); - /* - * Return the next character in the buffer... - */ - + // Return the next character in the buffer... return (*(fp->ptr) & 255); } -/* - * 'cupsFilePrintf()' - Write a formatted string. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFilePrintf()' - Write a formatted string. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - Number of bytes written or -1 on error */ -cupsFilePrintf(cups_file_t *fp, /* I - CUPS file */ - const char *format, /* I - Printf-style format string */ - ...) /* I - Additional args as necessary */ +int // O - Number of bytes written or -1 on error +cupsFilePrintf(cups_file_t *fp, // I - CUPS file + const char *format, // I - Printf-style format string + ...) // I - Additional args as necessary { - va_list ap; /* Argument list */ - ssize_t bytes; /* Formatted size */ + va_list ap; // Argument list + ssize_t bytes; // Formatted size DEBUG_printf("2cupsFilePrintf(fp=%p, format=\"%s\", ...)", (void *)fp, format); @@ -1360,10 +1151,7 @@ cupsFilePrintf(cups_file_t *fp, /* I - CUPS file */ if (!fp->printf_buffer) { - /* - * Start with a 1k printf buffer... - */ - + // Start with a 1k printf buffer... if ((fp->printf_buffer = malloc(1024)) == NULL) return (-1); @@ -1376,11 +1164,8 @@ cupsFilePrintf(cups_file_t *fp, /* I - CUPS file */ if (bytes >= (ssize_t)fp->printf_size) { - /* - * Expand the printf buffer... - */ - - char *temp; /* Temporary buffer pointer */ + // Expand the printf buffer... + char *temp; // Temporary buffer pointer if (bytes > 65535) @@ -1419,11 +1204,9 @@ cupsFilePrintf(cups_file_t *fp, /* I - CUPS file */ if ((size_t)bytes > sizeof(fp->buf)) { -#ifdef HAVE_LIBZ if (fp->compressed) return ((int)cups_compress(fp, fp->printf_buffer, (size_t)bytes)); else -#endif /* HAVE_LIBZ */ return ((int)cups_write(fp, fp->printf_buffer, (size_t)bytes)); } else @@ -1439,30 +1222,24 @@ cupsFilePrintf(cups_file_t *fp, /* I - CUPS file */ } -/* - * 'cupsFilePutChar()' - Write a character. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFilePutChar()' - Write a character. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - 0 on success, -1 on error */ -cupsFilePutChar(cups_file_t *fp, /* I - CUPS file */ - int c) /* I - Character to write */ +int // O - 0 on success, -1 on error +cupsFilePutChar(cups_file_t *fp, // I - CUPS file + int c) // I - Character to write { - /* - * Range check input... - */ - + // Range check input... if (!fp || (fp->mode != 'w' && fp->mode != 's')) return (-1); if (fp->mode == 's') { - /* - * Send character immediately over socket... - */ - - char ch; /* Output character */ + // Send character immediately over socket... + char ch; // Output character ch = (char)c; @@ -1472,10 +1249,7 @@ cupsFilePutChar(cups_file_t *fp, /* I - CUPS file */ } else { - /* - * Buffer it up... - */ - + // Buffer it up... if (fp->ptr >= fp->end) if (cupsFileFlush(fp)) return (-1); @@ -1491,22 +1265,22 @@ cupsFilePutChar(cups_file_t *fp, /* I - CUPS file */ } -/* - * 'cupsFilePutConf()' - Write a configuration line. - * - * This function handles any comment escaping of the value. - * - * @since CUPS 1.4/macOS 10.6@ - */ +// +// 'cupsFilePutConf()' - Write a configuration line. +// +// This function handles any comment escaping of the value. +// +// @since CUPS 1.4/macOS 10.6@ +// -ssize_t /* O - Number of bytes written or -1 on error */ -cupsFilePutConf(cups_file_t *fp, /* I - CUPS file */ - const char *directive, /* I - Directive */ - const char *value) /* I - Value */ +ssize_t // O - Number of bytes written or -1 on error +cupsFilePutConf(cups_file_t *fp, // I - CUPS file + const char *directive, // I - Directive + const char *value) // I - Value { - ssize_t bytes, /* Number of bytes written */ - temp; /* Temporary byte count */ - const char *ptr; /* Pointer into value */ + ssize_t bytes, // Number of bytes written + temp; // Temporary byte count + const char *ptr; // Pointer into value if (!fp || !directive || !*directive) @@ -1523,10 +1297,7 @@ cupsFilePutConf(cups_file_t *fp, /* I - CUPS file */ { if ((ptr = strchr(value, '#')) != NULL) { - /* - * Need to quote the first # in the info string... - */ - + // Need to quote the first # in the info string... if ((temp = cupsFileWrite(fp, value, (size_t)(ptr - value))) < 0) return (-1); bytes += temp; @@ -1552,32 +1323,26 @@ cupsFilePutConf(cups_file_t *fp, /* I - CUPS file */ } -/* - * 'cupsFilePuts()' - Write a string. - * - * Like the @code fputs@ function, no newline is appended to the string. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFilePuts()' - Write a string. +// +// Like the @code fputs@ function, no newline is appended to the string. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - Number of bytes written or -1 on error */ -cupsFilePuts(cups_file_t *fp, /* I - CUPS file */ - const char *s) /* I - String to write */ +int // O - Number of bytes written or -1 on error +cupsFilePuts(cups_file_t *fp, // I - CUPS file + const char *s) // I - String to write { - ssize_t bytes; /* Bytes to write */ - + ssize_t bytes; // Bytes to write - /* - * Range check input... - */ + // Range check input... if (!fp || !s || (fp->mode != 'w' && fp->mode != 's')) return (-1); - /* - * Write the string... - */ - + // Write the string... bytes = (ssize_t)strlen(s); if (fp->mode == 's') @@ -1602,11 +1367,9 @@ cupsFilePuts(cups_file_t *fp, /* I - CUPS file */ if ((size_t)bytes > sizeof(fp->buf)) { -#ifdef HAVE_LIBZ if (fp->compressed) return ((int)cups_compress(fp, s, (size_t)bytes)); else -#endif /* HAVE_LIBZ */ return ((int)cups_write(fp, s, (size_t)bytes)); } else @@ -1622,27 +1385,24 @@ cupsFilePuts(cups_file_t *fp, /* I - CUPS file */ } -/* - * 'cupsFileRead()' - Read from a file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileRead()' - Read from a file. +// +// @since CUPS 1.2/macOS 10.5@ +// -ssize_t /* O - Number of bytes read or -1 on error */ -cupsFileRead(cups_file_t *fp, /* I - CUPS file */ - char *buf, /* O - Buffer */ - size_t bytes) /* I - Number of bytes to read */ +ssize_t // O - Number of bytes read or -1 on error +cupsFileRead(cups_file_t *fp, // I - CUPS file + char *buf, // O - Buffer + size_t bytes) // I - Number of bytes to read { - size_t total; /* Total bytes read */ - ssize_t count; /* Bytes read */ + size_t total; // Total bytes read + ssize_t count; // Bytes read DEBUG_printf("2cupsFileRead(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes); - /* - * Range check input... - */ - + // Range check input... if (!fp || !buf || (fp->mode != 'r' && fp->mode != 's')) return (-1); @@ -1655,10 +1415,7 @@ cupsFileRead(cups_file_t *fp, /* I - CUPS file */ return (-1); } - /* - * Loop until all bytes are read... - */ - + // Loop until all bytes are read... total = 0; while (bytes > 0) { @@ -1683,39 +1440,30 @@ cupsFileRead(cups_file_t *fp, /* I - CUPS file */ DEBUG_printf("4cupsFileRead: pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos); - /* - * Update the counts for the last read... - */ - + // Update the counts for the last read... bytes -= (size_t)count; total += (size_t)count; buf += count; } - /* - * Return the total number of bytes read... - */ - + // Return the total number of bytes read... DEBUG_printf("3cupsFileRead: total=" CUPS_LLFMT, CUPS_LLCAST total); return ((ssize_t)total); } -/* - * 'cupsFileRewind()' - Set the current file position to the beginning of the - * file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileRewind()' - Set the current file position to the beginning of the +// file. +// +// @since CUPS 1.2/macOS 10.5@ +// -off_t /* O - New file position or -1 on error */ -cupsFileRewind(cups_file_t *fp) /* I - CUPS file */ +off_t // O - New file position or -1 on error +cupsFileRewind(cups_file_t *fp) // I - CUPS file { - /* - * Range check input... - */ - + // Range check input... DEBUG_printf("cupsFileRewind(fp=%p)", (void *)fp); if (!fp || fp->mode != 'r') @@ -1723,16 +1471,10 @@ cupsFileRewind(cups_file_t *fp) /* I - CUPS file */ DEBUG_printf("2cupsFileRewind: pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos); - /* - * Handle special cases... - */ - + // Handle special cases... if (fp->bufpos == 0) { - /* - * No seeking necessary... - */ - + // No seeking necessary... fp->pos = 0; if (fp->ptr) @@ -1746,17 +1488,12 @@ cupsFileRewind(cups_file_t *fp) /* I - CUPS file */ return (0); } - /* - * Otherwise, seek in the file and cleanup any compression buffers... - */ - -#ifdef HAVE_LIBZ + // Otherwise, seek in the file and cleanup any compression buffers... if (fp->compressed) { inflateEnd(&fp->stream); fp->compressed = 0; } -#endif /* HAVE_LIBZ */ if (lseek(fp->fd, 0, SEEK_SET)) { @@ -1776,35 +1513,29 @@ cupsFileRewind(cups_file_t *fp) /* I - CUPS file */ } -/* - * 'cupsFileSeek()' - Seek in a file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileSeek()' - Seek in a file. +// +// @since CUPS 1.2/macOS 10.5@ +// -off_t /* O - New file position or -1 on error */ -cupsFileSeek(cups_file_t *fp, /* I - CUPS file */ - off_t pos) /* I - Position in file */ +off_t // O - New file position or -1 on error +cupsFileSeek(cups_file_t *fp, // I - CUPS file + off_t pos) // I - Position in file { - ssize_t bytes; /* Number bytes in buffer */ + ssize_t bytes; // Number bytes in buffer DEBUG_printf("cupsFileSeek(fp=%p, pos=" CUPS_LLFMT ")", (void *)fp, CUPS_LLCAST pos); - /* - * Range check input... - */ - + // Range check input... if (!fp || pos < 0 || fp->mode != 'r') return (-1); DEBUG_printf("2cupsFileSeek: fp->pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos); DEBUG_printf("2cupsFileSeek: fp->ptr=%p, fp->end=%p", (void *)fp->ptr, (void *)fp->end); - /* - * Handle special cases... - */ - + // Handle special cases... if (pos == 0) return (cupsFileRewind(fp)); @@ -1816,10 +1547,7 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */ if (pos >= fp->bufpos && pos < (fp->bufpos + bytes)) { - /* - * No seeking necessary... - */ - + // No seeking necessary... fp->pos = pos; fp->ptr = fp->buf + (pos - fp->bufpos); fp->eof = 0; @@ -1828,33 +1556,21 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */ } } -#ifdef HAVE_LIBZ if (!fp->compressed && !fp->ptr) { - /* - * Preload a buffer to determine whether the file is compressed... - */ - + // Preload a buffer to determine whether the file is compressed... if (cups_fill(fp) <= 0) return (-1); } -#endif /* HAVE_LIBZ */ - - /* - * Seek forwards or backwards... - */ + // Seek forwards or backwards... fp->eof = 0; if (pos < fp->bufpos) { - /* - * Need to seek backwards... - */ - + // Need to seek backwards... DEBUG_puts("2cupsFileSeek: SEEK BACKWARDS"); -#ifdef HAVE_LIBZ if (fp->compressed) { inflateEnd(&fp->stream); @@ -1876,7 +1592,6 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */ fp->pos = pos; } else -#endif /* HAVE_LIBZ */ { fp->bufpos = lseek(fp->fd, pos, SEEK_SET); fp->pos = fp->bufpos; @@ -1888,13 +1603,9 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */ } else { - /* - * Need to seek forwards... - */ - + // Need to seek forwards... DEBUG_puts("2cupsFileSeek: SEEK FORWARDS"); -#ifdef HAVE_LIBZ if (fp->compressed) { while ((bytes = cups_fill(fp)) > 0) @@ -1910,7 +1621,6 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */ fp->pos = pos; } else -#endif /* HAVE_LIBZ */ { fp->bufpos = lseek(fp->fd, pos, SEEK_SET); fp->pos = fp->bufpos; @@ -1927,34 +1637,25 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */ } -/* - * 'cupsFileStderr()' - Return a CUPS file associated with stderr. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileStderr()' - Return a CUPS file associated with stderr. +// +// @since CUPS 1.2/macOS 10.5@ +// -cups_file_t * /* O - CUPS file */ +cups_file_t * // O - CUPS file cupsFileStderr(void) { - _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals... */ + _cups_globals_t *cg = _cupsGlobals(); // Pointer to library globals... - /* - * Open file descriptor 2 as needed... - */ - + // Open file descriptor 2 as needed... if (!cg->stdio_files[2]) { - /* - * Flush any pending output on the stdio file... - */ - + // Flush any pending output on the stdio file... fflush(stderr); - /* - * Open file descriptor 2... - */ - + // Open file descriptor 2... if ((cg->stdio_files[2] = cupsFileOpenFd(2, "w")) != NULL) cg->stdio_files[2]->is_stdio = 1; } @@ -1963,28 +1664,22 @@ cupsFileStderr(void) } -/* - * 'cupsFileStdin()' - Return a CUPS file associated with stdin. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileStdin()' - Return a CUPS file associated with stdin. +// +// @since CUPS 1.2/macOS 10.5@ +// -cups_file_t * /* O - CUPS file */ +cups_file_t * // O - CUPS file cupsFileStdin(void) { - _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals... */ - + _cups_globals_t *cg = _cupsGlobals(); // Pointer to library globals... - /* - * Open file descriptor 0 as needed... - */ + // Open file descriptor 0 as needed... if (!cg->stdio_files[0]) { - /* - * Open file descriptor 0... - */ - + // Open file descriptor 0... if ((cg->stdio_files[0] = cupsFileOpenFd(0, "r")) != NULL) cg->stdio_files[0]->is_stdio = 1; } @@ -1993,34 +1688,25 @@ cupsFileStdin(void) } -/* - * 'cupsFileStdout()' - Return a CUPS file associated with stdout. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileStdout()' - Return a CUPS file associated with stdout. +// +// @since CUPS 1.2/macOS 10.5@ +// -cups_file_t * /* O - CUPS file */ +cups_file_t * // O - CUPS file cupsFileStdout(void) { - _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals... */ + _cups_globals_t *cg = _cupsGlobals(); // Pointer to library globals... - /* - * Open file descriptor 1 as needed... - */ - + // Open file descriptor 1 as needed... if (!cg->stdio_files[1]) { - /* - * Flush any pending output on the stdio file... - */ - + // Flush any pending output on the stdio file... fflush(stdout); - /* - * Open file descriptor 1... - */ - + // Open file descriptor 1... if ((cg->stdio_files[1] = cupsFileOpenFd(1, "w")) != NULL) cg->stdio_files[1]->is_stdio = 1; } @@ -2029,14 +1715,14 @@ cupsFileStdout(void) } -/* - * 'cupsFileTell()' - Return the current file position. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileTell()' - Return the current file position. +// +// @since CUPS 1.2/macOS 10.5@ +// -off_t /* O - File position */ -cupsFileTell(cups_file_t *fp) /* I - CUPS file */ +off_t // O - File position +cupsFileTell(cups_file_t *fp) // I - CUPS file { DEBUG_printf("2cupsFileTell(fp=%p)", (void *)fp); DEBUG_printf("3cupsFileTell: pos=" CUPS_LLFMT, CUPS_LLCAST (fp ? fp->pos : -1)); @@ -2045,51 +1731,42 @@ cupsFileTell(cups_file_t *fp) /* I - CUPS file */ } -/* - * 'cupsFileUnlock()' - Unlock access to a file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileUnlock()' - Unlock access to a file. +// +// @since CUPS 1.2/macOS 10.5@ +// -int /* O - 0 on success, -1 on error */ -cupsFileUnlock(cups_file_t *fp) /* I - CUPS file */ +int // O - 0 on success, -1 on error +cupsFileUnlock(cups_file_t *fp) // I - CUPS file { - /* - * Range check... - */ - + // Range check... DEBUG_printf("cupsFileUnlock(fp=%p)", (void *)fp); if (!fp || fp->mode == 's') return (-1); - /* - * Unlock... - */ - + // Unlock... #ifdef _WIN32 return (_locking(fp->fd, _LK_UNLCK, 0)); #else return (lockf(fp->fd, F_ULOCK, 0)); -#endif /* _WIN32 */ +#endif // _WIN32 } -/* - * 'cupsFileWrite()' - Write to a file. - * - * @since CUPS 1.2/macOS 10.5@ - */ +// +// 'cupsFileWrite()' - Write to a file. +// +// @since CUPS 1.2/macOS 10.5@ +// -ssize_t /* O - Number of bytes written or -1 on error */ -cupsFileWrite(cups_file_t *fp, /* I - CUPS file */ - const char *buf, /* I - Buffer */ - size_t bytes) /* I - Number of bytes to write */ +ssize_t // O - Number of bytes written or -1 on error +cupsFileWrite(cups_file_t *fp, // I - CUPS file + const char *buf, // I - Buffer + size_t bytes) // I - Number of bytes to write { - /* - * Range check input... - */ - + // Range check input... DEBUG_printf("2cupsFileWrite(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes); if (!fp || !buf || (fp->mode != 'w' && fp->mode != 's')) @@ -2098,10 +1775,7 @@ cupsFileWrite(cups_file_t *fp, /* I - CUPS file */ if (bytes == 0) return (0); - /* - * Write the buffer... - */ - + // Write the buffer... if (fp->mode == 's') { if (cups_write(fp, buf, bytes) < 0) @@ -2124,11 +1798,9 @@ cupsFileWrite(cups_file_t *fp, /* I - CUPS file */ if (bytes > sizeof(fp->buf)) { -#ifdef HAVE_LIBZ if (fp->compressed) return (cups_compress(fp, buf, bytes)); else -#endif /* HAVE_LIBZ */ return (cups_write(fp, buf, bytes)); } else @@ -2140,40 +1812,30 @@ cupsFileWrite(cups_file_t *fp, /* I - CUPS file */ } -#ifdef HAVE_LIBZ -/* - * 'cups_compress()' - Compress a buffer of data. - */ +// +// 'cups_compress()' - Compress a buffer of data. +// -static ssize_t /* O - Number of bytes written or -1 */ -cups_compress(cups_file_t *fp, /* I - CUPS file */ - const char *buf, /* I - Buffer */ - size_t bytes) /* I - Number bytes */ +static ssize_t // O - Number of bytes written or -1 +cups_compress(cups_file_t *fp, // I - CUPS file + const char *buf, // I - Buffer + size_t bytes) // I - Number bytes { - int status; /* Deflate status */ + int status; // Deflate status DEBUG_printf("7cups_compress(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes); - /* - * Update the CRC... - */ - + // Update the CRC... fp->crc = crc32(fp->crc, (const Bytef *)buf, (uInt)bytes); - /* - * Deflate the bytes... - */ - + // Deflate the bytes... fp->stream.next_in = (Bytef *)buf; fp->stream.avail_in = (uInt)bytes; while (fp->stream.avail_in > 0) { - /* - * Flush the current buffer... - */ - + // Flush the current buffer... DEBUG_printf("9cups_compress: avail_in=%d, avail_out=%d", fp->stream.avail_in, fp->stream.avail_out); if (fp->stream.avail_out < (uInt)(sizeof(fp->cbuf) / 8)) @@ -2191,22 +1853,19 @@ cups_compress(cups_file_t *fp, /* I - CUPS file */ return ((ssize_t)bytes); } -#endif /* HAVE_LIBZ */ -/* - * 'cups_fill()' - Fill the input buffer. - */ +// +// 'cups_fill()' - Fill the input buffer. +// -static ssize_t /* O - Number of bytes or -1 */ -cups_fill(cups_file_t *fp) /* I - CUPS file */ +static ssize_t // O - Number of bytes or -1 +cups_fill(cups_file_t *fp) // I - CUPS file { - ssize_t bytes; /* Number of bytes read */ -#ifdef HAVE_LIBZ - int status; /* Decompression status */ - const unsigned char *ptr, /* Pointer into buffer */ - *end; /* End of buffer */ -#endif /* HAVE_LIBZ */ + ssize_t bytes; // Number of bytes read + int status; // Decompression status + const unsigned char *ptr, // Pointer into buffer + *end; // End of buffer DEBUG_printf("7cups_fill(fp=%p)", (void *)fp); @@ -2215,35 +1874,21 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ if (fp->ptr && fp->end) fp->bufpos += fp->end - fp->buf; -#ifdef HAVE_LIBZ DEBUG_printf("9cups_fill: fp->compressed=%d", fp->compressed); while (!fp->ptr || fp->compressed) { - /* - * Check to see if we have read any data yet; if not, see if we have a - * compressed file... - */ - + // Check to see if we have read any data yet; if not, see if we have a + // compressed file... if (!fp->ptr) { - /* - * Reset the file position in case we are seeking... - */ - + // Reset the file position in case we are seeking... fp->compressed = 0; - /* - * Read the first bytes in the file to determine if we have a gzip'd - * file... - */ - + // Read the first bytes in the file to determine if we have a gzip'd file... if ((bytes = cups_read(fp, (char *)fp->buf, sizeof(fp->buf))) < 0) { - /* - * Can't read from file! - */ - + // Can't read from file! DEBUG_printf("9cups_fill: cups_read() returned " CUPS_LLFMT, CUPS_LLCAST bytes); fp->eof = 1; @@ -2255,10 +1900,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ (fp->buf[1] & 255) != 0x8b || fp->buf[2] != 8 || (fp->buf[3] & 0xe0) != 0) { - /* - * Not a gzip'd file! - */ - + // Not a gzip'd file! fp->ptr = fp->buf; fp->end = fp->buf + bytes; @@ -2267,25 +1909,16 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ return (bytes); } - /* - * Parse header junk: extra data, original name, and comment... - */ - + // Parse header junk: extra data, original name, and comment... ptr = (unsigned char *)fp->buf + 10; end = (unsigned char *)fp->buf + bytes; if (fp->buf[3] & 0x04) { - /* - * Skip extra data... - */ - + // Skip extra data... if ((ptr + 2) > end) { - /* - * Can't read from file! - */ - + // Can't read from file! DEBUG_puts("9cups_fill: Extra gzip header data missing, returning -1."); fp->eof = 1; @@ -2299,10 +1932,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ if (ptr > end) { - /* - * Can't read from file! - */ - + // Can't read from file! DEBUG_puts("9cups_fill: Extra gzip header data does not fit in initial buffer, returning -1."); fp->eof = 1; @@ -2314,10 +1944,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ if (fp->buf[3] & 0x08) { - /* - * Skip original name data... - */ - + // Skip original name data... while (ptr < end && *ptr) ptr ++; @@ -2325,10 +1952,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ ptr ++; else { - /* - * Can't read from file! - */ - + // Can't read from file! DEBUG_puts("9cups_fill: Original filename in gzip header data does not fit in initial buffer, returning -1."); fp->eof = 1; @@ -2340,10 +1964,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ if (fp->buf[3] & 0x10) { - /* - * Skip comment data... - */ - + // Skip comment data... while (ptr < end && *ptr) ptr ++; @@ -2351,10 +1972,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ ptr ++; else { - /* - * Can't read from file! - */ - + // Can't read from file! DEBUG_puts("9cups_fill: Comment in gzip header data does not fit in initial buffer, returning -1."); fp->eof = 1; @@ -2366,18 +1984,12 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ if (fp->buf[3] & 0x02) { - /* - * Skip header CRC data... - */ - + // Skip header CRC data... ptr += 2; if (ptr > end) { - /* - * Can't read from file! - */ - + // Can't read from file! DEBUG_puts("9cups_fill: Header CRC in gzip header data does not fit in initial buffer, returning -1."); fp->eof = 1; @@ -2387,17 +1999,11 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ } } - /* - * Copy the flate-compressed data to the compression buffer... - */ - + // Copy the flate-compressed data to the compression buffer... if ((bytes = end - ptr) > 0) memcpy(fp->cbuf, ptr, (size_t)bytes); - /* - * Setup the decompressor data... - */ - + // Setup the decompressor data... fp->stream.zalloc = (alloc_func)0; fp->stream.zfree = (free_func)0; fp->stream.opaque = (voidpf)0; @@ -2422,10 +2028,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ if (fp->compressed) { - /* - * If we have reached end-of-file, return immediately... - */ - + // If we have reached end-of-file, return immediately... if (fp->eof) { DEBUG_puts("9cups_fill: EOF, returning 0."); @@ -2433,10 +2036,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ return (0); } - /* - * Fill the decompression buffer as needed... - */ - + // Fill the decompression buffer as needed... if (fp->stream.avail_in == 0) { if ((bytes = cups_read(fp, (char *)fp->cbuf, sizeof(fp->cbuf))) <= 0) @@ -2452,10 +2052,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ fp->stream.avail_in = (uInt)bytes; } - /* - * Decompress data from the buffer... - */ - + // Decompress data from the buffer... fp->stream.next_out = (Bytef *)fp->buf; fp->stream.avail_out = sizeof(fp->buf); @@ -2467,13 +2064,10 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ if (status == Z_STREAM_END) { - /* - * Read the CRC and length... - */ - - unsigned char trailer[8]; /* Trailer bytes */ - uLong tcrc; /* Trailer CRC */ - ssize_t tbytes = 0; /* Number of bytes */ + // Read the CRC and length... + unsigned char trailer[8]; // Trailer bytes + uLong tcrc; // Trailer CRC + ssize_t tbytes = 0; // Number of bytes if (fp->stream.avail_in > 0) { @@ -2491,10 +2085,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ { if (read(fp->fd, trailer + tbytes, sizeof(trailer) - (size_t)tbytes) < ((ssize_t)sizeof(trailer) - tbytes)) { - /* - * Can't get it, so mark end-of-file... - */ - + // Can't get it, so mark end-of-file... DEBUG_puts("9cups_fill: Unable to read gzip CRC trailer, returning -1."); fp->eof = 1; @@ -2508,10 +2099,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ if (tcrc != fp->crc) { - /* - * Bad CRC, mark end-of-file... - */ - + // Bad CRC, mark end-of-file... DEBUG_printf("9cups_fill: tcrc=%08x != fp->crc=%08x, returning -1.", (unsigned int)tcrc, (unsigned int)fp->crc); fp->eof = 1; @@ -2520,11 +2108,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ return (-1); } - /* - * Otherwise, reset the compressed flag so that we re-read the - * file header... - */ - + // Otherwise, reset the compressed flag so that we re-read the file header... inflateEnd(&fp->stream); fp->compressed = 0; @@ -2541,10 +2125,7 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ bytes = (ssize_t)sizeof(fp->buf) - (ssize_t)fp->stream.avail_out; - /* - * Return the decompressed data... - */ - + // Return the decompressed data... fp->ptr = fp->buf; fp->end = fp->buf + bytes; @@ -2555,28 +2136,18 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ } } } -#endif /* HAVE_LIBZ */ - - /* - * Read a buffer's full of data... - */ + // Read a buffer's full of data... if ((bytes = cups_read(fp, fp->buf, sizeof(fp->buf))) <= 0) { - /* - * Can't read from file! - */ - + // Can't read from file! fp->eof = 1; fp->ptr = fp->buf; fp->end = fp->buf; } else { - /* - * Return the bytes we read... - */ - + // Return the bytes we read... fp->eof = 0; fp->ptr = fp->buf; fp->end = fp->buf + bytes; @@ -2588,36 +2159,29 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */ } -/* - * 'cups_open()' - Safely open a file for writing. - * - * We don't allow appending to directories or files that are hard-linked or - * symlinked. - */ +// +// 'cups_open()' - Safely open a file for writing. +// +// We don't allow appending to directories or files that are hard-linked or +// symlinked. +// -static int /* O - File descriptor or -1 otherwise */ -cups_open(const char *filename, /* I - Filename */ - int mode) /* I - Open mode */ +static int // O - File descriptor or -1 otherwise +cups_open(const char *filename, // I - Filename + int mode) // I - Open mode { - int fd; /* File descriptor */ - struct stat fileinfo; /* File information */ + int fd; // File descriptor + struct stat fileinfo; // File information #ifndef _WIN32 - struct stat linkinfo; /* Link information */ -#endif /* !_WIN32 */ - + struct stat linkinfo; // Link information +#endif // !_WIN32 - /* - * Open the file... - */ + // Open the file... if ((fd = open(filename, mode, 0666)) < 0) return (-1); - /* - * Then verify that the file descriptor doesn't point to a directory or hard- - * linked file. - */ - + // Then verify that the file descriptor doesn't point to a directory or hard-linked file. if (fstat(fd, &fileinfo)) { close(fd); @@ -2635,7 +2199,7 @@ cups_open(const char *filename, /* I - Filename */ if (fileinfo.st_mode & _S_IFDIR) #else if (S_ISDIR(fileinfo.st_mode)) -#endif /* _WIN32 */ +#endif // _WIN32 { close(fd); errno = EISDIR; @@ -2643,10 +2207,7 @@ cups_open(const char *filename, /* I - Filename */ } #ifndef _WIN32 - /* - * Then use lstat to determine whether the filename is a symlink... - */ - + // Then use lstat to determine whether the filename is a symlink... if (lstat(filename, &linkinfo)) { close(fd); @@ -2658,42 +2219,36 @@ cups_open(const char *filename, /* I - Filename */ fileinfo.st_ino != linkinfo.st_ino || #ifdef HAVE_ST_GEN fileinfo.st_gen != linkinfo.st_gen || -#endif /* HAVE_ST_GEN */ +#endif // HAVE_ST_GEN fileinfo.st_nlink != linkinfo.st_nlink || fileinfo.st_mode != linkinfo.st_mode) { - /* - * Yes, don't allow! - */ - + // Yes, don't allow! close(fd); errno = EPERM; return (-1); } -#endif /* !_WIN32 */ +#endif // !_WIN32 return (fd); } -/* - * 'cups_read()' - Read from a file descriptor. - */ +// +// 'cups_read()' - Read from a file descriptor. +// -static ssize_t /* O - Number of bytes read or -1 */ -cups_read(cups_file_t *fp, /* I - CUPS file */ - char *buf, /* I - Buffer */ - size_t bytes) /* I - Number bytes */ +static ssize_t // O - Number of bytes read or -1 +cups_read(cups_file_t *fp, // I - CUPS file + char *buf, // I - Buffer + size_t bytes) // I - Number bytes { - ssize_t total; /* Total bytes read */ + ssize_t total; // Total bytes read DEBUG_printf("7cups_read(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes); - /* - * Loop until we read at least 0 bytes... - */ - + // Loop until we read at least 0 bytes... for (;;) { #ifdef _WIN32 @@ -2706,50 +2261,41 @@ cups_read(cups_file_t *fp, /* I - CUPS file */ total = recv(fp->fd, buf, bytes, 0); else total = read(fp->fd, buf, bytes); -#endif /* _WIN32 */ +#endif // _WIN32 DEBUG_printf("9cups_read: total=" CUPS_LLFMT, CUPS_LLCAST total); if (total >= 0) break; - /* - * Reads can be interrupted by signals and unavailable resources... - */ - + // Reads can be interrupted by signals and unavailable resources... if (errno == EAGAIN || errno == EINTR) continue; else return (-1); } - /* - * Return the total number of bytes read... - */ - + // Return the total number of bytes read... return (total); } -/* - * 'cups_write()' - Write to a file descriptor. - */ +// +// 'cups_write()' - Write to a file descriptor. +// -static ssize_t /* O - Number of bytes written or -1 */ -cups_write(cups_file_t *fp, /* I - CUPS file */ - const char *buf, /* I - Buffer */ - size_t bytes) /* I - Number bytes */ +static ssize_t // O - Number of bytes written or -1 +cups_write(cups_file_t *fp, // I - CUPS file + const char *buf, // I - Buffer + size_t bytes) // I - Number bytes { - size_t total; /* Total bytes written */ - ssize_t count; /* Count this time */ + size_t total; // Total bytes written + ssize_t count; // Count this time DEBUG_printf("7cups_write(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes); - /* - * Loop until all bytes are written... - */ - + // Loop until all bytes are written... total = 0; while (bytes > 0) { @@ -2763,34 +2309,25 @@ cups_write(cups_file_t *fp, /* I - CUPS file */ count = send(fp->fd, buf, bytes, 0); else count = write(fp->fd, buf, bytes); -#endif /* _WIN32 */ +#endif // _WIN32 DEBUG_printf("9cups_write: count=" CUPS_LLFMT, CUPS_LLCAST count); if (count < 0) { - /* - * Writes can be interrupted by signals and unavailable resources... - */ - + // Writes can be interrupted by signals and unavailable resources... if (errno == EAGAIN || errno == EINTR) continue; else return (-1); } - /* - * Update the counts for the last write call... - */ - + // Update the counts for the last write call... bytes -= (size_t)count; total += (size_t)count; buf += count; } - /* - * Return the total number of bytes written... - */ - + // Return the total number of bytes written... return ((ssize_t)total); } diff --git a/scheduler/cups-driverd.cxx b/scheduler/cups-driverd.cxx index b5ef7fe39c..a26719a9ce 100644 --- a/scheduler/cups-driverd.cxx +++ b/scheduler/cups-driverd.cxx @@ -1,21 +1,17 @@ -/* - * PPD/driver support for CUPS. - * - * This program handles listing and installing static PPD files, PPD files - * created from driver information files, and dynamically generated PPD files - * using driver helper programs. - * - * Copyright © 2021-2023 by OpenPrinting. - * Copyright © 2007-2019 by Apple Inc. - * Copyright © 1997-2007 by Easy Software Products. - * - * Licensed under Apache License v2.0. See the file "LICENSE" for more - * information. - */ - -/* - * Include necessary headers... - */ +// +// PPD/driver support for CUPS. +// +// This program handles listing and installing static PPD files, PPD files +// created from driver information files, and dynamically generated PPD files +// using driver helper programs. +// +// Copyright © 2021-2023 by OpenPrinting. +// Copyright © 2007-2019 by Apple Inc. +// Copyright © 1997-2007 by Easy Software Products. +// +// Licensed under Apache License v2.0. See the file "LICENSE" for more +// information. +// #include "util.h" #include @@ -25,107 +21,107 @@ #include -/* - * Constants... - */ +// +// Constants... +// -#define PPD_SYNC 0x50504441 /* Sync word for ppds.dat (PPDA) */ -#define PPD_MAX_LANG 32 /* Maximum languages */ -#define PPD_MAX_PROD 32 /* Maximum products */ -#define PPD_MAX_VERS 32 /* Maximum versions */ +#define PPD_SYNC 0x50504441 // Sync word for ppds.dat (PPDA) +#define PPD_MAX_LANG 32 // Maximum languages +#define PPD_MAX_PROD 32 // Maximum products +#define PPD_MAX_VERS 32 // Maximum versions -#define PPD_TYPE_POSTSCRIPT 0 /* PostScript PPD */ -#define PPD_TYPE_PDF 1 /* PDF PPD */ -#define PPD_TYPE_RASTER 2 /* CUPS raster PPD */ -#define PPD_TYPE_FAX 3 /* Facsimile/MFD PPD */ -#define PPD_TYPE_UNKNOWN 4 /* Other/hybrid PPD */ -#define PPD_TYPE_DRV 5 /* Driver info file */ -#define PPD_TYPE_ARCHIVE 6 /* Archive file */ +#define PPD_TYPE_POSTSCRIPT 0 // PostScript PPD +#define PPD_TYPE_PDF 1 // PDF PPD +#define PPD_TYPE_RASTER 2 // CUPS raster PPD +#define PPD_TYPE_FAX 3 // Facsimile/MFD PPD +#define PPD_TYPE_UNKNOWN 4 // Other/hybrid PPD +#define PPD_TYPE_DRV 5 // Driver info file +#define PPD_TYPE_ARCHIVE 6 // Archive file -#define TAR_BLOCK 512 /* Number of bytes in a block */ -#define TAR_BLOCKS 10 /* Blocking factor */ +#define TAR_BLOCK 512 // Number of bytes in a block +#define TAR_BLOCKS 10 // Blocking factor -#define TAR_MAGIC "ustar" /* 5 chars and a null */ -#define TAR_VERSION "00" /* POSIX tar version */ +#define TAR_MAGIC "ustar" // 5 chars and a null +#define TAR_VERSION "00" // POSIX tar version -#define TAR_OLDNORMAL '\0' /* Normal disk file, Unix compat */ -#define TAR_NORMAL '0' /* Normal disk file */ -#define TAR_LINK '1' /* Link to previously dumped file */ -#define TAR_SYMLINK '2' /* Symbolic link */ -#define TAR_CHR '3' /* Character special file */ -#define TAR_BLK '4' /* Block special file */ -#define TAR_DIR '5' /* Directory */ -#define TAR_FIFO '6' /* FIFO special file */ -#define TAR_CONTIG '7' /* Contiguous file */ +#define TAR_OLDNORMAL '\0' // Normal disk file, Unix compat +#define TAR_NORMAL '0' // Normal disk file +#define TAR_LINK '1' // Link to previously dumped file +#define TAR_SYMLINK '2' // Symbolic link +#define TAR_CHR '3' // Character special file +#define TAR_BLK '4' // Block special file +#define TAR_DIR '5' // Directory +#define TAR_FIFO '6' // FIFO special file +#define TAR_CONTIG '7' // Contiguous file -/* - * PPD information structures... - */ +// +// PPD information structures... +// -typedef struct /**** PPD record ****/ +typedef struct // PPD record { - time_t mtime; /* Modification time */ - off_t size; /* Size in bytes */ - int model_number; /* cupsModelNumber */ - int type; /* ppd-type */ - char filename[512], /* Filename */ - name[256], /* PPD name */ + time_t mtime; // Modification time + off_t size; // Size in bytes + int model_number; // cupsModelNumber + int type; // ppd-type + char filename[512], // Filename + name[256], // PPD name languages[PPD_MAX_LANG][6], - /* LanguageVersion/cupsLanguages */ + // LanguageVersion/cupsLanguages products[PPD_MAX_PROD][128], - /* Product strings */ + // Product strings psversions[PPD_MAX_VERS][32], - /* PSVersion strings */ - make[128], /* Manufacturer */ - make_and_model[128], /* NickName/ModelName */ - device_id[256], /* IEEE 1284 Device ID */ - scheme[128]; /* PPD scheme */ + // PSVersion strings + make[128], // Manufacturer + make_and_model[128], // NickName/ModelName + device_id[256], // IEEE 1284 Device ID + scheme[128]; // PPD scheme } ppd_rec_t; -typedef struct /**** In-memory record ****/ +typedef struct // In-memory record { - int found; /* 1 if PPD is found */ - int matches; /* Match count */ - ppd_rec_t record; /* PPDs.dat record */ + int found; // 1 if PPD is found + int matches; // Match count + ppd_rec_t record; // PPDs.dat record } ppd_info_t; -typedef union /**** TAR record format ****/ +typedef union // TAR record format { - unsigned char all[TAR_BLOCK]; /* Raw data block */ + unsigned char all[TAR_BLOCK]; // Raw data block struct { - char pathname[100], /* Destination path */ - mode[8], /* Octal file permissions */ - uid[8], /* Octal user ID */ - gid[8], /* Octal group ID */ - size[12], /* Octal size in bytes */ - mtime[12], /* Octal modification time */ - chksum[8], /* Octal checksum value */ - linkflag, /* File type */ - linkname[100], /* Source path for link */ - magic[6], /* Magic string */ - version[2], /* Format version */ - uname[32], /* User name */ - gname[32], /* Group name */ - devmajor[8], /* Octal device major number */ - devminor[8], /* Octal device minor number */ - prefix[155]; /* Prefix for long filenames */ + char pathname[100], // Destination path + mode[8], // Octal file permissions + uid[8], // Octal user ID + gid[8], // Octal group ID + size[12], // Octal size in bytes + mtime[12], // Octal modification time + chksum[8], // Octal checksum value + linkflag, // File type + linkname[100], // Source path for link + magic[6], // Magic string + version[2], // Format version + uname[32], // User name + gname[32], // Group name + devmajor[8], // Octal device major number + devminor[8], // Octal device minor number + prefix[155]; // Prefix for long filenames } header; } tar_rec_t; -/* - * Globals... - */ +// +// Globals... +// -static cups_array_t *Inodes = NULL, /* Inodes of directories we've visited */ +static cups_array_t *Inodes = NULL, // Inodes of directories we've visited *PPDsByName = NULL, - /* PPD files sorted by filename and name */ + // PPD files sorted by filename and name *PPDsByMakeModel = NULL; - /* PPD files sorted by make and model */ -static int ChangedPPD; /* Did we change the PPD database? */ -static const char * const PPDTypes[] = /* ppd-type values */ + // PPD files sorted by make and model +static int ChangedPPD; // Did we change the PPD database? +static const char * const PPDTypes[] = // ppd-type values { "postscript", "pdf", @@ -140,76 +136,63 @@ static const char * const PPDTypes[] = /* ppd-type values */ }; -/* - * Local functions... - */ +// +// Local functions... +// -static ppd_info_t *add_ppd(const char *filename, const char *name, - const char *language, const char *make, - const char *make_and_model, - const char *device_id, const char *product, - const char *psversion, time_t mtime, - size_t size, int model_number, int type, - const char *scheme); +static ppd_info_t *add_ppd(const char *filename, const char *name, const char *language, const char *make, const char *make_and_model, const char *device_id, const char *product, const char *psversion, time_t mtime, size_t size, int model_number, int type, const char *scheme); static int cat_drv(const char *name, int request_id); static void cat_ppd(const char *name, int request_id) _CUPS_NORETURN; static int cat_static(const char *name, int request_id); static int cat_tar(const char *name, int request_id); static int compare_inodes(struct stat *a, struct stat *b); -static int compare_matches(const ppd_info_t *p0, - const ppd_info_t *p1); -static int compare_names(const ppd_info_t *p0, - const ppd_info_t *p1); -static int compare_ppds(const ppd_info_t *p0, - const ppd_info_t *p1); +static int compare_matches(const ppd_info_t *p0, const ppd_info_t *p1); +static int compare_names(const ppd_info_t *p0, const ppd_info_t *p1); +static int compare_ppds(const ppd_info_t *p0, const ppd_info_t *p1); static void dump_ppds_dat(const char *filename) _CUPS_NORETURN; static void free_array(cups_array_t *a); -static cups_file_t *get_file(const char *name, int request_id, - const char *subdir, char *buffer, - size_t bufsize, char **subfile); +static cups_file_t *get_file(const char *name, int request_id, const char *subdir, char *buffer, size_t bufsize, char **subfile); static void list_ppds(int request_id, int limit, const char *opt) _CUPS_NORETURN; -static int load_drivers(cups_array_t *include, - cups_array_t *exclude); -static int load_drv(const char *filename, const char *name, - cups_file_t *fp, time_t mtime, off_t size); -static void load_ppd(const char *filename, const char *name, - const char *scheme, struct stat *fileinfo, - ppd_info_t *ppd, cups_file_t *fp, off_t end); +static int load_drivers(cups_array_t *include, cups_array_t *exclude); +static int load_drv(const char *filename, const char *name, cups_file_t *fp, time_t mtime, off_t size); +static void load_ppd(const char *filename, const char *name, const char *scheme, struct stat *fileinfo, ppd_info_t *ppd, cups_file_t *fp, off_t end); static int load_ppds(const char *d, const char *p, int descend); -static void load_ppds_dat(char *filename, size_t filesize, - int verbose); -static int load_tar(const char *filename, const char *name, - cups_file_t *fp, time_t mtime, off_t size); -static int read_tar(cups_file_t *fp, char *name, size_t namesize, - struct stat *info); +static void load_ppds_dat(char *filename, size_t filesize, int verbose); +static int load_tar(const char *filename, const char *name, cups_file_t *fp, time_t mtime, off_t size); +static int read_tar(cups_file_t *fp, char *name, size_t namesize, struct stat *info); static regex_t *regex_device_id(const char *device_id); static regex_t *regex_string(const char *s); -/* - * 'main()' - Scan for drivers and return an IPP response. - * - * Usage: - * - * cups-driverd request_id limit options - */ +// +// 'main()' - Scan for drivers and return an IPP response. +// +// Usage: +// +// cups-driverd request_id limit options +// -int /* O - Exit code */ -main(int argc, /* I - Number of command-line args */ - char *argv[]) /* I - Command-line arguments */ +int // O - Exit code +main(int argc, // I - Number of command-line args + char *argv[]) // I - Command-line arguments { - /* - * Install or list PPDs... - */ - + // Install or list PPDs... if (argc == 3 && !strcmp(argv[1], "cat")) + { cat_ppd(argv[2], 0); + } else if ((argc == 2 || argc == 3) && !strcmp(argv[1], "dump")) + { dump_ppds_dat(argv[2]); + } else if (argc == 4 && !strcmp(argv[1], "get")) + { cat_ppd(argv[3], atoi(argv[2])); + } else if (argc == 5 && !strcmp(argv[1], "list")) + { list_ppds(atoi(argv[2]), atoi(argv[3]), argv[4]); + } else { fputs("Usage: cups-driverd cat ppd-name\n", stderr); @@ -221,27 +204,27 @@ main(int argc, /* I - Number of command-line args */ } -/* - * 'add_ppd()' - Add a PPD file. - */ - -static ppd_info_t * /* O - PPD */ -add_ppd(const char *filename, /* I - PPD filename */ - const char *name, /* I - PPD name */ - const char *language, /* I - LanguageVersion */ - const char *make, /* I - Manufacturer */ - const char *make_and_model, /* I - NickName/ModelName */ - const char *device_id, /* I - 1284DeviceID */ - const char *product, /* I - Product */ - const char *psversion, /* I - PSVersion */ - time_t mtime, /* I - Modification time */ - size_t size, /* I - File size */ - int model_number, /* I - Model number */ - int type, /* I - Driver type */ - const char *scheme) /* I - PPD scheme */ +// +// 'add_ppd()' - Add a PPD file. +// + +static ppd_info_t * // O - PPD +add_ppd(const char *filename, // I - PPD filename + const char *name, // I - PPD name + const char *language, // I - LanguageVersion + const char *make, // I - Manufacturer + const char *make_and_model, // I - NickName/ModelName + const char *device_id, // I - 1284DeviceID + const char *product, // I - Product + const char *psversion, // I - PSVersion + time_t mtime, // I - Modification time + size_t size, // I - File size + int model_number, // I - Model number + int type, // I - Driver type + const char *scheme) // I - PPD scheme { - ppd_info_t *ppd; /* PPD */ - char *recommended; /* Foomatic driver string */ + ppd_info_t *ppd; // PPD + char *recommended; // Foomatic driver string /* @@ -303,13 +286,13 @@ add_ppd(const char *filename, /* I - PPD filename */ } -/* - * 'cat_drv()' - Generate a PPD from a driver info file. - */ +// +// 'cat_drv()' - Generate a PPD from a driver info file. +// -static int /* O - Exit code */ -cat_drv(const char *name, /* I - PPD name */ - int request_id) /* I - Request ID for response? */ +static int // O - Exit code +cat_drv(const char *name, // I - PPD name + int request_id) // I - Request ID for response? { cups_file_t *fp; // File pointer ppdcSource *src; // PPD source file data @@ -421,18 +404,18 @@ cat_drv(const char *name, /* I - PPD name */ } -/* - * 'cat_ppd()' - Copy a PPD file to stdout. - */ +// +// 'cat_ppd()' - Copy a PPD file to stdout. +// static void -cat_ppd(const char *name, /* I - PPD name */ - int request_id) /* I - Request ID for response? */ +cat_ppd(const char *name, // I - PPD name + int request_id) // I - Request ID for response? { - char scheme[256], /* Scheme from PPD name */ - *sptr, /* Pointer into scheme */ - line[1024], /* Line/filename */ - message[2048]; /* status-message */ + char scheme[256], // Scheme from PPD name + *sptr, // Pointer into scheme + line[1024], // Line/filename + message[2048]; // status-message /* @@ -483,8 +466,8 @@ cat_ppd(const char *name, /* I - PPD name */ * Dynamic PPD, see if we have a driver program to support it... */ - const char *serverbin; /* CUPS_SERVERBIN env var */ - char *argv[4]; /* Arguments for program */ + const char *serverbin; // CUPS_SERVERBIN env var + char *argv[4]; // Arguments for program if ((serverbin = getenv("CUPS_SERVERBIN")) == NULL) @@ -556,17 +539,17 @@ cat_ppd(const char *name, /* I - PPD name */ } -/* - * 'copy_static()' - Copy a static PPD file to stdout. - */ +// +// 'copy_static()' - Copy a static PPD file to stdout. +// -static int /* O - Exit code */ -cat_static(const char *name, /* I - PPD name */ - int request_id) /* I - Request ID for response? */ +static int // O - Exit code +cat_static(const char *name, // I - PPD name + int request_id) // I - Request ID for response? { - cups_file_t *fp; /* PPD file */ - char filename[1024], /* PPD filename */ - line[1024]; /* Line buffer */ + cups_file_t *fp; // PPD file + char filename[1024], // PPD filename + line[1024]; // Line buffer if ((fp = get_file(name, request_id, "model", filename, sizeof(filename), @@ -596,23 +579,23 @@ cat_static(const char *name, /* I - PPD name */ } -/* - * 'cat_tar()' - Copy an archived PPD file to stdout. - */ +// +// 'cat_tar()' - Copy an archived PPD file to stdout. +// -static int /* O - Exit code */ -cat_tar(const char *name, /* I - PPD name */ - int request_id) /* I - Request ID */ +static int // O - Exit code +cat_tar(const char *name, // I - PPD name + int request_id) // I - Request ID { - cups_file_t *fp; /* Archive file pointer */ - char filename[1024], /* Archive filename */ - *ppdname, /* PPD filename in archive */ - curname[256], /* Current name in archive */ - buffer[8192]; /* Copy buffer */ - struct stat curinfo; /* Current file info in archive */ - off_t total, /* Total bytes copied */ - next; /* Offset for next record in archive */ - ssize_t bytes; /* Bytes read */ + cups_file_t *fp; // Archive file pointer + char filename[1024], // Archive filename + *ppdname, // PPD filename in archive + curname[256], // Current name in archive + buffer[8192]; // Copy buffer + struct stat curinfo; // Current file info in archive + off_t total, // Total bytes copied + next; // Offset for next record in archive + ssize_t bytes; // Bytes read /* @@ -697,13 +680,13 @@ cat_tar(const char *name, /* I - PPD name */ } -/* - * 'compare_inodes()' - Compare two inodes. - */ +// +// 'compare_inodes()' - Compare two inodes. +// -static int /* O - Result of comparison */ -compare_inodes(struct stat *a, /* I - First inode */ - struct stat *b) /* I - Second inode */ +static int // O - Result of comparison +compare_inodes(struct stat *a, // I - First inode + struct stat *b) // I - Second inode { if (a->st_dev != b->st_dev) return (a->st_dev - b->st_dev); @@ -712,13 +695,13 @@ compare_inodes(struct stat *a, /* I - First inode */ } -/* - * 'compare_matches()' - Compare PPD match scores for sorting. - */ +// +// 'compare_matches()' - Compare PPD match scores for sorting. +// static int -compare_matches(const ppd_info_t *p0, /* I - First PPD */ - const ppd_info_t *p1) /* I - Second PPD */ +compare_matches(const ppd_info_t *p0, // I - First PPD + const ppd_info_t *p1) // I - Second PPD { if (p1->matches != p0->matches) return (p1->matches - p0->matches); @@ -728,15 +711,15 @@ compare_matches(const ppd_info_t *p0, /* I - First PPD */ } -/* - * 'compare_names()' - Compare PPD filenames for sorting. - */ +// +// 'compare_names()' - Compare PPD filenames for sorting. +// -static int /* O - Result of comparison */ -compare_names(const ppd_info_t *p0, /* I - First PPD file */ - const ppd_info_t *p1) /* I - Second PPD file */ +static int // O - Result of comparison +compare_names(const ppd_info_t *p0, // I - First PPD file + const ppd_info_t *p1) // I - Second PPD file { - int diff; /* Difference between strings */ + int diff; // Difference between strings if ((diff = strcmp(p0->record.filename, p1->record.filename)) != 0) @@ -746,15 +729,15 @@ compare_names(const ppd_info_t *p0, /* I - First PPD file */ } -/* - * 'compare_ppds()' - Compare PPD file make and model names for sorting. - */ +// +// 'compare_ppds()' - Compare PPD file make and model names for sorting. +// -static int /* O - Result of comparison */ -compare_ppds(const ppd_info_t *p0, /* I - First PPD file */ - const ppd_info_t *p1) /* I - Second PPD file */ +static int // O - Result of comparison +compare_ppds(const ppd_info_t *p0, // I - First PPD file + const ppd_info_t *p1) // I - Second PPD file { - int diff; /* Difference between strings */ + int diff; // Difference between strings /* @@ -774,15 +757,15 @@ compare_ppds(const ppd_info_t *p0, /* I - First PPD file */ } -/* - * 'dump_ppds_dat()' - Dump the contents of the ppds.dat file. - */ +// +// 'dump_ppds_dat()' - Dump the contents of the ppds.dat file. +// static void -dump_ppds_dat(const char *filename) /* I - Filename */ +dump_ppds_dat(const char *filename) // I - Filename { - char temp[1024]; /* ppds.dat filename */ - ppd_info_t *ppd; /* Current PPD */ + char temp[1024]; // ppds.dat filename + ppd_info_t *ppd; // Current PPD /* @@ -814,14 +797,14 @@ dump_ppds_dat(const char *filename) /* I - Filename */ } -/* - * 'free_array()' - Free an array of strings. - */ +// +// 'free_array()' - Free an array of strings. +// static void -free_array(cups_array_t *a) /* I - Array to free */ +free_array(cups_array_t *a) // I - Array to free { - char *ptr; /* Pointer to string */ + char *ptr; // Pointer to string for (ptr = (char *)cupsArrayFirst(a); @@ -833,26 +816,26 @@ free_array(cups_array_t *a) /* I - Array to free */ } -/* - * 'get_file()' - Get the filename associated with a request. - */ +// +// 'get_file()' - Get the filename associated with a request. +// -static cups_file_t * /* O - File pointer or NULL */ -get_file(const char *name, /* I - Name */ - int request_id, /* I - Request ID */ - const char *subdir, /* I - Subdirectory for file */ - char *buffer, /* I - Filename buffer */ - size_t bufsize, /* I - Size of filename buffer */ - char **subfile) /* O - Sub-filename */ +static cups_file_t * // O - File pointer or NULL +get_file(const char *name, // I - Name + int request_id, // I - Request ID + const char *subdir, // I - Subdirectory for file + char *buffer, // I - Filename buffer + size_t bufsize, // I - Size of filename buffer + char **subfile) // O - Sub-filename { - cups_file_t *fp; /* File pointer */ - const char *datadir; /* CUPS_DATADIR env var */ - char *bufptr, /* Pointer into filename buffer */ - message[2048]; /* status-message */ + cups_file_t *fp; // File pointer + const char *datadir; // CUPS_DATADIR env var + char *bufptr, // Pointer into filename buffer + message[2048]; // status-message #ifdef __APPLE__ - const char *printerDriver, /* Pointer to .printerDriver extension */ - *slash; /* Pointer to next slash */ -#endif /* __APPLE__ */ + const char *printerDriver, // Pointer to .printerDriver extension + *slash; // Pointer to next slash +#endif // __APPLE__ if (subfile) @@ -940,7 +923,7 @@ get_file(const char *name, /* I - Name */ } else -#endif /* __APPLE__ */ +#endif // __APPLE__ { if ((datadir = getenv("CUPS_DATADIR")) == NULL) datadir = CUPS_DATADIR; @@ -1000,53 +983,53 @@ get_file(const char *name, /* I - Name */ } -/* - * 'list_ppds()' - List PPD files. - */ +// +// 'list_ppds()' - List PPD files. +// static void -list_ppds(int request_id, /* I - Request ID */ - int limit, /* I - Limit */ - const char *opt) /* I - Option argument */ +list_ppds(int request_id, // I - Request ID + int limit, // I - Limit + const char *opt) // I - Option argument { - int i; /* Looping vars */ - int count; /* Number of PPDs to send */ - ppd_info_t *ppd; /* Current PPD file */ - cups_file_t *fp; /* ppds.dat file */ - char filename[1024], /* ppds.dat filename */ - model[1024]; /* Model directory */ - const char *cups_datadir; /* CUPS_DATADIR environment variable */ - int num_options; /* Number of options */ - cups_option_t *options; /* Options */ - cups_array_t *requested, /* requested-attributes values */ - *include, /* PPD schemes to include */ - *exclude; /* PPD schemes to exclude */ - const char *device_id, /* ppd-device-id option */ - *language, /* ppd-natural-language option */ - *make, /* ppd-make option */ - *make_and_model, /* ppd-make-and-model option */ - *model_number_str, /* ppd-model-number option */ - *product, /* ppd-product option */ - *psversion, /* ppd-psversion option */ - *type_str; /* ppd-type option */ - int model_number, /* ppd-model-number value */ - type, /* ppd-type value */ - send_device_id, /* Send ppd-device-id? */ - send_make, /* Send ppd-make? */ - send_make_and_model, /* Send ppd-make-and-model? */ - send_model_number, /* Send ppd-model-number? */ - send_name, /* Send ppd-name? */ - send_natural_language, /* Send ppd-natural-language? */ - send_product, /* Send ppd-product? */ - send_psversion, /* Send ppd-psversion? */ - send_type, /* Send ppd-type? */ - sent_header; /* Sent the IPP header? */ - size_t make_and_model_len, /* Length of ppd-make-and-model */ - product_len; /* Length of ppd-product */ - regex_t *device_id_re, /* Regular expression for matching device ID */ - *make_and_model_re; /* Regular expression for matching make and model */ - regmatch_t re_matches[6]; /* Regular expression matches */ - cups_array_t *matches; /* Matching PPDs */ + int i; // Looping vars + int count; // Number of PPDs to send + ppd_info_t *ppd; // Current PPD file + cups_file_t *fp; // ppds.dat file + char filename[1024], // ppds.dat filename + model[1024]; // Model directory + const char *cups_datadir; // CUPS_DATADIR environment variable + int num_options; // Number of options + cups_option_t *options; // Options + cups_array_t *requested, // requested-attributes values + *include, // PPD schemes to include + *exclude; // PPD schemes to exclude + const char *device_id, // ppd-device-id option + *language, // ppd-natural-language option + *make, // ppd-make option + *make_and_model, // ppd-make-and-model option + *model_number_str, // ppd-model-number option + *product, // ppd-product option + *psversion, // ppd-psversion option + *type_str; // ppd-type option + int model_number, // ppd-model-number value + type, // ppd-type value + send_device_id, // Send ppd-device-id? + send_make, // Send ppd-make? + send_make_and_model, // Send ppd-make-and-model? + send_model_number, // Send ppd-model-number? + send_name, // Send ppd-name? + send_natural_language, // Send ppd-natural-language? + send_product, // Send ppd-product? + send_psversion, // Send ppd-psversion? + send_type, // Send ppd-type? + sent_header; // Sent the IPP header? + size_t make_and_model_len, // Length of ppd-make-and-model + product_len; // Length of ppd-product + regex_t *device_id_re, // Regular expression for matching device ID + *make_and_model_re; // Regular expression for matching make and model + regmatch_t re_matches[6]; // Regular expression matches + cups_array_t *matches; // Matching PPDs fprintf(stderr, @@ -1104,7 +1087,7 @@ list_ppds(int request_id, /* I - Request ID */ load_ppds("/usr/share/ppd", "lsb/usr", 1); if (!access("/opt/share/ppd", 0)) load_ppds("/opt/share/ppd", "lsb/opt", 1); -#endif /* __APPLE__ */ +#endif // __APPLE__ /* * Cull PPD files that are no longer present... @@ -1134,13 +1117,13 @@ list_ppds(int request_id, /* I - Request ID */ if (ChangedPPD) { - char newname[1024]; /* New filename */ + char newname[1024]; // New filename snprintf(newname, sizeof(newname), "%s.%d", filename, (int)getpid()); if ((fp = cupsFileOpen(newname, "w")) != NULL) { - unsigned ppdsync = PPD_SYNC; /* Sync word */ + unsigned ppdsync = PPD_SYNC; // Sync word cupsFileWrite(fp, (char *)&ppdsync, sizeof(ppdsync)); @@ -1553,7 +1536,7 @@ list_ppds(int request_id, /* I - Request ID */ if (cupsArrayFind(requested, (void *)"ppd-make") && cupsArrayCount(requested) == 1) { - const char *this_make; /* This ppd-make */ + const char *this_make; // This ppd-make for (this_make = ppd->record.make, @@ -1582,16 +1565,16 @@ list_ppds(int request_id, /* I - Request ID */ } -/* - * 'load_drv()' - Load the PPDs from a driver information file. - */ +// +// 'load_drv()' - Load the PPDs from a driver information file. +// -static int /* O - 1 on success, 0 on failure */ -load_drv(const char *filename, /* I - Actual filename */ - const char *name, /* I - Name to the rest of the world */ - cups_file_t *fp, /* I - File to read from */ - time_t mtime, /* I - Mod time of driver info file */ - off_t size) /* I - Size of driver info file */ +static int // O - 1 on success, 0 on failure +load_drv(const char *filename, // I - Actual filename + const char *name, // I - Name to the rest of the world + cups_file_t *fp, // I - File to read from + time_t mtime, // I - Mod time of driver info file + off_t size) // I - Size of driver info file { ppdcSource *src; // Driver information file ppdcDriver *d; // Current driver @@ -1705,38 +1688,38 @@ load_drv(const char *filename, /* I - Actual filename */ } -/* - * 'load_drivers()' - Load driver-generated PPD files. - */ +// +// 'load_drivers()' - Load driver-generated PPD files. +// -static int /* O - 1 on success, 0 on failure */ -load_drivers(cups_array_t *include, /* I - Drivers to include */ - cups_array_t *exclude) /* I - Drivers to exclude */ +static int // O - 1 on success, 0 on failure +load_drivers(cups_array_t *include, // I - Drivers to include + cups_array_t *exclude) // I - Drivers to exclude { - int i; /* Looping var */ - char *start, /* Start of value */ - *ptr; /* Pointer into string */ - const char *server_bin, /* CUPS_SERVERBIN env variable */ - *scheme, /* Scheme for this driver */ - *scheme_end; /* Pointer to end of scheme */ - char drivers[1024]; /* Location of driver programs */ - int pid; /* Process ID for driver program */ - cups_file_t *fp; /* Pipe to driver program */ - cups_dir_t *dir; /* Directory pointer */ - cups_dentry_t *dent; /* Directory entry */ - char *argv[3], /* Arguments for command */ - filename[1024], /* Name of driver */ - line[2048], /* Line from driver */ - name[256], /* ppd-name */ - make[128], /* ppd-make */ - make_and_model[128], /* ppd-make-and-model */ - device_id[256], /* ppd-device-id */ - languages[128], /* ppd-natural-language */ - product[128], /* ppd-product */ - psversion[128], /* ppd-psversion */ - type_str[128]; /* ppd-type */ - int type; /* PPD type */ - ppd_info_t *ppd; /* Newly added PPD */ + int i; // Looping var + char *start, // Start of value + *ptr; // Pointer into string + const char *server_bin, // CUPS_SERVERBIN env variable + *scheme, // Scheme for this driver + *scheme_end; // Pointer to end of scheme + char drivers[1024]; // Location of driver programs + int pid; // Process ID for driver program + cups_file_t *fp; // Pipe to driver program + cups_dir_t *dir; // Directory pointer + cups_dentry_t *dent; // Directory entry + char *argv[3], // Arguments for command + filename[1024], // Name of driver + line[2048], // Line from driver + name[256], // ppd-name + make[128], // ppd-make + make_and_model[128], // ppd-make-and-model + device_id[256], // ppd-device-id + languages[128], // ppd-natural-language + product[128], // ppd-product + psversion[128], // ppd-psversion + type_str[128]; // ppd-type + int type; // PPD type + ppd_info_t *ppd; // Newly added PPD /* @@ -1945,43 +1928,43 @@ load_drivers(cups_array_t *include, /* I - Drivers to include */ } -/* - * 'load_ppd()' - Load a PPD file. - */ +// +// 'load_ppd()' - Load a PPD file. +// static void -load_ppd(const char *filename, /* I - Real filename */ - const char *name, /* I - Virtual filename */ - const char *scheme, /* I - PPD scheme */ - struct stat *fileinfo, /* I - File information */ - ppd_info_t *ppd, /* I - Existing PPD file or NULL */ - cups_file_t *fp, /* I - File to read from */ - off_t end) /* I - End of file position or 0 */ +load_ppd(const char *filename, // I - Real filename + const char *name, // I - Virtual filename + const char *scheme, // I - PPD scheme + struct stat *fileinfo, // I - File information + ppd_info_t *ppd, // I - Existing PPD file or NULL + cups_file_t *fp, // I - File to read from + off_t end) // I - End of file position or 0 { - int i; /* Looping var */ - char line[256], /* Line from file */ - *ptr, /* Pointer into line */ - lang_version[64], /* PPD LanguageVersion */ - lang_encoding[64], /* PPD LanguageEncoding */ - country[64], /* Country code */ - manufacturer[256], /* Manufacturer */ - make_model[256], /* Make and Model */ - model_name[256], /* ModelName */ - nick_name[256], /* NickName */ - device_id[256], /* 1284DeviceID */ - product[256], /* Product */ - psversion[256], /* PSVersion */ - temp[512]; /* Temporary make and model */ - int install_group, /* In the installable options group? */ - model_number, /* cupsModelNumber */ - type; /* ppd-type */ - cups_array_t *products, /* Product array */ - *psversions, /* PSVersion array */ - *cups_languages; /* cupsLanguages array */ - struct /* LanguageVersion translation table */ + int i; // Looping var + char line[256], // Line from file + *ptr, // Pointer into line + lang_version[64], // PPD LanguageVersion + lang_encoding[64], // PPD LanguageEncoding + country[64], // Country code + manufacturer[256], // Manufacturer + make_model[256], // Make and Model + model_name[256], // ModelName + nick_name[256], // NickName + device_id[256], // 1284DeviceID + product[256], // Product + psversion[256], // PSVersion + temp[512]; // Temporary make and model + int install_group, // In the installable options group? + model_number, // cupsModelNumber + type; // ppd-type + cups_array_t *products, // Product array + *psversions, // PSVersion array + *cups_languages; // cupsLanguages array + struct // LanguageVersion translation table { - const char *version, /* LanguageVersion string */ - *language; /* Language code */ + const char *version, // LanguageVersion string + *language; // Language code } languages[] = { { "chinese", "zh" }, @@ -2079,7 +2062,7 @@ load_ppd(const char *filename, /* I - Real filename */ } else if (!strncmp(line, "*cupsLanguages:", 15)) { - char *start; /* Start of language */ + char *start; // Start of language for (start = line + 15; *start && isspace(*start & 255); start ++); @@ -2355,26 +2338,26 @@ load_ppd(const char *filename, /* I - Real filename */ } -/* - * 'load_ppds()' - Load PPD files recursively. - */ +// +// 'load_ppds()' - Load PPD files recursively. +// -static int /* O - 1 on success, 0 on failure */ -load_ppds(const char *d, /* I - Actual directory */ - const char *p, /* I - Virtual path in name */ - int descend) /* I - Descend into directories? */ +static int // O - 1 on success, 0 on failure +load_ppds(const char *d, // I - Actual directory + const char *p, // I - Virtual path in name + int descend) // I - Descend into directories? { - struct stat dinfo, /* Directory information */ - *dinfoptr; /* Pointer to match */ - cups_file_t *fp; /* Pointer to file */ - cups_dir_t *dir; /* Directory pointer */ - cups_dentry_t *dent; /* Directory entry */ - char filename[1024], /* Name of PPD or directory */ - line[256], /* Line from file */ - *ptr, /* Pointer into name */ - name[256]; /* Name of PPD file */ - ppd_info_t *ppd, /* New PPD file */ - key; /* Search key */ + struct stat dinfo, // Directory information + *dinfoptr; // Pointer to match + cups_file_t *fp; // Pointer to file + cups_dir_t *dir; // Directory pointer + cups_dentry_t *dent; // Directory entry + char filename[1024], // Name of PPD or directory + line[256], // Line from file + *ptr, // Pointer into name + name[256]; // Name of PPD file + ppd_info_t *ppd, // New PPD file + key; // Search key /* @@ -2539,6 +2522,7 @@ load_ppds(const char *d, /* I - Actual directory */ line[0] = '\0'; cupsFileGets(fp, line, sizeof(line)); + fprintf(stderr, "ERROR: '%s' => '%s'\n", filename, line); if (!strncmp(line, "*PPD-Adobe:", 11)) { /* @@ -2577,19 +2561,19 @@ load_ppds(const char *d, /* I - Actual directory */ } -/* - * 'load_ppds_dat()' - Load the ppds.dat file. - */ +// +// 'load_ppds_dat()' - Load the ppds.dat file. +// static void -load_ppds_dat(char *filename, /* I - Filename buffer */ - size_t filesize, /* I - Size of filename buffer */ - int verbose) /* I - Be verbose? */ +load_ppds_dat(char *filename, // I - Filename buffer + size_t filesize, // I - Size of filename buffer + int verbose) // I - Be verbose? { - ppd_info_t *ppd; /* Current PPD file */ - cups_file_t *fp; /* ppds.dat file */ - struct stat fileinfo; /* ppds.dat information */ - const char *cups_cachedir; /* CUPS_CACHEDIR environment variable */ + ppd_info_t *ppd; // Current PPD file + cups_file_t *fp; // ppds.dat file + struct stat fileinfo; // ppds.dat information + const char *cups_cachedir; // CUPS_CACHEDIR environment variable PPDsByName = cupsArrayNew((cups_array_func_t)compare_names, NULL); @@ -2610,8 +2594,8 @@ load_ppds_dat(char *filename, /* I - Filename buffer */ * See if we have the right sync word... */ - unsigned ppdsync; /* Sync word */ - int num_ppds; /* Number of PPDs */ + unsigned ppdsync; // Sync word + int num_ppds; // Number of PPDs if ((size_t)cupsFileRead(fp, (char *)&ppdsync, sizeof(ppdsync)) == sizeof(ppdsync) && ppdsync == PPD_SYNC && @@ -2654,22 +2638,22 @@ load_ppds_dat(char *filename, /* I - Filename buffer */ } -/* - * 'load_tar()' - Load archived PPD files. - */ +// +// 'load_tar()' - Load archived PPD files. +// -static int /* O - 1 on success, 0 on failure */ -load_tar(const char *filename, /* I - Actual filename */ - const char *name, /* I - Name to the rest of the world */ - cups_file_t *fp, /* I - File to read from */ - time_t mtime, /* I - Mod time of driver info file */ - off_t size) /* I - Size of driver info file */ +static int // O - 1 on success, 0 on failure +load_tar(const char *filename, // I - Actual filename + const char *name, // I - Name to the rest of the world + cups_file_t *fp, // I - File to read from + time_t mtime, // I - Mod time of driver info file + off_t size) // I - Size of driver info file { - char curname[256], /* Current archive file name */ - uri[1024]; /* Virtual file URI */ - const char *curext; /* Extension on file */ - struct stat curinfo; /* Current archive file information */ - off_t next; /* Position for next header */ + char curname[256], // Current archive file name + uri[1024]; // Virtual file URI + const char *curext; // Extension on file + struct stat curinfo; // Current archive file information + off_t next; // Position for next header /* @@ -2706,19 +2690,19 @@ load_tar(const char *filename, /* I - Actual filename */ } -/* - * 'read_tar()' - Read a file header from an archive. - * - * This function skips all directories and special files. - */ +// +// 'read_tar()' - Read a file header from an archive. +// +// This function skips all directories and special files. +// -static int /* O - 1 if found, 0 on EOF */ -read_tar(cups_file_t *fp, /* I - Archive to read */ - char *name, /* I - Filename buffer */ - size_t namesize, /* I - Size of filename buffer */ - struct stat *info) /* O - File information */ +static int // O - 1 if found, 0 on EOF +read_tar(cups_file_t *fp, // I - Archive to read + char *name, // I - Filename buffer + size_t namesize, // I - Size of filename buffer + struct stat *info) // O - File information { - tar_rec_t record; /* Record from file */ + tar_rec_t record; // Record from file while ((size_t)cupsFileRead(fp, (char *)&record, sizeof(record)) == sizeof(record)) @@ -2764,18 +2748,18 @@ read_tar(cups_file_t *fp, /* I - Archive to read */ } -/* - * 'regex_device_id()' - Compile a regular expression based on the 1284 device - * ID. - */ +// +// 'regex_device_id()' - Compile a regular expression based on the 1284 device +// ID. +// -static regex_t * /* O - Regular expression */ -regex_device_id(const char *device_id) /* I - IEEE-1284 device ID */ +static regex_t * // O - Regular expression +regex_device_id(const char *device_id) // I - IEEE-1284 device ID { - char res[2048], /* Regular expression string */ - *ptr; /* Pointer into string */ - regex_t *re; /* Regular expression */ - int cmd; /* Command set string? */ + char res[2048], // Regular expression string + *ptr; // Pointer into string + regex_t *re; // Regular expression + int cmd; // Command set string? fprintf(stderr, "DEBUG: [cups-driverd] regex_device_id(\"%s\")\n", device_id); @@ -2869,16 +2853,16 @@ regex_device_id(const char *device_id) /* I - IEEE-1284 device ID */ } -/* - * 'regex_string()' - Construct a regular expression to compare a simple string. - */ +// +// 'regex_string()' - Construct a regular expression to compare a simple string. +// -static regex_t * /* O - Regular expression */ -regex_string(const char *s) /* I - String to compare */ +static regex_t * // O - Regular expression +regex_string(const char *s) // I - String to compare { - char res[2048], /* Regular expression string */ - *ptr; /* Pointer into string */ - regex_t *re; /* Regular expression */ + char res[2048], // Regular expression string + *ptr; // Pointer into string + regex_t *re; // Regular expression fprintf(stderr, "DEBUG: [cups-driverd] regex_string(\"%s\")\n", s);