Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ libppd_la_SOURCES = \
ppd/file-private.h \
ppd/imagetops-pstops.c \
ppd/ipp-private.h \
ppd/language.c \
ppd/language-private.h \
ppd/libcups2.c \
ppd/libcups2-private.h \
ppd/pdftops.c \
ppd/raster-interpret.c \
ppd/raster-error.c \
Expand Down Expand Up @@ -124,13 +124,19 @@ libppd_la_LIBADD = \
libppd_la_CFLAGS = \
$(LIBCUPSFILTERS_CFLAGS) \
$(CUPS_CFLAGS)
libppd_la_CXXFLAGS = \
$(libppd_la_CFLAGS)
libppd_la_LDFLAGS = \
-no-undefined \
-version-info 2

testppd_SOURCES = ppd/testppd.c
testppd_LDADD = libppd.la \
-lcups
testppd_LDADD = \
libppd.la \
$(CUPS_LIBS)
testppd_CFLAGS = \
-I$(srcdir)/ppd/ \
$(CUPS_CFLAGS)

EXTRA_DIST += \
$(pkgppdinclude_DATA) \
Expand Down
114 changes: 78 additions & 36 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -59,49 +59,89 @@ AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
LT_INIT

# ==========
# pkg-config
# ==========
PKG_PROG_PKG_CONFIG([0.20])
AC_PATH_TOOL([PKGCONFIG], [pkg-config])

AM_GNU_GETTEXT_VERSION([0.18.3])
AM_GNU_GETTEXT([external])

# ================================
# Find CUPS internals (no pc file)
# ================================
AC_ARG_WITH([cups-config],
[AS_HELP_STRING([--with-cups-config=path], [Specify path to cups-config executable.])],
[with_cups_config="$withval"],
[with_cups_config=system]
)

