import paps-0.8.0-9.el10

i10c-beta changed/i10c-beta/paps-0.8.0-9.el10
MSVSphere Packaging Team 3 months ago
commit 98270b45cc
Signed by: sys_gitsync
GPG Key ID: B2B0B9F29E528FE8

2
.gitignore vendored

@ -0,0 +1,2 @@
SOURCES/paps-0.6.8.tar.gz
SOURCES/paps-0.8.0.tar.gz

@ -0,0 +1,2 @@
83646b0de89deb8321f260c2c5a665bc7c8f5928 SOURCES/paps-0.6.8.tar.gz
ed3f3415834e375e304b28e826b6e6a0f4358851 SOURCES/paps-0.8.0.tar.gz

@ -0,0 +1,24 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<test name="prgname" compare="eq">
<string>paps</string>
</test>
<edit name="scalable" mode="assign">
<bool>true</bool>
</edit>
</match>
<match target="pattern">
<test name="prgname" compare="eq">
<string>texttopaps</string>
</test>
<edit name="scalable" mode="assign">
<bool>true</bool>
</edit>
</match>
</fontconfig>

@ -0,0 +1,82 @@
diff -ruN paps-0.6.6.orig/src/libpaps.c paps-0.6.6/src/libpaps.c
--- paps-0.6.6.orig/src/libpaps.c 2007-03-27 20:25:00.000000000 +0900
+++ paps-0.6.6/src/libpaps.c 2007-03-27 20:31:15.000000000 +0900
@@ -28,6 +28,7 @@
#include <freetype/ftglyph.h>
#include <freetype/ftoutln.h>
#include <errno.h>
+#include <locale.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -263,7 +264,7 @@
);
/* Outline support */
- g_string_append_printf(paps->header,
+ paps_string_append_printf(paps->header,
"/conicto {\n"
" /to_y exch def\n"
" /to_x exch def\n"
@@ -691,3 +692,28 @@
return points * 1.0 / 72 * PAPS_DPI * PANGO_SCALE;
}
+void
+paps_string_append_printf(GString *string,
+ const gchar *fmt,
+ ...)
+{
+ gchar *buffer, *lc_numeric;
+ gint length;
+ va_list args;
+
+ va_start(args, fmt);
+
+ lc_numeric = g_strdup(setlocale(LC_NUMERIC, NULL));
+ setlocale(LC_NUMERIC, "C");
+
+ length = g_vasprintf(&buffer, fmt, args);
+ g_string_append_len(string, buffer, length);
+
+ setlocale(LC_NUMERIC, lc_numeric);
+
+ g_free(buffer);
+ g_free(lc_numeric);
+
+ va_end(args);
+}
+
diff -ruN paps-0.6.6.orig/src/libpaps.h paps-0.6.6/src/libpaps.h
--- paps-0.6.6.orig/src/libpaps.h 2007-03-27 20:25:00.000000000 +0900
+++ paps-0.6.6/src/libpaps.h 2007-03-27 20:31:02.000000000 +0900
@@ -124,4 +124,8 @@
*/
double paps_postscript_points_to_pango(double points);
+void paps_string_append_printf(GString *string,
+ const gchar *fmt,
+ ...) G_GNUC_PRINTF (2, 3);
+
#endif /* LIBPAPS */
diff -ruN paps-0.6.6.orig/src/paps.c paps-0.6.6/src/paps.c
--- paps-0.6.6.orig/src/paps.c 2007-03-27 20:25:00.000000000 +0900
+++ paps-0.6.6/src/paps.c 2007-03-27 20:31:33.000000000 +0900
@@ -992,7 +992,7 @@
y_top = page_layout->page_height - page_layout->top_margin - page_layout->header_height - page_layout->header_sep / 2;
y_bot = page_layout->bottom_margin - page_layout->footer_height;
- g_string_append_printf(ps_pages_string,
+ paps_string_append_printf(ps_pages_string,
"%f %f moveto %f %f lineto 0 setlinewidth stroke\n",
x_pos, y_top,
x_pos, y_bot);
@@ -1154,7 +1154,7 @@
/* header separator */
line_pos = page_layout->page_height - page_layout->top_margin - page_layout->header_height - page_layout->header_sep / 2;
- g_string_append_printf(ps_pages_string,
+ paps_string_append_printf(ps_pages_string,
"%d %f moveto %d %f lineto 0 setlinewidth stroke\n",
page_layout->left_margin, line_pos,
page_layout->page_width - page_layout->right_margin, line_pos);

@ -0,0 +1,35 @@
diff -ruN paps-0.6.8.orig/src/Makefile.am paps-0.6.8/src/Makefile.am
--- paps-0.6.8.orig/src/Makefile.am 2006-04-17 16:42:08.000000000 +0900
+++ paps-0.6.8/src/Makefile.am 2007-11-16 11:50:07.000000000 +0900
@@ -1,15 +1,15 @@
man_MANS = paps.1
-lib_LIBRARIES = libpaps.a
-libpaps_a_SOURCES = libpaps.c
-libpaps_a_inc_HEADERS = libpaps.h
-libpaps_a_incdir = $(includedir)
+lib_LTLIBRARIES = libpaps.la
+libpaps_la_SOURCES = libpaps.c
+libpapsinc_HEADERS = libpaps.h
+libpapsincdir = $(includedir)
bin_PROGRAMS = paps
paps_CFLAGS = -Wall
paps_SOURCES = paps.c
-paps_LDADD = $(lib_LIBRARIES) $(all_libraries)
+paps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
paps_LDFLAGS = `pkg-config --libs pangoft2`
-paps_DEPENDENCIES = $(lib_LIBRARIES)
+paps_DEPENDENCIES = $(lib_LTLIBRARIES)
EXTRA_DIST = test_libpaps.c paps.1
@@ -21,7 +21,7 @@
test_libpaps_SOURCES = test_libpaps.c
-test_libpaps_LDADD = $(lib_LIBRARIES) $(all_libraries)
+test_libpaps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
test_libpaps_LDFLAGS = `pkg-config --libs pangoft2`
-test_libpaps_DEPENDENCIES = $(lib_LIBRARIES)
+test_libpaps_DEPENDENCIES = $(lib_LTLIBRARIES)

@ -0,0 +1,35 @@
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
--- paps-0.6.8.orig/src/paps.c 2007-04-13 14:04:14.000000000 +0900
+++ paps-0.6.8/src/paps.c 2007-11-16 12:28:11.000000000 +0900
@@ -723,9 +723,12 @@ split_text_into_paragraphs (PangoContext
pango_layout_set_alignment (para->layout,
page_layout->pango_dir == PANGO_DIRECTION_LTR
? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
-
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
+ if (page_layout->do_wordwrap) {
+ pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
+ pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
+ } else {
+ pango_layout_set_width (para->layout, -1);
+ }
para->height = 0;
result = g_list_prepend (result, para);
@@ -754,9 +757,13 @@ split_text_into_paragraphs (PangoContext
pango_layout_set_alignment (para->layout,
page_layout->pango_dir == PANGO_DIRECTION_LTR
? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
+ if (page_layout->do_wordwrap) {
+ pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
+ pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
+ } else {
+ pango_layout_set_width (para->layout, -1);
+ }
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
para->height = 0;
last_para = next;

@ -0,0 +1,13 @@
diff -pruN paps-0.6.8.orig/src/paps.1 paps-0.6.8/src/paps.1
--- paps-0.6.8.orig/src/paps.1 2007-01-19 20:05:27.000000000 +0900
+++ paps-0.6.8/src/paps.1 2012-09-06 18:04:01.000000000 +0900
@@ -64,6 +64,9 @@ Draw page header for each page.
.B \-\-markup
Interpret the text as pango markup.
.TP
+.B \-\-encoding=ENCODING
+Assume the documentation encoding is ENCODING.
+.TP
.B \-\-lpi
Set the lines per inch. This determines the line spacing.
.TP

@ -0,0 +1,40 @@
--- paps-0.6.8/src/paps.c.orig 2015-02-26 14:17:29.351338514 +0530
+++ paps-0.6.8/src/paps.c 2015-02-26 14:17:29.351338514 +0530
@@ -45,7 +45,8 @@
typedef enum {
PAPER_TYPE_A4 = 0,
PAPER_TYPE_US_LETTER = 1,
- PAPER_TYPE_US_LEGAL = 2
+ PAPER_TYPE_US_LEGAL = 2,
+ PAPER_TYPE_A3 = 3
} paper_type_t ;
typedef struct {
@@ -56,7 +57,8 @@
const paper_size_t paper_sizes[] = {
{ 595.28, 841.89}, /* A4 */
{ 612, 792}, /* US letter */
- { 612, 1008} /* US legal */
+ { 612, 1008}, /* US legal */
+ { 842, 1190} /* A3 */
};
typedef struct {
@@ -190,6 +192,8 @@
paper_type = PAPER_TYPE_US_LETTER;
else if (g_ascii_strcasecmp(value, "a4") == 0)
paper_type = PAPER_TYPE_A4;
+ else if (g_ascii_strcasecmp(value, "a3") == 0)
+ paper_type = PAPER_TYPE_A3;
else {
retval = FALSE;
fprintf(stderr, "Unknown page size name: %s.\n", value);
@@ -300,7 +304,7 @@
{"rtl", 0, 0, G_OPTION_ARG_NONE, &do_rtl, "Do rtl layout.", NULL},
{"paper", 0, 0, G_OPTION_ARG_CALLBACK, _paps_arg_paper_cb,
"Choose paper size. Known paper sizes are legal,\n"
- " letter, a4. (Default: a4)", "PAPER"},
+ " letter, a3, a4. (Default: a4)", "PAPER"},
{"bottom-margin", 0, 0, G_OPTION_ARG_INT, &bottom_margin, "Set bottom margin in postscript point units (1/72inch). (Default: 36)", "NUM"},
{"top-margin", 0, 0, G_OPTION_ARG_INT, &top_margin, "Set top margin. (Default: 36)", "NUM"},
{"right-margin", 0, 0, G_OPTION_ARG_INT, &right_margin, "Set right margin. (Default: 36)", "NUM"},

@ -0,0 +1,24 @@
diff -pruN paps-0.6.8.orig/acinclude.m4 paps-0.6.8/acinclude.m4
--- paps-0.6.8.orig/acinclude.m4 2006-11-29 05:11:50.000000000 +0900
+++ paps-0.6.8/acinclude.m4 2008-05-16 20:36:03.000000000 +0900
@@ -76,9 +76,9 @@ AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEA
# Require the specified program to be found for the DX_CURRENT_FEATURE to work.
AC_DEFUN([DX_REQUIRE_PROG], [
AC_PATH_TOOL([$1], [$2])
-if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then
+if test "$DX_FLAG_DX_CURRENT_FEATURE$$1" = 1; then
AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
- AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0)
+ AC_SUBST([DX_FLAG_DX_CURRENT_FEATURE], 0)
fi
])
@@ -101,7 +101,7 @@ test "$DX_FLAG_$1" = "$2" \
# ----------------------------------------------------------
# Turn off the DX_CURRENT_FEATURE if the required feature is off.
AC_DEFUN([DX_CLEAR_DEPEND], [
-test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0)
+test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_DX_CURRENT_FEATURE], 0)
])
# DX_FEATURE_ARG(FEATURE, DESCRIPTION,

@ -0,0 +1,44 @@
Use AC_USE_SYSTEM_EXTENSIONS and include <config.h>, so that <wchar.h>
makes a declaration of wcwidth available. Include <glib/gprintf.h>
for a declaration of g_vasprintf. This avoids implicit function
declarations and build failures with future compilers.
No need to upstream this because it only impacts the bundled 0.6.8
sources, the later 0.8.0 version has already been fixed upstream. The
g_vasprintf call was introduced in the paps-0.6.6-lcnumeric.patch
downstream patch.
diff -ur paps-0.8.0.orig/paps-0.6.8/configure.in paps-0.8.0/paps-0.6.8/configure.in
--- paps-0.8.0.orig/paps-0.6.8/configure.in 2023-04-13 11:56:29.571277839 +0200
+++ paps-0.8.0/paps-0.6.8/configure.in 2023-04-13 12:00:03.228135149 +0200
@@ -6,6 +6,7 @@
AC_LANG_C
AC_PROG_CC
AM_PROG_LIBTOOL
+AC_USE_SYSTEM_EXTENSIONS
dnl ======================================================
dnl check for CUPS
diff -ur paps-0.8.0.orig/paps-0.6.8/src/paps.c paps-0.8.0/paps-0.6.8/src/paps.c
--- paps-0.8.0.orig/paps-0.6.8/src/paps.c 2023-04-13 11:56:29.583277719 +0200
+++ paps-0.8.0/paps-0.6.8/src/paps.c 2023-04-13 12:02:28.958673663 +0200
@@ -20,7 +20,7 @@
*
*/
-
+#include <config.h>
#include <pango/pango.h>
#include <pango/pangoft2.h>
#include "libpaps.h"
diff -ur paps-0.8.0.orig/paps-0.6.8/src/libpaps.c paps-0.8.0/paps-0.6.8/src/libpaps.c
--- paps-0.8.0.orig/paps-0.6.8/src/libpaps.c 2023-04-13 11:56:29.581277739 +0200
+++ paps-0.8.0/paps-0.6.8/src/libpaps.c 2023-04-13 12:07:17.504779917 +0200
@@ -23,6 +23,7 @@
#include "libpaps.h"
+#include <glib/gprintf.h>
#include <pango/pango.h>
#include <pango/pangoft2.h>
#include <ft2build.h>

@ -0,0 +1,77 @@
diff -pruN paps-0.6.8.orig/COPYING.LIB paps-0.6.8/COPYING.LIB
--- paps-0.6.8.orig/COPYING.LIB 2005-12-21 04:35:27.000000000 +0900
+++ paps-0.6.8/COPYING.LIB 2012-11-23 14:30:46.297512335 +0900
@@ -1,16 +1,15 @@
- GNU LIBRARY GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
- 59 Temple Place - Suite 330
- Boston, MA 02111-1307, USA.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -100,7 +99,7 @@ works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
- GNU LIBRARY GENERAL PUBLIC LICENSE
+ GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
@@ -412,7 +411,7 @@ decision will be guided by the two goals
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@@ -435,8 +434,9 @@ FAILURE OF THE LIBRARY TO OPERATE WITH A
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
- END OF TERMS AND CONDITIONS
- How to Apply These Terms to Your New Libraries
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
@@ -453,18 +453,18 @@ convey the exclusion of warranty; and ea
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
+ modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
+ You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.

@ -0,0 +1,80 @@
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
--- paps-0.6.8.orig/src/paps.c 2008-11-07 08:27:54.000000000 +0900
+++ paps-0.6.8/src/paps.c 2008-11-07 08:29:08.000000000 +0900
@@ -92,8 +92,8 @@ typedef struct {
gchar *filename;
gchar *header_font_desc;
gchar *owner;
- gint lpi;
- gint cpi;
+ gdouble lpi;
+ gdouble cpi;
} page_layout_t;
typedef struct {
@@ -378,6 +378,7 @@ int main(int argc, char *argv[])
page_height = 792;
font = g_strdup(MAKE_FONT_NAME ("Courier", DEFAULT_FONT_SIZE));
header_font_desc = g_strdup(MAKE_FONT_NAME ("Courier", HEADER_FONT_SCALE));
+ do_stretch_chars = TRUE;
if (argc < 6 || argc > 7) {
fprintf(stderr, "ERROR: %s job-id user title copies options [file]\n", prgname);
@@ -595,7 +596,8 @@ int main(int argc, char *argv[])
/* calculate x-coordinate scale */
if (page_layout.cpi > 0.0L)
{
- double scale;
+ gint font_size;
+
fontmap = pango_ft2_font_map_new ();
fontset = pango_font_map_load_fontset (fontmap, pango_context, font_description, get_language ());
metrics = pango_fontset_get_metrics (fontset);
@@ -607,13 +609,10 @@ int main(int argc, char *argv[])
pango_font_metrics_unref (metrics);
g_object_unref (G_OBJECT (fontmap));
- // Now figure out how to scale the font to get that size
- scale = 1 / page_layout.cpi * 72.0 * PANGO_SCALE / max_width;
-
+ font_size = pango_font_description_get_size (font_description);
// update the font size to that width
- pango_font_description_set_size (font_description, (int)(atoi(DEFAULT_FONT_SIZE) * PANGO_SCALE * scale));
+ pango_font_description_set_size (font_description, font_size * page_layout.scale_x);
pango_context_set_font_description (pango_context, font_description);
-
}
page_layout.scale_x = page_layout.scale_y = 1.0;
@@ -1001,6 +1000,7 @@ output_pages(FILE *OUT,
int column_y_pos = 0;
int page_idx = 1;
int pango_column_height = page_layout->column_height * page_layout->pt_to_pixel * PANGO_SCALE;
+ int height = 0;
LineLink *prev_line_link = NULL;
start_page(OUT, page_idx);
@@ -1038,17 +1038,17 @@ output_pages(FILE *OUT,
);
}
}
+ if (page_layout->lpi > 0.0L)
+ height = (int)(1.0 / page_layout->lpi * 72.0 * page_layout->pt_to_pixel * PANGO_SCALE);
+ else
+ height = line_link->logical_rect.height;
draw_line_to_page(OUT,
column_idx,
- column_y_pos+line_link->logical_rect.height,
+ column_y_pos+height,
page_layout,
line);
- if (page_layout->lpi > 0.0L)
- column_y_pos += (int)(1.0 / page_layout->lpi * 72.0 * page_layout->pt_to_pixel * PANGO_SCALE);
- else
- column_y_pos += line_link->logical_rect.height;
-
+ column_y_pos += height;
pango_lines = pango_lines->next;
prev_line_link = line_link;
}

@ -0,0 +1,325 @@
diff -pruN paps-0.6.8.orig/configure.in paps-0.6.8/configure.in
--- paps-0.6.8.orig/configure.in 2007-01-19 20:06:10.000000000 +0900
+++ paps-0.6.8/configure.in 2008-11-07 08:21:19.000000000 +0900
@@ -7,6 +7,19 @@ AC_LANG_C
AC_PROG_CC
AM_PROG_LIBTOOL
+dnl ======================================================
+dnl check for CUPS
+dnl ======================================================
+AC_PATH_PROG(CUPS_CONFIG, cups-config, no)
+if test "$CUPS_CONFIG" = "no"; then
+ AC_MSG_ERROR([Please install cups development packages/files])
+fi
+CUPS_CFLAGS=`$CUPS_CONFIG --cflags | sed -e 's/-O[0-9]*//' -e 's/-m[^\t]*//g'`
+CUPS_LIBS=`$CUPS_CONFIG --libs`
+
+AC_SUBST(CUPS_CFLAGS)
+AC_SUBST(CUPS_LIBS)
+
DX_HTML_FEATURE(ON)
DX_CHM_FEATURE(OFF)
DX_CHI_FEATURE(OFF)
diff -pruN paps-0.6.8.orig/src/Makefile.am paps-0.6.8/src/Makefile.am
--- paps-0.6.8.orig/src/Makefile.am 2008-11-07 08:21:05.000000000 +0900
+++ paps-0.6.8/src/Makefile.am 2008-11-07 08:21:19.000000000 +0900
@@ -5,10 +5,10 @@ libpapsinc_HEADERS = libpaps.h
libpapsincdir = $(includedir)
bin_PROGRAMS = paps
-paps_CFLAGS = -Wall
+paps_CFLAGS = -Wall $(CUPS_CFLAGS)
paps_SOURCES = paps.c
paps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
-paps_LDFLAGS = `pkg-config --libs pangoft2`
+paps_LDFLAGS = `pkg-config --libs pangoft2` $(CUPS_LIBS)
paps_DEPENDENCIES = $(lib_LTLIBRARIES)
EXTRA_DIST = test_libpaps.c paps.1
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
--- paps-0.6.8.orig/src/paps.c 2008-11-07 08:21:05.000000000 +0900
+++ paps-0.6.8/src/paps.c 2008-11-07 08:26:28.000000000 +0900
@@ -31,6 +31,8 @@
#include <string.h>
#include <time.h>
#include <locale.h>
+#include <cups/cups.h>
+#include <cups/ppd.h>
#define BUFSIZE 1024
#define DEFAULT_FONT_FAMILY "Monospace"
@@ -86,9 +88,11 @@ typedef struct {
gboolean do_wordwrap;
gboolean do_use_markup;
gboolean do_stretch_chars;
+ gboolean cups_mode;
PangoDirection pango_dir;
gchar *filename;
gchar *header_font_desc;
+ gchar *owner;
gint lpi;
gint cpi;
} page_layout_t;
@@ -320,8 +324,8 @@ int main(int argc, char *argv[])
int num_pages = 1;
int gutter_width = 40;
int total_gutter_width;
- int page_width = paper_sizes[0].width;
- int page_height = paper_sizes[0].height;
+ int page_width = -1;
+ int page_height = -1;
int do_tumble = -1; /* -1 means not initialized */
int do_duplex = -1;
gchar *paps_header = NULL;
@@ -331,6 +335,8 @@ int main(int argc, char *argv[])
int max_width = 0, w;
GIConv cvh = NULL;
GOptionGroup *options;
+ gboolean cups_mode = FALSE;
+ gchar *page_owner = NULL;
/* Set locale from environment. */
setlocale(LC_ALL, "");
@@ -348,6 +354,130 @@ int main(int argc, char *argv[])
g_option_context_add_main_entries(ctxt, entries, NULL);
#endif
+ /* check if the process is being invoked as CUPS filter */
+ G_STMT_START {
+ gchar *prgname = g_path_get_basename(argv[0]);
+ cups_option_t *options = NULL;
+ ppd_file_t *ppd;
+ ppd_size_t *pagesize;
+ int num_options;
+ const char *val;
+
+ if (strncmp(prgname, "texttopaps", 10) == 0 ||
+ getenv("CUPS_SERVER") != NULL) {
+ g_set_prgname(prgname);
+ /* argument format should be job-id user title copies options [file] */
+ cups_mode = TRUE;
+ /* set default values */
+ page_layout.lpi = 6.0L;
+ page_layout.cpi = 10.0L;
+ left_margin = 18;
+ right_margin = 18;
+ top_margin = 36;
+ bottom_margin = 36;
+ page_width = 612;
+ page_height = 792;
+ font = g_strdup(MAKE_FONT_NAME ("Courier", DEFAULT_FONT_SIZE));
+ header_font_desc = g_strdup(MAKE_FONT_NAME ("Courier", HEADER_FONT_SCALE));
+
+ if (argc < 6 || argc > 7) {
+ fprintf(stderr, "ERROR: %s job-id user title copies options [file]\n", prgname);
+ exit(1);
+ }
+ if (argc == 6) {
+ filename_in = "stdin";
+ IN = stdin;
+ } else {
+ filename_in = argv[6];
+ if ((IN = fopen(filename_in, "rb")) == NULL) {
+ fprintf(stderr, "ERROR: unable to open print file -\n");
+ exit(1);
+ }
+ }
+ title = argv[3];
+ page_owner = argv[2];
+ num_options = cupsParseOptions(argv[5], 0, &options);
+
+ if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL &&
+ g_ascii_strcasecmp(val, "no") &&
+ g_ascii_strcasecmp(val, "off") &&
+ g_ascii_strcasecmp(val, "false")) {
+ /* XXX: need to support the keywords highlighting */
+ }
+ ppd = ppdOpenFile(getenv("PPD"));
+ ppdMarkDefaults(ppd);
+ cupsMarkOptions(ppd, num_options, options);
+
+ if ((pagesize = ppdPageSize(ppd, NULL)) != NULL) {
+ page_width = pagesize->width;
+ page_height = pagesize->length;
+ top_margin = pagesize->length - pagesize->top;
+ bottom_margin = pagesize->bottom;
+ left_margin = pagesize->left;
+ right_margin = pagesize->width - pagesize->right;
+ }
+
+ if ((val = cupsGetOption("landscape", num_options, options)) != NULL) {
+ if (g_ascii_strcasecmp(val, "no") &&
+ g_ascii_strcasecmp(val, "off") &&
+ g_ascii_strcasecmp(val, "false"))
+ do_landscape = TRUE;
+ }
+ /* XXX: need to support orientation-requested? */
+ if ((val = cupsGetOption("page-left", num_options, options)) != NULL) {
+ left_margin = (int)atof(val);
+ }
+ if ((val = cupsGetOption("page-right", num_options, options)) != NULL) {
+ right_margin = (int)atof(val);
+ }
+ if ((val = cupsGetOption("page-bottom", num_options, options)) != NULL) {
+ bottom_margin = (int)atof(val);
+ }
+ if ((val = cupsGetOption("page-top", num_options, options)) != NULL) {
+ top_margin = (int)atof(val);
+ }
+ if (ppdIsMarked(ppd, "Duplex", "DuplexNoTumble") ||
+ ppdIsMarked(ppd, "Duplex", "DuplexTumble") ||
+ ppdIsMarked(ppd, "JCLDuplex", "DuplexNoTumble") ||
+ ppdIsMarked(ppd, "JCLDuplex", "DuplexTumble") ||
+ ppdIsMarked(ppd, "EFDuplex", "DuplexNoTumble") ||
+ ppdIsMarked(ppd, "EFDuplex", "DuplexTumble") ||
+ ppdIsMarked(ppd, "KD03Duplex", "DuplexNoTumble") ||
+ ppdIsMarked(ppd, "KD03Duplex", "DuplexTumble")) {
+ do_duplex = TRUE;
+ }
+ if ((val = cupsGetOption("wrap", num_options, options)) != NULL) {
+ do_wordwrap = !g_ascii_strcasecmp(val, "true") ||
+ !g_ascii_strcasecmp(val, "on") ||
+ !g_ascii_strcasecmp(val, "yes");
+ }
+ if ((val = cupsGetOption("columns", num_options, options)) != NULL) {
+ num_columns = atoi(val);
+ }
+ if ((val = cupsGetOption("cpi", num_options, options)) != NULL) {
+ page_layout.cpi = atof(val);
+ }
+ if ((val = cupsGetOption("lpi", num_options, options)) != NULL) {
+ page_layout.lpi = atof(val);
+ }
+ if (getenv("CHARSET") != NULL) {
+ char *charset = getenv("CHARSET");
+ /* Map CUPS charset names to real ones.
+ * http://cups.org/newsgroups.php?s9797+gcups.general+v9797+T1
+ */
+ if (!g_ascii_strcasecmp(charset, "windows-932")) {
+ charset = "WINDOWS-31J";
+ }
+ if (g_ascii_strcasecmp(charset, "utf-8") &&
+ g_ascii_strcasecmp(charset, "utf8")) {
+ encoding = g_strdup(charset);
+ }
+ }
+ }
+ } G_STMT_END;
+
+ if (!cups_mode) {
+
/* Parse command line */
if (!g_option_context_parse(ctxt, &argc, &argv, &error))
{
@@ -374,6 +504,8 @@ int main(int argc, char *argv[])
IN = stdin;
}
title = filename_in;
+
+ } /* if (!cups_mode) */
paps = paps_new();
pango_context = paps_get_pango_context (paps);
@@ -392,8 +524,10 @@ int main(int argc, char *argv[])
pango_context_set_font_description (pango_context, font_description);
/* Page layout */
- page_width = paper_sizes[(int)paper_type].width;
- page_height = paper_sizes[(int)paper_type].height;
+ if (page_width < 0)
+ page_width = paper_sizes[(int)paper_type].width;
+ if (page_height < 0)
+ page_height = paper_sizes[(int)paper_type].height;
if (num_columns == 1)
total_gutter_width = 0;
@@ -456,6 +590,8 @@ int main(int argc, char *argv[])
page_layout.pango_dir = pango_dir;
page_layout.filename = filename_in;
page_layout.header_font_desc = header_font_desc;
+ page_layout.owner = page_owner;
+ page_layout.cups_mode = cups_mode;
/* calculate x-coordinate scale */
if (page_layout.cpi > 0.0L)
@@ -756,6 +892,12 @@ split_text_into_paragraphs (PangoContext
if (wc == (gunichar)-1)
{
fprintf (stderr, "%s: Invalid character in input\n", g_get_prgname ());
+ if (page_layout->cups_mode)
+ {
+ /* try to continue parsing texts */
+ p = next;
+ continue;
+ }
wc = 0;
}
if (!*p || !wc || wc == '\n' || wc == '\f')
@@ -925,21 +1067,32 @@ void print_postscript_header(FILE *OUT,
int orientation = page_layout->page_width > page_layout->page_height;
int bb_page_width = page_layout->page_width;
int bb_page_height = page_layout->page_height;
+ char *owner = NULL;
/* Keep bounding box non-rotated to make ggv happy */
- if (orientation)
+ /* ensure the correct bounding box for CUPS */
+ if (orientation && !page_layout->cups_mode)
{
int tmp = bb_page_width;
bb_page_width = bb_page_height;
bb_page_height = tmp;
}
+ if (page_layout->owner)
+ {
+ owner = g_strdup_printf("%%%%For: %s\n", page_layout->owner);
+ }
+ else
+ {
+ owner = g_strdup("");
+ }
fprintf(OUT,
"%%!PS-Adobe-3.0\n"
+ "%s"
"%%%%Title: %s\n"
"%%%%Creator: paps version 0.6.7 by Dov Grobgeld\n"
"%%%%Pages: (atend)\n"
- "%%%%BoundingBox: 0 0 %d %d\n"
+ "%%%%BoundingBox: 0 0 %d %d\n%s"
"%%%%BeginProlog\n"
"%%%%Orientation: %s\n"
"/papsdict 1 dict def\n"
@@ -961,7 +1114,7 @@ void print_postscript_header(FILE *OUT,
" pagewidth\n"
" /pagewidth pageheight def\n"
" /pageheight exch def\n"
- " /orientation 3 def\n"
+ " /orientation %d def\n"
" } if\n"
" 2 dict\n"
" dup /PageSize [pagewidth pageheight] put\n"
@@ -986,11 +1139,21 @@ void print_postscript_header(FILE *OUT,
" 90 rotate\n"
" 0 pageheight neg translate\n"
"} def\n",
+ /*
+ * Put %%cupsRotation tag to prevent the rotation in pstops.
+ * This breaks paps's behavior to make it in landscape say.
+ * (RH#222137)
+ */
+ (page_layout->cups_mode ? "%cupsRotation: 0\n" : ""),
title,
bb_page_width,
bb_page_height,
- orientation_names[orientation]
+ owner,
+ orientation_names[orientation],
+ /* For landscape, rotate page to portrait orientation for CUPS (RH#222137) */
+ page_layout->cups_mode ? 2 : 3
);
+ g_free(owner);
fprintf(OUT,
"%% User settings\n"

@ -0,0 +1,94 @@
diff -pruN paps-0.6.8.orig/src/libpaps.c paps-0.6.8/src/libpaps.c
--- paps-0.6.8.orig/src/libpaps.c 2008-05-14 23:07:14.000000000 +0900
+++ paps-0.6.8/src/libpaps.c 2008-05-14 23:11:12.000000000 +0900
@@ -118,7 +118,6 @@ gchar *paps_get_postscript_header_strdup
gchar *ret_str;
g_string_append_printf(paps->header,
"end end\n"
- "%%%%EndPrologue\n"
);
ret_str = g_strdup(paps->header->str);
g_string_truncate(paps->header, old_len);
@@ -247,7 +246,6 @@ static void
add_postscript_prologue(paps_private_t *paps)
{
g_string_append_printf(paps->header,
- "%%%%BeginProlog\n"
"/papsdict 1 dict def\n"
"papsdict begin\n"
"\n"
@@ -272,10 +270,10 @@ add_postscript_prologue(paps_private_t *
"/start_ol { gsave } bind def\n"
"/end_ol { closepath fill grestore } bind def\n"
/* Specify both x and y. */
- "/draw_char { fontdict begin gsave %f dup scale last_x last_y translate load exec end grestore} def\n"
- "/goto_xy { fontdict begin /last_y exch def /last_x exch def end } def\n"
- "/goto_x { fontdict begin /last_x exch def end } def\n"
- "/fwd_x { fontdict begin /last_x exch last_x add def end } def\n"
+ "/draw_char { fontdict begin gsave %f dup scale last_x cvi last_y cvi translate load exec end grestore} def\n"
+ "/goto_xy { fontdict begin /last_y exch string_y cvs def /last_x exch string_x cvs def end } def\n"
+ "/goto_x { fontdict begin /last_x exch string_x cvs def end } def\n"
+ "/fwd_x { fontdict begin /last_x exch last_x cvi add string_x cvs def end } def\n"
"/c /curveto load def\n"
"/x /conicto load def\n"
"/l /lineto load def\n"
@@ -344,7 +342,7 @@ add_postscript_prologue(paps_private_t *
/* Open up dictionaries */
g_string_append(paps->header,
- "/fontdict 1 dict def\n"
+ "/fontdict 1 dict dup begin 16 string dup /string_x exch def /last_x exch def 16 string dup /string_y exch def /last_y exch def end def\n"
"papsdict begin fontdict begin\n");
}
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
--- paps-0.6.8.orig/src/paps.c 2008-05-14 23:07:14.000000000 +0900
+++ paps-0.6.8/src/paps.c 2008-05-14 23:12:53.000000000 +0900
@@ -659,7 +659,7 @@ int main(int argc, char *argv[])
fprintf(OUT, "%s", paps_header);
g_free(paps_header);
- fprintf(OUT, "%%%%EndPrologue\n");
+ fprintf(OUT, "%%%%EndSetup\n");
fprintf(OUT, "%s", ps_pages_string->str);
print_postscript_trailer(OUT, num_pages);
@@ -1089,8 +1089,9 @@ void print_postscript_header(FILE *OUT,
"%%%%Creator: paps version 0.6.7 by Dov Grobgeld\n"
"%%%%Pages: (atend)\n"
"%%%%BoundingBox: 0 0 %d %d\n%s"
- "%%%%BeginProlog\n"
"%%%%Orientation: %s\n"
+ "%%%%EndComments\n"
+ "%%%%BeginProlog\n"
"/papsdict 1 dict def\n"
"papsdict begin\n"
"\n"
@@ -1134,7 +1135,8 @@ void print_postscript_header(FILE *OUT,
"/turnpage {\n"
" 90 rotate\n"
" 0 pageheight neg translate\n"
- "} def\n",
+ "} def\n"
+ "%%%%EndProlog\n",
/*
* Put %%cupsRotation tag to prevent the rotation in pstops.
* This breaks paps's behavior to make it in landscape say.
@@ -1150,6 +1152,7 @@ void print_postscript_header(FILE *OUT,
g_free(owner);
fprintf(OUT,
+ "%%%%BeginSetup\n"
"%% User settings\n"
"/pagewidth %d def\n"
"/pageheight %d def\n"
@@ -1232,8 +1235,8 @@ void print_postscript_trailer(FILE *OUT,
int num_pages)
{
fprintf(OUT,
- "%%%%Pages: %d\n"
"%%%%Trailer\n"
+ "%%%%Pages: %d\n"
"%%%%EOF\n",
num_pages
);

@ -0,0 +1,66 @@
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
--- paps-0.6.8.orig/src/paps.c 2008-09-01 15:54:11.000000000 +0900
+++ paps-0.6.8/src/paps.c 2008-09-01 15:54:47.000000000 +0900
@@ -365,7 +365,7 @@ int main(int argc, char *argv[])
if (!IN)
{
fprintf(stderr, "Failed to open %s!\n", filename_in);
- exit(-1);
+ exit(1);
}
}
else
@@ -499,7 +499,7 @@ int main(int argc, char *argv[])
if (cvh == NULL)
{
fprintf(stderr, "%s: Invalid encoding: %s\n", g_get_prgname (), encoding);
- exit(-1);
+ exit(1);
}
}
@@ -559,7 +559,7 @@ read_file (FILE *file,
{
fprintf(stderr, "%s: Error reading file.\n", g_get_prgname ());
g_string_free (inbuf, TRUE);
- return NULL;
+ exit(1);
}
else if (bp == NULL)
break;
@@ -573,7 +573,7 @@ read_file (FILE *file,
if (g_iconv (handle, &ib, &iblen, &ob, &oblen) == -1)
{
fprintf (stderr, "%s: Error while converting strings.\n", g_get_prgname ());
- return NULL;
+ exit(1);
}
obuffer[BUFSIZE * 6 - 1 - oblen] = 0;
}
@@ -637,7 +637,7 @@ split_text_into_paragraphs (PangoContext
if (wtext == NULL)
{
fprintf (stderr, "Failed to convert UTF-8 to UCS-4.\n");
- return NULL;
+ exit(1);
}
len = g_utf8_strlen (para->text, para->length);
@@ -650,7 +650,7 @@ split_text_into_paragraphs (PangoContext
{
fprintf (stderr, "Failed to allocate a memory.\n");
g_free (wtext);
- return NULL;
+ exit(1);
}
for (i = 0; i < len; i++)
{
@@ -665,7 +665,7 @@ split_text_into_paragraphs (PangoContext
if (newtext == NULL)
{
fprintf (stderr, "Failed to convert UCS-4 to UTF-8.\n");
- return NULL;
+ exit(1);
}
pango_layout_set_text (para->layout, newtext, -1);

@ -0,0 +1,85 @@
From e2180b2e1493abc2a8d1165e10bf264d50fac0ae Mon Sep 17 00:00:00 2001
From: Akira TAGOH <akira@tagoh.org>
Date: Wed, 1 Mar 2023 15:24:27 +0900
Subject: [PATCH] Fix the build issue
Some code ignores a return value of g_string_free() and that causes:
ignoring return value of 'gchar* g_string_free_and_steal(GString*)' declared with attribute 'warn_unused_result' [-Wunused-result]
This fixes it.
---
src/paps.cc | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/paps.cc b/src/paps.cc
index cb48ddc..429b764 100644
--- a/src/paps.cc
+++ b/src/paps.cc
@@ -368,6 +368,7 @@ copy_pango_parse_enum (GType type,
{
int i;
GString *s = g_string_new (nullptr);
+ gchar *gstr;
for (i = 0, v = g_enum_get_value (klass, i); v;
i++ , v = g_enum_get_value (klass, i))
@@ -382,10 +383,10 @@ copy_pango_parse_enum (GType type,
G_ENUM_CLASS_TYPE_NAME(klass),
s->str);
- if (possible_values)
- *possible_values = s->str;
+ gstr = g_string_free (s, possible_values ? false : true);
- g_string_free (s, possible_values ? false : true);
+ if (possible_values)
+ *possible_values = gstr;
}
}
@@ -1001,7 +1002,7 @@ read_file (FILE *file,
if (ferror (file))
{
fprintf(stderr, _("%s: Error reading file.\n"), g_get_prgname ());
- g_string_free (inbuf, true);
+ (void) g_string_free (inbuf, true);
exit(1);
}
else if (bp == nullptr)
@@ -1043,8 +1044,7 @@ read_file (FILE *file,
if (inbuf->len && inbuf->str[inbuf->len-1] != '\n')
g_string_append(inbuf, "\n");
- text = inbuf->str;
- g_string_free (inbuf, false);
+ text = g_string_free (inbuf, false);
if (encoding != nullptr && cvh != nullptr)
g_iconv_close(cvh);
@@ -1671,7 +1671,11 @@ get_date()
fprintf(stderr, _("%1$s: Error while converting date string from '%2$s' to UTF-8.\n"),
g_get_prgname(), get_encoding());
/* Return the unconverted string. */
- g_string_free(inbuf, false);
+ /*
+ * inbuf isn't used here, but a few memory is
+ * allocated by default. so it should be freed anyway.
+ */
+ (void) g_string_free(inbuf, true);
g_iconv_close(cvh);
return date;
}
@@ -1679,8 +1683,7 @@ get_date()
obuffer[BUFSIZE * 6 - 1 - oblen] = 0;
g_string_append(inbuf, bp);
- date_utf8 = inbuf->str;
- g_string_free(inbuf, false);
+ date_utf8 = g_string_free(inbuf, false);
g_iconv_close(cvh);
}
--
2.39.2

@ -0,0 +1,342 @@
diff --git a/src/libpaps.c b/src/libpaps.c
index b6363a7..1b80257 100644
--- a/src/libpaps.c
+++ b/src/libpaps.c
@@ -55,6 +55,9 @@ typedef struct {
double last_pos_x;
double scale_x;
double scale_y;
+ double width;
+ double height;
+ double cpi;
} paps_private_t;
@@ -88,6 +91,26 @@ paps_t *paps_new()
}
void
+paps_set_paper_size(paps_t *paps_,
+ gdouble width,
+ gdouble height)
+{
+ paps_private_t *paps = (paps_private_t *)paps_;
+
+ paps->width = width;
+ paps->height = height;
+}
+
+void
+paps_set_cpi(paps_t *paps_,
+ gdouble cpi)
+{
+ paps_private_t *paps = (paps_private_t *)paps_;
+
+ paps->cpi = cpi;
+}
+
+void
paps_set_scale(paps_t *paps_,
gdouble scale_x,
gdouble scale_y)
@@ -401,7 +424,7 @@ static void draw_contour(paps_private_t *paps,
FT_Face ft_face = pango_ft2_font_get_face(font);
int num_glyphs = glyphs->num_glyphs;
int glyph_idx;
-
+
for (glyph_idx=0; glyph_idx<num_glyphs; glyph_idx++)
{
PangoGlyphGeometry geometry = glyphs->glyphs[glyph_idx].geometry;
@@ -410,7 +433,11 @@ static void draw_contour(paps_private_t *paps,
glyph_pos_x = x_pos + 1.0*geometry.x_offset * scale;
glyph_pos_y = line_start_pos_y - 1.0*geometry.y_offset * scale;
- x_pos += geometry.width * scale * paps->scale_x;
+ if (paps->cpi > 0.0L) {
+ x_pos += (1 / paps->cpi * 72.0);
+ } else {
+ x_pos += geometry.width * scale * paps->scale_x;
+ }
if (glyphs->glyphs[glyph_idx].glyph == PANGO_GLYPH_EMPTY)
continue;
diff --git a/src/libpaps.h b/src/libpaps.h
index 0b74321..cbb4042 100644
--- a/src/libpaps.h
+++ b/src/libpaps.h
@@ -53,10 +53,16 @@ void paps_free(paps_t *paps);
* @param scale_y y-coordinate scale
*
*/
-void
-paps_set_scale(paps_t *paps,
- gdouble scale_x,
- gdouble scale_y);
+void paps_set_scale(paps_t *paps,
+ gdouble scale_x,
+ gdouble scale_y);
+
+void paps_set_paper_size(paps_t *paps_,
+ gdouble width,
+ gdouble height);
+
+void paps_set_cpi(paps_t *paps_,
+ gdouble cpi);
/**
* libpaps may currently be used only with a PangoContext that it
diff --git a/src/paps.c b/src/paps.c
index 334d547..72dbaad 100644
--- a/src/paps.c
+++ b/src/paps.c
@@ -33,6 +33,8 @@
#include <locale.h>
#include <cups/cups.h>
#include <cups/ppd.h>
+#include <math.h>
+#include <wchar.h>
#define BUFSIZE 1024
#define DEFAULT_FONT_FAMILY "Monospace"
@@ -594,6 +596,8 @@ int main(int argc, char *argv[])
page_layout.owner = page_owner;
page_layout.cups_mode = cups_mode;
+ paps_set_paper_size(paps, page_width, page_height);
+
/* calculate x-coordinate scale */
if (page_layout.cpi > 0.0L)
{
@@ -606,7 +610,7 @@ int main(int argc, char *argv[])
w = pango_font_metrics_get_approximate_digit_width (metrics);
if (w > max_width)
max_width = w;
- page_layout.scale_x = 1 / page_layout.cpi * 72.0 * PANGO_SCALE / max_width;
+ page_layout.scale_x = 1 / page_layout.cpi * 72.0 * (gdouble)PANGO_SCALE / (gdouble)max_width;
pango_font_metrics_unref (metrics);
g_object_unref (G_OBJECT (fontmap));
@@ -614,6 +618,8 @@ int main(int argc, char *argv[])
// update the font size to that width
pango_font_description_set_size (font_description, font_size * page_layout.scale_x);
pango_context_set_font_description (pango_context, font_description);
+
+ paps_set_cpi(paps, page_layout.cpi);
}
page_layout.scale_x = page_layout.scale_y = 1.0;
@@ -727,119 +733,6 @@ read_file (FILE *file,
return text;
}
-#if 0
-/* Take a UTF8 string and break it into paragraphs on \n characters.
- *
- * Sorry. I couldn't figure out what this version was supposed to do
- *
- */
-static GList *
-split_text_into_paragraphs (PangoContext *pango_context,
- page_layout_t *page_layout,
- int paint_width, /* In pixels */
- char *text)
-{
- char *p = text;
- char *next;
- gunichar wc;
- GList *result = NULL;
- char *last_para = text;
-
- while (p != NULL && *p)
- {
- wc = g_utf8_get_char (p);
- next = g_utf8_next_char (p);
- if (wc == (gunichar)-1)
- {
- fprintf (stderr, "%s: Invalid character in input\n", g_get_prgname ());
- wc = 0;
- }
- if (!*p || !wc || wc == '\n' || wc == '\f')
- {
- Paragraph *para = g_new (Paragraph, 1);
- para->text = last_para;
- para->length = p - last_para;
- para->layout = pango_layout_new (pango_context);
-
- if (cpi > 0.0L && page_layout->do_wordwrap)
- {
- PangoRectangle ink_rect, logical_rect;
- wchar_t *wtext, *wnewtext;
- gchar *newtext;
- size_t i, len, wwidth = 0, n;
-
- wtext = g_utf8_to_ucs4 (para->text, para->length, NULL, NULL, NULL);
- if (wtext == NULL)
- {
- fprintf (stderr, "Failed to convert UTF-8 to UCS-4.\n");
- exit(1);
- }
-
- len = g_utf8_strlen (para->text, para->length);
- /* the amount of characters to be able to put on the line against CPI */
- n = page_layout->column_width / 72.0 * cpi;
- if (len > n)
- {
- wnewtext = g_new (wchar_t, wcslen (wtext) + 1);
- if (wnewtext == NULL)
- {
- fprintf (stderr, "Failed to allocate a memory.\n");
- g_free (wtext);
- exit(1);
- }
- for (i = 0; i < len; i++)
- {
- wwidth += wcwidth (wtext[i]);
- if (wwidth > n)
- break;
- wnewtext[i] = wtext[i];
- }
- wnewtext[i] = 0L;
-
- newtext = g_ucs4_to_utf8 ((const gunichar *)wnewtext, i, NULL, NULL, NULL);
- if (newtext == NULL)
- {
- fprintf (stderr, "Failed to convert UCS-4 to UTF-8.\n");
- exit(1);
- }
-
- pango_layout_set_text (para->layout, newtext, -1);
- pango_layout_get_extents (para->layout, &ink_rect, &logical_rect);
- /* update paint_width to wrap_against CPI */
- paint_width = logical_rect.width / PANGO_SCALE;
- g_free (newtext);
- g_free (wnewtext);
- }
- g_free (wtext);
- }
- pango_layout_set_text (para->layout, para->text, para->length);
- pango_layout_set_justify (para->layout, page_layout->do_justify);
- pango_layout_set_alignment (para->layout,
- page_layout->pango_dir == PANGO_DIRECTION_LTR
- ? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
- if (page_layout->do_wordwrap)
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
- para->height = 0;
-
- if (wc == '\f')
- para->formfeed = 1;
- else
- para->formfeed = 0;
-
- last_para = next;
-
- result = g_list_prepend (result, para);
- }
- if (!wc) /* incomplete character at end */
- break;
- p = next;
- }
-
- return g_list_reverse (result);
-}
-#endif
-
/* Take a UTF8 string and break it into paragraphs on \n characters
*/
static GList *
@@ -905,18 +798,85 @@ split_text_into_paragraphs (PangoContext *pango_context,
para->text = last_para;
para->length = p - last_para;
para->layout = pango_layout_new (pango_context);
- // pango_layout_set_font_description (para->layout, font_description);
- pango_layout_set_text (para->layout, para->text, para->length);
+
+ if (page_layout->cpi > 0.0L && page_layout->do_wordwrap) {
+ /* figuring out the correct width from the pango_font_metrics_get_approximate_width()
+ * is really hard and pango_layout_set_wrap() doesn't work properly then.
+ * Those are not reliable to render the characters exactly according to the given CPI.
+ * So Re-calculate the width to wrap up to be comfortable with CPI.
+ */
+ wchar_t *wtext = NULL, *wnewtext = NULL;
+ gchar *newtext = NULL;
+ gsize len, col, i, wwidth = 0;
+ PangoRectangle ink_rect, logical_rect;
+
+ wtext = (wchar_t *)g_utf8_to_ucs4(para->text, para->length, NULL, NULL, NULL);
+ if (wtext == NULL) {
+ fprintf(stderr, "%s: Unable to convert UTF-8 to UCS-4.\n", g_get_prgname());
+ fail:
+ g_free(wtext);
+ g_free(wnewtext);
+ g_free(newtext);
+ if (page_layout->cups_mode) {
+ /* try to continue parsing text */
+ p = next;
+ continue;
+ } else {
+ exit(1);
+ }
+ }
+ len = g_utf8_strlen(para->text, para->length);
+ /* the amount of characters that can be put on the line against CPI */
+ col = page_layout->column_width / 72.0 * page_layout->cpi;
+ if (len > col) {
+ /* need to wrap up them */
+ wnewtext = g_new(wchar_t, wcslen(wtext) + 1);
+ if (wnewtext == NULL) {
+ fprintf(stderr, "%s: Unable to allocate the memory.\n", g_get_prgname());
+ goto fail;
+ }
+ for (i = 0; i < len; i++) {
+ wwidth += wcwidth(wtext[i]);
+ if (wwidth > col)
+ break;
+ wnewtext[i] = wtext[i];
+ }
+ wnewtext[i] = 0L;
+
+ newtext = g_ucs4_to_utf8((const gunichar *)wnewtext, i, NULL, NULL, NULL);
+ if (newtext == NULL) {
+ fprintf(stderr, "%s: Unable to convert UCS-4 to UTF-8.\n", g_get_prgname());
+ goto fail;
+ }
+ pango_layout_set_text(para->layout, newtext, -1);
+ pango_layout_get_extents(para->layout, &ink_rect, &logical_rect);
+ paint_width = logical_rect.width / PANGO_SCALE;
+ g_free(wnewtext);
+ g_free(newtext);
+
+ para->length = i;
+ next = g_utf8_offset_to_pointer(para->text, para->length);
+ wc = g_utf8_get_char(g_utf8_prev_char(next));
+ } else {
+ pango_layout_set_text(para->layout, para->text, para->length);
+ }
+ g_free(wtext);
+
+ pango_layout_set_width(para->layout, -1);
+ } else {
+ pango_layout_set_text (para->layout, para->text, para->length);
+ if (page_layout->do_wordwrap) {
+ pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
+ pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
+ } else {
+ pango_layout_set_width (para->layout, -1);
+ }
+ }
+
pango_layout_set_justify (para->layout, page_layout->do_justify);
pango_layout_set_alignment (para->layout,
page_layout->pango_dir == PANGO_DIRECTION_LTR
? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
- if (page_layout->do_wordwrap) {
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
- } else {
- pango_layout_set_width (para->layout, -1);
- }
para->height = 0;

@ -0,0 +1,31 @@
From 6c3fa9959dd454938378ade2fec8e84cee7d6916 Mon Sep 17 00:00:00 2001
From: Akira TAGOH <tagoh@redhat.com>
Date: Tue, 27 Jul 2010 12:19:30 +0900
Subject: [PATCH 1/2] Fix rhbz#618483: texttopaps becoms runaway memory hog
* src/paps.c (split_text_into_paragraphs): fix a infinite loop
when non-printable characters are in the text.
---
src/paps.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
* paps.c: Erased --justify option since it is not implemented in
diff --git a/src/paps.c b/src/paps.c
index 72dbaad..dcef349 100644
--- a/src/paps.c
+++ b/src/paps.c
@@ -835,7 +835,10 @@ split_text_into_paragraphs (PangoContext *pango_context,
goto fail;
}
for (i = 0; i < len; i++) {
- wwidth += wcwidth(wtext[i]);
+ gssize w = wcwidth(wtext[i]);
+
+ if (w >= 0)
+ wwidth += w;
if (wwidth > col)
break;
wnewtext[i] = wtext[i];
--
1.7.1.1

@ -0,0 +1,26 @@
diff -pruN paps-0.6.8.orig/src/Makefile.am paps-0.6.8/src/Makefile.am
--- paps-0.6.8.orig/src/Makefile.am 2012-11-23 14:22:51.506176037 +0900
+++ paps-0.6.8/src/Makefile.am 2012-11-23 14:25:41.828410416 +0900
@@ -8,13 +8,14 @@ bin_PROGRAMS = paps
paps_CFLAGS = -Wall $(CUPS_CFLAGS)
paps_SOURCES = paps.c
paps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
-paps_LDFLAGS = `pkg-config --libs pangoft2` $(CUPS_LIBS)
+paps_LDFLAGS = $(CUPS_LIBS)
paps_DEPENDENCIES = $(lib_LTLIBRARIES)
EXTRA_DIST = test_libpaps.c paps.1
# set the include path found by configure
INCLUDES= $(all_includes) `pkg-config --cflags pangoft2`
+LIBS = `pkg-config --libs pangoft2`
# Test program
noinst_PROGRAMS = test_libpaps
@@ -22,6 +23,5 @@ noinst_PROGRAMS = test_libpaps
test_libpaps_SOURCES = test_libpaps.c
test_libpaps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
-test_libpaps_LDFLAGS = `pkg-config --libs pangoft2`
test_libpaps_DEPENDENCIES = $(lib_LTLIBRARIES)

@ -0,0 +1,15 @@
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
--- paps-0.6.8.orig/src/paps.c 2015-04-24 11:49:53.220718394 +0900
+++ paps-0.6.8/src/paps.c 2015-04-24 11:51:30.847718394 +0900
@@ -532,9 +532,9 @@ int main(int argc, char *argv[])
/* Page layout */
if (page_width < 0)
- page_width = paper_sizes[(int)paper_type].width;
+ page_width = (paper_sizes[(int)paper_type].width + 0.5);
if (page_height < 0)
- page_height = paper_sizes[(int)paper_type].height;
+ page_height = (paper_sizes[(int)paper_type].height + 0.5);
if (num_columns == 1)
total_gutter_width = 0;

@ -0,0 +1,18 @@
diff -pruN paps-0.8.0.orig/scripts/src-to-paps paps-0.8.0/scripts/src-to-paps
--- paps-0.8.0.orig/scripts/src-to-paps 2023-02-09 16:27:38.000000000 +0900
+++ paps-0.8.0/scripts/src-to-paps 2023-03-01 15:00:27.801416563 +0900
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
######################################################################
# Use GNU source-hightlight to turn source code into pango markup
@@ -49,7 +49,7 @@ def arg_if_not_none(param_name, val):
# Defaults
# TBD - Make this a configuration variable
-pango_outlang_path = '/usr/local/share/paps/pango_markup.outlang'
+pango_outlang_path = '/usr/share/paps/pango_markup.outlang'
parser = argparse.ArgumentParser(description='Process a file')
parser.add_argument('-o', '--output',

@ -0,0 +1,77 @@
@@ -, +, @@
---
src/libpaps.c | 40 +++++++++++++++++++++++++++++-----------
1 file changed, 29 insertions(+), 11 deletions(-)
--- a/src/libpaps.c
+++ a/src/libpaps.c
@@ -251,7 +251,6 @@ gchar *paps_layout_line_to_postscript_strdup(paps_t *paps_,
{
paps_private_t *paps = (paps_private_t*)paps_;
GString *layout_str = g_string_new("");
- gchar *ret_str;
add_line_to_postscript(paps,
layout_str,
@@ -259,10 +258,7 @@ gchar *paps_layout_line_to_postscript_strdup(paps_t *paps_,
pos_y,
layout_line);
- ret_str = layout_str->str;
- g_string_free(layout_str, FALSE);
-
- return ret_str;
+ return g_string_free(layout_str, FALSE);
}
static void
@@ -408,9 +404,26 @@ static void draw_contour(paps_private_t *paps,
{
GSList *runs_list;
double scale = 72.0 / PANGO_SCALE / PAPS_DPI;
+ PangoGlyphUnit avg_width = 1;
g_string_append(layout_str, "(");
-
+
+ if (paps->cpi > 0.0L)
+ {
+ /* calculate approximate width per a character */
+ for (runs_list = pango_line->runs; runs_list != NULL; runs_list = g_slist_next(runs_list))
+ {
+ PangoLayoutRun *run = runs_list->data;
+ PangoGlyphString *glyphs = run->glyphs;
+ int i;
+
+ for (i = 0; i < glyphs->num_glyphs; i++)
+ {
+ if (glyphs->glyphs[i].glyph != PANGO_GLYPH_EMPTY)
+ avg_width = MAX (avg_width, glyphs->glyphs[i].geometry.width);
+ }
+ }
+ }
/* Loop over the runs and output font info */
runs_list = pango_line->runs;
double x_pos = line_start_pos_x;
@@ -433,11 +446,16 @@ static void draw_contour(paps_private_t *paps,
glyph_pos_x = x_pos + 1.0*geometry.x_offset * scale;
glyph_pos_y = line_start_pos_y - 1.0*geometry.y_offset * scale;
- if (paps->cpi > 0.0L) {
- x_pos += (1 / paps->cpi * 72.0);
- } else {
- x_pos += geometry.width * scale * paps->scale_x;
- }
+ if (paps->cpi > 0.0L)
+ {
+ double n = ((double)geometry.width) / avg_width;
+
+ x_pos += n * (1 / paps->cpi * 72.0);
+ }
+ else
+ {
+ x_pos += geometry.width * scale * paps->scale_x;
+ }
if (glyphs->glyphs[glyph_idx].glyph == PANGO_GLYPH_EMPTY)
continue;
--

@ -0,0 +1,15 @@
diff -pruN paps-0.6.8.orig/src/libpaps.c paps-0.6.8/src/libpaps.c
--- paps-0.6.8.orig/src/libpaps.c 2014-03-20 12:10:50.000000000 +0900
+++ paps-0.6.8/src/libpaps.c 2014-03-20 12:11:54.000000000 +0900
@@ -25,8 +25,9 @@
#include <pango/pango.h>
#include <pango/pangoft2.h>
-#include <freetype/ftglyph.h>
-#include <freetype/ftoutln.h>
+#include <ft2build.h>
+#include FT_GLYPH_H
+#include FT_OUTLINE_H
#include <errno.h>
#include <locale.h>
#include <stdlib.h>

@ -0,0 +1,37 @@
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
--- paps-0.6.8.orig/src/paps.c 2008-09-01 15:07:03.000000000 +0900
+++ paps-0.6.8/src/paps.c 2008-09-01 15:49:10.000000000 +0900
@@ -25,6 +25,7 @@
#include <pango/pangoft2.h>
#include "libpaps.h"
#include <errno.h>
+#include <langinfo.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -331,6 +332,9 @@ int main(int argc, char *argv[])
GIConv cvh = NULL;
GOptionGroup *options;
+ /* Set locale from environment. */
+ setlocale(LC_ALL, "");
+
/* Prerequisite when using glib. */
g_type_init();
@@ -480,6 +484,15 @@ int main(int argc, char *argv[])
page_layout.scale_x = page_layout.scale_y = 1.0;
+ if (encoding == NULL)
+ {
+ encoding = g_strdup(nl_langinfo(CODESET));
+ if (!strcmp(encoding, "UTF-8"))
+ {
+ g_free(encoding);
+ encoding = NULL;
+ }
+ }
if (encoding != NULL)
{
cvh = g_iconv_open ("UTF-8", encoding);

@ -0,0 +1,8 @@
# Use the texttopaps filter (from the paps package) in preference to
# the texttops filter shipped as part of CUPS. This is so that we
# have full UTF-8 support.
#
# To use the default CUPS texttops filter instead, remove this file
# (or the package it belongs to).
text/plain application/postscript 30 texttopaps

@ -0,0 +1,502 @@
Name: paps
Version: 0.8.0
Release: 9%{?dist}
License: LGPL-2.0-or-later
URL: https://github.com/dov/paps
Source0: https://github.com/dov/paps/archive/v%{name}/%{name}-%{version}.tar.gz
Source1: paps.convs
Source2: 29-paps.conf
Source3: http://downloads.sourceforge.net/%{name}/%{name}-0.6.8.tar.gz
BuildRequires: make
BuildRequires: pango-devel automake autoconf libtool doxygen cups-devel intltool
BuildRequires: fmt-devel gcc-c++
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832897&group_id=153049&atid=786241
Patch0: paps-0.6.8-shared.patch
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832924&group_id=153049&atid=786241
Patch1: paps-0.6.8-wordwrap.patch
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832926&group_id=153049&atid=786241
Patch2: paps-langinfo.patch
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832929&group_id=153049&atid=786241
Patch3: paps-0.6.6-lcnumeric.patch
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832935&group_id=153049&atid=786241
Patch4: paps-exitcode.patch
## rhbz#854897
Patch5: paps-854897-manpage.patch
## Fedora specific patch to integrate with CUPS
Patch50: paps-cups.patch
Patch51: paps-cpilpi.patch
## rhbz#424951
Patch52: paps-dsc-compliant.patch
Patch53: paps-autoconf262.patch
## rhbz#524883
Patch54: paps-fix-cpi.patch
## rhbz#618483
Patch55: paps-fix-loop-in-split.patch
## rhbz#857592
Patch56: paps-fix-tab-width.patch
Patch57: paps-fix-non-weak-symbol.patch
Patch58: paps-correct-fsf-address.patch
## rhbz#1078519
Patch59: %{name}-ft-header.patch
## rhbz#1196997
Patch60: %{name}-a3.patch
## rhbz#1214939
Patch61: %{name}-fix-paper-size-truncate.patch
Patch62: paps-c99.patch
### For paps
Patch100: %{name}-fix-src-to-paps.patch
Patch101: %{name}-fix-build.patch
Summary: Plain Text to PostScript converter
%description
paps is a PostScript converter from plain text file using Pango.
%package -n texttopaps
Summary: CUPS filter based on paps
Obsoletes: %{name}-libs < %{version}
Obsoletes: %{name}-devel < %{version}
Requires: cups-filesystem fontpackages-filesystem
%description -n texttopaps
paps is a PostScript converter from plain text file using Pango.
This package contains a CUPS filter based on paps.
%prep
%setup -q -a 3
%patch 100 -p1 -b .src-to-paps
%patch 101 -p1 -b .build
pushd %{name}-0.6.8
%patch 0 -p1 -b .shared
%patch 1 -p1 -b .wordwrap
%patch 2 -p1 -b .langinfo
%patch 3 -p1 -b .lcnumeric
%patch 4 -p1 -b .exitcode
%patch 5 -p1 -b .manpage
%patch 50 -p1 -b .cups
%patch 51 -p1 -b .cpilpi
%patch 52 -p1 -b .dsc
%patch 53 -p1 -b .autoconf262
%patch 54 -p1 -b .fixcpi
%patch 55 -p1 -b .loop
%patch 56 -p1 -b .tab
%patch 57 -p1 -b .weak-symbol
%patch 58 -p1 -b .fsf
%patch 59 -p1 -b .ft-header
%patch 60 -p1 -b .a3
%patch 61 -p1 -b .paper-size
%patch 62 -p2 -b .configure-c99
libtoolize -f -c
autoreconf -f -i
popd
%build
./autogen.sh
%set_build_flags
%if 0%{?rhel}
CXXFLAGS="$CXXFLAGS -DFMT_HEADER_ONLY"
%endif
%configure --disable-static
make %{?_smp_mflags}
pushd %{name}-0.6.8
%configure --disable-static
make %{?_smp_mflags}
popd
%install
pushd %{name}-0.6.8
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="/usr/bin/install -p"
# remove unnecessary files
rm $RPM_BUILD_ROOT%{_libdir}/libpaps.la
# make a symlink for CUPS filter
install -d $RPM_BUILD_ROOT%{_cups_serverbin}/filter # Not libdir
mv $RPM_BUILD_ROOT%{_bindir}/paps $RPM_BUILD_ROOT%{_cups_serverbin}/filter/texttopaps
mv $RPM_BUILD_ROOT%{_mandir}/man1/paps.1 $RPM_BUILD_ROOT%{_mandir}/man1/texttopaps.1
install -d $RPM_BUILD_ROOT%{_datadir}/cups/mime
install -p -m0644 %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/cups/mime/
install -d $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d
install -p -m0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d/
rm -rf $RPM_BUILD_ROOT%{_includedir}
rm $RPM_BUILD_ROOT%{_libdir}/libpaps.so
popd
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="/usr/bin/install -p"
%ldconfig_scriptlets libs
%files
%doc AUTHORS COPYING.LIB README
%{_bindir}/paps
%{_bindir}/src-to-paps
%{_datadir}/paps/pango_markup.outlang
%{_mandir}/man1/paps.1*
%files -n texttopaps
%doc %{name}-0.6.8/COPYING.LIB %{name}-0.6.8/AUTHORS %{name}-0.6.8/README
%{_mandir}/man1/texttopaps.1*
%{_libdir}/libpaps.so.*
%{_cups_serverbin}/filter/texttopaps
%{_datadir}/cups/mime/paps.convs
%{_sysconfdir}/fonts/conf.d/29-paps.conf
%changelog
* Tue Nov 26 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 0.8.0-9
- Rebuilt for MSVSphere 10
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 0.8.0-9
- Bump release for June 2024 mass rebuild
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jan 17 2024 Akira TAGOH <tagoh@redhat.com> - 0.8.0-6
- Fix C type error in paps 0.6.8.
Resolves: rhbz#2256906
* Mon Aug 14 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 0.8.0-5
- Use fmt in header-only mode in RHEL builds
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed Jun 28 2023 Vitaly Zaitsev <vitaly@easycoding.org> - 0.8.0-3
- Rebuilt due to fmt 10 update.
* Thu Apr 13 2023 Florian Weimer <fweimer@redhat.com> - 0.8.0-2
- C99 compatibility fixes for paps 0.6.8
* Wed Mar 1 2023 Akira TAGOH <tagoh@redhat.com> - 0.8.0-1
- New upstream release.
Resolves: rhbz#2168726
* Tue Feb 7 2023 Akira TAGOH <tagoh@redhat.com> - 0.7.9-1
- New upstream release.
Resolves: rhbz#2164212
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Mon Dec 5 2022 Akira TAGOH <tagoh@redhat.com> - 0.7.1-6
- Convert License tag to SPDX.
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Thu Oct 8 2020 Akira TAGOH <tagoh@redhat.com> - 0.7.1-1
- New upstream release.
Resolves: rhbz#1254352
- Sub-package texttopaps with old code.
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-46
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-45
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-44
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-43
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-42
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-41
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 0.6.8-40
- Rebuilt for switch to libxcrypt
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-39
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-38
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-37
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-36
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-35
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Fri Apr 24 2015 Akira TAGOH <tagoh@redhat.com> - 0.6.8-34
- Fix wrong paper size due to the integer cast.
* Mon Mar 2 2015 Akira TAGOH <tagoh@redhat.com> - 0.6.8-33
- Support A3 paper size.
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 0.6.8-32
- Rebuilt for Fedora 23 Change
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
* Fri Oct 31 2014 Akira TAGOH <tagoh@redhat.com> - 0.6.8-31
- Add a fontconfig config to force the scalable font.
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-30
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Fri Jun 06 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-29
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Thu Mar 20 2014 Akira TAGOH <tagoh@redhat.com> - 0.6.8-28
- Fix FTBFS against freetype's header files location change. (#1078519)
* Mon Dec 16 2013 Akira TAGOH <tagoh@redhat.com> - 0.6.8-27
- Move the place of paps.convs to %%{_datadir}/cups/mime. (#1042984)
* Wed Jul 31 2013 Akira TAGOH <tagoh@redhat.com> - 0.6.8-26
- Fix the width calculation with CPI enabled. (#990228)
* Thu Apr 18 2013 Akira TAGOH <tagoh@redhat.com> - 0.6.8-25
- Rebuilt for aarch64 support. (#926309)
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-24
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Fri Nov 23 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-23
- the spec file cleanup
- Fix the undefined symbol issue in libpaps.so.0
- Correct FSF address in the COPYING.LIB
* Mon Sep 24 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-22
- Ensure the latest version of paps-libs are installed.
* Fri Sep 21 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-21
- Fix wrong width for whitespaces when enabling CPI feature. (#857592)
* Thu Sep 6 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-20
- Add a missing description of --encoding in manpage. (#854897)
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-19
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Wed Jan 11 2012 Akira TAGOH <tagoh@redhat.com> - 0.6.8-18
- Use %%{_cups_serverbin} instead of the hardcoded path. (#772240)
* Mon Dec 5 2011 Akira TAGOH <tagoh@redhat.com> - 0.6.8-17
- Add ldconfig in %%post/%%postun for paps-libs (#759880)
* Fri Jun 24 2011 Akira TAGOH <tagoh@redhat.com> - 0.6.8-16
- Fix FTBFS issue. (#716211)
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Tue Jul 27 2010 Akira TAGOH <tagoh@redhat.com> - 0.6.8-14
- Fix the infinite loop in splitting paragraphs (#618483)
* Fri Mar 12 2010 Akira TAGOH <tagoh@redhat.com> - 0.6.8-13
- Fix the directory's group ownership. (#572733)
* Tue Dec 8 2009 Akira TAGOH <tagoh@redhat.com> - 0.6.8-12
- Add paps.convs to behaves the cups filter without the hardcoded thing
in cups. (#545031)
* Wed Oct 14 2009 Akira TAGOH <tagoh@redhat.com> - 0.6.8-11
- Fix code that deal with CPI parameter to be accurate. (#524883)
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6.8-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Mon Nov 17 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-8
- Courier font to be a default font for texttopaps. (#469325)
* Mon Sep 1 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-7
- paps-langinfo.patch: Updated.
- paps-exitcode.patch: Updated.
* Fri May 16 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-6
- paps-cups.patch: Fix printing with -o landscape in CUPS. (#222137)
- paps-autoconf262.patch: Fix an error on autoreconf.
* Tue Feb 12 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-5
- Rebuild for gcc-4.3.
* Wed Jan 23 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-4
- Fix an exception on ghostscript. (#429275)
* Tue Jan 15 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-3
- Put %%%%Pages: after %%%%Trailer. (#424951)
* Thu Jan 10 2008 Akira TAGOH <tagoh@redhat.com> - 0.6.8-2
- paps-0.6.8-dsc-compliant.patch: Patch out to be DSC compliant. (#424951)
* Fri Nov 30 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.8-1
- New upstream release.
- Remove patches merged and unnecessary anymore:
- paps-makefile.patch
- paps-formfeed.patch
- paps-0.6.6-encoding.patch
- paps-typo-font-scale.patch
- paps-0.6.6-segfault.patch
- paps-0.6.6-font-option.patch
- paps-0.6.6-lcctype.patch
- paps-0.6.8-shared.patch: Enable building shared library.
- paps-0.6.8-wordwrap.patch: Update a bit to get it working without an wordwrap
mode.
- Add paps-libs and paps-devel package.
- paps-cups.patch: Update.
- paps-cpilpi.patch: Update.
- Fix the wrong rendering with CPI option. (#237202)
- Fix the unnecessary rotation with the landscape option when paps is running
as CUPS filter. (#222137)
* Thu Aug 23 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-21
- Rebuild
* Fri Aug 10 2007 Akira TAGOH <tagoh@redhat.com>
- Update License tag.
* Wed May 30 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-20
- Fix to not do wordwrap when 'wrap=false' is given. (#240588)
* Tue Mar 27 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-19
- Fix PostScript breakage following the non-monetary numeric format from
current locale. (#231916)
* Wed Mar 7 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-18
- default to lpi=6 and cpi=10 if paps is bringing up as cups filter. (#223862)
* Tue Jan 23 2007 Akira TAGOH <tagoh@redhat.com>
- Better the encoding guess by looking at current locale. (#212154)
* Mon Dec 4 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-17
- Fix a segfault on non-printable character. (#216296)
* Sat Sep 30 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-16
- paps-0.6.6-exitcode.patch: exit immediately with proper exit code
when unrecoverable error occurs. (#208592)
* Fri Sep 29 2006 Tim Waugh <twaugh@redhat.com> - 0.6.6-15
- Avoid using iconv when not needed (bug #206259).
* Thu Sep 14 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-14
- paps-cups.patch: try to parse input even if any invalid character appears.
(#206259)
* Thu Aug 31 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-13
- paps-formfeed.patch: fixed to not insert an extra line in next page.
(#202731)
* Thu Aug 17 2006 Tim Waugh <twaugh@redhat.com> - 0.6.6-12
- Map CUPS charset names to real ones (bug #197577).
* Mon Jul 17 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-11
- add an owner info to PS.
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 0.6.6-10.2
- rebuild
* Tue Jul 4 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-10
- paps-0.6.6-cpilpi.patch: add --cpi and --lpi option to support the characters
per inch and the lines per inch.
- paps-cups.patch: add cpi and lpi support.
* Thu Jun 29 2006 Tim Waugh <twaugh@redhat.com> - 0.6.6-9
- Fixed font-option patch.
- Adjusted CUPS patch: CUPS invokes the filter with the destination
printer name in argv[0], not the binary name.
- CUPS filter lives in CUPS_SERVERBIN, which is /usr/lib/cups on all
architectures -- not %%{_libdir}/cups.
* Thu Jun 29 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-8
- use dist tag.
- paps-cups.patch: applied to work paps as CUPS filter.
- paps-0.6.6-encoding.patch: null-terminates the output.
* Tue Jun 27 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-7
- rebuilt to import into Core.
* Wed Jun 21 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-6
- paps-0.6.6-wordwrap.patch: applied to do a wordwrap.
* Tue Jun 20 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-5
- paps-typo-font-scale.patch: backported from CVS.
- paps-0.6.6-font-option.patch: integrated --font-family and --font-scale
options to --font.
- paps-0.6.6-lcctype.patch: follow LC_CTYPE to determine the default language.
* Fri Jun 16 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-4
- added libtool and doxygen to BuildReq.
- removed NEWS file which is empty.
* Mon Jun 12 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-3
- use make install DESTDIR=... instead of %%makeinstall
- add automake and autoconf to BuildReq.
* Thu May 25 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-2
- paps-0.6.6-encoding.patch: support --encoding option to be able to convert
the input file to UTF-8.
- paps-0.6.6-segfault.patch: fixed a possible segfault issue when reading is
failed.
* Fri May 19 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.6-1
- New upstream release.
* Mon Apr 17 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.5-1
- New upstream release.
- paps-0.6.3-fix-pagesize.patch: removed. it has been merged in upstream.
- paps-0.6.3-goption.patch: removed. it has been merged in upstream.
- paps-0.6.3-header.patch: removed. it has been merged in upstream.
- paps-makefile.patch: rework to be applied.
* Fri Mar 31 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.3-4
- paps-0.6.3-formfeed.patch: applied to deal with the formfeed mark properly.
- paps-0.6.3-goption.patch: rewritten option parser using GOption. and segfault
gone as well. (#187205)
- paps-0.6.3-header.patch: applied to support the output of the page header.
* Fri Mar 24 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.3-3
- paps-0.6.3-fix-pagesize.patch: fixed displaying the beginning of line at out of page. (#176207)
* Thu Mar 2 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.3-2
- rebuilt.
* Wed Jan 11 2006 Akira TAGOH <tagoh@redhat.com> - 0.6.3-1
- New upstream release.
- paps-0.6.2-fix-bufferoverflow.patch: removed.
* Wed Dec 21 2005 Akira TAGOH <tagoh@redhat.com> - 0.6.2-1
- New upstream release.
- the bitmap font is now ignored. (#176206)
- paps-0.6.2-fix-bufferoverflow.patch: applied to fix the buffer overflow.
* Tue Dec 13 2005 Akira TAGOH <tagoh@redhat.com> - 0.6.1-1
- New upstream release.
- paps-0.6.1-makefile.patch: applied to install docs on the proper dir.
* Fri Nov 4 2005 Akira TAGOH <tagoh@redhat.com> - 0.5-1
- New upstream release.
* Tue Oct 18 2005 Akira TAGOH <tagoh@redhat.com> - 0.3-1
- Initial package.
Loading…
Cancel
Save