Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package xmp for openSUSE:Factory checked in at 2026-08-01 18:30:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xmp (Old) and /work/SRC/openSUSE:Factory/.xmp.new.16738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xmp" Sat Aug 1 18:30:50 2026 rev:14 rq:1368656 version:4.3.1 Changes: -------- --- /work/SRC/openSUSE:Factory/xmp/xmp.changes 2026-05-10 16:48:44.553806269 +0200 +++ /work/SRC/openSUSE:Factory/.xmp.new.16738/xmp.changes 2026-08-01 18:33:15.147928656 +0200 @@ -1,0 +2,6 @@ +Thu Jul 30 16:06:37 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 4.3.1 + * Use nanosleep() as the delay procedure on Unices if available. + +------------------------------------------------------------------- Old: ---- xmp-4.3.0.tar.gz New: ---- xmp-4.3.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xmp.spec ++++++ --- /var/tmp/diff_new_pack.yMiitP/_old 2026-08-01 18:33:17.260001499 +0200 +++ /var/tmp/diff_new_pack.yMiitP/_new 2026-08-01 18:33:17.292002602 +0200 @@ -17,13 +17,12 @@ Name: xmp -Version: 4.3.0 +Version: 4.3.1 Release: 0 Summary: Extended Module Player for MOD/S3M/XM/IT/etc. License: GPL-2.0-or-later Group: Productivity/Multimedia/Sound/Players URL: http://xmp.sf.net/ - #Git-Clone: https://github.com/libxmp/xmp-cli Source: https://github.com/libxmp/xmp-cli/releases/download/xmp-%version/xmp-%version.tar.gz BuildRequires: pkgconfig @@ -39,7 +38,7 @@ Tracker (IT) files. %prep -%autosetup +%autosetup -p1 %build %configure ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.yMiitP/_old 2026-08-01 18:33:17.588012811 +0200 +++ /var/tmp/diff_new_pack.yMiitP/_new 2026-08-01 18:33:17.628014191 +0200 @@ -1,5 +1,5 @@ -mtime: 1778388007 -commit: c24d553c5cda3372c12455713b254e8c2b1435e0f7eac509d9959dcc83635e11 +mtime: 1785427639 +commit: d00e33c56ed460f27ef73e4221c2729d283dc579d89a4af3c792338606452fbf url: https://src.opensuse.org/jengelh/xmp revision: master ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-07-30 18:07:19.000000000 +0200 @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild ++++++ xmp-4.3.0.tar.gz -> xmp-4.3.1.tar.gz ++++++ ++++ 2904 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/Changelog new/xmp-4.3.1/Changelog --- old/xmp-4.3.0/Changelog 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/Changelog 2026-07-25 07:47:50.000000000 +0200 @@ -1,6 +1,12 @@ Stable versions --------------- +4.3.1 (20260725): + - Fixed arrow keys not working on windows, dos or os2 + - Use nanosleep() as the delay procedure on unices if available. + - Fixed Amiga version of the delay procedure. + - Added an OS/2 EMX makefile for KLIBC environment. + 4.3.0 (20260508): Changes by Alice Rowan: - Support 24-bit and 32-bit output (requires libxmp 4.7.0+): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/Makefile.am new/xmp-4.3.1/Makefile.am --- old/xmp-4.3.0/Makefile.am 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/Makefile.am 2026-07-25 07:47:50.000000000 +0200 @@ -2,6 +2,6 @@ SUBDIRS = src -EXTRA_DIST = CREDITS Changelog autogen.sh girl_from_mars.xm \ - Makefile.dos Makefile.os2 Makefile.w32 watcom.mif \ +EXTRA_DIST = CREDITS Changelog autogen.sh girl_from_mars.xm \ + Makefile.dos Makefile.emx Makefile.os2 Makefile.w32 watcom.mif \ vc/xmp.vcproj vc/xmp.sln diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/Makefile.dos new/xmp-4.3.1/Makefile.dos --- old/xmp-4.3.0/Makefile.dos 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/Makefile.dos 2026-07-25 07:47:50.000000000 +0200 @@ -1,7 +1,7 @@ # Makefile for MS-DOS using Watcom compiler. # # wmake -f Makefile.dos -# - builds using the static library xmp_static.lib +# - builds xmp.exe linking to the static library xmp_static.lib # target = static # change libxmp_path as needed (or specify on the wmake cmdline) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/Makefile.emx new/xmp-4.3.1/Makefile.emx --- old/xmp-4.3.0/Makefile.emx 1970-01-01 01:00:00.000000000 +0100 +++ new/xmp-4.3.1/Makefile.emx 2026-07-25 07:47:50.000000000 +0200 @@ -0,0 +1,38 @@ +# GNU Makefile for OS/2 -- using GCC/EMX KLIBC environment +# make -f Makefile.emx +# +# Building against libxmp >= 4.7.1, which includes a Makefile.emx, +# is recommended. + +# change libxmp_path as needed (or specify on the make cmdline.) +ifeq ($(libxmp_path),) +libxmp_path = ../libxmp +endif + +EXE = xmp.exe + +ifeq ($(CROSS),) +CC = gcc +else +CC = $(CROSS)-gcc +endif +CPPFLAGS= -DSOUND_OS2DART -DHAVE_SIGNAL_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H +CFLAGS = -I$(libxmp_path)/include -Wall -O2 -fsigned-char -Zmt +LDFLAGS = -Zomf -Zmt +LDLIBS = -L$(libxmp_path) -lxmp -lmmpm2 + +OBJS = commands.o delay.o getopt_long.o info.o main.o options.o read_config.o sound.o sound_dart.o sound_aiff.o sound_file.o sound_wav.o sound_null.o terminal.o util.o + +.PHONY: clean distclean + +all: $(EXE) + +%.o: src/%.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +$(EXE): $(OBJS) + $(CC) $(OBJS) $(LDFLAGS) $(LDLIBS) -o $@ +clean: + $(RM) *.o +distclean: clean + $(RM) $(EXE) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/Makefile.os2 new/xmp-4.3.1/Makefile.os2 --- old/xmp-4.3.0/Makefile.os2 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/Makefile.os2 2026-07-25 07:47:50.000000000 +0200 @@ -1,10 +1,10 @@ # Makefile for OS/2 using Watcom compiler. # # wmake -f Makefile.os2 -# - builds using libxmp.dll and its import lib (libxmp.lib) +# - builds xmp.exe linking to libxmp.lib (the import library of libxmp.dll) # # wmake -f Makefile.os2 target=static -# - builds using the static library xmp_static.lib +# - builds xmp.exe linking to the static library xmp_static.lib # !ifndef target target = dll diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/Makefile.w32 new/xmp-4.3.1/Makefile.w32 --- old/xmp-4.3.0/Makefile.w32 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/Makefile.w32 2026-07-25 07:47:50.000000000 +0200 @@ -1,10 +1,10 @@ # Makefile for Win32 using Watcom compiler. # # wmake -f Makefile.w32 -# - builds using libxmp.dll and its import lib (libxmp.lib) +# - builds xmp.exe linking to libxmp.lib (the import library of libxmp.dll) # # wmake -f Makefile.w32 target=static -# - builds using the static library xmp_static.lib +# - builds xmp.exe linking to the static library xmp_static.lib # !ifndef target target = dll diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/build-aux/compile new/xmp-4.3.1/build-aux/compile --- old/xmp-4.3.0/build-aux/compile 2026-05-10 05:20:10.000000000 +0200 +++ new/xmp-4.3.1/build-aux/compile 2026-07-30 13:11:00.000000000 +0200 @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2025-06-18.21; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2025 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey <[email protected]>. # # This program is free software; you can redistribute it and/or modify @@ -37,11 +37,11 @@ file_conv= -# func_file_conv build_file unneeded_conversions +# func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no -# conversion will take place. +# type is listed in (the comma separated) LAZY, no conversion will +# take place. func_file_conv () { file=$1 @@ -51,20 +51,9 @@ # lazily determine how to convert abs files case `uname -s` in MINGW*) - if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then - # MSYS2 environment. - file_conv=cygwin - else - # Original MinGW environment. - file_conv=mingw - fi + file_conv=mingw ;; - MSYS*) - # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell. - file_conv=cygwin - ;; - CYGWIN*) - # Cygwin environment. + CYGWIN* | MSYS*) file_conv=cygwin ;; *) @@ -74,14 +63,12 @@ fi case $file_conv/,$2, in *,$file_conv,*) - # This is the optimization mentioned above: - # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert. ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) - file=`cygpath -w "$file" || echo "$file"` + cygwin/* | msys/*) + file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` @@ -156,7 +143,7 @@ # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in - *.o | *.lo | *.[oO][bB][jJ]) + *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift @@ -261,17 +248,14 @@ right script to run: please start by reading the file 'INSTALL'. Report bugs to <[email protected]>. -GNU Automake home page: <https://www.gnu.org/software/automake/>. -General help using GNU software: <https://www.gnu.org/gethelp/>. EOF exit $? ;; -v | --v*) - echo "compile (GNU Automake) $scriptversion" + echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ - clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; @@ -356,9 +340,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/build-aux/missing new/xmp-4.3.1/build-aux/missing --- old/xmp-4.3.0/build-aux/missing 2026-05-10 05:20:10.000000000 +0200 +++ new/xmp-4.3.1/build-aux/missing 2026-07-30 13:11:00.000000000 +0200 @@ -1,11 +1,9 @@ #! /bin/sh -# Common wrapper for a few potentially missing GNU and other programs. +# Common wrapper for a few potentially missing GNU programs. -scriptversion=2025-06-18.21; # UTC +scriptversion=2018-03-07.03; # UTC -# shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells - -# Copyright (C) 1996-2025 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <[email protected]>, 1996. # This program is free software; you can redistribute it and/or modify @@ -56,20 +54,18 @@ -v, --version output version information and exit Supported PROGRAM values: -aclocal autoconf autogen autoheader autom4te automake autoreconf -bison flex help2man lex makeinfo perl yacc + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. -Report bugs to <[email protected]>. -GNU Automake home page: <https://www.gnu.org/software/automake/>. -General help using GNU software: <https://www.gnu.org/gethelp/>." +Send bug reports to <[email protected]>." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing (GNU Automake) $scriptversion" + echo "missing $scriptversion (GNU Automake)" exit $? ;; @@ -112,7 +108,7 @@ program_details () { case $1 in - aclocal|automake|autoreconf) + aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" @@ -127,9 +123,6 @@ echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; - *) - : - ;; esac } @@ -144,55 +137,48 @@ printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" - autoheader_deps="'acconfig.h'" - automake_deps="'Makefile.am'" - aclocal_deps="'acinclude.m4'" case $normalized_program in - aclocal*) - echo "You should only need it if you modified $aclocal_deps or" - echo "$configure_deps." - ;; autoconf*) - echo "You should only need it if you modified $configure_deps." - ;; - autogen*) - echo "You should only need it if you modified a '.def' or '.tpl' file." - echo "You may want to install the GNU AutoGen package:" - echo "<$gnu_software_URL/autogen/>" + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' ;; autoheader*) - echo "You should only need it if you modified $autoheader_deps or" + echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." + program_details 'autoheader' ;; automake*) - echo "You should only need it if you modified $automake_deps or" + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." + program_details 'aclocal' ;; - autom4te*) + autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." - ;; - autoreconf*) - echo "You should only need it if you modified $aclocal_deps or" - echo "$automake_deps or $autoheader_deps or $automake_deps or" - echo "$configure_deps." + program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; - lex*|flex*) - echo "You should only need it if you modified a '.l' file." - echo "You may want to install the Fast Lexical Analyzer package:" - echo "<$flex_URL>" - ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." @@ -203,12 +189,6 @@ echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; - perl*) - echo "You should only need it to run GNU Autoconf, GNU Automake, " - echo " assorted other tools, or if you modified a Perl source file." - echo "You may want to install the Perl 5 language interpreter:" - echo "<$perl_URL>" - ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" @@ -217,7 +197,6 @@ echo "case some other package contains this missing '$1' program." ;; esac - program_details "$normalized_program" } give_advice "$1" | sed -e '1s/^/WARNING: /' \ @@ -228,9 +207,9 @@ exit $st # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/configure.ac new/xmp-4.3.1/configure.ac --- old/xmp-4.3.0/configure.ac 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/configure.ac 2026-07-25 07:47:50.000000000 +0200 @@ -1,5 +1,5 @@ AC_PREREQ([2.60]) -AC_INIT([xmp], [4.3.0]) +AC_INIT([xmp], [4.3.1]) AC_CONFIG_AUX_DIR([build-aux]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)]) AM_INIT_AUTOMAKE([1.10 foreign subdir-objects]) @@ -287,6 +287,6 @@ int main(){}], CFLAGS="${CFLAGS} -Wno-unused-result") -AC_CHECK_FUNCS(kill getopt_long usleep select) +AC_CHECK_FUNCS(kill getopt_long nanosleep usleep select) AC_CONFIG_FILES([Makefile src/Makefile]) AC_OUTPUT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/src/commands.c new/xmp-4.3.1/src/commands.c --- old/xmp-4.3.0/src/commands.c 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/src/commands.c 2026-07-25 07:47:50.000000000 +0200 @@ -1,5 +1,5 @@ /* Extended Module Player - * Copyright (C) 1996-2024 Claudio Matsuoka and Hipolito Carraro Jr + * Copyright (C) 1996-2026 Claudio Matsuoka and Hipolito Carraro Jr * * This file is part of the Extended Module Player and is distributed * under the terms of the GNU General Public License. See the COPYING @@ -81,37 +81,39 @@ static int read_key(void) { - char key; - int ret = 0; - #if defined(_WIN32) || defined(__OS2__) || defined(__EMX__) || defined(__DJGPP__) || defined(_DOS) if (kbhit()) { - key = getch(); - ret = 1; + int key = getch(); + if (!key || key == 0xe0) { + return (0x100 | getch()); + } + if (key > 0x7f) { + return -1; + } + return key; } + return -1; #elif defined(XMP_AMIGA) - /* Amiga CLI */ - { - BPTR in = Input(); - if (WaitForChar(in, 1)) { - Read(in, &key, 1); - ret = 1; - } + BPTR in = Input(); + if (WaitForChar(in, 1)) { + signed char key; + Read(in, &key, 1); + return key; } + return -1; #elif defined(HAVE_TERMIOS_H) - #ifdef __CYGWIN__ - if (stdin_ready_for_reading()) - #endif - ret = read(0, &key, 1); -#else - ret = 0; -#endif - - if (ret <= 0) { + int ret; + signed char key; +#ifdef __CYGWIN__ + if (!stdin_ready_for_reading()) { return -1; } - - return key; +#endif /* __CYGWIN__ */ + ret = read(0, &key, 1); + return (ret <= 0) ? -1 : key; +#else +#error Please define read_key() for this platform! +#endif } static void change_sequence(xmp_context handle, const struct xmp_module_info *mi, struct control *ctl, int i) @@ -145,13 +147,23 @@ */ void read_command(xmp_context handle, const struct xmp_module_info *mi, struct control *ctl) { - int cmd; + int cmd = read_key(); - cmd = read_key(); - if (cmd <= 0) + if (cmd <= 0) { return; + } switch (cmd) { +#if defined(_WIN32) || defined(__OS2__) || defined(__EMX__) || defined(__DJGPP__) || defined(_DOS) + case 0x148: + goto cmd_next_mod; + case 0x150: + goto cmd_prev_mod; + case 0x14d: + goto cmd_next_pos; + case 0x14b: + goto cmd_prev_pos; +#endif case 0x1b: /* escape */ cmd = read_key(); if (cmd != '[') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/src/delay.c new/xmp-4.3.1/src/delay.c --- old/xmp-4.3.0/src/delay.c 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/src/delay.c 2026-07-25 07:47:50.000000000 +0200 @@ -132,19 +132,34 @@ } void delay_ms(unsigned int msec) { + const unsigned usec = msec * 1000U; + #if defined(__amigaos4__) timerio->Request.io_Command = TR_ADDREQUEST; - timerio->Time.Seconds = msec / 1000000; - timerio->Time.Microseconds = msec % 1000000; + timerio->Time.Seconds = usec / 1000000; + timerio->Time.Microseconds = usec % 1000000; #else timerio->tr_node.io_Command = TR_ADDREQUEST; - timerio->tr_time.tv_secs = msec / 1000000; - timerio->tr_time.tv_micro = msec % 1000000; + timerio->tr_time.tv_secs = usec / 1000000; + timerio->tr_time.tv_micro = usec % 1000000; #endif SendIO((struct IORequest *) timerio); WaitIO((struct IORequest *) timerio); } +#elif defined(HAVE_NANOSLEEP) +#include <time.h> +#include <unistd.h> + +void delay_ms(unsigned int msec) { + const long usec = msec * 1000; + struct timespec ts; + + ts.tv_sec = (long)(usec / 1000000); + ts.tv_nsec = (long)(usec % 1000000) * 1000UL; + nanosleep(&ts, NULL); +} + #elif defined(HAVE_USLEEP) #include <unistd.h> @@ -170,10 +185,9 @@ #include <stddef.h> void delay_ms(unsigned int msec) { + const long usec = msec * 1000; struct timeval tv; - long usec; - usec = msec * 1000; tv.tv_sec = usec / 1000000; tv.tv_usec = usec % 1000000; select(0, NULL, NULL, NULL, &tv); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/src/xmp.1 new/xmp-4.3.1/src/xmp.1 --- old/xmp-4.3.0/src/xmp.1 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/src/xmp.1 2026-07-25 07:47:50.000000000 +0200 @@ -1,9 +1,9 @@ -.TH "XMP" "1" "Version 4\&.3\&.0" "Feb 2026" "Extended Module Player" -.PP -.SH "NAME" +.TH "XMP" "1" "Version 4\&.3\&.1" "July 2026" "Extended Module Player" +.PP +.SH "NAME" xmp - Extended Module Player -.PP -.SH "SYNOPSIS" +.PP +.SH "SYNOPSIS" \fBxmp\fP [\fB\-a, \-\-amplify\fP \fIfactor\fP] [\fB\-A, \-\-amiga\fP] @@ -44,35 +44,35 @@ [\fB\-Z, \-\-all\-sequences\fP] [\fB\-z, \-\-sequence\fP \fInum\fP] \fImodules\fP -.PP -.SH "DESCRIPTION" +.PP +.SH "DESCRIPTION" \fBxmp\fP is a tracked music module player\&. It plays many module formats including Fasttracker II (XM), Noise/Fast/Protracker (MOD), Scream Tracker 3 (S3M) and Impulse Tracker (IT)\&. Run \f(CWxmp \-\-list\-formats\fP for a complete list of supported formats\&. -.PP -.SH "OPTIONS" -.IP "\fB\-a, \-\-amplify\fP \fIfactor\fP" +.PP +.SH "OPTIONS" +.IP "\fB\-a, \-\-amplify\fP \fIfactor\fP" Amplification factor for the software mixer\&. Valid amplification factors range from 0 to 3. Default is 1. \&. Warning\&: higher amplification factors may cause distorted or noisy output\&. -.IP "\fB\-A, \-\-amiga\fP" +.IP "\fB\-A, \-\-amiga\fP" Use a mixer which models the sound of an Amiga 500\&, with or without the led filter\&. -.IP "\fB\-b, \-\-bits\fP \fIbits\fP" +.IP "\fB\-b, \-\-bits\fP \fIbits\fP" Set the software mixer resolution (8, 16, 24, or 32 bits)\&. If omitted, -The audio device will be opened at 16-bit resolution\&. -.IP "\fB\-C, \-\-show\-comments\fP" +the audio device will be opened at 16-bit resolution\&. +.IP "\fB\-C, \-\-show\-comments\fP" Display module comment text, if any\&. -.IP "\fB\-c, \-\-stdout\fP" +.IP "\fB\-c, \-\-stdout\fP" Mix the module to stdout\&. -.IP "\fB\-D\fP \fIdevice-specific parameter\fP" +.IP "\fB\-D\fP \fIdevice-specific parameter\fP" Pass a configuration parameter to the device driver\&. See the \fBDEVICE DRIVER PARAMETERS\fP section below for a -list of known parameters\&. -.IP "\fB\-d, \-\-driver\fP \fIdriver\fP" +list of known parameters\&. +.IP "\fB\-d, \-\-driver\fP \fIdriver\fP" Select the output driver\&. If not specified, \fBxmp\fP will try to probe each available driver\&. -.IP "\fB\-e, \-\-player\-mode\fP \fImode\fP" +.IP "\fB\-e, \-\-player\-mode\fP \fImode\fP" Force play mode or emulation of a specific tracker\&. Valid player modes are\&: \fBauto\fP (autodetection)\&, \fBmod\fP (generic mod player mode)\&, \fBnoisetracker\fP\&, \fBprotracker\fP (Protracker 1/2)\&, \fBs3m\fP (generic @@ -82,201 +82,201 @@ Tracker in sample mode)\&. When a specific tracker is specified, \fBxmp\fP will try to emulate quirks and bugs for accurate replay\&. Default is autodetection. -.IP "\fB\-F, \-\-nofilter\fP" +.IP "\fB\-F, \-\-nofilter\fP" Disable IT lowpass filter effect and envelopes. -.IP "\fB\-f, \-\-frequency\fP \fIrate\fP" +.IP "\fB\-f, \-\-frequency\fP \fIrate\fP" Set the software mixer sampling rate in hertz\&. .IP "\fB\-\-fix\-sample\-loop\fP" Halve sample loop start values\&. Use it to work around bad conversions from 15-instrument modules and to correctly play NoisePacker v2 and certain UNIC files. -.IP "\fB\-h, \-\-help\fP" +.IP "\fB\-h, \-\-help\fP" Show a short summary of command-line options\&. -.IP "\fB\-I, \-\-instrument\-path\fP \fIpath\fP" +.IP "\fB\-I, \-\-instrument\-path\fP \fIpath\fP" Set the pathname to the directory containing external samples\&. -.IP "\fB\-i, \-\-interpolation\fP \fItype\fP" +.IP "\fB\-i, \-\-interpolation\fP \fItype\fP" Select interpolation type. Available types are \fBnearest\fP for nearest-neighbor interpolation\&, \fBlinear\fP for linear interpolation\&, and \fBspline\fP for cubic spline interpolation\&. Default is cubic spline\&. -.IP "\fB\-\-load\-only\fP" +.IP "\fB\-\-load\-only\fP" Load module and exit\&. -.IP "\fB\-L, \-\-list\-formats\fP" +.IP "\fB\-L, \-\-list\-formats\fP" List supported module formats\&. -.IP "\fB\-l, \-\-loop\fP" +.IP "\fB\-l, \-\-loop\fP" Enable module looping\&. -.IP "\fB\-\-loop\-all\fP" +.IP "\fB\-\-loop\-all\fP" Loop over the entire module list\&. -.IP "\fB\-M, \-\-mute\fP \fIchannel-list\fP" +.IP "\fB\-M, \-\-mute\fP \fIchannel-list\fP" Mute the specified channels\&. \fIchannel-list\fP is a comma-separated list of decimal channel ranges\&. Example: 0,2-4,8-16\&. -.IP "\fB\-m, \-\-mono\fP" +.IP "\fB\-m, \-\-mono\fP" Force mono output (default is stereo in stereo-capable devices)\&. .IP "\fB\-\-mixer\-voices\fP \fInum\fP" Set the maximum number of virtual channels (default is 128)\&. -.IP "\fB\-N, \-\-null\fP" +.IP "\fB\-N, \-\-null\fP" Load and mix module, but discard output data (same as \-\-device=null)\&. -.IP "\fB\-\-nocmd\fP" +.IP "\fB\-\-nocmd\fP" Disable interactive commands\&. -.IP "\fB\-o, \-\-output\-file\fP \fIfilename\fP" +.IP "\fB\-o, \-\-output\-file\fP \fIfilename\fP" Set the output file name when mixing to raw or WAV files\&. If '-' is given as the file name, the output will be sent to stdout\&. -.IP "\fB\-P, \-\-pan\fP \fInum\fP" +.IP "\fB\-P, \-\-pan\fP \fInum\fP" Set the percentual panning amplitude\&. -.IP "\fB\-P, \-\-default\-pan\fP \fInum\fP" +.IP "\fB\-P, \-\-default\-pan\fP \fInum\fP" Set the percentual default pan setting for modules that don't set their own pan values\&. Useful to reduce LRRL pan separation on headphones\&. This parameter does not affect the Amiga 500 classic mixer\&. -.IP "\fB\-\-probe\-only\fP" +.IP "\fB\-\-probe\-only\fP" Exit after probing the audio device\&. -.IP "\fB\-R, \-\-random\fP" +.IP "\fB\-R, \-\-random\fP" Play modules in random order\&. -.IP "\fB\-r, \-\-reverse\fP" +.IP "\fB\-r, \-\-reverse\fP" Reverse left/right stereo channels\&. -.IP "\fB\-S, \-\-solo\fP \fIchannel-list\fP" +.IP "\fB\-S, \-\-solo\fP \fIchannel-list\fP" Play only the specified channels\&. \fIchannel-list\fP is a comma-separated list of decimal channel ranges\&. Example: 0,2-4,8-16\&. -.IP "\fB\-s, \-\-start\fP \fIpos\fP" +.IP "\fB\-s, \-\-start\fP \fIpos\fP" Start playing the module from the position \fIpos\fP\&. -.IP "\fB\-t, \-\-time\fP \fItime\fP" +.IP "\fB\-t, \-\-time\fP \fItime\fP" Specifies the maximum playing time to \fItime\fP seconds\&. -.IP "\fB\-u, \-\-unsigned\fP" +.IP "\fB\-u, \-\-unsigned\fP" Tell the software mixer to use unsigned samples when mixing to a file (default is signed)\&. -.IP "\fB\-\-vblank\fP" +.IP "\fB\-\-vblank\fP" Force Amiga vblank-based timing (no CIA tempo setting)\&. -.IP "\fB\-V, \-\-version\fP" +.IP "\fB\-V, \-\-version\fP" Print version information\&. -.IP "\fB\-v, \-\-verbose\fP" +.IP "\fB\-v, \-\-verbose\fP" Verbose mode (incremental)\&. If specified more than once, the verbosity level will be increased (no messages will be displayed when the player runs in background)\&. -.IP "\fB\-Z, \-\-all\-sequences\fP" +.IP "\fB\-Z, \-\-all\-sequences\fP" Play all hidden or alternative pattern sequences (subsongs) in module\&. -.IP "\fB\-z, \-\-sequence\fP \fInum\fP" +.IP "\fB\-z, \-\-sequence\fP \fInum\fP" Play hidden or alternative pattern sequence \fInum\fP\ (0 is the main sequence)\&. -.PP -.SH "DEVICE DRIVER PARAMETERS" +.PP +.SH "DEVICE DRIVER PARAMETERS" Use the option \fB\-D\fP to send parameters directly to the device drivers\&. Multiple \fB\-D\fP options can be specified in the command line\&. -.PP +.PP File output options: -.IP "\fB\-D\fP \fIendian=big\fP" +.IP "\fB\-D\fP \fIendian=big\fP" Generate big-endian 16-bit samples (default is the machine byte ordering)\&. -.IP "\fB\-D\fP \fIendian=little\fP" +.IP "\fB\-D\fP \fIendian=little\fP" Generate little-endian 16-bit samples (default is the machine byte ordering)\&. -.PP +.PP ALSA driver options: -.IP "\fB\-D\fP \fIbuffer=value\fP" +.IP "\fB\-D\fP \fIbuffer=value\fP" Set buffer size in ms\&. Default value is 250. -.IP "\fB\-D\fP \fIperiod=value\fP" +.IP "\fB\-D\fP \fIperiod=value\fP" Set period time in ms\&. Default value is 50. -.IP "\fB\-D\fP \fIcard=name\fP" +.IP "\fB\-D\fP \fIcard=name\fP" Choose the ALSA device to use\&. Default value is "default"\&. -.PP +.PP OSS driver options: -.IP "\fB\-D\fP \fIfrag=num,size\fP" +.IP "\fB\-D\fP \fIfrag=num,size\fP" Set the maximum number of fragments to \fInum\fP and the size of each fragment to \fIsize\fP bytes (must be a power of two)\&. The number and size of fragments set a tradeoff between the buffering latency and sensibility to system load\&. To get better synchronization, reduce the values\&. To avoid gaps in the sound playback, increase the values\&. -.IP "\fB\-D\fP \fIdev=device_name\fP" +.IP "\fB\-D\fP \fIdev=device_name\fP" Set the audio device to open\&. Default is /dev/dsp\&. -.IP "\fB\-D\fP \fInosync\fP" +.IP "\fB\-D\fP \fInosync\fP" Don't sync the OSS audio device between modules\&. -.PP +.PP BSD driver options: -.IP "\fB\-D\fP \fIgain=value\fP" +.IP "\fB\-D\fP \fIgain=value\fP" Set the audio gain\&. Valid values range from 0 to 255\&. The default is 128\&. -.IP "\fB\-D\fP \fIbuffer=size\fP" +.IP "\fB\-D\fP \fIbuffer=size\fP" Set the size in bytes of the audio buffer\&. Default value is 32 Kb\&. .PP CoreAudio driver options: -.IP "\fB\-D\fP \fIbuffer=value\fP" +.IP "\fB\-D\fP \fIbuffer=value\fP" Set buffer size in ms\&. Default value is 250. -.PP +.PP HP-UX and Solaris driver options: -.IP "\fB\-D\fP \fIgain=value\fP" +.IP "\fB\-D\fP \fIgain=value\fP" Set the audio gain\&. Valid values range from 0 to 255\&. The default is 128\&. -.IP "\fB\-D\fP \fIport={s|h|l}\fP" +.IP "\fB\-D\fP \fIport={s|h|l}\fP" Set the audio port\&. Valid arguments are \fIs\fP for the internal speaker, \fIh\fP for headphones and \fIl\fP for line out\&. The default is the internal speaker\&. -.IP "\fB\-D\fP \fIbuffer=size\fP" +.IP "\fB\-D\fP \fIbuffer=size\fP" Set the size in bytes of the audio buffer\&. The default value is 32 Kb\&. .PP -.SH "INTERACTIVE COMMANDS" +.SH "INTERACTIVE COMMANDS" The following single key commands can be used when playing modules: -.IP "\fBq, Esc\fP" +.IP "\fBq, Esc\fP" Stop the currently playing module and quit the player\&. -.IP "\fBf, Right\fP" +.IP "\fBf, Right\fP" Jump to the next pattern\&. -.IP "\fBb, Left\fP" +.IP "\fBb, Left\fP" Jump to the previous pattern\&. -.IP "\fBn, Up\fP" +.IP "\fBn, Up\fP" Jump to the next module\&. -.IP "\fBp, Down\fP" +.IP "\fBp, Down\fP" Jump to the previous module\&. -.IP "\fBSpace\fP" +.IP "\fBSpace\fP" Pause or unpause module replay\&. -.IP "\fB1\fP, \fB2\fP, \fB3\fP, \fB4\fP, \fB5\fP, \fB6\fP, \fB7\fP, \fB8\fP, \fB9\fP, \fB0\fP" +.IP "\fB1\fP, \fB2\fP, \fB3\fP, \fB4\fP, \fB5\fP, \fB6\fP, \fB7\fP, \fB8\fP, \fB9\fP, \fB0\fP" Mute/unmute channels 1 to 10\&. -.IP "\fB!\fP" +.IP "\fB!\fP" Unmute all channels\&. -.IP "\fBh\fP, \fB?\fP" +.IP "\fBh\fP, \fB?\fP" Display available commands\&. -.IP "\fBX\fP" +.IP "\fBX\fP" Display current mixer type\&. -.IP "\fBZ\fP" +.IP "\fBZ\fP" Display current sequence\&. -.IP "\fBz\fP" +.IP "\fBz\fP" Toggle subsong explorer mode\&. -.IP "\fBl\fP" +.IP "\fBl\fP" Toggle module/sequence looping\&. -.IP "\fBm\fP" +.IP "\fBm\fP" Display module information\&. -.IP "\fBi\fP" +.IP "\fBi\fP" Display combined instrument/sample list\&. -.IP "\fBI\fP" +.IP "\fBI\fP" Display instrument list\&. -.IP "\fBS\fP" +.IP "\fBS\fP" Display sample list\&. -.IP "\fBc\fP" +.IP "\fBc\fP" Display comment\&, if any\&. -.IP "\fB<\fP" +.IP "\fB<\fP" Change to previous sequence (subsong)\&. -.IP "\fB>\fP" +.IP "\fB>\fP" Change to next sequence (subsong)\&. -.PP +.PP Interactive mode can be disabled using the \fB\-\-nocmd\fP command line option\&. -.PP -.SH "EXAMPLES" +.PP +.SH "EXAMPLES" Play module and save output in a .wav file\&: -.IP "" +.IP "" \f(CWxmp \-ofilename.wav module\&.mod\fP -.PP +.PP Play module muting channels 0 to 3 and 6\&: -.IP "" +.IP "" \f(CWxmp \-\-mute=0\-3,6 module\&.mod\&.gz\fP -.PP +.PP Play modules in /dev/dsp using the default device settings (unsigned 8bit, 8 kHz mono): -.IP "" +.IP "" \f(CWxmp \-o/dev/dsp \-f8000 \-m \-b8 \-u module\&.lha\fP -.PP +.PP Play all XM modules in the /mod directory and all subdirectories in random order, ignoring any configuration set in the xmp\&.conf file\&: -.IP "" +.IP "" \f(CWxmp \-\-norc \-R `find /mod \-name "*\&.xm" \-print`\fP -.PP +.PP .SH "FILES" \f(CW/etc/xmp/xmp\&.conf\&, $HOME/\&.xmp/xmp\&.conf\&, /etc/xmp/modules\&.conf\&, $HOME/\&.xmp/modules\&.conf\fP -.PP -.SH "AUTHORS" +.PP +.SH "AUTHORS" Claudio Matsuoka and Hipolito Carraro Jr\&. -.PP +.PP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/src/xmp_version.h new/xmp-4.3.1/src/xmp_version.h --- old/xmp-4.3.0/src/xmp_version.h 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/src/xmp_version.h 2026-07-25 07:47:50.000000000 +0200 @@ -1,3 +1,3 @@ #ifndef VERSION -#define VERSION "4.3.0" +#define VERSION "4.3.1" #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xmp-4.3.0/watcom.mif new/xmp-4.3.1/watcom.mif --- old/xmp-4.3.0/watcom.mif 2026-05-10 05:20:02.000000000 +0200 +++ new/xmp-4.3.1/watcom.mif 2026-07-25 07:47:50.000000000 +0200 @@ -2,7 +2,7 @@ INCLUDES+= -Isrc !ifeq target static -CPPFLAGS+= -DBUILDING_STATIC +CPPFLAGS+= -DBUILDING_STATIC -DLIBXMP_STATIC LIBXMP=$(libxmp_path)/xmp_static.lib !else LIBXMP=$(libxmp_path)/libxmp.lib
