Unverified Commit 31116388 authored by Aleksana's avatar Aleksana Committed by GitHub
Browse files

shntool: fix build with GCC 15, format and remove `rec` (#476145)

parents 4305c734 5414e217
Loading
Loading
Loading
Loading
+48 −0
Original line number Diff line number Diff line
diff --git a/include/format.h b/include/format.h
index 567993e..ab293f8 100644
--- a/include/format.h
+++ b/include/format.h
@@ -35,7 +35,7 @@ void tagcpy(unsigned char *,unsigned char *);
 int tagcmp(unsigned char *,unsigned char *);
 
 /* function to check if a file name is about to be clobbered, and if so, asks whether this is OK */
-int clobber_check(char *);
+bool clobber_check(char *);
 
 /* find an output format module with the given name */
 format_module *find_format(char *);
diff --git a/include/mode.h b/include/mode.h
index a9c8cd0..fc13d4f 100644
--- a/include/mode.h
+++ b/include/mode.h
@@ -78,7 +78,7 @@ void create_output_filename(char *,char *,char *);
 FILE *open_output_stream(char *,proc_info *);
 
 /* function to determine if two filenames point to the same file */
-int files_are_identical(char *,char *);
+bool files_are_identical(char *,char *);
 
 /* function to remove a file if it exists */
 void remove_file(char *);
diff --git a/include/module-types.h b/include/module-types.h
index c49c661..2d7b0a3 100644
--- a/include/module-types.h
+++ b/include/module-types.h
@@ -23,6 +23,8 @@
 #ifndef __MODULE_TYPES_H__
 #define __MODULE_TYPES_H__
 
+#include <stdbool.h>
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -44,8 +46,6 @@
 #define PATHSEPCHAR '/'
 #endif
 
-/* boolean type */
-typedef int bool;
 
 /* wtypes */
 typedef unsigned long wlong;
+26 −0
Original line number Diff line number Diff line
diff --git a/src/core_mode.c b/src/core_mode.c
index d67e317..21d3b9e 100644
--- a/src/core_mode.c
+++ b/src/core_mode.c
@@ -564,17 +564,17 @@ static int compare_ascii(const wave_info **w1,const wave_info **w2)
 
 static void ascii_sort_files(wave_info **filenames, int numfiles)
 {
-  int (*cmpfunc) ();
+  int (*cmpfunc) (const void *, const void *);
 
-  cmpfunc = compare_ascii;
+  cmpfunc = (int (*)(const void *, const void *))compare_ascii;
   qsort(filenames,numfiles,sizeof(wave_info *),cmpfunc);
 }
 
 static void version_sort_files(wave_info **filenames,int numfiles)
 {
-  int (*cmpfunc) ();
+  int (*cmpfunc) (const void *, const void *);
 
-  cmpfunc = compare_version;
+  cmpfunc = (int (*)(const void *, const void *))compare_version;
   qsort(filenames,numfiles,sizeof(wave_info *),cmpfunc);
 }
 
+15 −5
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
  flac,
}:

stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
  version = "3.0.10+git20130108.4ca41f4-1";
  pname = "shntool";

@@ -13,16 +13,26 @@ stdenv.mkDerivation rec {
    domain = "salsa.debian.org";
    owner = "debian";
    repo = "shntool";
    rev = "debian/${version}";
    rev = "debian/${finalAttrs.version}";
    sha256 = "sha256-Qn4LwVx34EhypiZDIxuveNhePigkuiICn1nBukoQf5Y=";
  };

  buildInputs = [ flac ];
  patches = [
    # Fix conflicts between reserved keywords `bool` (starting from C23) and custom `typedef`s.
    ./bool-type.patch
    # Fix implicit weak-typed pointer casting.
    ./function-pointer-type.patch
  ];

  prePatch = ''
    patches=$(grep -v '#' ./debian/patches/series | while read patch; do echo "./debian/patches/$patch"; done | tr '\n' ' ')
    additional_patches=$(grep -v '#' ./debian/patches/series | while read patch; do echo "./debian/patches/$patch"; done | tr '\n' ' ')
    patches="$patches $additional_patches"
  '';

  buildInputs = [
    flac
  ];

  meta = {
    description = "Multi-purpose WAVE data processing and reporting utility";
    homepage = "https://packages.qa.debian.org/s/shntool.html";
@@ -30,4 +40,4 @@ stdenv.mkDerivation rec {
    platforms = lib.platforms.all;
    maintainers = with lib.maintainers; [ jcumming ];
  };
}
})