[hplip/f16] CUPS filters should use TMPDIR when available (bug #865603).
Tim Waugh
twaugh at fedoraproject.org
Tue Oct 16 10:56:28 UTC 2012
commit abcd2eab5394c936fa76baa8cf8df4822d859712
Author: Tim Waugh <twaugh at redhat.com>
Date: Tue Oct 16 11:12:42 2012 +0100
CUPS filters should use TMPDIR when available (bug #865603).
Resolves: rhbz#865603
hplip-logdir.patch | 261 ++++++++++++++++++++++++++++++++++++++++++++++++++++
hplip.spec | 9 ++-
2 files changed, 269 insertions(+), 1 deletions(-)
---
diff --git a/hplip-logdir.patch b/hplip-logdir.patch
new file mode 100644
index 0000000..cde0e21
--- /dev/null
+++ b/hplip-logdir.patch
@@ -0,0 +1,261 @@
+diff -up hplip-3.12.10a/logcapture.py.logdir hplip-3.12.10a/logcapture.py
+--- hplip-3.12.10a/logcapture.py.logdir 2012-10-10 07:14:21.000000000 +0100
++++ hplip-3.12.10a/logcapture.py 2012-10-16 11:32:41.969953758 +0100
+@@ -39,7 +39,7 @@ CUPS_BACKUP_FILE='/etc/cups/cupsd.conf_o
+ LOG_FOLDER_PATH='./'
+ LOG_FOLDER_NAME='hplip_troubleshoot_logs'
+ LOG_FILES=LOG_FOLDER_PATH + LOG_FOLDER_NAME
+-TMP_DIR='/var/log/hp/tmp'
++TMP_DIR='/var/spool/cups/tmp'
+ ############ enable_log() function ############
+ #This function changes CUPS conf log level to debug and restarts CUPS service.
+
+@@ -268,7 +268,7 @@ if os.path.exists('/var/log/cups/error_l
+ log.error("Failed to capture %s log file."%("/var/log/cups/error_log"))
+
+
+-File_list, File_list_str = utils.expand_list('/var/log/hp/*.log')
++File_list, File_list_str = utils.expand_list('%s/*.log'%TMP_DIR)
+ if File_list:
+ sts,out = utils.run('cp -f %s %s'%(File_list_str, LOG_FILES))
+ if sts != 0:
+diff -up hplip-3.12.10a/prnt/hpcups/HPCupsFilter.cpp.logdir hplip-3.12.10a/prnt/hpcups/HPCupsFilter.cpp
+--- hplip-3.12.10a/prnt/hpcups/HPCupsFilter.cpp.logdir 2012-10-16 11:32:41.964953739 +0100
++++ hplip-3.12.10a/prnt/hpcups/HPCupsFilter.cpp 2012-10-16 11:32:41.969953758 +0100
+@@ -31,16 +31,24 @@
+ \*****************************************************************************/
+
+ #include "HPCupsFilter.h"
++#include <limits.h>
+ #include <signal.h>
++#include <stdlib.h>
+ #include <sys/wait.h>
+ #include <sys/utsname.h>
+ #include <time.h>
+
+ #define HP_FILE_VERSION_STR "03.09.08.0"
+
++char *env_tmpdir = NULL;
++
+ static HPCupsFilter filter;
+ int main (int argc, char *argv[])
+ {
++ env_tmpdir = getenv ("TMPDIR");
++ if (!env_tmpdir)
++ env_tmpdir = "/var/log/hp/tmp";
++
+ openlog("hpcups", LOG_PID, LOG_DAEMON);
+
+ if (argc < 6 || argc > 7) {
+@@ -583,9 +591,10 @@ int HPCupsFilter::processRasterData(cups
+ DRIVER_ERROR err;
+ int ret_status = 0;
+
+- char hpPreProcessedRasterFile[64]; //temp file needed to store raster data with swaped pages.
++ char hpPreProcessedRasterFile[PATH_MAX]; //temp file needed to store raster data with swaped pages.
+
+- strcpy(hpPreProcessedRasterFile, "/var/log/hp/tmp/hplipSwapedPagesXXXXXX");
++ snprintf(hpPreProcessedRasterFile, sizeof (hpPreProcessedRasterFile),
++ "%s/hplipSwapedPagesXXXXXX", env_tmpdir);
+
+
+ while (cupsRasterReadHeader2(cups_raster, &cups_header))
+@@ -647,9 +656,9 @@ int HPCupsFilter::processRasterData(cups
+
+ if (m_iLogLevel & SAVE_INPUT_RASTERS)
+ {
+- char szFileName[64];
++ char szFileName[PATH_MAX];
+ memset(szFileName, 0, sizeof(szFileName));
+- snprintf (szFileName, sizeof(szFileName), "/var/log/hp/tmp/hpcupsfilterc_%d.bmp", current_page_number);
++ snprintf (szFileName, sizeof(szFileName), "%s/hpcupsfilterc_%d.bmp", env_tmpdir, current_page_number);
+
+ if (cups_header.cupsColorSpace == CUPS_CSPACE_RGBW ||
+ cups_header.cupsColorSpace == CUPS_CSPACE_RGB)
+diff -up hplip-3.12.10a/prnt/hpcups/LJZjStream.cpp.logdir hplip-3.12.10a/prnt/hpcups/LJZjStream.cpp
+--- hplip-3.12.10a/prnt/hpcups/LJZjStream.cpp.logdir 2012-10-10 07:08:46.000000000 +0100
++++ hplip-3.12.10a/prnt/hpcups/LJZjStream.cpp 2012-10-16 11:32:41.969953758 +0100
+@@ -42,9 +42,12 @@
+ #include "LJZjStream.h"
+ #include "Utils.h"
+ #include "hpjbig_wrapper.h"
++#include <limits.h>
+
+ #define ZJC_BAND_HEIGHT 100
+
++extern char *env_tmpdir;
++
+ LJZjStream::LJZjStream () : Encapsulator ()
+ {
+ memset(&m_PM, 0, sizeof(m_PM));
+@@ -675,10 +678,10 @@ DRIVER_ERROR LJZjStream::preProcessRaste
+ cups_raster_t *even_pages_raster=NULL;
+ cups_raster_t *odd_pages_raster = NULL;
+ BYTE* pPageDataBuffer = NULL;
+- char hpEvenPagesFile[64];
+- char hpOddPagesFile[64];
+- snprintf(hpEvenPagesFile, sizeof(hpEvenPagesFile), "%s/hplipEvenPagesXXXXXX","/var/log/hp/tmp");
+- snprintf(hpOddPagesFile, sizeof(hpOddPagesFile), "%s/hplipOddPagesXXXXXX", "/var/log/hp/tmp");
++ char hpEvenPagesFile[PATH_MAX];
++ char hpOddPagesFile[PATH_MAX];
++ snprintf(hpEvenPagesFile, sizeof(hpEvenPagesFile), "%s/hplipEvenPagesXXXXXX",env_tmpdir);
++ snprintf(hpOddPagesFile, sizeof(hpOddPagesFile), "%s/hplipOddPagesXXXXXX", env_tmpdir);
+
+ if (1 != m_pJA->pre_process_raster || !cups_header.Duplex){
+ return NO_ERROR;
+diff -up hplip-3.12.10a/prnt/hpcups/SystemServices.cpp.logdir hplip-3.12.10a/prnt/hpcups/SystemServices.cpp
+--- hplip-3.12.10a/prnt/hpcups/SystemServices.cpp.logdir 2012-10-10 07:08:46.000000000 +0100
++++ hplip-3.12.10a/prnt/hpcups/SystemServices.cpp 2012-10-16 11:32:41.969953758 +0100
+@@ -30,14 +30,17 @@
+
+ #include "CommonDefinitions.h"
+ #include "SystemServices.h"
++#include <limits.h>
++
++extern char *env_tmpdir;
+
+ SystemServices::SystemServices(int iLogLevel, int job_id) : m_iLogLevel(iLogLevel)
+ {
+ m_fp = NULL;
+ if (iLogLevel & SAVE_PCL_FILE)
+ {
+- char fname[64];
+- sprintf(fname, "%s/hpcups_job%d.out", "/var/log/hp/tmp",job_id);
++ char fname[PATH_MAX];
++ sprintf(fname, "%s/hpcups_job%d.out", env_tmpdir, job_id);
+ m_fp = fopen(fname, "w");
+ chmod(fname, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+ }
+diff -up hplip-3.12.10a/prnt/hpijs/hpcupsfax.cpp.logdir hplip-3.12.10a/prnt/hpijs/hpcupsfax.cpp
+--- hplip-3.12.10a/prnt/hpijs/hpcupsfax.cpp.logdir 2012-10-10 07:08:50.000000000 +0100
++++ hplip-3.12.10a/prnt/hpijs/hpcupsfax.cpp 2012-10-16 11:33:03.827023620 +0100
+@@ -29,6 +29,7 @@
+ POSSIBILITY OF SUCH DAMAGE.
+ \*****************************************************************************/
+
++#include <limits.h>
+ #include <sys/stat.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -66,6 +67,7 @@ uint16_t (*convert_endian_s)(uint16_t);
+
+ static int iLogLevel = 1;
+ char hpFileName[64] ;
++static char *env_tmpdir;
+
+ #define TIFF_HDR_SIZE 8
+ #define LITTLE_ENDIAN_MODE I
+@@ -439,9 +441,9 @@ int ProcessTiffData(int fromFD, int toFD
+ int bytes_written = 0;
+ int ret_status = 0;
+ int bytes_read = 0;
+- char hpTiffFileName[64];
++ char hpTiffFileName[PATH_MAX];
+ long input_file_size = 0;
+- snprintf(hpTiffFileName,sizeof(hpTiffFileName), "%s/hpliptiffXXXXXX","/var/log/hp/tmp");
++ snprintf(hpTiffFileName,sizeof(hpTiffFileName), "%s/hpliptiffXXXXXX",env_tmpdir);
+
+
+ fdTiff = mkstemp (hpTiffFileName);
+@@ -656,6 +658,10 @@ int main (int argc, char **argv)
+
+ /*********** PROLOGUE ***********/
+
++ env_tmpdir = getenv ("TMPDIR");
++ if (!env_tmpdir)
++ env_tmpdir = "/var/log/hp/tmp";
++
+ GetLogLevel();
+ openlog("hpcupsfax", LOG_PID, LOG_DAEMON);
+
+@@ -679,7 +685,7 @@ int main (int argc, char **argv)
+ i++;
+ }
+
+- snprintf(hpFileName,sizeof(hpFileName),"%s/hplipfaxLog_XXXXXX","/var/log/hp/tmp");
++ snprintf(hpFileName,sizeof(hpFileName),"%s/hplipfaxLog_XXXXXX",env_tmpdir);
+
+ fdFax = mkstemp (hpFileName);
+ if (fdFax < 0)
+diff -up hplip-3.12.10a/prnt/hpijs/hpijs.cpp.logdir hplip-3.12.10a/prnt/hpijs/hpijs.cpp
+--- hplip-3.12.10a/prnt/hpijs/hpijs.cpp.logdir 2012-10-16 11:32:41.961953728 +0100
++++ hplip-3.12.10a/prnt/hpijs/hpijs.cpp 2012-10-16 11:32:41.970953762 +0100
+@@ -29,6 +29,7 @@
+ POSSIBILITY OF SUCH DAMAGE.
+ \*****************************************************************************/
+
++#include <limits.h>
+ #include <sys/stat.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -43,6 +44,8 @@
+ #include "hpijs.h"
+ #include "services.h"
+
++static char *env_tmpdir;
++
+ extern void SendDbusMessage (const char *dev, const char *printer, int code,
+ const char *username, const int jobid, const char *title);
+
+@@ -96,8 +99,8 @@ void setLogLevel(UXServices *pSS)
+
+ if (pSS->m_iLogLevel & SAVE_PCL_FILE)
+ {
+- char szFileName[64];
+- snprintf (szFileName,sizeof(szFileName), "/var/log/hp/tmp/hpijs_%d.out", getpid());
++ char szFileName[PATH_MAX];
++ snprintf (szFileName,sizeof(szFileName), "%s/hpijs_%d.out", env_tmpdir, getpid());
+
+ pSS->outfp = fopen (szFileName, "w");
+ if (pSS->outfp)
+@@ -588,6 +591,10 @@ int main (int argc, char *argv[], char *
+ int ret, n, i, kn=0, width, k_width;
+ int low_marker = 0;
+
++ env_tmpdir = getenv ("TMPDIR");
++ if (!env_tmpdir)
++ env_tmpdir = "/var/log/hp/tmp";
++
+ openlog("hpijs", LOG_PID, LOG_DAEMON);
+
+ if (argc > 1)
+@@ -627,8 +634,8 @@ int main (int argc, char *argv[], char *
+ setLogLevel(pSS);
+
+ #ifdef CAPTURE
+- char szCapOutFile[64];
+- snprintf(szCapOutFile, sizeof(szCapOutFile),"%s/capout_XXXXXX","/var/log/hp/tmp");
++ char szCapOutFile[PATH_MAX];
++ snprintf(szCapOutFile, sizeof(szCapOutFile),"%s/capout_XXXXXX",env_tmpdir);
+ if ((pSS->InitScript(szCapOutFile, TRUE)) != NO_ERROR)
+ BUG("unable to init capture");
+ #endif
+diff -up hplip-3.12.10a/prnt/hpijs/hpijsfax.cpp.logdir hplip-3.12.10a/prnt/hpijs/hpijsfax.cpp
+--- hplip-3.12.10a/prnt/hpijs/hpijsfax.cpp.logdir 2012-10-10 07:08:50.000000000 +0100
++++ hplip-3.12.10a/prnt/hpijs/hpijsfax.cpp 2012-10-16 11:32:41.970953762 +0100
+@@ -31,6 +31,7 @@
+
+ #ifdef HAVE_LIBHPIP
+
++#include <limits.h>
+ #include <sys/stat.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -270,14 +271,15 @@ int hpijsFaxServer (int argc, char **arg
+ IP_IMAGE_TRAITS traits;
+ IP_HANDLE hJob;
+
+- char hpFileName[64];
++ char hpFileName[PATH_MAX];
+ int fdFax = -1;
+ BYTE szFileHeader[68];
+ BYTE szPageHeader[64];
+ BYTE *p;
+ unsigned int uiPageNum = 0;
+
+- snprintf(hpFileName,sizeof(hpFileName),"%s/hplipfaxXXXXXX","/var/log/hp/tmp");
++ snprintf(hpFileName,sizeof(hpFileName),"%s/hplipfaxXXXXXX",
++ getenv ("TMPDIR") ? : "/var/log/hp/tmp");
+
+
+ pFaxStruct = new HPIJSFax ();
diff --git a/hplip.spec b/hplip.spec
index 06d4d38..e8c15a6 100644
--- a/hplip.spec
+++ b/hplip.spec
@@ -3,7 +3,7 @@
Summary: HP Linux Imaging and Printing Project
Name: hplip
Version: 3.12.10
-Release: 2.%{posttag}%{?dist}
+Release: 3.%{posttag}%{?dist}
License: GPLv2+ and MIT
Group: System Environment/Daemons
@@ -25,6 +25,7 @@ Patch11: hplip-hpijs-marker-supply.patch
Patch12: hplip-clear-old-state-reasons.patch
Patch13: hplip-systray-dbus-exception.patch
Patch14: hplip-hpcups-sigpipe.patch
+Patch15: hplip-logdir.patch
Patch16: hplip-bad-low-ink-warning.patch
Patch17: hplip-deviceIDs-ppd.patch
Patch18: hplip-skip-blank-lines.patch
@@ -212,6 +213,9 @@ mv prnt/drv/hpijs.drv.in{,.deviceIDs-drv-hpijs}
# Avoid busy loop in hpcups when backend has exited (bug #525944).
%patch14 -p1 -b .hpcups-sigpipe
+# CUPS filters should use TMPDIR when available (bug #865603).
+%patch15 -p1 -b .logdir
+
# Fixed Device ID parsing code in hpijs's dj9xxvip.c (bug #510926).
%patch16 -p1 -b .bad-low-ink-warning
@@ -522,6 +526,9 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop
%postun libs -p /sbin/ldconfig
%changelog
+* Tue Oct 16 2012 Tim Waugh <twaugh at redhat.com> 3.12.10-3.a
+- CUPS filters should use TMPDIR when available (bug #865603).
+
* Thu Oct 11 2012 Jiri Popelka <jpopelka at redhat.com> 3.12.10-2.a
- 3.12.10a
More information about the scm-commits
mailing list