MCPcopy Create free account
hub / github.com/OpenPrinting/cups / ippAddString

Function ippAddString

cups/ipp.c:874–962  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

872 */
873
874ipp_attribute_t * /* O - New attribute */
875ippAddString(ipp_t *ipp, /* I - IPP message */
876 ipp_tag_t group, /* I - IPP group */
877 ipp_tag_t value_tag, /* I - Type of attribute */
878 const char *name, /* I - Name of attribute */
879 const char *language, /* I - Language code */
880 const char *value) /* I - Value */
881{
882 ipp_tag_t temp_tag; /* Temporary value tag (masked) */
883 ipp_attribute_t *attr; /* New attribute */
884 char code[IPP_MAX_LANGUAGE];
885 /* Charset/language code buffer */
886
887
888 DEBUG_printf(("ippAddString(ipp=%p, group=%02x(%s), value_tag=%02x(%s), name=\"%s\", language=\"%s\", value=\"%s\")", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name, language, value));
889
890 /*
891 * Range check input...
892 */
893
894 temp_tag = (ipp_tag_t)((int)value_tag & IPP_TAG_CUPS_MASK);
895
896#if 0
897 if (!ipp || !name || group < IPP_TAG_ZERO ||
898 group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE ||
899 (temp_tag < IPP_TAG_TEXT && temp_tag != IPP_TAG_TEXTLANG &&
900 temp_tag != IPP_TAG_NAMELANG) || temp_tag > IPP_TAG_MIMETYPE)
901 return (NULL);
902
903 if ((temp_tag == IPP_TAG_TEXTLANG || temp_tag == IPP_TAG_NAMELANG)
904 != (language != NULL))
905 return (NULL);
906#else
907 if (!ipp || !name || group < IPP_TAG_ZERO ||
908 group == IPP_TAG_END || group >= IPP_TAG_UNSUPPORTED_VALUE)
909 return (NULL);
910#endif /* 0 */
911
912 /*
913 * See if we need to map charset, language, or locale values...
914 */
915
916 if (language && ((int)value_tag & IPP_TAG_CUPS_CONST) &&
917 strcmp(language, ipp_lang_code(language, code, sizeof(code))))
918 value_tag = temp_tag; /* Don't do a fast copy */
919 else if (value && value_tag == (ipp_tag_t)(IPP_TAG_CHARSET | IPP_TAG_CUPS_CONST) &&
920 strcmp(value, ipp_get_code(value, code, sizeof(code))))
921 value_tag = temp_tag; /* Don't do a fast copy */
922 else if (value && value_tag == (ipp_tag_t)(IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST) &&
923 strcmp(value, ipp_lang_code(value, code, sizeof(code))))
924 value_tag = temp_tag; /* Don't do a fast copy */
925
926 /*
927 * Create the attribute...
928 */
929
930 if ((attr = ipp_add_attr(ipp, name, group, value_tag, 1)) == NULL)
931 return (NULL);

Callers 15

list_serviceFunction · 0.85
do_monitor_printer_stateFunction · 0.85
copy_job_attributesFunction · 0.85
create_jobFunction · 0.85
create_media_colFunction · 0.85
create_printerFunction · 0.85
ipp_get_jobsFunction · 0.85
load_legacy_attributesFunction · 0.85
load_ppd_attributesFunction · 0.85
show_mediaFunction · 0.85
valid_doc_attributesFunction · 0.85

Calls 5

ippTagStringFunction · 0.85
ipp_lang_codeFunction · 0.85
ipp_get_codeFunction · 0.85
ipp_add_attrFunction · 0.85
_cupsStrAllocFunction · 0.85

Tested by 7

mainFunction · 0.68
do_testFunction · 0.68
mainFunction · 0.68
monitor_printerFunction · 0.68
run_clientFunction · 0.68
mainFunction · 0.68
test_pagesizeFunction · 0.68