update to Samba 3.6.7, from Ian McWilliam (maintainer)

- sync md5 patch to configure.in with ticket 9037 upstream, suggested by Brad

ok maintainer
This commit is contained in:
sthen 2012-09-04 10:00:20 +00:00
parent f3f7d81df9
commit fd14b138bb
5 changed files with 59 additions and 965 deletions

View File

@ -1,13 +1,12 @@
# $OpenBSD: Makefile,v 1.169 2012/08/25 10:14:37 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.170 2012/09/04 10:00:20 sthen Exp $
SHARED_ONLY= Yes
COMMENT-main= SMB and CIFS client and server for UNIX
COMMENT-docs= additional documentation and examples for Samba
DISTNAME= samba-3.6.6
DISTNAME= samba-3.6.7
PKGNAME-main= ${DISTNAME}
REVISION-main= 3
FULLPKGNAME-docs= ${DISTNAME:S/-/-docs-/}
FULLPKGPATH-docs= net/samba,-docs

View File

@ -1,5 +1,2 @@
MD5 (samba-3.6.6.tar.gz) = C+pShC0XIjHAwOI+5XDXrw==
RMD160 (samba-3.6.6.tar.gz) = cKUgASocAghfDWIJwqyshFEtn4s=
SHA1 (samba-3.6.6.tar.gz) = 8VFs4zL+EcaKBShV7ddFNorE2Ok=
SHA256 (samba-3.6.6.tar.gz) = Z2hfK633RRywatYFNHhAcpR8OoReTQr+xat4F/LukxA=
SIZE (samba-3.6.6.tar.gz) = 34061741
SHA256 (samba-3.6.7.tar.gz) = uFig8BG6f+VUiBucfmyxyct/rOIu2Ghg9WD8rsxO1Mo=
SIZE (samba-3.6.7.tar.gz) = 34067900

View File

@ -1,7 +1,55 @@
$OpenBSD: patch-source3_configure_in,v 1.3 2012/06/27 07:29:17 sthen Exp $
--- source3/configure.in.orig Mon Jun 25 03:21:16 2012
+++ source3/configure.in Tue Jun 26 12:01:27 2012
@@ -834,9 +834,15 @@ if test x$enable_cups != xno; then
$OpenBSD: patch-source3_configure_in,v 1.4 2012/09/04 10:00:20 sthen Exp $
--- source3/configure.in.orig Thu Aug 30 15:48:05 2012
+++ source3/configure.in Thu Aug 30 15:48:02 2012
@@ -753,23 +753,38 @@ AC_CHECK_HEADERS(linux/falloc.h)
dnl check for OS implementation of md5 conformant to rfc1321
AC_CHECK_HEADERS(md5.h)
+
+samba_cv_md5lib=none
+
if test x"$ac_cv_header_md5_h" = x"yes"; then
AC_DEFINE(HAVE_MD5_H, 1,
[Whether md5.h is available.])
- AC_CHECK_LIB(md5, MD5Update,
- [
- LIBS="${LIBS} -lmd5"
- CRYPTO_MD5_OBJ=
- AC_DEFINE(HAVE_LIBMD5, 1,
- [Whether libmd5 conformant to rfc1321 is available.])],
- [
- CRYPTO_MD5_OBJ="../lib/crypto/md5.o"])
+ AC_CHECK_LIB(md5, MD5Update, [samba_cv_md5lib=md5])
+fi
+
+if test x"$ac_cv_header_md5_h" = x"yes" -a \
+ x"$samba_cv_md5lib" = x"none" ; then
+ AC_CHECK_LIB(md, MD5Update, [samba_cv_md5lib=md])
+fi
+
+if test x"$ac_cv_header_md5_h" = x"yes" -a \
+ x"$samba_cv_md5lib" = x"none" ; then
+ AC_CHECK_LIB(c, MD5Update, [samba_cv_md5lib=""])
+fi
+
+if test x"$samba_cv_md5lib" != x"none" ; then
+ if test x"$samba_cv_md5lib" != x ; then
+ LIBS="${LIBS} -l${samba_cv_md5lib}"
+ fi
+ CRYPTO_MD5_OBJ=
+ AC_DEFINE(HAVE_LIBMD5, 1,
+ [Whether libmd5 conformant to rfc1321 is available.])
else
CRYPTO_MD5_OBJ="../lib/crypto/md5.o"
fi
+
AC_SUBST(CRYPTO_MD5_OBJ)
-
AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
#if HAVE_RPC_RPC_H
#include <rpc/rpc.h>
@@ -853,9 +868,15 @@ if test x$enable_cups != xno; then
if test "x$CUPS_CONFIG" != x; then
@ -17,7 +65,7 @@ $OpenBSD: patch-source3_configure_in,v 1.3 2012/06/27 07:29:17 sthen Exp $
if test x"$ac_cv_header_cups_cups_h" = xyes -a \
x"$ac_cv_header_cups_language_h" = xyes; then
@@ -844,18 +850,19 @@ if test x$enable_cups != xno; then
@@ -863,18 +884,19 @@ if test x$enable_cups != xno; then
# underlinked. With cups-config --libs we pull in unwanted and unneeded
# dendencies including thread libraries - use cups-config only if really
# required.
@ -41,7 +89,7 @@ $OpenBSD: patch-source3_configure_in,v 1.3 2012/06/27 07:29:17 sthen Exp $
PRINT_LIBS=$ac_save_PRINT_LIBS
fi
@@ -1640,8 +1647,7 @@ DSO_EXPORTS=""
@@ -1659,8 +1681,7 @@ DSO_EXPORTS=""
;;
*openbsd*) BLDSHARED="true"
LDSHFLAGS="-shared"
@ -51,7 +99,7 @@ $OpenBSD: patch-source3_configure_in,v 1.3 2012/06/27 07:29:17 sthen Exp $
PICFLAG="-fPIC"
AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
@@ -6750,13 +6756,43 @@ fi
@@ -6769,13 +6790,43 @@ fi
CFLAGS=$CFLAGS_SAVE

