/*
- * "$Id: ipp.c 5047 2006-02-02 05:14:15Z mike $"
+ * "$Id: ipp.c 5624 2006-06-02 15:15:23Z mike $"
*
* Internet Printing Protocol support functions for the Common UNIX
* Printing System (CUPS).
* connection.
* ippWriteFile() - Write data for an IPP message to a file.
* ippWriteIO() - Write data for an IPP message.
- * _ipp_add_attr() - Add a new attribute to the request.
- * _ipp_free_attr() - Free an attribute.
+ * _ippAddAttr() - Add a new attribute to the request.
+ * _ippFreeAttr() - Free an attribute.
* ipp_length() - Compute the length of an IPP message or
* collection value.
* ipp_read_http() - Semi-blocking read on a HTTP connection...
if (ipp == NULL || name == NULL)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, 1)) == NULL)
+ if ((attr = _ippAddAttr(ipp, 1)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_BOOLEAN;
attr->values[0].boolean = value;
if (ipp == NULL || name == NULL || num_values < 1)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, num_values)) == NULL)
+ if ((attr = _ippAddAttr(ipp, num_values)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_BOOLEAN;
if (ipp == NULL || name == NULL)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, 1)) == NULL)
+ if ((attr = _ippAddAttr(ipp, 1)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_BEGIN_COLLECTION;
attr->values[0].collection = value;
if (ipp == NULL || name == NULL || num_values < 1)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, num_values)) == NULL)
+ if ((attr = _ippAddAttr(ipp, num_values)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_BEGIN_COLLECTION;
if (ipp == NULL || name == NULL || value == NULL)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, 1)) == NULL)
+ if ((attr = _ippAddAttr(ipp, 1)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_DATE;
memcpy(attr->values[0].date, value, 11);
if (ipp == NULL || name == NULL)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, 1)) == NULL)
+ if ((attr = _ippAddAttr(ipp, 1)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = type;
attr->values[0].integer = value;
if (ipp == NULL || name == NULL || num_values < 1)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, num_values)) == NULL)
+ if ((attr = _ippAddAttr(ipp, num_values)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = type;
if (ipp == NULL || name == NULL)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, 1)) == NULL)
+ if ((attr = _ippAddAttr(ipp, 1)) == NULL)
return (NULL);
/*
* Initialize the attribute data...
*/
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_STRING;
attr->values[0].unknown.length = datalen;
if (ipp == NULL || name == NULL)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, 1)) == NULL)
+ if ((attr = _ippAddAttr(ipp, 1)) == NULL)
return (NULL);
/*
* Initialize the attribute data...
*/
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = type;
attr->values[0].string.charset = ((int)type & IPP_TAG_COPY) ? (char *)charset :
- charset ? _cups_sp_alloc(charset) : NULL;
+ charset ? _cupsStrAlloc(charset) : NULL;
attr->values[0].string.text = ((int)type & IPP_TAG_COPY) ? (char *)value :
- value ? _cups_sp_alloc(value) : NULL;
+ value ? _cupsStrAlloc(value) : NULL;
return (attr);
}
if (ipp == NULL || name == NULL || num_values < 1)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, num_values)) == NULL)
+ if ((attr = _ippAddAttr(ipp, num_values)) == NULL)
return (NULL);
/*
* Initialize the attribute data...
*/
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = type;
{
if (i == 0)
value->string.charset = ((int)type & IPP_TAG_COPY) ? (char *)charset :
- charset ? _cups_sp_alloc(charset) : NULL;
+ charset ? _cupsStrAlloc(charset) : NULL;
else
value->string.charset = attr->values[0].string.charset;
if (type == IPP_TAG_LANGUAGE && !strcasecmp(values[i], "C"))
value->string.text = ((int)type & IPP_TAG_COPY) ? "en" :
- _cups_sp_alloc("en");
+ _cupsStrAlloc("en");
else
value->string.text = ((int)type & IPP_TAG_COPY) ? (char *)values[i] :
- _cups_sp_alloc(values[i]);
+ _cupsStrAlloc(values[i]);
}
}
if (ipp == NULL || name == NULL)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, 1)) == NULL)
+ if ((attr = _ippAddAttr(ipp, 1)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_RANGE;
attr->values[0].range.lower = lower;
if (ipp == NULL || name == NULL || num_values < 1)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, num_values)) == NULL)
+ if ((attr = _ippAddAttr(ipp, num_values)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_RANGE;
if (ipp == NULL || name == NULL)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, 1)) == NULL)
+ if ((attr = _ippAddAttr(ipp, 1)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_RESOLUTION;
attr->values[0].resolution.xres = xres;
if (ipp == NULL || name == NULL || num_values < 1)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, num_values)) == NULL)
+ if ((attr = _ippAddAttr(ipp, num_values)) == NULL)
return (NULL);
- attr->name = _cups_sp_alloc(name);
+ attr->name = _cupsStrAlloc(name);
attr->group_tag = group;
attr->value_tag = IPP_TAG_RESOLUTION;
if (ipp == NULL)
return (NULL);
- if ((attr = _ipp_add_attr(ipp, 0)) == NULL)
+ if ((attr = _ippAddAttr(ipp, 0)) == NULL)
return (NULL);
attr->group_tag = IPP_TAG_ZERO;
for (attr = ipp->attrs; attr != NULL; attr = next)
{
next = attr->next;
- _ipp_free_attr(attr);
+ _ippFreeAttr(attr);
}
free(ipp);
* Free memory used by the attribute...
*/
- _ipp_free_attr(current);
+ _ippFreeAttr(current);
}
}
DEBUG_printf(("ippReadIO(%p, %p, %d, %p, %p)\n", src, cb, blocking,
parent, ipp));
+ DEBUG_printf(("ippReadIO: ipp->state=%d\n", ipp->state));
if (src == NULL || ipp == NULL)
return (IPP_ERROR);
if (ipp->current)
ipp->prev = ipp->current;
- attr = ipp->current = _ipp_add_attr(ipp, 1);
+ attr = ipp->current = _ippAddAttr(ipp, 1);
DEBUG_printf(("ippReadIO: membername, ipp->current=%p, ipp->prev=%p\n",
ipp->current, ipp->prev));
if (ipp->current)
ipp->prev = ipp->current;
- attr = ipp->current = _ipp_add_attr(ipp, 1);
+ attr = ipp->current = _ippAddAttr(ipp, 1);
DEBUG_printf(("ippReadIO: name=\'%s\', ipp->current=%p, ipp->prev=%p\n",
buffer, ipp->current, ipp->prev));
attr->group_tag = ipp->curtag;
attr->value_tag = tag;
- attr->name = _cups_sp_alloc((char *)buffer);
+ attr->name = _cupsStrAlloc((char *)buffer);
attr->num_values = 0;
}
else
}
buffer[n] = '\0';
- value->string.text = _cups_sp_alloc((char *)buffer);
+ value->string.text = _cupsStrAlloc((char *)buffer);
DEBUG_printf(("ippReadIO: value = \'%s\'\n",
value->string.text));
break;
string[n] = '\0';
}
- value->string.charset = _cups_sp_alloc((char *)string);
+ value->string.charset = _cupsStrAlloc((char *)string);
bufptr += 2 + n;
n = (bufptr[0] << 8) | bufptr[1];
bufptr[2 + n] = '\0';
- value->string.text = _cups_sp_alloc((char *)bufptr + 2);
+ value->string.text = _cupsStrAlloc((char *)bufptr + 2);
break;
case IPP_TAG_BEGIN_COLLECTION :
}
buffer[n] = '\0';
- attr->name = _cups_sp_alloc((char *)buffer);
+ attr->name = _cupsStrAlloc((char *)buffer);
/*
* Since collection members are encoded differently than
break; /* anti-compiler-warning-code */
}
+ DEBUG_printf(("ippReadIO: returning ipp->state=%d!\n", ipp->state));
+
return (ipp->state);
}
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP header...");
+ DEBUG_puts("ippWriteIO: Could not write IPP header...");
return (IPP_ERROR);
}
}
ipp->current = ipp->attrs;
ipp->curtag = IPP_TAG_ZERO;
- DEBUG_printf(("ippWrite: version=%d.%d\n", buffer[0], buffer[1]));
- DEBUG_printf(("ippWrite: op_status=%04x\n", ipp->request.any.op_status));
- DEBUG_printf(("ippWrite: request_id=%d\n", ipp->request.any.request_id));
+ DEBUG_printf(("ippWriteIO: version=%d.%d\n", buffer[0], buffer[1]));
+ DEBUG_printf(("ippWriteIO: op_status=%04x\n", ipp->request.any.op_status));
+ DEBUG_printf(("ippWriteIO: request_id=%d\n", ipp->request.any.request_id));
/*
* If blocking is disabled, stop here...
if (attr->group_tag == IPP_TAG_ZERO)
continue;
- DEBUG_printf(("ippWrite: wrote group tag = %x\n", attr->group_tag));
+ DEBUG_printf(("ippWriteIO: wrote group tag = %x\n", attr->group_tag));
*bufptr++ = attr->group_tag;
}
else if (attr->group_tag == IPP_TAG_ZERO)
* Write the value tag, name length, and name string...
*/
- DEBUG_printf(("ippWrite: writing value tag = %x\n", attr->value_tag));
- DEBUG_printf(("ippWrite: writing name = %d, \'%s\'\n", n, attr->name));
+ DEBUG_printf(("ippWriteIO: writing value tag = %x\n", attr->value_tag));
+ DEBUG_printf(("ippWriteIO: writing name = %d, \'%s\'\n", n, attr->name));
*bufptr++ = attr->value_tag;
*bufptr++ = n >> 8;
* and empty name for the collection member attribute...
*/
- DEBUG_printf(("ippWrite: writing value tag = %x\n",
+ DEBUG_printf(("ippWriteIO: writing value tag = %x\n",
IPP_TAG_MEMBERNAME));
- DEBUG_printf(("ippWrite: writing name = %d, \'%s\'\n", n, attr->name));
- DEBUG_printf(("ippWrite: writing value tag = %x\n", attr->value_tag));
- DEBUG_puts("ippWrite: writing name = 0, \'\'\n");
+ DEBUG_printf(("ippWriteIO: writing name = %d, \'%s\'\n", n, attr->name));
+ DEBUG_printf(("ippWriteIO: writing value tag = %x\n", attr->value_tag));
+ DEBUG_puts("ippWriteIO: writing name = 0, \'\'\n");
*bufptr++ = IPP_TAG_MEMBERNAME;
*bufptr++ = 0;
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
* values with a zero-length name...
*/
- DEBUG_printf(("ippWrite: writing value tag = %x\n",
+ DEBUG_printf(("ippWriteIO: writing value tag = %x\n",
attr->value_tag));
- DEBUG_printf(("ippWrite: writing name = 0, \'\'\n"));
+ DEBUG_printf(("ippWriteIO: writing name = 0, \'\'\n"));
if ((sizeof(buffer) - (bufptr - buffer)) < 3)
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
if (n > (sizeof(buffer) - 2))
return (IPP_ERROR);
- DEBUG_printf(("ippWrite: writing string = %d, \'%s\'\n", n,
+ DEBUG_printf(("ippWriteIO: writing string = %d, \'%s\'\n", n,
value->string.text));
if ((int)(sizeof(buffer) - (bufptr - buffer)) < (n + 2))
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
{
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP attribute...");
+ DEBUG_puts("ippWriteIO: Could not write IPP attribute...");
return (IPP_ERROR);
}
- DEBUG_printf(("ippWrite: wrote %d bytes\n", bufptr - buffer));
+ DEBUG_printf(("ippWriteIO: wrote %d bytes\n", bufptr - buffer));
/*
* If blocking is disabled, stop here...
if ((*cb)(dst, buffer, n) < 0)
{
- DEBUG_puts("ippWrite: Could not write IPP end-tag...");
+ DEBUG_puts("ippWriteIO: Could not write IPP end-tag...");
return (IPP_ERROR);
}
/*
- * '_ipp_add_attr()' - Add a new attribute to the request.
+ * '_ippAddAttr()' - Add a new attribute to the request.
*/
ipp_attribute_t * /* O - New attribute */
-_ipp_add_attr(ipp_t *ipp, /* I - IPP message */
- int num_values) /* I - Number of values */
+_ippAddAttr(ipp_t *ipp, /* I - IPP message */
+ int num_values) /* I - Number of values */
{
ipp_attribute_t *attr; /* New attribute */
- DEBUG_printf(("_ipp_add_attr(%p, %d)\n", ipp, num_values));
+ DEBUG_printf(("_ippAddAttr(%p, %d)\n", ipp, num_values));
if (ipp == NULL || num_values < 0)
return (NULL);
ipp->last = attr;
}
- DEBUG_printf(("_ipp_add_attr(): %p\n", attr));
+ DEBUG_printf(("_ippAddAttr(): %p\n", attr));
return (attr);
}
/*
- * '_ipp_free_attr()' - Free an attribute.
+ * '_ippFreeAttr()' - Free an attribute.
*/
void
-_ipp_free_attr(ipp_attribute_t *attr) /* I - Attribute to free */
+_ippFreeAttr(ipp_attribute_t *attr) /* I - Attribute to free */
{
int i; /* Looping var */
ipp_value_t *value; /* Current value */
- DEBUG_printf(("_ipp_free_attr(): %p\n", attr));
+ DEBUG_printf(("_ippFreeAttr(): %p\n", attr));
switch (attr->value_tag)
{
for (i = 0, value = attr->values;
i < attr->num_values;
i ++, value ++)
- _cups_sp_free(value->string.text);
+ _cupsStrFree(value->string.text);
break;
case IPP_TAG_TEXTLANG :
i ++, value ++)
{
if (value->string.charset && i == 0)
- _cups_sp_free(value->string.charset);
- _cups_sp_free(value->string.text);
+ _cupsStrFree(value->string.charset);
+ _cupsStrFree(value->string.text);
}
break;
}
if (attr->name)
- _cups_sp_free(attr->name);
+ _cupsStrFree(attr->name);
free(attr);
}
if (!http->blocking)
{
/*
- * Wait up to 1 second for more data on non-blocking sockets...
+ * Wait up to 10 seconds for more data on non-blocking sockets...
*/
- if (!httpWait(http, 1000))
+ if (!httpWait(http, 10000))
{
/*
* Signal no data...
}
+#ifdef __linux
+/*
+ * The following symbol definitions are provided only for KDE
+ * compatibility during the CUPS 1.2 testing period and will be
+ * removed in a future release of CUPS. These are PRIVATE APIs
+ * from CUPS 1.1.x that the KDE developers chose to use...
+ */
+
+ipp_attribute_t * /* O - New attribute */
+_ipp_add_attr(ipp_t *ipp, /* I - IPP message */
+ int num_values) /* I - Number of values */
+{
+ return (_ippAddAttr(ipp, num_values));
+}
+
+void
+_ipp_free_attr(ipp_attribute_t *attr) /* I - Attribute to free */
+{
+ _ippFreeAttr(attr);
+}
+#endif /* __linux */
+
+
/*
- * End of "$Id: ipp.c 5047 2006-02-02 05:14:15Z mike $".
+ * End of "$Id: ipp.c 5624 2006-06-02 15:15:23Z mike $".
*/