Debian: Build mantohtml with the build architecture compiler

mantohtml is run during build. Thus it needs to be built with the build
architecture compiler (or execution fails). The obvious part is switching to
CC_FOR_BUILD. That also depends on it not requiring any other cups components.
In particular, removing uses of strlcpy and replacing host architecture-
specific includes is thus needed.

Bug-Debian: https://bugs.debian.org/837936
Forwarded: not-needed
This commit is contained in:
Helmut Grohne 2016-08-09 18:11:49 +02:00 committed by su-fang
parent d53416c5f1
commit ea626c5911
4 changed files with 21 additions and 7 deletions

View File

@ -23,6 +23,7 @@ CUPS_VERSION = @CUPS_VERSION@
AR = @AR@ AR = @AR@
AWK = @AWK@ AWK = @AWK@
CC = @LIBTOOL_CC@ @CC@ CC = @LIBTOOL_CC@ @CC@
CC_FOR_BUILD = @CC_FOR_BUILD@
CHMOD = @CHMOD@ CHMOD = @CHMOD@
CXX = @LIBTOOL_CXX@ @CXX@ CXX = @LIBTOOL_CXX@ @CXX@
DSO = @DSO@ DSO = @DSO@

View File

@ -25,6 +25,16 @@ sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4) sinclude(config-scripts/cups-common.m4)
sinclude(config-scripts/cups-directories.m4) sinclude(config-scripts/cups-directories.m4)
sinclude(config-scripts/cups-manpages.m4) sinclude(config-scripts/cups-manpages.m4)
AC_MSG_CHECKING([for build system compiler])
if test "$cross_compiling" = yes; then
CC_FOR_BUILD=${CC_FOR_BUILD-cc}
else
CC_FOR_BUILD=${CC}
fi
AC_MSG_RESULT(${CC_FOR_BUILD})
AC_SUBST(CC_FOR_BUILD)
sinclude(config-scripts/cups-sharedlibs.m4) sinclude(config-scripts/cups-sharedlibs.m4)
sinclude(config-scripts/cups-libtool.m4) sinclude(config-scripts/cups-libtool.m4)
sinclude(config-scripts/cups-compiler.m4) sinclude(config-scripts/cups-compiler.m4)

View File

@ -222,6 +222,5 @@ html: $(MAN1) $(MAN5) $(MAN7) $(MAN8) mantohtml
./mantohtml $$file >../doc/help/man-`basename $$file .8`.html; \ ./mantohtml $$file >../doc/help/man-`basename $$file .8`.html; \
done done
mantohtml: mantohtml.o ../cups/$(LIBCUPSSTATIC) mantohtml: mantohtml.c
$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ mantohtml.o $(LINKCUPSSTATIC) $(CC_FOR_BUILD) -o $@ $<
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@

View File

@ -11,8 +11,10 @@
* Include necessary headers. * Include necessary headers.
*/ */
#include <cups/string-private.h> #include <ctype.h>
#include <cups/array-private.h> #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> #include <unistd.h>
@ -811,7 +813,8 @@ main(int argc, /* I - Number of command-line args */
* Anchor for HTML output... * Anchor for HTML output...
*/ */
strlcpy(anchor, line + 4, sizeof(anchor)); strncpy(anchor, line + 4, sizeof(anchor) - 1);
anchor[sizeof(anchor) - 1] = '\0';
} }
else if (strncmp(line, ".\\\"", 3)) else if (strncmp(line, ".\\\"", 3))
{ {
@ -944,7 +947,8 @@ html_alternate(const char *s, /* I - String */
manfile[1024], // Man page filename manfile[1024], // Man page filename
manurl[1024]; // Man page URL manurl[1024]; // Man page URL
strlcpy(name, s, sizeof(name)); strncpy(name, s, sizeof(name) - 1);
name[sizeof(name) - 1] = '\0';
if ((size_t)(end - s) < sizeof(name)) if ((size_t)(end - s) < sizeof(name))
name[end - s] = '\0'; name[end - s] = '\0';