View File

@ -1,433 +0,0 @@
$OpenBSD: patch-source3_printing_print_cups_c,v 1.1 2012/08/04 14:45:34 ajacoutot Exp $
https://bugzilla.samba.org/show_bug.cgi?id=9055
--- source3/printing/print_cups.c.orig Sun Jun 24 19:21:16 2012
+++ source3/printing/print_cups.c Sat Jul 28 11:11:22 2012
@@ -31,6 +31,47 @@
#include <cups/cups.h>
#include <cups/language.h>
+#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
+#define HAVE_CUPS_1_6 1
+#endif
+
+#ifndef HAVE_CUPS_1_6
+#define ippGetGroupTag(attr) attr->group_tag
+#define ippGetName(attr) attr->name
+#define ippGetValueTag(attr) attr->value_tag
+#define ippGetStatusCode(ipp) ipp->request.status.status_code
+#define ippGetInteger(attr, element) attr->values[element].integer
+#define ippGetString(attr, element, language) attr->values[element].string.text
+
+static ipp_attribute_t *
+ippFirstAttribute(ipp_t *ipp)
+{
+ if (!ipp)
+ return (NULL);
+ return (ipp->current = ipp->attrs);
+}
+
+static ipp_attribute_t *
+ippNextAttribute(ipp_t *ipp)
+{
+ if (!ipp || !ipp->current)
+ return (NULL);
+ return (ipp->current = ipp->current->next);
+}
+
+static int ippSetOperation(ipp_t *ipp, ipp_op_t op)
+{
+ ipp->request.op.operation_id = op;
+ return (1);
+}
+
+static int ippSetRequestId(ipp_t *ipp, int request_id)
+{
+ ipp->request.any.request_id = request_id;
+ return (1);
+}
+#endif
+
static SIG_ATOMIC_T gotalarm;
/***************************************************************
@@ -167,13 +208,13 @@ static bool process_cups_printers_response(TALLOC_CTX
struct pcap_printer *printer;
bool ret_ok = false;
- for (attr = response->attrs; attr != NULL;) {
+ for (attr = ippFirstAttribute(response); attr != NULL;) {
/*
* Skip leading attributes until we hit a printer...
*/
- while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
- attr = attr->next;
+ while (attr != NULL && ippGetGroupTag(attr) != IPP_TAG_PRINTER)
+ attr = ippNextAttribute(response);
if (attr == NULL)
break;
@@ -185,39 +226,39 @@ static bool process_cups_printers_response(TALLOC_CTX
name = NULL;
info = NULL;
- while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER) {
+ while (attr != NULL && ippGetGroupTag(attr) == IPP_TAG_PRINTER) {
size_t size;
- if (strcmp(attr->name, "printer-name") == 0 &&
- attr->value_tag == IPP_TAG_NAME) {
+ if (strcmp(ippGetName(attr), "printer-name") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_NAME) {
if (!pull_utf8_talloc(mem_ctx,
&name,
- attr->values[0].string.text,
+ ippGetString(attr, 0, NULL),
&size)) {
goto err_out;
}
}
- if (strcmp(attr->name, "printer-info") == 0 &&
- attr->value_tag == IPP_TAG_TEXT) {
+ if (strcmp(ippGetName(attr), "printer-info") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_TEXT) {
if (!pull_utf8_talloc(mem_ctx,
&info,
- attr->values[0].string.text,
+ ippGetString(attr, 0, NULL),
&size)) {
goto err_out;
}
}
- if (strcmp(attr->name, "printer-location") == 0 &&
- attr->value_tag == IPP_TAG_TEXT) {
+ if (strcmp(ippGetName(attr), "printer-location") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_TEXT) {
if (!pull_utf8_talloc(mem_ctx,
&location,
- attr->values[0].string.text,
+ ippGetString(attr, 0, NULL),
&size)) {
goto err_out;
}
}
- attr = attr->next;
+ attr = ippNextAttribute(response);
}
/*
@@ -297,8 +338,8 @@ static bool cups_cache_reload_async(int fd)
request = ippNew();
- request->request.op.operation_id = CUPS_GET_PRINTERS;
- request->request.op.request_id = 1;
+ ippSetOperation(request, CUPS_GET_PRINTERS);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -339,8 +380,8 @@ static bool cups_cache_reload_async(int fd)
request = ippNew();
- request->request.op.operation_id = CUPS_GET_CLASSES;
- request->request.op.request_id = 1;
+ ippSetOperation(request, CUPS_GET_CLASSES);
+ ippSetRequestId(request, 1);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, "utf-8");
@@ -603,8 +644,8 @@ static int cups_job_delete(const char *sharename, cons
request = ippNew();
- request->request.op.operation_id = IPP_CANCEL_JOB;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_CANCEL_JOB);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -630,7 +671,7 @@ static int cups_job_delete(const char *sharename, cons
*/
if ((response = cupsDoRequest(http, request, "/jobs")) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to cancel job %d - %s\n", pjob->sysjob,
ippErrorString(cupsLastError())));
} else {
@@ -700,8 +741,8 @@ static int cups_job_pause(int snum, struct printjob *p
request = ippNew();
- request->request.op.operation_id = IPP_HOLD_JOB;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_HOLD_JOB);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -726,7 +767,7 @@ static int cups_job_pause(int snum, struct printjob *p
*/
if ((response = cupsDoRequest(http, request, "/jobs")) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to hold job %d - %s\n", pjob->sysjob,
ippErrorString(cupsLastError())));
} else {
@@ -796,8 +837,8 @@ static int cups_job_resume(int snum, struct printjob *
request = ippNew();
- request->request.op.operation_id = IPP_RELEASE_JOB;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_RELEASE_JOB);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -822,7 +863,7 @@ static int cups_job_resume(int snum, struct printjob *
*/
if ((response = cupsDoRequest(http, request, "/jobs")) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to release job %d - %s\n", pjob->sysjob,
ippErrorString(cupsLastError())));
} else {
@@ -902,8 +943,8 @@ static int cups_job_submit(int snum, struct printjob *
request = ippNew();
- request->request.op.operation_id = IPP_PRINT_JOB;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_PRINT_JOB);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -979,7 +1020,7 @@ static int cups_job_submit(int snum, struct printjob *
goto out;
}
if ((response = cupsDoFileRequest(http, request, uri, pjob->filename)) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to print file to %s - %s\n",
lp_printername(snum),
ippErrorString(cupsLastError())));
@@ -987,7 +1028,7 @@ static int cups_job_submit(int snum, struct printjob *
ret = 0;
attr_job_id = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER);
if(attr_job_id) {
- pjob->sysjob = attr_job_id->values[0].integer;
+ pjob->sysjob = ippGetInteger(attr_job_id, 0);
DEBUG(5,("cups_job_submit: job-id %d\n", pjob->sysjob));
} else {
DEBUG(0,("Missing job-id attribute in IPP response"));
@@ -1109,8 +1150,8 @@ static int cups_queue_get(const char *sharename,
request = ippNew();
- request->request.op.operation_id = IPP_GET_JOBS;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_GET_JOBS);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -1138,9 +1179,9 @@ static int cups_queue_get(const char *sharename,
goto out;
}
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to get jobs for %s - %s\n", uri,
- ippErrorString(response->request.status.status_code)));
+ ippErrorString(ippGetStatusCode(response))));
goto out;
}
@@ -1152,13 +1193,13 @@ static int cups_queue_get(const char *sharename,
qalloc = 0;
queue = NULL;
- for (attr = response->attrs; attr != NULL; attr = attr->next) {
+ for (attr = ippFirstAttribute(response); attr != NULL; attr = ippNextAttribute(response)) {
/*
* Skip leading attributes until we hit a job...
*/
- while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
- attr = attr->next;
+ while (attr != NULL && ippGetGroupTag(attr) != IPP_TAG_JOB)
+ attr = ippNextAttribute(response);
if (attr == NULL)
break;
@@ -1193,53 +1234,53 @@ static int cups_queue_get(const char *sharename,
user_name = NULL;
job_name = NULL;
- while (attr != NULL && attr->group_tag == IPP_TAG_JOB) {
- if (attr->name == NULL) {
- attr = attr->next;
+ while (attr != NULL && ippGetGroupTag(attr) == IPP_TAG_JOB) {
+ if (ippGetName(attr) == NULL) {
+ attr = ippNextAttribute(response);
break;
}
- if (strcmp(attr->name, "job-id") == 0 &&
- attr->value_tag == IPP_TAG_INTEGER)
- job_id = attr->values[0].integer;
+ if (strcmp(ippGetName(attr), "job-id") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_INTEGER)
+ job_id = ippGetInteger(attr, 0);
- if (strcmp(attr->name, "job-k-octets") == 0 &&
- attr->value_tag == IPP_TAG_INTEGER)
- job_k_octets = attr->values[0].integer;
+ if (strcmp(ippGetName(attr), "job-k-octets") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_INTEGER)
+ job_k_octets = ippGetInteger(attr, 0);
- if (strcmp(attr->name, "job-priority") == 0 &&
- attr->value_tag == IPP_TAG_INTEGER)
- job_priority = attr->values[0].integer;
+ if (strcmp(ippGetName(attr), "job-priority") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_INTEGER)
+ job_priority = ippGetInteger(attr, 0);
- if (strcmp(attr->name, "job-state") == 0 &&
- attr->value_tag == IPP_TAG_ENUM)
- job_status = (ipp_jstate_t)(attr->values[0].integer);
+ if (strcmp(ippGetName(attr), "job-state") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_ENUM)
+ job_status = (ipp_jstate_t)ippGetInteger(attr, 0);
- if (strcmp(attr->name, "time-at-creation") == 0 &&
- attr->value_tag == IPP_TAG_INTEGER)
- job_time = attr->values[0].integer;
+ if (strcmp(ippGetName(attr), "time-at-creation") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_INTEGER)
+ job_time = ippGetInteger(attr, 0);
- if (strcmp(attr->name, "job-name") == 0 &&
- attr->value_tag == IPP_TAG_NAME) {
+ if (strcmp(ippGetName(attr), "job-name") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_NAME) {
if (!pull_utf8_talloc(frame,
&job_name,
- attr->values[0].string.text,
+ ippGetString(attr, 0, NULL),
&size)) {
goto out;
}
}
- if (strcmp(attr->name, "job-originating-user-name") == 0 &&
- attr->value_tag == IPP_TAG_NAME) {
+ if (strcmp(ippGetName(attr), "job-originating-user-name") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_NAME) {
if (!pull_utf8_talloc(frame,
&user_name,
- attr->values[0].string.text,
+ ippGetString(attr, 0, NULL),
&size)) {
goto out;
}
}
- attr = attr->next;
+ attr = ippNextAttribute(response);
}
/*
@@ -1285,8 +1326,8 @@ static int cups_queue_get(const char *sharename,
request = ippNew();
- request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_GET_PRINTER_ATTRIBUTES);
+ ippSetRequestId(request, 1);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, "utf-8");
@@ -1312,9 +1353,9 @@ static int cups_queue_get(const char *sharename,
goto out;
}
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to get printer status for %s - %s\n", printername,
- ippErrorString(response->request.status.status_code)));
+ ippErrorString(ippGetStatusCode(response))));
goto out;
}
@@ -1323,7 +1364,7 @@ static int cups_queue_get(const char *sharename,
*/
if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL) {
- if (attr->values[0].integer == IPP_PRINTER_STOPPED)
+ if (ippGetInteger(attr, 0) == IPP_PRINTER_STOPPED)
status->status = LPSTAT_STOPPED;
else
status->status = LPSTAT_OK;
@@ -1333,7 +1374,7 @@ static int cups_queue_get(const char *sharename,
IPP_TAG_TEXT)) != NULL) {
char *msg = NULL;
if (!pull_utf8_talloc(frame, &msg,
- attr->values[0].string.text,
+ ippGetString(attr, 0, NULL),
&size)) {
SAFE_FREE(queue);
qcount = 0;
@@ -1409,8 +1450,8 @@ static int cups_queue_pause(int snum)
request = ippNew();
- request->request.op.operation_id = IPP_PAUSE_PRINTER;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_PAUSE_PRINTER);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -1440,7 +1481,7 @@ static int cups_queue_pause(int snum)
*/
if ((response = cupsDoRequest(http, request, "/admin/")) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to pause printer %s - %s\n",
lp_printername(snum),
ippErrorString(cupsLastError())));
@@ -1513,8 +1554,8 @@ static int cups_queue_resume(int snum)
request = ippNew();
- request->request.op.operation_id = IPP_RESUME_PRINTER;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_RESUME_PRINTER);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -1544,7 +1585,7 @@ static int cups_queue_resume(int snum)
*/
if ((response = cupsDoRequest(http, request, "/admin/")) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to resume printer %s - %s\n",
lp_printername(snum),
ippErrorString(cupsLastError())));

View File

@ -1,517 +0,0 @@
$OpenBSD: patch-source3_printing_print_iprint_c,v 1.1 2012/08/04 14:45:34 ajacoutot Exp $
https://bugzilla.samba.org/show_bug.cgi?id=9055
--- source3/printing/print_iprint.c.orig Sun Jun 24 19:21:16 2012
+++ source3/printing/print_iprint.c Sat Jul 28 11:11:22 2012
@@ -34,6 +34,49 @@
#define NOVELL_SERVER_VERSION_STRING "iprintserverversion="
#define NOVELL_SERVER_VERSION_OES_SP1 33554432
+#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
+#define HAVE_CUPS_1_6 1
+#endif
+
+#ifndef HAVE_CUPS_1_6
+#define ippGetCount(attr) attr->num_values
+#define ippGetGroupTag(attr) attr->group_tag
+#define ippGetName(attr) attr->name
+#define ippGetValueTag(attr) attr->value_tag
+#define ippGetStatusCode(ipp) ipp->request.status.status_code
+#define ippGetBoolean(attr, element) attr->values[element].boolean
+#define ippGetInteger(attr, element) attr->values[element].integer
+#define ippGetString(attr, element, language) attr->values[element].string.text
+
+static ipp_attribute_t *
+ippFirstAttribute(ipp_t *ipp)
+{
+ if (!ipp)
+ return (NULL);
+ return (ipp->current = ipp->attrs);
+}
+
+static ipp_attribute_t *
+ippNextAttribute(ipp_t *ipp)
+{
+ if (!ipp || !ipp->current)
+ return (NULL);
+ return (ipp->current = ipp->current->next);
+}
+
+static int ippSetOperation(ipp_t *ipp, ipp_op_t op)
+{
+ ipp->request.op.operation_id = op;
+ return (1);
+}
+
+static int ippSetRequestId(ipp_t *ipp, int request_id)
+{
+ ipp->request.any.request_id = request_id;
+ return (1);
+}
+#endif
+
/*
* 'iprint_passwd_cb()' - The iPrint password callback...
*/
@@ -92,8 +135,8 @@ static int iprint_get_server_version(http_t *http, cha
request = ippNew();
- request->request.op.operation_id = (ipp_op_t)OPERATION_NOVELL_MGMT;
- request->request.op.request_id = 1;
+ ippSetOperation(request, (ipp_op_t)OPERATION_NOVELL_MGMT);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -114,12 +157,12 @@ static int iprint_get_server_version(http_t *http, cha
*/
if (((response = cupsDoRequest(http, request, "/ipp/")) == NULL) ||
- (response->request.status.status_code >= IPP_OK_CONFLICT))
+ (ippGetStatusCode(response) >= IPP_OK_CONFLICT))
goto out;
if (((attr = ippFindAttribute(response, "server-version",
IPP_TAG_STRING)) != NULL)) {
- if ((ver = strstr(attr->values[0].string.text,
+ if ((ver = strstr(ippGetString(attr, 0, NULL),
NOVELL_SERVER_VERSION_STRING)) != NULL) {
ver += strlen(NOVELL_SERVER_VERSION_STRING);
/*
@@ -135,7 +178,7 @@ static int iprint_get_server_version(http_t *http, cha
serverVersion = 0;
}
- if ((os = strstr(attr->values[0].string.text,
+ if ((os = strstr(ippGetString(attr, 0, NULL),
NOVELL_SERVER_SYSNAME)) != NULL) {
os += strlen(NOVELL_SERVER_SYSNAME);
if ((temp = strchr(os,'<')) != NULL)
@@ -184,8 +227,8 @@ static int iprint_cache_add_printer(http_t *http,
request = ippNew();
- request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
- request->request.op.request_id = reqId;
+ ippSetOperation(request, IPP_GET_PRINTER_ATTRIBUTES);
+ ippSetRequestId(request, reqId);
language = cupsLangDefault();
@@ -230,13 +273,13 @@ static int iprint_cache_add_printer(http_t *http,
goto out;
}
- for (attr = response->attrs; attr != NULL;) {
+ for (attr = ippFirstAttribute(response); attr != NULL;) {
/*
* Skip leading attributes until we hit a printer...
*/
- while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
- attr = attr->next;
+ while (attr != NULL && ippGetGroupTag(attr) != IPP_TAG_PRINTER)
+ attr = ippNextAttribute(response);
if (attr == NULL)
break;
@@ -250,15 +293,15 @@ static int iprint_cache_add_printer(http_t *http,
smb_enabled= 1;
secure = 0;
- while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER) {
- if (strcmp(attr->name, "printer-name") == 0 &&
- attr->value_tag == IPP_TAG_NAME)
- name = attr->values[0].string.text;
+ while (attr != NULL && ippGetGroupTag(attr) == IPP_TAG_PRINTER) {
+ if (strcmp(ippGetName(attr), "printer-name") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_NAME)
+ name = ippGetString(attr, 0, NULL);
- if (strcmp(attr->name, "printer-info") == 0 &&
- (attr->value_tag == IPP_TAG_TEXT ||
- attr->value_tag == IPP_TAG_TEXTLANG))
- info = attr->values[0].string.text;
+ if (strcmp(ippGetName(attr), "printer-info") == 0 &&
+ (ippGetValueTag(attr) == IPP_TAG_TEXT ||
+ ippGetValueTag(attr) == IPP_TAG_TEXTLANG))
+ info = ippGetString(attr, 0, NULL);
/*
* If the smb-enabled attribute is present and the
@@ -266,11 +309,11 @@ static int iprint_cache_add_printer(http_t *http,
* If the attribute is not present, assume that the
* printer should show up
*/
- if (!strcmp(attr->name, "smb-enabled") &&
- ((attr->value_tag == IPP_TAG_INTEGER &&
- !attr->values[0].integer) ||
- (attr->value_tag == IPP_TAG_BOOLEAN &&
- !attr->values[0].boolean)))
+ if (!strcmp(ippGetName(attr), "smb-enabled") &&
+ ((ippGetValueTag(attr) == IPP_TAG_INTEGER &&
+ !ippGetInteger(attr, 0)) ||
+ (ippGetValueTag(attr) == IPP_TAG_BOOLEAN &&
+ !ippGetBoolean(attr, 0))))
smb_enabled = 0;
/*
@@ -279,14 +322,14 @@ static int iprint_cache_add_printer(http_t *http,
* If the attribute is not present, assume that the
* printer should show up
*/
- if (!strcmp(attr->name, "security-enabled") &&
- ((attr->value_tag == IPP_TAG_INTEGER &&
- attr->values[0].integer) ||
- (attr->value_tag == IPP_TAG_BOOLEAN &&
- attr->values[0].boolean)))
+ if (!strcmp(ippGetName(attr), "security-enabled") &&
+ ((ippGetValueTag(attr) == IPP_TAG_INTEGER &&
+ ippGetInteger(attr, 0)) ||
+ (ippGetValueTag(attr) == IPP_TAG_BOOLEAN &&
+ ippGetBoolean(attr, 0))))
secure = 1;
- attr = attr->next;
+ attr = ippNextAttribute(response);
}
/*
@@ -343,9 +386,8 @@ bool iprint_cache_reload(void)
request = ippNew();
- request->request.op.operation_id =
- (ipp_op_t)OPERATION_NOVELL_LIST_PRINTERS;
- request->request.op.request_id = 1;
+ ippSetOperation(request, (ipp_op_t)OPERATION_NOVELL_LIST_PRINTERS);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -368,13 +410,13 @@ bool iprint_cache_reload(void)
goto out;
}
- for (attr = response->attrs; attr != NULL;) {
+ for (attr = ippFirstAttribute(response); attr != NULL;) {
/*
* Skip leading attributes until we hit a printer...
*/
- while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
- attr = attr->next;
+ while (attr != NULL && ippGetGroupTag(attr) != IPP_TAG_PRINTER)
+ attr = ippNextAttribute(response);
if (attr == NULL)
break;
@@ -383,24 +425,24 @@ bool iprint_cache_reload(void)
* Pull the needed attributes from this printer...
*/
- while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER)
+ while (attr != NULL && ippGetGroupTag(attr) == IPP_TAG_PRINTER)
{
- if (strcmp(attr->name, "printer-name") == 0 &&
- (attr->value_tag == IPP_TAG_URI ||
- attr->value_tag == IPP_TAG_NAME ||
- attr->value_tag == IPP_TAG_TEXT ||
- attr->value_tag == IPP_TAG_NAMELANG ||
- attr->value_tag == IPP_TAG_TEXTLANG))
+ if (strcmp(ippGetName(attr), "printer-name") == 0 &&
+ (ippGetValueTag(attr) == IPP_TAG_URI ||
+ ippGetValueTag(attr) == IPP_TAG_NAME ||
+ ippGetValueTag(attr) == IPP_TAG_TEXT ||
+ ippGetValueTag(attr) == IPP_TAG_NAMELANG ||
+ ippGetValueTag(attr) == IPP_TAG_TEXTLANG))
{
- for (i = 0; i<attr->num_values; i++)
+ for (i = 0; i<ippGetCount(attr); i++)
{
- char *url = attr->values[i].string.text;
+ char *url = ippGetString(attr, i, NULL);
if (!url || !strlen(url))
continue;
iprint_cache_add_printer(http, i+2, url);
}
}
- attr = attr->next;
+ attr = ippNextAttribute(response);
}
}
@@ -466,8 +508,8 @@ static int iprint_job_delete(const char *sharename, co
request = ippNew();
- request->request.op.operation_id = IPP_CANCEL_JOB;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_CANCEL_JOB);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -493,7 +535,7 @@ static int iprint_job_delete(const char *sharename, co
slprintf(httpPath, sizeof(httpPath) - 1, "/ipp/%s", sharename);
if ((response = cupsDoRequest(http, request, httpPath)) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to cancel job %d - %s\n", pjob->sysjob,
ippErrorString(cupsLastError())));
} else {
@@ -564,8 +606,8 @@ static int iprint_job_pause(int snum, struct printjob
request = ippNew();
- request->request.op.operation_id = IPP_HOLD_JOB;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_HOLD_JOB);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -593,7 +635,7 @@ static int iprint_job_pause(int snum, struct printjob
lp_printername(snum));
if ((response = cupsDoRequest(http, request, httpPath)) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to hold job %d - %s\n", pjob->sysjob,
ippErrorString(cupsLastError())));
} else {
@@ -664,8 +706,8 @@ static int iprint_job_resume(int snum, struct printjob
request = ippNew();
- request->request.op.operation_id = IPP_RELEASE_JOB;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_RELEASE_JOB);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -693,7 +735,7 @@ static int iprint_job_resume(int snum, struct printjob
lp_printername(snum));
if ((response = cupsDoRequest(http, request, httpPath)) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to release job %d - %s\n", pjob->sysjob,
ippErrorString(cupsLastError())));
} else {
@@ -763,8 +805,8 @@ static int iprint_job_submit(int snum, struct printjob
request = ippNew();
- request->request.op.operation_id = IPP_PRINT_JOB;
- request->request.op.request_id = 1;
+ ippSetOperation(request, IPP_PRINT_JOB);
+ ippSetRequestId(request, 1);
language = cupsLangDefault();
@@ -797,7 +839,7 @@ static int iprint_job_submit(int snum, struct printjob
slprintf(uri, sizeof(uri) - 1, "/ipp/%s", lp_printername(snum));
if ((response = cupsDoFileRequest(http, request, uri, pjob->filename)) != NULL) {
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to print file to %s - %s\n",
lp_printername(snum),
ippErrorString(cupsLastError())));
@@ -817,9 +859,9 @@ static int iprint_job_submit(int snum, struct printjob
if ( ret == 0 ) {
attr = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER);
- if (attr != NULL && attr->group_tag == IPP_TAG_JOB)
+ if (attr != NULL && ippGetGroupTag(attr) == IPP_TAG_JOB)
{
- pjob->sysjob = attr->values[0].integer;
+ pjob->sysjob = ippGetInteger(attr, 0);
}
}
@@ -866,7 +908,6 @@ static int iprint_queue_get(const char *sharename,
int job_id; /* job-id attribute */
int job_k_octets; /* job-k-octets attribute */
time_t job_time; /* time-at-creation attribute */
- time_t printer_current_time = 0; /* printer's current time */
time_t printer_up_time = 0; /* printer's uptime */
ipp_jstate_t job_status; /* job-status attribute */
int job_priority; /* job-priority attribute */
@@ -939,8 +980,8 @@ static int iprint_queue_get(const char *sharename,
request = ippNew();
- request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
- request->request.op.request_id = 2;
+ ippSetOperation(request, IPP_GET_PRINTER_ATTRIBUTES);
+ ippSetRequestId(request, 2);
language = cupsLangDefault();
@@ -971,9 +1012,9 @@ static int iprint_queue_get(const char *sharename,
goto out;
}
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to get printer status for %s - %s\n", printername,
- ippErrorString(response->request.status.status_code)));
+ ippErrorString(ippGetStatusCode(response))));
*q = queue;
goto out;
}
@@ -983,7 +1024,7 @@ static int iprint_queue_get(const char *sharename,
*/
if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL) {
- if (attr->values[0].integer == IPP_PRINTER_STOPPED)
+ if (ippGetInteger(attr, 0) == IPP_PRINTER_STOPPED)
status->status = LPSTAT_STOPPED;
else
status->status = LPSTAT_OK;
@@ -991,15 +1032,11 @@ static int iprint_queue_get(const char *sharename,
if ((attr = ippFindAttribute(response, "printer-state-message",
IPP_TAG_TEXT)) != NULL)
- fstrcpy(status->message, attr->values[0].string.text);
+ fstrcpy(status->message, ippGetString(attr, 0, NULL));
- if ((attr = ippFindAttribute(response, "printer-current-time",
- IPP_TAG_DATE)) != NULL)
- printer_current_time = ippDateToTime(attr->values[0].date);
-
if ((attr = ippFindAttribute(response, "printer-up-time",
IPP_TAG_INTEGER)) != NULL)
- printer_up_time = attr->values[0].integer;
+ printer_up_time = ippGetInteger(attr, 0);
ippDelete(response);
response = NULL;
@@ -1016,8 +1053,8 @@ static int iprint_queue_get(const char *sharename,
request = ippNew();
- request->request.op.operation_id = IPP_GET_JOBS;
- request->request.op.request_id = 3;
+ ippSetOperation(request, IPP_GET_JOBS);
+ ippSetRequestId(request, 3);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, "utf-8");
@@ -1045,9 +1082,9 @@ static int iprint_queue_get(const char *sharename,
goto out;
}
- if (response->request.status.status_code >= IPP_OK_CONFLICT) {
+ if (ippGetStatusCode(response) >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to get jobs for %s - %s\n", uri,
- ippErrorString(response->request.status.status_code)));
+ ippErrorString(ippGetStatusCode(response))));
goto out;
}
@@ -1059,13 +1096,13 @@ static int iprint_queue_get(const char *sharename,
qalloc = 0;
queue = NULL;
- for (attr = response->attrs; attr != NULL; attr = attr->next) {
+ for (attr = ippFirstAttribute(response); attr != NULL; attr = ippNextAttribute(response)) {
/*
* Skip leading attributes until we hit a job...
*/
- while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
- attr = attr->next;
+ while (attr != NULL && ippGetGroupTag(attr) != IPP_TAG_JOB)
+ attr = ippNextAttribute(response);
if (attr == NULL)
break;
@@ -1100,30 +1137,30 @@ static int iprint_queue_get(const char *sharename,
user_name = NULL;
job_name = NULL;
- while (attr != NULL && attr->group_tag == IPP_TAG_JOB) {
- if (attr->name == NULL) {
- attr = attr->next;
+ while (attr != NULL && ippGetGroupTag(attr) == IPP_TAG_JOB) {
+ if (ippGetName(attr) == NULL) {
+ attr = ippNextAttribute(response);
break;
}
- if (strcmp(attr->name, "job-id") == 0 &&
- attr->value_tag == IPP_TAG_INTEGER)
- job_id = attr->values[0].integer;
+ if (strcmp(ippGetName(attr), "job-id") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_INTEGER)
+ job_id = ippGetInteger(attr, 0);
- if (strcmp(attr->name, "job-k-octets") == 0 &&
- attr->value_tag == IPP_TAG_INTEGER)
- job_k_octets = attr->values[0].integer;
+ if (strcmp(ippGetName(attr), "job-k-octets") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_INTEGER)
+ job_k_octets = ippGetInteger(attr, 0);
- if (strcmp(attr->name, "job-priority") == 0 &&
- attr->value_tag == IPP_TAG_INTEGER)
- job_priority = attr->values[0].integer;
+ if (strcmp(ippGetName(attr), "job-priority") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_INTEGER)
+ job_priority = ippGetInteger(attr, 0);
- if (strcmp(attr->name, "job-state") == 0 &&
- attr->value_tag == IPP_TAG_ENUM)
- job_status = (ipp_jstate_t)(attr->values[0].integer);
+ if (strcmp(ippGetName(attr), "job-state") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_ENUM)
+ job_status = (ipp_jstate_t)ippGetInteger(attr, 0);
- if (strcmp(attr->name, "time-at-creation") == 0 &&
- attr->value_tag == IPP_TAG_INTEGER)
+ if (strcmp(ippGetName(attr), "time-at-creation") == 0 &&
+ ippGetValueTag(attr) == IPP_TAG_INTEGER)
{
/*
* If jobs times are in Unix time, the accuracy of the job
@@ -1133,22 +1170,22 @@ static int iprint_queue_get(const char *sharename,
*/
if (jobUseUnixTime)
- job_time = attr->values[0].integer;
+ job_time = ippGetInteger(attr, 0);
else
- job_time = time(NULL) - printer_up_time + attr->values[0].integer;
+ job_time = time(NULL) - printer_up_time + ippGetInteger(attr, 0);
}
- if (strcmp(attr->name, "job-name") == 0 &&
- (attr->value_tag == IPP_TAG_NAMELANG ||
- attr->value_tag == IPP_TAG_NAME))
- job_name = attr->values[0].string.text;
+ if (strcmp(ippGetName(attr), "job-name") == 0 &&
+ (ippGetValueTag(attr) == IPP_TAG_NAMELANG ||
+ ippGetValueTag(attr) == IPP_TAG_NAME))
+ job_name = ippGetString(attr, 0, NULL);
- if (strcmp(attr->name, "job-originating-user-name") == 0 &&
- (attr->value_tag == IPP_TAG_NAMELANG ||
- attr->value_tag == IPP_TAG_NAME))
- user_name = attr->values[0].string.text;
+ if (strcmp(ippGetName(attr), "job-originating-user-name") == 0 &&
+ (ippGetValueTag(attr) == IPP_TAG_NAMELANG ||
+ ippGetValueTag(attr) == IPP_TAG_NAME))
+ user_name = ippGetString(attr, 0, NULL);
- attr = attr->next;
+ attr = ippNextAttribute(response);
}
/*