CHANGES IN CUPS V1.4.7
+ - The web interface did not allow setting of a default custom page size
+ (STR #3707)
- The scheduler could crash if a browsed printer times out while a job
is printing (STR #3754)
- The scheduler incorrectly mapped custom page sizes to standard sizes
-README - CUPS v1.5svn - 2010-04-07
+README - CUPS v1.5svn - 2011-01-03
----------------------------------
Looking for compile instructions? Read the file "INSTALL.txt"
LEGAL STUFF
- CUPS is Copyright 2007-2010 by Apple Inc. CUPS and the CUPS logo are
+ CUPS is Copyright 2007-2011 by Apple Inc. CUPS and the CUPS logo are
trademarks of Apple Inc.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
*
* PPD custom option routines for CUPS.
*
- * Copyright 2007-2010 by Apple Inc.
+ * Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
ppdFindCustomParam(ppd_coption_t *opt, /* I - Custom option */
const char *name) /* I - Parameter name */
{
- ppd_cparam_t key; /* Custom parameter search key */
+ ppd_cparam_t *param; /* Current custom parameter */
if (!opt)
return (NULL);
- strlcpy(key.name, name, sizeof(key.name));
- return ((ppd_cparam_t *)cupsArrayFind(opt->params, &key));
+ for (param = (ppd_cparam_t *)cupsArrayFirst(opt->params);
+ param;
+ param = (ppd_cparam_t *)cupsArrayNext(opt->params))
+ if (!strcasecmp(param->name, name))
+ break;
+
+ return (param);
}
*
* PPD file routines for CUPS.
*
- * Copyright 2007-2010 by Apple Inc.
+ * Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* ppd_compare_attrs() - Compare two attributes.
* ppd_compare_choices() - Compare two choices...
* ppd_compare_coptions() - Compare two custom options.
- * ppd_compare_cparams() - Compare two custom parameters.
* ppd_compare_options() - Compare two options.
* ppd_decode() - Decode a string value...
* ppd_free_group() - Free a single UI group.
static int ppd_compare_choices(ppd_choice_t *a, ppd_choice_t *b);
static int ppd_compare_coptions(ppd_coption_t *a,
ppd_coption_t *b);
-static int ppd_compare_cparams(ppd_cparam_t *a, ppd_cparam_t *b);
static int ppd_compare_options(ppd_option_t *a, ppd_option_t *b);
static int ppd_decode(char *string);
static void ppd_free_group(ppd_group_t *group);
}
-/*
- * 'ppd_compare_cparams()' - Compare two custom parameters.
- */
-
-static int /* O - Result of comparison */
-ppd_compare_cparams(ppd_cparam_t *a, /* I - First parameter */
- ppd_cparam_t *b) /* I - Second parameter */
-{
- return (strcasecmp(a->name, b->name));
-}
-
-
/*
* 'ppd_compare_options()' - Compare two options.
*/
strlcpy(copt->keyword, name, sizeof(copt->keyword));
- copt->params = cupsArrayNew((cups_array_func_t)ppd_compare_cparams, NULL);
+ copt->params = cupsArrayNew((cups_array_func_t)NULL, NULL);
cupsArrayAdd(ppd->coptions, copt);
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punkte</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimeter</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Zentimeter</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Zoll</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Fuß</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Meter</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Puntos</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Milímetros</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centímetros</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Pulgadas</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Pies</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metros</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Puntuak</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Milimetroak</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Zentimetroak</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Hatzak</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Oinak</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metroak</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Poin</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Milimeter</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Sentimeter</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Inci</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Kaki</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Meter</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punti</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimetri</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centimetri</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Pollici</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Piedi</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metri</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>ポイント</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>ミリメートル</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>センチメートル</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>インチ</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>フィート</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>メートル</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Points</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimeters</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centimeters</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Inches</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Feet</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Meters</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punkty</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Milimetry</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centymetry</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Cale</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Stopy</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metry</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Пункты</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Миллиметры</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Сантиметры</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Дюймы</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Футы</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Метры</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>