ppd updating unexpectedly after printing job finished
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cups (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
Ubuntu 16.04LTS
OS Version: 16.04.5
CUPS Version: 2.1.3
Ghostscript Version: 9.18
<Bug Description>
ppd updating unexpectedly after printing job finished
<Detail>
We(RICOH printer driver developer) got a bug report from the users of our printer:
We changed the UI setting(
And confirmed the PPD setting(
When the printing job completed, We expected the PPD file is same with the one before printing.
But after printing job completed, a part of setting in etc/cups/
It seems be changed to the value in /usr/share/
According to the "CUPS Error Log" and the open source of CUPS, it seems that CUPS Updated the PPD Setting after the printing job.
We doubt that CUPS didn't find a part of the keyword we changed in the PPD file.
Error Log
=======
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
...
I [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
I [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
D [19/Jul/
...
=======
CUPS Open Source
<download URL> https:/
commandtops.c
=======
...
static int /* O - Exit status */
auto_configure(
{
...
/*
* Read the response data...
*/
bufptr = buffer;
buffer[0] = '\0';
while ((bytes = cupsBackChannel
{
/*
* No newline at the end? Go on reading ...
*/
bufptr += bytes;
*bufptr = '\0';
if (bytes == 0 ||
(bufptr > buffer && bufptr[-1] != '\r' && bufptr[-1] != '\n'))
continue;
/*
* Trim whitespace and control characters from both ends...
*/
bytes = bufptr - buffer;
for (bufptr --; bufptr >= buffer; bufptr --)
if (isspace(*bufptr & 255) || iscntrl(*bufptr & 255))
*bufptr = '\0';
else
break;
for (bufptr = buffer; isspace(*bufptr & 255) || iscntrl(*bufptr & 255);
bufptr ++);
if (bufptr > buffer)
{
bufptr = buffer;
}
fprintf(
/*
* Skip blank lines...
*/
if (!buffer[0])
continue;
/*
* Check the response...
*/
if ((bufptr = strchr(buffer, ':')) != NULL)
{
/*
* PostScript code for this option in the PPD is broken; show the
* interpreter's error message that came back...
*/
fprintf(stderr, "DEBUG%s\n", bufptr);
break;
}
/*
* Verify the result is a valid option choice...
*/
if (!ppdFindChoice
{
if (!strcasecmp(
break;
bufptr = buffer;
buffer[0] = '\0';
continue;
}
/*
* Write out the result and move on to the next option...
*/
fprintf(
break;
}
/*
* Printer did not answer this option's query
*/
...
}
...
PPD File
<Before Printing>
=======
----->>>
*PPD-Adobe: "4.3"
...
*OpenGroup: AdjustColorDens
*OpenUI *RICyan/C: PickOne
*OrderDependency: 130 AnySetup *RICyan
*DefaultRICyan: 1 ※ppd loading target keyword(expected result)
*RICyan 1/1: "%% RICyan=1"
*RICyan 2/2: "%% RICyan=2"
*RICyan 3/3: "%% RICyan=3"
*RICyan 4/4: "%% RICyan=4"
*RICyan 5/5: "%% RICyan=5"
*RICyan 6/6: "%% RICyan=6"
*RICyan 7/7: "%% RICyan=7"
*RICyan 8/8: "%% RICyan=8"
*RICyan 9/9: "%% RICyan=9"
*CloseUI: *RICyan
*OpenUI *RIMagenta/M: PickOne
*OrderDependency: 130 AnySetup *RIMagenta
*DefaultRIMagenta: 1 ※ppd loading target keyword(expected result)
*RIMagenta 1/1: "%% RIMagenta=1"
*RIMagenta 2/2: "%% RIMagenta=2"
*RIMagenta 3/3: "%% RIMagenta=3"
*RIMagenta 4/4: "%% RIMagenta=4"
*RIMagenta 5/5: "%% RIMagenta=5"
*RIMagenta 6/6: "%% RIMagenta=6"
*RIMagenta 7/7: "%% RIMagenta=7"
*RIMagenta 8/8: "%% RIMagenta=8"
*RIMagenta 9/9: "%% RIMagenta=9"
*CloseUI: *RIMagenta
*OpenUI *RIYellow/Y: PickOne
*OrderDependency: 130 AnySetup *RIYellow
*DefaultRIYellow: 1 ※ppd loading target keyword(expected result)
*RIYellow 1/1: "%% RIYellow=1"
*RIYellow 2/2: "%% RIYellow=2"
*RIYellow 3/3: "%% RIYellow=3"
*RIYellow 4/4: "%% RIYellow=4"
*RIYellow 5/5: "%% RIYellow=5"
*RIYellow 6/6: "%% RIYellow=6"
*RIYellow 7/7: "%% RIYellow=7"
*RIYellow 8/8: "%% RIYellow=8"
*RIYellow 9/9: "%% RIYellow=9"
*CloseUI: *RIYellow
*OpenUI *RIBlack/K: PickOne
*OrderDependency: 130 AnySetup *RIBlack
*DefaultRIBlack: 1 ※ppd loading target keyword(expected result)
*RIBlack 1/1: "%% RIBlack=1"
*RIBlack 2/2: "%% RIBlack=2"
*RIBlack 3/3: "%% RIBlack=3"
*RIBlack 4/4: "%% RIBlack=4"
*RIBlack 5/5: "%% RIBlack=5"
*RIBlack 6/6: "%% RIBlack=6"
*RIBlack 7/7: "%% RIBlack=7"
*RIBlack 8/8: "%% RIBlack=8"
*RIBlack 9/9: "%% RIBlack=9"
*CloseUI: *RIBlack
*CloseGroup: AdjustColorDensity
...
=======
<After Printing>
=======
----->>>
*PPD-Adobe: "4.3"
...
*DefaultRICyan: 5 ※ppd updated unexpectedly
*DefaultRIMagenta: 5 ※ppd updated unexpectedly
*DefaultRIYellow: 5 ※ppd updated unexpectedly
*DefaultRIBlack: 5 ※ppd updated unexpectedly
*OpenGroup: AdjustColorDens
*OpenUI *RICyan/C: PickOne
*OrderDependency: 130 AnySetup *RICyan
*RICyan 1/1: "%% RICyan=1"
*RICyan 2/2: "%% RICyan=2"
*RICyan 3/3: "%% RICyan=3"
*RICyan 4/4: "%% RICyan=4"
*RICyan 5/5: "%% RICyan=5"
*RICyan 6/6: "%% RICyan=6"
*RICyan 7/7: "%% RICyan=7"
*RICyan 8/8: "%% RICyan=8"
*RICyan 9/9: "%% RICyan=9"
*CloseUI: *RICyan
*OpenUI *RIMagenta/M: PickOne
*OrderDependency: 130 AnySetup *RIMagenta
*RIMagenta 1/1: "%% RIMagenta=1"
*RIMagenta 2/2: "%% RIMagenta=2"
*RIMagenta 3/3: "%% RIMagenta=3"
*RIMagenta 4/4: "%% RIMagenta=4"
*RIMagenta 5/5: "%% RIMagenta=5"
*RIMagenta 6/6: "%% RIMagenta=6"
*RIMagenta 7/7: "%% RIMagenta=7"
*RIMagenta 8/8: "%% RIMagenta=8"
*RIMagenta 9/9: "%% RIMagenta=9"
*CloseUI: *RIMagenta
*OpenUI *RIYellow/Y: PickOne
*OrderDependency: 130 AnySetup *RIYellow
*RIYellow 1/1: "%% RIYellow=1"
*RIYellow 2/2: "%% RIYellow=2"
*RIYellow 3/3: "%% RIYellow=3"
*RIYellow 4/4: "%% RIYellow=4"
*RIYellow 5/5: "%% RIYellow=5"
*RIYellow 6/6: "%% RIYellow=6"
*RIYellow 7/7: "%% RIYellow=7"
*RIYellow 8/8: "%% RIYellow=8"
*RIYellow 9/9: "%% RIYellow=9"
*CloseUI: *RIYellow
*OpenUI *RIBlack/K: PickOne
*OrderDependency: 130 AnySetup *RIBlack
*RIBlack 1/1: "%% RIBlack=1"
*RIBlack 2/2: "%% RIBlack=2"
*RIBlack 3/3: "%% RIBlack=3"
*RIBlack 4/4: "%% RIBlack=4"
*RIBlack 5/5: "%% RIBlack=5"
*RIBlack 6/6: "%% RIBlack=6"
*RIBlack 7/7: "%% RIBlack=7"
*RIBlack 8/8: "%% RIBlack=8"
*RIBlack 9/9: "%% RIBlack=9"
*CloseUI: *RIBlack
*CloseGroup: AdjustColorDensity
...
=======
Our questiong is:
1. Why CUPS loaded unexceptedly PPD file but not the etc/cups/
And after printing job, even the kewords(
2. If this is the problem of CUPS, do CUPS have any plan to solve it?
3. Do you have any workaround before the problem be fixed?
This problem makes the settings of the driver UI saving failed and inconvenient to users. Please tell us the reasons for this problem in order to solve the problem.
And our PPD file contains repetitive KeyWords as below, we wonder if it is the reason of the problem. Please confirm and We are looking forward for your reply.
PPD Files Detail(repetitive KeyWords of "RIBlack","RICyan", "RIMagenta", "RIYellow") ------- ------- ------- ------- ------- ------- ------- ------- ---- 1.4.1.367. 3.2.1.2. 18.2.1. 7.1.1" 1.4.1.367. 3.2.1.2. 18.2.1. 7.1.2" 1.4.1.367. 3.2.1.2. 18.2.1. 7.1.3" 1.4.1.367. 3.2.1.2. 18.2.1. 7.1.4" ity/Adjust Color Density
-------
*PJLINQ RIBlack: "GAMMAK"
*PJLINQ RICyan: "GAMMAC"
*PJLINQ RIMagenta: "GAMMAM"
*PJLINQ RIYellow: "GAMMAY"
*SNMPOID RIBlack: ".1.3.6.
*SNMPOID RICyan: ".1.3.6.
*SNMPOID RIMagenta: ".1.3.6.
*SNMPOID RIYellow: ".1.3.6.
...
*OpenGroup: AdjustColorDens
*OpenUI *RICyan/C: PickOne
*OrderDependency: 130 AnySetup *RICyan
*DefaultRICyan: 1 ※ppd loading target keyword(expected result)
*RICyan 1/1: "%% RICyan=1"
*RICyan 2/2: "%% RICyan=2"
*RICyan 3/3: "%% RICyan=3"
*RICyan 4/4: "%% RICyan=4"
*RICyan 5/5: "%% RICyan=5"
*RICyan 6/6: "%% RICyan=6"
*RICyan 7/7: "%% RICyan=7"
*RICyan 8/8: "%% RICyan=8"
*RICyan 9/9: "%% RICyan=9"
*CloseUI: *RICyan
*OpenUI *RIMagenta/M: PickOne
*OrderDependency: 130 AnySetup *RIMagenta
*DefaultRIMagenta: 1 ※ppd loading target keyword(expected result)
*RIMagenta 1/1: "%% RIMagenta=1"
*RIMagenta 2/2: "%% RIMagenta=2"
*RIMagenta 3/3: "%% RIMagenta=3"
*RIMagenta 4/4: "%% RIMagenta=4"
*RIMagenta 5/5: "%% RIMagenta=5"
*RIMagenta 6/6: "%% RIMagenta=6"
*RIMagenta 7/7: "%% RIMagenta=7"
*RIMagenta 8/8: "%% RIMagenta=8"
*RIMagenta 9/9: "%% RIMagenta=9"
*CloseUI: *RIMagenta
*OpenUI *RIYellow/Y: PickOne
*OrderDependency: 130 AnySetup *RIYellow
*DefaultRIYellow: 1 ※ppd loading target keyword(expected result)
*RIYellow 1/1: "%% RIYellow=1"
*RIYellow 2/2: "%% RIYellow=2"
*RIYellow 3/3: "%% RIYellow=3"
*RIYellow 4/4: "%% RIYellow=4"
*RIYellow 5/5: "%% RIYellow=5"
*RIYellow 6/6: "%% RIYellow=6"
*RIYellow 7/7: "%% RIYellow=7"
*RIYellow 8/8: "%% RIYellow=8"
*RIYellow 9/9: "%% RIYellow=9"
*CloseUI: *RIYellow
*OpenUI *RIBlack/K: PickOne
*OrderDependency: 130 AnySetup *RIBlack
*DefaultRIBlack: 1 ※ppd loading target keyword(expected result)
*RIBlack 1/1: "%% RIBlack=1"
*RIBlack 2/2: "%% RIBlack=2"
*RIBlack 3/3: "%% RIBlack=3"
*RIBlack 4/4: "%% RIBlack=4"
*RIBlack 5/5: "%% RIBlack=5"
*RIBlack 6/6: "%% RIBlack=6"
*RIBlack 7/7: "%% RIBlack=7"
*RIBlack 8/8: "%% RIBlack=8"
*RIBlack 9/9: "%% RIBlack=9"
*CloseUI: *RIBlack
*CloseGroup: AdjustColorDensity
...