AS_IF([test "x$with_cups_config" != "xsystem"], [
CUPSCONFIG=$with_cups_config
# ====
# CUPS
# ====
AC_MSG_CHECKING([for CUPS library v3.0 or higher])
AS_IF([$PKGCONFIG --exists cups3], [
CUPS_VERSION="$($PKGCONFIG --modversion cups3)"
AC_MSG_RESULT([yes, v$CUPS_VERSION])
CUPS_CFLAGS="$($PKGCONFIG --cflags cups3)"
CUPS_LIBS="$LIBS $($PKGCONFIG --libs cups3)"
AC_SUBST(CUPS_CFLAGS)
AC_SUBST(CUPS_LIBS)
CUPS_DATADIR="$($PKGCONFIG --variable=prefix cups3)/share/cups"
AC_DEFINE_UNQUOTED(CUPS_DATADIR, "$CUPS_DATADIR", [CUPS datadir])
AC_SUBST(CUPS_DATADIR)
AS_IF([test x$host_os_name = xdarwin], [
CUPS_SERVERROOT="/private/etc/cups"
], [
AS_IF([test "x$($PKGCONFIG --variable=prefix cups3)" = x/usr], [
CUPS_SERVERROOT="/etc/cups"
], [
CUPS_SERVERROOT="$($PKGCONFIG --variable=prefix cups3)/etc/cups"
])
])
AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$CUPS_SERVERROOT", [CUPS serverroot])
AC_SUBST(CUPS_SERVERROOT)
CUPS_FONTPATH="$CUPS_DATADIR/fonts"
AC_DEFINE_UNQUOTED(CUPS_FONTPATH, "$CUPS_FONTPATH",
[Path to CUPS fonts dir])
AC_SUBST(CUPS_FONTPATH)
CUPS_SERVERBIN="$($PKGCONFIG --variable=prefix cups3)/lib/cups"
AC_DEFINE_UNQUOTED(CUPS_SERVERBIN, "$CUPS_SERVERBIN",
[Path to CUPS binaries dir])
AC_SUBST(CUPS_SERVERBIN)
], [
AC_MSG_RESULT(no)
AC_ARG_WITH([cups-config],
[AS_HELP_STRING([--with-cups-config=path], [Specify path to cups-config executable.])],
[with_cups_config="$withval"],
[with_cups_config=system])
AS_IF([test "x$with_cups_config" != "xsystem"], [
CUPSCONFIG=$with_cups_config
], [
AC_PATH_TOOL(CUPSCONFIG, [cups-config])
AS_IF([test -z "$CUPSCONFIG"], [
AC_MSG_ERROR([Required cups-config is missing. Please install CUPS developer packages.])
])
])
AC_MSG_CHECKING([for CUPS library v2.x])
AS_IF([test -n "$CUPSCONFIG"], [
CUPS_VERSION=`$CUPSCONFIG --version`
AC_MSG_RESULT([yes, v$CUPS_VERSION])
AC_DEFINE([HAVE_LIBCUPS2], [1], [Use libcups2])
CUPS_CFLAGS=`$CUPSCONFIG --cflags`
CUPS_LIBS=`$CUPSCONFIG --image --libs`
AC_SUBST(CUPS_CFLAGS)
AC_SUBST(CUPS_LIBS)
CUPS_DATADIR="`$CUPSCONFIG --datadir`"
AC_DEFINE_UNQUOTED(CUPS_DATADIR, "$CUPS_DATADIR", [CUPS datadir])
AC_SUBST(CUPS_DATADIR)
CUPS_SERVERROOT="`$CUPSCONFIG --serverroot`"
AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$CUPS_SERVERROOT",
[CUPS serverroot])
AC_SUBST(CUPS_SERVERROOT)
CUPS_FONTPATH="$CUPS_DATADIR/fonts"
AC_DEFINE_UNQUOTED(CUPS_FONTPATH, "$CUPS_FONTPATH",
[Path to CUPS fonts dir])
AC_SUBST(CUPS_FONTPATH)
CUPS_SERVERBIN="`$CUPSCONFIG --serverbin`"
AC_DEFINE_UNQUOTED(CUPS_SERVERBIN, "$CUPS_SERVERBIN",
[Path to CUPS binaries dir])
AC_SUBST(CUPS_SERVERBIN)
], [
AC_MSG_RESULT(no)
AC_MSG_ERROR([Required cups-config is missing. Please install CUPS developer packages.])
])
])
CUPS_CFLAGS=`$CUPSCONFIG --cflags`
CUPS_LIBS=`$CUPSCONFIG --image --libs`
CUPS_VERSION=`$CUPSCONFIG --version`
AC_SUBST(CUPS_CFLAGS)
AC_SUBST(CUPS_LIBS)

CUPS_DATADIR="`$CUPSCONFIG --datadir`"
AC_DEFINE_UNQUOTED(CUPS_DATADIR, "$CUPS_DATADIR", [CUPS datadir])
AC_SUBST(CUPS_DATADIR)

CUPS_SERVERROOT="`$CUPSCONFIG --serverroot`"
AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$CUPS_SERVERROOT", [CUPS serverroot])
AC_SUBST(CUPS_SERVERROOT)

CUPS_FONTPATH="$CUPS_DATADIR/fonts"
AC_DEFINE_UNQUOTED(CUPS_FONTPATH, "$CUPS_FONTPATH", [Path to CUPS fonts dir])
AC_SUBST(CUPS_FONTPATH)

CUPS_SERVERBIN="`$CUPSCONFIG --serverbin`"
AC_DEFINE_UNQUOTED(CUPS_SERVERBIN, "$CUPS_SERVERBIN", [Path to CUPS binaries dir])
AC_SUBST(CUPS_SERVERBIN)

# Transient run-time state dir of CUPS
CUPS_STATEDIR=""
Expand Down Expand Up @@ -455,11 +495,12 @@ AC_ARG_ENABLE([werror],
)
AS_IF([test x"$enable_werror" = "xyes"], [
CFLAGS="$CFLAGS -Werror"
CXXFLAGS="$CXXFLAGS -Werror"
])
AS_IF([test x"$GCC" = "xyes"], [
# Be tough with warnings and produce less careless code
CFLAGS="$CFLAGS -Wall -std=gnu11"
CXXFLAGS="$CXXFLAGS -Wall " # -Weffc++" # TODO: enable when it does not print 1MB of warnings
CXXFLAGS="$CXXFLAGS -Wall -std=c++17" # -Weffc++" # TODO: enable when it does not print 1MB of warnings
])
CFLAGS="$CFLAGS -D_GNU_SOURCE"
CXXFLAGS="$CXXFLAGS -D_GNU_SOURCE"
Expand Down Expand Up @@ -503,6 +544,7 @@ Environment settings:
CXXFLAGS: ${CXXFLAGS}
LDFLAGS: ${LDFLAGS}
Build configuration:
libcups: ${CUPS_VERSION}
cups-config: ${with_cups_config}
ghostscript: ${enable_ghostscript}
gs-path: ${with_gs_path}
Expand Down
13 changes: 7 additions & 6 deletions ppd/array.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@
// Include necessary headers...
//

#include "string-private.h"
#include "debug-internal.h"
#include "array-private.h"
#include <ppd/string-private.h>
#include <ppd/debug-internal.h>
#include <ppd/array-private.h>
#include <ppd/libcups2-private.h>


//
Expand Down Expand Up @@ -129,9 +130,9 @@ _ppdArrayNewStrings(const char *s, // I - Delimited strings or NULL
cups_array_t *a; // Array


if ((a = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0,
(cups_acopy_func_t)_ppdStrAlloc,
(cups_afree_func_t)_ppdStrFree)) != NULL)
if ((a = cupsArrayNew((cups_array_cb_t)strcmp, NULL, NULL, 0,
(cups_acopy_cb_t)_ppdStrAlloc,
(cups_afree_cb_t )_ppdStrFree)) != NULL)
_ppdArrayAddStrings(a, s, delim);

return (a);
Expand Down
4 changes: 2 additions & 2 deletions ppd/debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
// Include necessary headers...
//

#include "string-private.h"
#include "debug-internal.h"
#include <ppd/string-private.h>
#include <ppd/debug-internal.h>
#ifdef _WIN32
# include <sys/timeb.h>
# include <time.h>
Expand Down
33 changes: 20 additions & 13 deletions ppd/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
// Include necessary headers...
//

#include "file-private.h"
#include "language-private.h"
#include "debug-internal.h"
#include <ppd/file-private.h>
#include <ppd/debug-internal.h>
#include <ppd/libcups2-private.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <cups/language.h>
Expand All @@ -24,6 +24,13 @@
# endif // HAVE_LIBZ


//
// Macro for localized text...
//

# define _(x) x


#ifndef _WIN32
//
// '_ppdFileCheck()' - Check the permissions of the given filename.
Expand Down Expand Up @@ -178,13 +185,13 @@ _ppdFileCheck(
loglevel = CF_LOGLEVEL_DEBUG;
if (filetype == _PPD_FILE_CHECK_DIRECTORY)
snprintf(message, sizeof(message),
_ppdLangString(lang, _("Directory \"%s\" permissions OK "
cupsLangGetString(lang, _("Directory \"%s\" permissions OK "
"(0%o/uid=%d/gid=%d).")),
filename, fileinfo.st_mode, (int)fileinfo.st_uid,
(int)fileinfo.st_gid);
else
snprintf(message, sizeof(message),
_ppdLangString(lang, _("File \"%s\" permissions OK "
cupsLangGetString(lang, _("File \"%s\" permissions OK "
"(0%o/uid=%d/gid=%d).")),
filename, fileinfo.st_mode, (int)fileinfo.st_uid,
(int)fileinfo.st_gid);
Expand All @@ -194,27 +201,27 @@ _ppdFileCheck(
loglevel = CF_LOGLEVEL_ERROR;
if (filetype == _PPD_FILE_CHECK_DIRECTORY)
snprintf(message, sizeof(message),
_ppdLangString(lang, _("Directory \"%s\" not available: "
cupsLangGetString(lang, _("Directory \"%s\" not available: "
"%s")),
filename, strerror(errno));
else
snprintf(message, sizeof(message),
_ppdLangString(lang, _("File \"%s\" not available: %s")),
cupsLangGetString(lang, _("File \"%s\" not available: %s")),
filename, strerror(errno));
break;

case _PPD_FILE_CHECK_PERMISSIONS :
loglevel = CF_LOGLEVEL_ERROR;
if (filetype == _PPD_FILE_CHECK_DIRECTORY)
snprintf(message, sizeof(message),
_ppdLangString(lang, _("Directory \"%s\" has insecure "
cupsLangGetString(lang, _("Directory \"%s\" has insecure "
"permissions "
"(0%o/uid=%d/gid=%d).")),
filename, fileinfo.st_mode, (int)fileinfo.st_uid,
(int)fileinfo.st_gid);
else
snprintf(message, sizeof(message),
_ppdLangString(lang, _("File \"%s\" has insecure "
cupsLangGetString(lang, _("File \"%s\" has insecure "
"permissions "
"(0%o/uid=%d/gid=%d).")),
filename, fileinfo.st_mode, (int)fileinfo.st_uid,
Expand All @@ -225,23 +232,23 @@ _ppdFileCheck(
loglevel = CF_LOGLEVEL_ERROR;
if (filetype == _PPD_FILE_CHECK_DIRECTORY)
snprintf(message, sizeof(message),
_ppdLangString(lang, _("Directory \"%s\" is a file.")),
cupsLangGetString(lang, _("Directory \"%s\" is a file.")),
filename);
else
snprintf(message, sizeof(message),
_ppdLangString(lang, _("File \"%s\" is a directory.")),
cupsLangGetString(lang, _("File \"%s\" is a directory.")),
filename);
break;

case _PPD_FILE_CHECK_RELATIVE_PATH :
loglevel = CF_LOGLEVEL_ERROR;
if (filetype == _PPD_FILE_CHECK_DIRECTORY)
snprintf(message, sizeof(message),
_ppdLangString(lang, _("Directory \"%s\" contains a "
cupsLangGetString(lang, _("Directory \"%s\" contains a "
"relative path.")), filename);
else
snprintf(message, sizeof(message),
_ppdLangString(lang, _("File \"%s\" contains a relative "
cupsLangGetString(lang, _("File \"%s\" contains a relative "
"path.")), filename);
break;
}
Expand Down
Loading