From e3d302975f184c70232a1b604c2e57b12b8e81e7 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 29 Aug 2021 21:29:48 +0200 Subject: [PATCH 01/16] change: sort only in split method --- libs/spandisc/src/splitter.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/libs/spandisc/src/splitter.c b/libs/spandisc/src/splitter.c index 60d0142..a9324e2 100644 --- a/libs/spandisc/src/splitter.c +++ b/libs/spandisc/src/splitter.c @@ -87,6 +87,8 @@ void add_item_medium(medium_t *medium, file_size_t item) medium_t splitter_to_disc(medium_t *srcdata, int (*check)(medium_t*, file_size_t)) { + qsort(srcdata->filearray, srcdata->length, sizeof(file_size_t), cmpfunc); + medium_t rest = init_empty_medium(*srcdata); medium_t disc = init_empty_medium(*srcdata); @@ -110,16 +112,12 @@ medium_t splitter_to_disc(medium_t *srcdata, medium_t splitter(medium_t *srcdata) { - qsort(srcdata->filearray, srcdata->length, sizeof(file_size_t), cmpfunc); - medium_t disc = splitter_to_disc(srcdata, can_add_file_to_medium); return disc; } medium_t ignore(medium_t *srcdata) { - qsort(srcdata->filearray, srcdata->length, sizeof(file_size_t), cmpfunc); - medium_t ignore = splitter_to_disc(srcdata, bigger_file_ignore_medium); return ignore; } -- 2.39.5 From 66f2c9db4745ae8816ee76166da7d233b5900058 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 29 Aug 2021 21:30:14 +0200 Subject: [PATCH 02/16] change: sort output medium alphabetic --- libs/spandisc/src/splitter.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libs/spandisc/src/splitter.c b/libs/spandisc/src/splitter.c index a9324e2..2cc5ab0 100644 --- a/libs/spandisc/src/splitter.c +++ b/libs/spandisc/src/splitter.c @@ -22,6 +22,14 @@ int cmpfunc(const void *filea, const void *fileb) return -2; } +int strcmpfunc(const void *filea, const void *fileb) +{ + const char *filename1 = ((const file_size_t*)filea)->name; + const char *filename2 = ((const file_size_t*)fileb)->name; + + return strcasecmp(filename1, filename2); +} + void free_medium(medium_t *medium) { free(medium->filearray); @@ -106,6 +114,8 @@ medium_t splitter_to_disc(medium_t *srcdata, srcdata->filearray = (file_size_t *) realloc(srcdata->filearray, srcdata->length * sizeof(file_size_t)); + qsort(disc.filearray, disc.length, sizeof(file_size_t), strcmpfunc); + free_medium(&rest); return disc; } -- 2.39.5 From ce9f125f8f6744601458ef96aeff6fe54c1ff111 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 30 Aug 2021 13:47:59 +0200 Subject: [PATCH 03/16] add: comment sections in cmakelist discspan --- CMakeLists.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5927d0f..748974b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,15 +12,18 @@ set(PROJECT_VERSION_MINOR 0) set(PROJECT_VERSION_PATCH 0) set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") -file(GLOB SOURCES src/*.c) +# configure file message("Generating header file: ${CMAKE_CURRENT_BINARY_DIR}/src/config_discspan.h") configure_file(${CMAKE_CURRENT_LIST_DIR}/src/config_discspan.h.in ${CMAKE_CURRENT_BINARY_DIR}/src/config_discspan.h) include_directories(${CMAKE_CURRENT_BINARY_DIR}/src) +# add headers from dependency library spandisc include_directories(libs/spandisc/include) add_subdirectory(libs/spandisc) +# create target from source +file(GLOB SOURCES src/*.c) add_executable(discspan ${SOURCES}) add_dependencies(discspan spandisc) target_link_libraries(discspan spandisc) @@ -29,6 +32,11 @@ install(TARGETS discspan DESTINATION ${BINPATH} COMPONENT discspan) +################################################################################ +# Build deb Packages +# +################################################################################ + set(CPACK_GENERATOR "DEB") set(CPACK_DEB_COMPONENT_INSTALL ON) set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) @@ -45,6 +53,7 @@ else() set(CPACK_DEBIAN_PACKAGE_DEPENDS "discspan") endif() +# discspan package set(CPACK_DEBIAN_DISCSPAN_PACKAGE_NAME "discspan") set(CPACK_DEBIAN_DISCSPAN_FILE_NAME "${CPACK_DEBIAN_DISCSPAN_PACKAGE_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") set(CPACK_DEBIAN_DISCSPAN_DESCRIPTION "UI for libspandisc") @@ -55,11 +64,13 @@ else() set(CPACK_DEBIAN_DISCSPAN_PACKAGE_DEPENDS "discspan") endif() +# libspandisc package set(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_NAME "libspandisc") set(CPACK_DEBIAN_LIBSPANDISC_FILE_NAME "libspandisc_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") set(CPACK_DEBIAN_LIBSPANDISC_DESCRIPTION "library with logic to split many files to media discs") SET(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_SECTION "libs") +# libspandisc-dev package set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_NAME "libspandisc-dev") set(CPACK_DEBIAN_LIBSPANDISC-DEV_FILE_NAME "libspandisc-dev_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") set(CPACK_DEBIAN_LIBSPANDISC-DEV_DESCRIPTION "libspandisc library header files") -- 2.39.5 From 6bc22884dae2f85450daec5f0e89a081e5b15d83 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 30 Aug 2021 13:52:36 +0200 Subject: [PATCH 04/16] add: section comments in cmakelist libspandisc --- libs/spandisc/CMakeLists.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/spandisc/CMakeLists.txt b/libs/spandisc/CMakeLists.txt index a655aae..d2bf352 100644 --- a/libs/spandisc/CMakeLists.txt +++ b/libs/spandisc/CMakeLists.txt @@ -15,13 +15,16 @@ set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT option(BUILD_SHARED_LIBS "build shared libs" ON) +# configure file message("Generating header file: ${CMAKE_CURRENT_BINARY_DIR}/include/config_spandisc.h") configure_file(${CMAKE_CURRENT_LIST_DIR}/include/config_spandisc.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/config_spandisc.h) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) +# add source files file(GLOB SOURCES src/*.c) file(GLOB PUBLIC_HEADER include/*.h) -include_directories(include ${CMAKE_CURRENT_BINARY_DIR}/include) +include_directories(include) if(BUILD_SHARED_LIBS) add_library(spandisc SHARED ${SOURCES}) @@ -29,6 +32,7 @@ else() add_library(spandisc STATIC ${SOURCES}) endif() +# set target set_target_properties(spandisc PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADER}") target_link_libraries(spandisc m) @@ -38,6 +42,11 @@ install(TARGETS spandisc PUBLIC_HEADER DESTINATION ${INSTALL_HEADER} COMPONENT libspandisc-dev) +################################################################################ +# Build deb Packages +# +################################################################################ + set(CPACK_GENERATOR "DEB") set(CPACK_DEB_COMPONENT_INSTALL ON) set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) @@ -50,11 +59,13 @@ set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://gitweb.hhaalo.de/?p=discspan.git") set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_DEBIAN_PACKAGE_DEPENDS "libspandisc") +# libspandisc set(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_NAME "libspandisc") set(CPACK_DEBIAN_LIBSPANDISC_FILE_NAME "libspandisc_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") set(CPACK_DEBIAN_LIBSPANDISC_DESCRIPTION "library with logic to split many files to media discs") SET(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_SECTION "libs") +# libspandisc-dev set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_NAME "libspandisc-dev") set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_DEPENDS "libspandisc") set(CPACK_DEBIAN_LIBSPANDISC-DEV_FILE_NAME "libspandisc-dev_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") -- 2.39.5 From 280263c44a9886f36b6df9d4972d48faecafc385 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 30 Aug 2021 15:29:46 +0200 Subject: [PATCH 05/16] add: spandisc cpack config file --- CMakeLists.txt | 13 +------------ libs/spandisc/CMakeLists.txt | 15 +-------------- libs/spandisc/CPackConfig.cmake | 13 +++++++++++++ 3 files changed, 15 insertions(+), 26 deletions(-) create mode 100644 libs/spandisc/CPackConfig.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 748974b..0486a6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,17 +64,6 @@ else() set(CPACK_DEBIAN_DISCSPAN_PACKAGE_DEPENDS "discspan") endif() -# libspandisc package -set(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_NAME "libspandisc") -set(CPACK_DEBIAN_LIBSPANDISC_FILE_NAME "libspandisc_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") -set(CPACK_DEBIAN_LIBSPANDISC_DESCRIPTION "library with logic to split many files to media discs") -SET(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_SECTION "libs") - -# libspandisc-dev package -set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_NAME "libspandisc-dev") -set(CPACK_DEBIAN_LIBSPANDISC-DEV_FILE_NAME "libspandisc-dev_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") -set(CPACK_DEBIAN_LIBSPANDISC-DEV_DESCRIPTION "libspandisc library header files") -set(CPACK_DEBIAN_LIBSPANDISC-DEV_DEPENDS "libspandisc") -set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_SECTION "devel") +include(libs/spandisc/CPackConfig.cmake) include(CPack) diff --git a/libs/spandisc/CMakeLists.txt b/libs/spandisc/CMakeLists.txt index d2bf352..b093e7b 100644 --- a/libs/spandisc/CMakeLists.txt +++ b/libs/spandisc/CMakeLists.txt @@ -58,19 +58,6 @@ set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://gitweb.hhaalo.de/?p=discspan.git") set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_DEBIAN_PACKAGE_DEPENDS "libspandisc") - -# libspandisc -set(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_NAME "libspandisc") -set(CPACK_DEBIAN_LIBSPANDISC_FILE_NAME "libspandisc_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") -set(CPACK_DEBIAN_LIBSPANDISC_DESCRIPTION "library with logic to split many files to media discs") -SET(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_SECTION "libs") - -# libspandisc-dev -set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_NAME "libspandisc-dev") -set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_DEPENDS "libspandisc") -set(CPACK_DEBIAN_LIBSPANDISC-DEV_FILE_NAME "libspandisc-dev_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") -set(CPACK_DEBIAN_LIBSPANDISC-DEV_DESCRIPTION "libspandisc library header files") -set(CPACK_DEBIAN_LIBSPANDISC-DEV_DEPENDS "libspandisc") -set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_SECTION "devel") +include(CPackConfig.cmake) include(CPack) diff --git a/libs/spandisc/CPackConfig.cmake b/libs/spandisc/CPackConfig.cmake new file mode 100644 index 0000000..2c1db21 --- /dev/null +++ b/libs/spandisc/CPackConfig.cmake @@ -0,0 +1,13 @@ +# libspandisc +set(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_NAME "libspandisc") +set(CPACK_DEBIAN_LIBSPANDISC_FILE_NAME "libspandisc_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") +set(CPACK_DEBIAN_LIBSPANDISC_DESCRIPTION "library with logic to split many files to media discs") +SET(CPACK_DEBIAN_LIBSPANDISC_PACKAGE_SECTION "libs") + +# libspandisc-dev +set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_NAME "libspandisc-dev") +set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_DEPENDS "libspandisc") +set(CPACK_DEBIAN_LIBSPANDISC-DEV_FILE_NAME "libspandisc-dev_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_ARCHITECTURE}.deb") +set(CPACK_DEBIAN_LIBSPANDISC-DEV_DESCRIPTION "libspandisc library header files") +set(CPACK_DEBIAN_LIBSPANDISC-DEV_DEPENDS "libspandisc") +set(CPACK_DEBIAN_LIBSPANDISC-DEV_PACKAGE_SECTION "devel") -- 2.39.5 From 2fe3923c2f5740707f6f9ca196deb2a9dd6d7cdc Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 30 Aug 2021 21:42:07 +0200 Subject: [PATCH 06/16] add: message for cmake generate --- CMakeLists.txt | 6 +++++- libs/spandisc/CMakeLists.txt | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0486a6b..e057b0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,13 +13,15 @@ set(PROJECT_VERSION_PATCH 0) set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") # configure file -message("Generating header file: ${CMAKE_CURRENT_BINARY_DIR}/src/config_discspan.h") +message(STATUS "Generating header: src/config_discspan.h") configure_file(${CMAKE_CURRENT_LIST_DIR}/src/config_discspan.h.in ${CMAKE_CURRENT_BINARY_DIR}/src/config_discspan.h) include_directories(${CMAKE_CURRENT_BINARY_DIR}/src) # add headers from dependency library spandisc +message(VERBOSE "Include directory: libs/spandisc/include") include_directories(libs/spandisc/include) +message(STATUS "Include subdirectory with project spandisc: libs/spandisc") add_subdirectory(libs/spandisc) # create target from source @@ -28,6 +30,8 @@ add_executable(discspan ${SOURCES}) add_dependencies(discspan spandisc) target_link_libraries(discspan spandisc) +message(VERBOSE "Install target discspan") +message(VERBOSE "With component discspan") install(TARGETS discspan DESTINATION ${BINPATH} COMPONENT discspan) diff --git a/libs/spandisc/CMakeLists.txt b/libs/spandisc/CMakeLists.txt index b093e7b..0913282 100644 --- a/libs/spandisc/CMakeLists.txt +++ b/libs/spandisc/CMakeLists.txt @@ -16,7 +16,7 @@ set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT option(BUILD_SHARED_LIBS "build shared libs" ON) # configure file -message("Generating header file: ${CMAKE_CURRENT_BINARY_DIR}/include/config_spandisc.h") +message(STATUS "Generating header: include/config_spandisc.h") configure_file(${CMAKE_CURRENT_LIST_DIR}/include/config_spandisc.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/config_spandisc.h) include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) @@ -24,11 +24,15 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) # add source files file(GLOB SOURCES src/*.c) file(GLOB PUBLIC_HEADER include/*.h) +message(VERBOSE "Include directory: include") include_directories(include) +message(STATUS "Option: BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}") if(BUILD_SHARED_LIBS) + message(STATUS "Build shared library") add_library(spandisc SHARED ${SOURCES}) else() + message(STATUS "Build static library") add_library(spandisc STATIC ${SOURCES}) endif() @@ -36,6 +40,9 @@ endif() set_target_properties(spandisc PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADER}") target_link_libraries(spandisc m) +message(STATUS "Install target spandisc") +message(VERBOSE "With component libspandisc") +message(VERBOSE "With component libspandisc-dev") install(TARGETS spandisc DESTINATION ${INSTALL_LIBPATH} COMPONENT libspandisc -- 2.39.5 From 1ef53f87966394e2d7bf69220ada233b01aa5e23 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Fri, 3 Sep 2021 20:53:14 +0200 Subject: [PATCH 07/16] change: optimize status messages --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e057b0d..78dcaac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}/src) # add headers from dependency library spandisc message(VERBOSE "Include directory: libs/spandisc/include") include_directories(libs/spandisc/include) -message(STATUS "Include subdirectory with project spandisc: libs/spandisc") +message(STATUS "Include subproject spandisc: libs/spandisc") add_subdirectory(libs/spandisc) # create target from source @@ -30,7 +30,7 @@ add_executable(discspan ${SOURCES}) add_dependencies(discspan spandisc) target_link_libraries(discspan spandisc) -message(VERBOSE "Install target discspan") +message(STATUS "Install target discspan") message(VERBOSE "With component discspan") install(TARGETS discspan DESTINATION ${BINPATH} -- 2.39.5 From 42374e4db91975d8f8f5eb63b0f1b7e24c2e11f0 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Fri, 3 Sep 2021 21:59:05 +0200 Subject: [PATCH 08/16] add: extern c in header for cplusplus --- libs/spandisc/include/config_spandisc.h.in | 8 ++++++++ libs/spandisc/include/filehandler.h | 8 ++++++++ libs/spandisc/include/libspandisc.h | 8 ++++++++ libs/spandisc/include/logic.h | 8 ++++++++ libs/spandisc/include/spandisc.h | 8 ++++++++ libs/spandisc/include/splitter.h | 8 ++++++++ src/config_discspan.h.in | 8 ++++++++ src/help.h | 8 ++++++++ 8 files changed, 64 insertions(+) diff --git a/libs/spandisc/include/config_spandisc.h.in b/libs/spandisc/include/config_spandisc.h.in index e4f5209..c02de9a 100644 --- a/libs/spandisc/include/config_spandisc.h.in +++ b/libs/spandisc/include/config_spandisc.h.in @@ -1,6 +1,14 @@ #ifndef CONFIG_SPANDISC_IN_H #define CONFIG_SPANDISC_IN_H +#ifdef __cplusplus +extern "C" { +#endif + #define SPANDISC_VERSION "@PROJECT_VERSION@" +#ifdef __cplusplus +} +#endif + #endif diff --git a/libs/spandisc/include/filehandler.h b/libs/spandisc/include/filehandler.h index 6502170..17688f0 100644 --- a/libs/spandisc/include/filehandler.h +++ b/libs/spandisc/include/filehandler.h @@ -1,6 +1,10 @@ #ifndef _FILEHANDLER_H #define _FILEHANDLER_H +#ifdef __cplusplus +extern "C" { +#endif + /** * Read a text file with file pathes into medium_t struct * @@ -17,4 +21,8 @@ void read_input_file(const char *input, medium_t *srcdata); */ void write_output_file(const char *output, medium_t disc); +#ifdef __cplusplus +} +#endif + #endif diff --git a/libs/spandisc/include/libspandisc.h b/libs/spandisc/include/libspandisc.h index f106a19..443ed1e 100644 --- a/libs/spandisc/include/libspandisc.h +++ b/libs/spandisc/include/libspandisc.h @@ -1,6 +1,10 @@ #ifndef _LIBSPANDISC_H #define _LIBSPANDISC_H +#ifdef __cplusplus +extern "C" { +#endif + // contains struct types #include "spandisc.h" // contains spanning logic with read and write file @@ -10,4 +14,8 @@ // contains splitting logic #include "splitter.h" +#ifdef __cpluscplus +} +#endif + #endif diff --git a/libs/spandisc/include/logic.h b/libs/spandisc/include/logic.h index 40b70f6..7a91018 100644 --- a/libs/spandisc/include/logic.h +++ b/libs/spandisc/include/logic.h @@ -1,6 +1,10 @@ #ifndef _LOGIC_H #define _LOGIC_H +#ifdef __cplusplus +extern "C" { +#endif + const char *get_version(); /** @@ -24,4 +28,8 @@ extern status_print_t status_print; */ void span(const char *input, const char *output, unsigned long long split); +#ifdef __cplusplus +} +#endif + #endif diff --git a/libs/spandisc/include/spandisc.h b/libs/spandisc/include/spandisc.h index 244ee16..a074299 100644 --- a/libs/spandisc/include/spandisc.h +++ b/libs/spandisc/include/spandisc.h @@ -1,6 +1,10 @@ #ifndef _SPANDISC_H #define _SPANDISC_H +#ifdef __cplusplus +extern "C" { +#endif + typedef struct { char name[255]; unsigned long long fsize; @@ -19,4 +23,8 @@ typedef struct { medium_t *disc; } collection_t; +#ifdef __cplusplus +} +#endif + #endif diff --git a/libs/spandisc/include/splitter.h b/libs/spandisc/include/splitter.h index ca834de..9e12460 100644 --- a/libs/spandisc/include/splitter.h +++ b/libs/spandisc/include/splitter.h @@ -1,6 +1,10 @@ #ifndef _SPLITTER_H #define _SPLITTER_H +#ifdef __cplusplus +extern "C" { +#endif + void free_medium(medium_t *medium); void free_collection(collection_t *col); @@ -31,4 +35,8 @@ medium_t ignore(medium_t *srcdata); */ collection_t split_all(medium_t *srcdata); +#ifdef __cplusplus +} +#endif + #endif diff --git a/src/config_discspan.h.in b/src/config_discspan.h.in index de92501..5b839d4 100644 --- a/src/config_discspan.h.in +++ b/src/config_discspan.h.in @@ -1,6 +1,14 @@ #ifndef CONFIG_DISCSPAN_IN_H #define CONFIG_DISCSPAN_IN_H +#ifdef __cplusplus +extern "C" { +#endif + #define DISCSPAN_VERSION "@PROJECT_VERSION@" +#ifdef __cplusplus +} +#endif + #endif diff --git a/src/help.h b/src/help.h index 5744339..8aafb19 100644 --- a/src/help.h +++ b/src/help.h @@ -1,6 +1,14 @@ #ifndef _HELP_H #define _HELP_H +#ifdef __cplusplus +extern "C" { +#endif + void useage(); +#ifdef __cplusplus +} +#endif + #endif -- 2.39.5 From a6033cfdaf42af3eff752f44105d9ac4089682e2 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Fri, 3 Sep 2021 22:28:23 +0200 Subject: [PATCH 09/16] add: cxx compiler set --- CMakeLists.txt | 2 ++ libs/spandisc/CMakeLists.txt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78dcaac..e5f6636 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.13.4) set(CMAKE_C_COMPILER "/usr/bin/gcc") set(CMAKE_C_FLAGS "-Wall") +set(CMAKE_CXX_COMPILER "/usr/bin/g++") +set(CMAKE_CXX_FLAGS "-Wall") set(BINPATH "/usr/local/bin") diff --git a/libs/spandisc/CMakeLists.txt b/libs/spandisc/CMakeLists.txt index 0913282..5f52a55 100644 --- a/libs/spandisc/CMakeLists.txt +++ b/libs/spandisc/CMakeLists.txt @@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.13.4) set(CMAKE_C_COMPILER "/usr/bin/gcc") set(CMAKE_C_FLAGS "-Wall") +set(CMAKE_CXX_COMPILER "/usr/bin/g++") +set(CMAKE_CXX_FLAGS "-Wall") set(INSTALL_LIBPATH /usr/local/lib) set(INSTALL_HEADER /usr/local/include/spandisc) -- 2.39.5 From 9a61d03e58feee10bb82773ba754b384bbbb03c6 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 5 Sep 2021 09:26:24 +0200 Subject: [PATCH 10/16] add: man page for discspan --- docs/discspan.1 | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 docs/discspan.1 diff --git a/docs/discspan.1 b/docs/discspan.1 new file mode 100644 index 0000000..889092c --- /dev/null +++ b/docs/discspan.1 @@ -0,0 +1,55 @@ +.TH "DISCSPAN" "1" 2021-09-05 "discspan 1.0.0" "man for discspan" + +.SH SYNOPSIS +.B discspan +\fIoption \fB-i \fIsource \fB-o \fIprefix + +.SH DESCRIPTION +Tool split data optimized on media (e.g. DVD). It uses a text file of file +pathes split into multiple text files. Output text files contains the file +pathes for each media. + +.SH OPTIONS +.TP +.BR -i " \fIsource" +path to source text file, this file contains all file pathes +.TP +.BR -o " \fIprefix" +prefix for output files +.TP +.BR -b +size of Bluray: 25.000.000.000 bytes +.TP +.BR -9 +size of double layer DVD 8.500.000.000 bytes +.TP +.BR -5 +size of sigle layer DVD: 4.700.000.000 bytes +.TP +.BR -c +size of CD: 734.003.200 bytes +.TP +.BR -f " \fIsize" +size in bytes +.TP +.BR -v +show version +.TP +.BR -h +show help + +.SH EXAMPLES +.SS 1. Create a data file list: +find /pfad/zur/den/Dateien -type f > testfile +.SS 2. Execute discspan to split files on single layer DVD +discspan -i testfile -o medium -5 +.SS 3. Copy files from text file into seperated folder +.TP +rsync -av --files-from=medium / /pfad/zum/wegkopieren/ +.TP +or +.TP +cat medium | xargs -i cp -rl --parents {} /pfad/zum/wegkopieren + +.SH AUTHOR +Bastian Dehn -- 2.39.5 From 93624e1ccaf71f0ba580e63988661d64b38d98ee Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 5 Sep 2021 11:55:44 +0200 Subject: [PATCH 11/16] add: install man page for discspan --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index e5f6636..c24956d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ set(CMAKE_CXX_COMPILER "/usr/bin/g++") set(CMAKE_CXX_FLAGS "-Wall") set(BINPATH "/usr/local/bin") +set(MANPATH "/usr/local/share/man") project(discspan) @@ -37,6 +38,9 @@ message(VERBOSE "With component discspan") install(TARGETS discspan DESTINATION ${BINPATH} COMPONENT discspan) +install(FILES docs/discspan.1 + DESTINATION ${MANPATH}/man1 + COMPONENT discspan) ################################################################################ # Build deb Packages -- 2.39.5 From 54bf1945a84e2cd42a95f00731c825a0f17484c5 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 5 Sep 2021 12:18:30 +0200 Subject: [PATCH 12/16] change: install pathes with install prefix --- CMakeLists.txt | 10 +++++----- libs/spandisc/CMakeLists.txt | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c24956d..efda4b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,11 +5,11 @@ set(CMAKE_C_FLAGS "-Wall") set(CMAKE_CXX_COMPILER "/usr/bin/g++") set(CMAKE_CXX_FLAGS "-Wall") -set(BINPATH "/usr/local/bin") -set(MANPATH "/usr/local/share/man") - project(discspan) +set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Install prefix") +message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}") + set(PROJECT_VERSION_MAJOR 1) set(PROJECT_VERSION_MINOR 0) set(PROJECT_VERSION_PATCH 0) @@ -36,10 +36,10 @@ target_link_libraries(discspan spandisc) message(STATUS "Install target discspan") message(VERBOSE "With component discspan") install(TARGETS discspan - DESTINATION ${BINPATH} + DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" COMPONENT discspan) install(FILES docs/discspan.1 - DESTINATION ${MANPATH}/man1 + DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man1" COMPONENT discspan) ################################################################################ diff --git a/libs/spandisc/CMakeLists.txt b/libs/spandisc/CMakeLists.txt index 5f52a55..5167756 100644 --- a/libs/spandisc/CMakeLists.txt +++ b/libs/spandisc/CMakeLists.txt @@ -5,8 +5,8 @@ set(CMAKE_C_FLAGS "-Wall") set(CMAKE_CXX_COMPILER "/usr/bin/g++") set(CMAKE_CXX_FLAGS "-Wall") -set(INSTALL_LIBPATH /usr/local/lib) -set(INSTALL_HEADER /usr/local/include/spandisc) +set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Install prefix") +message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}") project(spandisc) @@ -46,9 +46,9 @@ message(STATUS "Install target spandisc") message(VERBOSE "With component libspandisc") message(VERBOSE "With component libspandisc-dev") install(TARGETS spandisc - DESTINATION ${INSTALL_LIBPATH} + DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" COMPONENT libspandisc - PUBLIC_HEADER DESTINATION ${INSTALL_HEADER} + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_PREFIX}/include" COMPONENT libspandisc-dev) ################################################################################ -- 2.39.5 From 30e131d6ec6e6c85a436649a4766d488526ef03e Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Thu, 10 Feb 2022 19:38:48 +0100 Subject: [PATCH 13/16] remove: set default compiler --- CMakeLists.txt | 2 -- libs/spandisc/CMakeLists.txt | 2 -- 2 files changed, 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index efda4b3..0d2ca1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required(VERSION 3.13.4) -set(CMAKE_C_COMPILER "/usr/bin/gcc") set(CMAKE_C_FLAGS "-Wall") -set(CMAKE_CXX_COMPILER "/usr/bin/g++") set(CMAKE_CXX_FLAGS "-Wall") project(discspan) diff --git a/libs/spandisc/CMakeLists.txt b/libs/spandisc/CMakeLists.txt index 5167756..5ad2023 100644 --- a/libs/spandisc/CMakeLists.txt +++ b/libs/spandisc/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required(VERSION 3.13.4) -set(CMAKE_C_COMPILER "/usr/bin/gcc") set(CMAKE_C_FLAGS "-Wall") -set(CMAKE_CXX_COMPILER "/usr/bin/g++") set(CMAKE_CXX_FLAGS "-Wall") set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Install prefix") -- 2.39.5 From c143632aef03da5d806d3e9e9f214db5cb8ddbb6 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Fri, 11 Feb 2022 19:15:29 +0100 Subject: [PATCH 14/16] add: cmake config for windows and linux CMAKE_SYSTEM_NAME value "Linux" or "Windows" for Linux build deb packages for Windows build zip package --- CMakeLists.txt | 83 ++++++++++++++++++++++-------------- libs/spandisc/CMakeLists.txt | 59 ++++++++++++++++--------- 2 files changed, 91 insertions(+), 51 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d2ca1e..ef7f7db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,15 @@ cmake_minimum_required(VERSION 3.13.4) +set(CMAKE_SYSTEM_NAME "Linux" CACHE STRING "Build for Linux") + +if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CMAKE_C_COMPILER "gcc" CACHE STRING "C Compiler") + set(CMAKE_CXX_COMPILER "g++" CACHE STRING "C++ Compiler") +elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows") + set(CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc" CACHE STRING "C Compiler") + set(CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++" CACHE STRING "C++ Compiler") +endif() + set(CMAKE_C_FLAGS "-Wall") set(CMAKE_CXX_FLAGS "-Wall") @@ -33,45 +43,54 @@ target_link_libraries(discspan spandisc) message(STATUS "Install target discspan") message(VERBOSE "With component discspan") -install(TARGETS discspan - DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" - COMPONENT discspan) -install(FILES docs/discspan.1 - DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man1" - COMPONENT discspan) + +if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + install(TARGETS discspan + DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" + COMPONENT discspan) + install(FILES docs/discspan.1 + DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man1" + COMPONENT discspan) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows") + install(TARGETS discspan COMPONENT discspan) +endif() ################################################################################ # Build deb Packages # ################################################################################ -set(CPACK_GENERATOR "DEB") -set(CPACK_DEB_COMPONENT_INSTALL ON) -set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) -set(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}") -set(CPACK_DEBIAN_PACKAGE_RELEASE "1") -set(CPACK_DEBIAN_ARCHITECTURE "amd64") -set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Bastian Dehn Date: Sat, 12 Feb 2022 15:37:41 +0100 Subject: [PATCH 15/16] add: status message for build system --- CMakeLists.txt | 2 ++ libs/spandisc/CMakeLists.txt | 1 + 2 files changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index ef7f7db..2080076 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.13.4) set(CMAKE_SYSTEM_NAME "Linux" CACHE STRING "Build for Linux") +message(STATUS "CMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}") + if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(CMAKE_C_COMPILER "gcc" CACHE STRING "C Compiler") set(CMAKE_CXX_COMPILER "g++" CACHE STRING "C++ Compiler") diff --git a/libs/spandisc/CMakeLists.txt b/libs/spandisc/CMakeLists.txt index f698e97..bc719cc 100644 --- a/libs/spandisc/CMakeLists.txt +++ b/libs/spandisc/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 3.13.4) set(CMAKE_SYSTEM_NAME "Linux" CACHE STRING "Build for Linux") +message(STATUS "CMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}") if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(CMAKE_C_COMPILER "gcc" CACHE STRING "C Compiler") -- 2.39.5 From 00b88ef08649e62370e9c72d932177d136d38493 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Wed, 9 Mar 2022 17:18:54 +0100 Subject: [PATCH 16/16] fix: released pointer set to null --- libs/spandisc/src/splitter.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/spandisc/src/splitter.c b/libs/spandisc/src/splitter.c index 2cc5ab0..5a8979d 100644 --- a/libs/spandisc/src/splitter.c +++ b/libs/spandisc/src/splitter.c @@ -33,6 +33,7 @@ int strcmpfunc(const void *filea, const void *fileb) void free_medium(medium_t *medium) { free(medium->filearray); + medium->filearray = NULL; } void free_collection(collection_t *col) @@ -42,6 +43,7 @@ void free_collection(collection_t *col) } free(col->disc); + col->disc = NULL; } medium_t init_empty_medium(medium_t srcdata) -- 2.39.5