diff -Nru abcm2ps-8.14.13/abcm2ps.h abcm2ps-8.14.14/abcm2ps.h --- abcm2ps-8.14.13/abcm2ps.h 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/abcm2ps.h 2022-12-19 09:32:52.000000000 +0000 @@ -544,7 +544,7 @@ int staffnonote, straightflags, stretchstaff; int textoption, titlecaps, titleleft, titletrim; int timewarn, transpose, tuplets; - char *bgcolor, *dateformat, *header, *footer, *titleformat; + char *bgcolor, *dateformat, *header, *footer, *header2, *footer2, *titleformat; char *musicfont; struct FONTSPEC font_tb[FONT_MAX]; char ndfont; /* current index of dynamic fonts */ diff -Nru abcm2ps-8.14.13/buffer.c abcm2ps-8.14.14/buffer.c --- abcm2ps-8.14.13/buffer.c 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/buffer.c 2022-12-19 09:32:52.000000000 +0000 @@ -434,12 +434,18 @@ int cft_sav, dft_sav, outbufsz_sav; if (header) { - p = cfmt.header; + if (pagenum & 1) + p = cfmt.header ? cfmt.header : cfmt.header2; + else + p = cfmt.header2 ? cfmt.header2 : cfmt.header; f = &cfmt.font_tb[HEADERFONT]; size = f->size; y = -size; } else { - p = cfmt.footer; + if (pagenum & 1) + p = cfmt.footer ? cfmt.footer : cfmt.footer2; + else + p = cfmt.footer2 ? cfmt.footer2 : cfmt.footer; f = &cfmt.font_tb[FOOTERFONT]; size = f->size; y = - (pheight - cfmt.topmargin - cfmt.botmargin) @@ -609,7 +615,7 @@ if (p) cfmt.header = strdup(p); } - if (cfmt.header) { + if (cfmt.header || cfmt.header2) { float dy; dy = headfooter(1, pwidth, pheight); @@ -618,7 +624,7 @@ remy -= dy; } } - if (cfmt.footer) + if (cfmt.footer || cfmt.footer2) remy -= headfooter(0, pwidth, pheight); pagenum++; pagenum_nr++; diff -Nru abcm2ps-8.14.13/configure abcm2ps-8.14.14/configure --- abcm2ps-8.14.13/configure 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/configure 2022-12-19 09:32:52.000000000 +0000 @@ -1,8 +1,8 @@ #! /bin/sh # (automatic update) -VERSION=8.14.13 -VDATE=2022-01-29 +VERSION=8.14.14 +VDATE=2022-12-19 : "${CC:=gcc}" : "${PKG_CONFIG:=pkg-config}" diff -Nru abcm2ps-8.14.13/debian/changelog abcm2ps-8.14.14/debian/changelog --- abcm2ps-8.14.13/debian/changelog 2022-03-10 20:58:42.000000000 +0000 +++ abcm2ps-8.14.14/debian/changelog 2022-12-21 14:30:39.000000000 +0000 @@ -1,3 +1,14 @@ +abcm2ps (8.14.14-1) unstable; urgency=medium + + * New upstream version 8.14.14 + * Add git-buildpackage minimal configuration + * Standards-Version: 4.6.2 (no changes) + + [ Helmut Grohne ] + * Fix FTCBFS: export cross build tools for configure. Closes: #1024922 + + -- Nicolas Boulenguez Wed, 21 Dec 2022 15:30:39 +0100 + abcm2ps (8.14.13-2) unstable; urgency=medium * Revert "only force debhelper build system for the affected command". diff -Nru abcm2ps-8.14.13/debian/control abcm2ps-8.14.14/debian/control --- abcm2ps-8.14.13/debian/control 2022-03-10 20:58:00.000000000 +0000 +++ abcm2ps-8.14.14/debian/control 2022-12-21 14:21:35.000000000 +0000 @@ -9,7 +9,7 @@ libpango1.0-dev, pkg-config, python3-docutils, -Standards-Version: 4.6.0 +Standards-Version: 4.6.2 Rules-Requires-Root: no Vcs-Browser: https://salsa.debian.org/debian/abcm2ps Vcs-Git: https://salsa.debian.org/debian/abcm2ps.git diff -Nru abcm2ps-8.14.13/debian/gbp.conf abcm2ps-8.14.14/debian/gbp.conf --- abcm2ps-8.14.13/debian/gbp.conf 1970-01-01 00:00:00.000000000 +0000 +++ abcm2ps-8.14.14/debian/gbp.conf 2022-12-21 14:20:39.000000000 +0000 @@ -0,0 +1,3 @@ +[DEFAULT] +debian-branch = debian/master +upstream-branch = upstream/master diff -Nru abcm2ps-8.14.13/debian/rules abcm2ps-8.14.14/debian/rules --- abcm2ps-8.14.13/debian/rules 2022-03-10 20:58:00.000000000 +0000 +++ abcm2ps-8.14.14/debian/rules 2022-12-21 14:24:58.000000000 +0000 @@ -2,6 +2,9 @@ export DEB_BUILD_MAINT_OPTIONS := hardening=+all +DPKG_EXPORT_BUILDTOOLS := 1 +include /usr/share/dpkg/buildtools.mk + # Debhelper autotedects ninja as the build system. %: dh $@ --buildsystem=autoconf diff -Nru abcm2ps-8.14.13/deco.c abcm2ps-8.14.14/deco.c --- abcm2ps-8.14.13/deco.c 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/deco.c 2022-12-19 09:32:52.000000000 +0000 @@ -1076,6 +1076,7 @@ struct deco_def_s *dd; unsigned char ideco; static char must_note_fmt[] = "Deco !%s! must be on a note"; + static char no_head_fmt[] = "!%s! cannot be on a head"; for (i = dc->n; --i >= 0; ) { if ((ideco = dc->tm[i].t) == 0) @@ -1089,13 +1090,16 @@ /* special decorations */ switch (dd->func) { + case 5: + case 6: + case 7: case 2: // arp if (m >= 0) { - error(1, s, - "!%s! cannot be on a head (function 2)", - dd->name); + error(1, s, no_head_fmt, dd->name); break; } + if (dd->func != 2) + continue; /* fall thru */ case 0: // near diff -Nru abcm2ps-8.14.13/draw.c abcm2ps-8.14.14/draw.c --- abcm2ps-8.14.13/draw.c 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/draw.c 2022-12-19 09:32:52.000000000 +0000 @@ -1244,6 +1244,7 @@ case B_BAR: if (s->u.bar.dotted) psf = "dotbar"; + x -= 1; break; case B_OBRA: case B_CBRA: diff -Nru abcm2ps-8.14.13/format.c abcm2ps-8.14.14/format.c --- abcm2ps-8.14.13/format.c 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/format.c 2022-12-19 09:32:52.000000000 +0000 @@ -66,6 +66,7 @@ {"decoerr", &cfmt.decoerr, FORMAT_B, 0}, {"dynalign", &cfmt.dynalign, FORMAT_B, 0}, {"footer", &cfmt.footer, FORMAT_S, 0}, + {"footer2", &cfmt.footer2, FORMAT_S, 0}, {"footerfont", &cfmt.font_tb[FOOTERFONT], FORMAT_F, 0}, {"flatbeams", &cfmt.flatbeams, FORMAT_B, 0}, {"flatbeamgracing", &cfmt.flatbeamgracing, FORMAT_B, 0}, @@ -76,6 +77,7 @@ {"gracespace", &cfmt.gracespace, FORMAT_I, 5}, {"gutter", &cfmt.gutter, FORMAT_U, 0}, {"header", &cfmt.header, FORMAT_S, 0}, + {"header2", &cfmt.header2, FORMAT_S, 0}, {"headerfont", &cfmt.font_tb[HEADERFONT], FORMAT_F, 0}, {"historyfont", &cfmt.font_tb[HISTORYFONT], FORMAT_F, 0}, {"hyphencont", &cfmt.hyphencont, FORMAT_B, 0}, diff -Nru abcm2ps-8.14.13/front.c abcm2ps-8.14.14/front.c --- abcm2ps-8.14.13/front.c 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/front.c 2022-12-19 09:32:52.000000000 +0000 @@ -583,14 +583,13 @@ } } - // ignore '%' or '%%' at start of line + // '%' starts a comment + // otherwise remove '%%' at start of line if (*s == '%') { - s++; - l--; - if (*s == '%') { - s++; - l--; - } + if (!strchr(prefix, s[1])) + goto ignore; + s += 2; + l -= 2; } goto next; } diff -Nru abcm2ps-8.14.13/parse.c abcm2ps-8.14.14/parse.c --- abcm2ps-8.14.13/parse.c 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/parse.c 2022-12-19 09:32:52.000000000 +0000 @@ -480,6 +480,7 @@ } break; #endif + case FMTCHG: case TEMPO: case PART: case TUPLET: @@ -3583,6 +3584,7 @@ sym_link(s, MREST); s->dur = dur; curvoice->time += dur; + s->color = curvoice->color; if (s->text) gch_build(s); /* build the guitar chords */ if (s->u.bar.dc.n > 0) @@ -4385,12 +4387,8 @@ } } - /* convert the decorations - * (!beam-accel! and !beam-rall! may change the note duration) - * (!8va(! may change ottava) - */ - if (s->u.note.dc.n > 0) - deco_cnv(&s->u.note.dc, s, prev); + // the conversion of decorations must be done later + // for !trem! in grace notes if (curvoice->ottava) { delta = curvoice->ottava; @@ -4437,6 +4435,13 @@ } } + /* convert the decorations + * (!beam-accel! and !beam-rall! may change the note duration) + * (!8va(! may change ottava) + */ + if (s->u.note.dc.n > 0) + deco_cnv(&s->u.note.dc, s, prev); + s->nohdi1 = s->nohdi2 = -1; /* change the figure of whole measure rests */ diff -Nru abcm2ps-8.14.13/subs.c abcm2ps-8.14.14/subs.c --- abcm2ps-8.14.13/subs.c 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/subs.c 2022-12-19 09:32:52.000000000 +0000 @@ -58,9 +58,14 @@ 500,500,444,480,200,480,541,500, }; +// PS/SVG user definitions +// This structure is dynamically created by malloc +// so that the field 'text' has the exact size of the user string. +// The size of this field in the structure is big enough +// to avoid most warnings of the C compiler. static struct u_ps { struct u_ps *next; - char text[2]; + char text[100000]; } *user_ps; /* -- print message for internal error and maybe stop -- */ diff -Nru abcm2ps-8.14.13/syms.c abcm2ps-8.14.14/syms.c --- abcm2ps-8.14.13/syms.c 2022-01-29 09:43:54.000000000 +0000 +++ abcm2ps-8.14.14/syms.c 2022-12-19 09:32:52.000000000 +0000 @@ -374,7 +374,7 @@ /* -- bars -- */ /* h x y bar - thin bar */ - "/bar{M 1 SLW 0 exch RL stroke}!\n" + "/bar{3 -1 roll 1 exch rectfill}!\n" /* h x y dotbar - dotted bar */ "/dotbar{[5] 0 setdash bar [] 0 setdash}!\n" /* h x y thbar - thick bar */