From d9633663e9efe79ffe6b18d679364c3dbb30a8af Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Fri, 5 Feb 2021 15:09:43 +0100
Subject: [PATCH] MISC: Update kara display string and add the mkv test file

---
 src/Makefile.am       |  6 ++++-
 src/Makefile.in       | 56 +++++++++++++++++++++++++++++++++++------
 src/database/disk.sql |  2 +-
 src/main/mkv_test.c   | 58 +++++++++++++++++++++++++++++++++++++++++++
 src/mkv/utils.c       |  2 +-
 5 files changed, 113 insertions(+), 11 deletions(-)
 create mode 100644 src/main/mkv_test.c

diff --git a/src/Makefile.am b/src/Makefile.am
index 6d4b9724..59e7f840 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -84,7 +84,11 @@ EXTRA_DIST = database/disk.sql database/memory.sql
 ## MAIN FILES ##
 ################
 
-bin_PROGRAMS = lektord lkt
+bin_PROGRAMS = lektord lkt mkv_test
+
+## Test program for the new mkv writes
+mkv_test_SOURCES = main/mkv_test.c base/common.c base/segv.c mkv/mkv.c mkv/utils.c mkv/write.c base/bufferfd.c
+mkv_test_LDFLAGS = -pthread -ldl -static
 
 ## The lkt client
 lkt_SOURCES = main/lkt.c base/cmd.c base/common.c base/segv.c
diff --git a/src/Makefile.in b/src/Makefile.in
index 9a9bb385..e7980a23 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -134,7 +134,8 @@ host_triplet = @host@
 
 # TODO pour le Kubat du futur: c'est pas beau, trouver un truc pour que ça se fasse tout seul
 @LKT_STATIC_MODULE_TRUE@am__append_8 = module/thread.c
-bin_PROGRAMS = lektord$(EXEEXT) lkt$(EXEEXT) $(am__EXEEXT_1)
+bin_PROGRAMS = lektord$(EXEEXT) lkt$(EXEEXT) mkv_test$(EXEEXT) \
+	$(am__EXEEXT_1)
 @LKT_KLKT_TRUE@am__append_9 = klkt/klkt
 @LKT_KLKT_TRUE@am__append_10 = $(BUILT_SOURCES)
 @LKT_KLKT_TRUE@am__append_11 = $(BUILT_SOURCES)
@@ -270,6 +271,14 @@ lkt_LDADD = $(LDADD)
 lkt_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(lkt_LDFLAGS) $(LDFLAGS) -o $@
+am_mkv_test_OBJECTS = main/mkv_test.$(OBJEXT) base/common.$(OBJEXT) \
+	base/segv.$(OBJEXT) mkv/mkv.$(OBJEXT) mkv/utils.$(OBJEXT) \
+	mkv/write.$(OBJEXT) base/bufferfd.$(OBJEXT)
+mkv_test_OBJECTS = $(am_mkv_test_OBJECTS)
+mkv_test_LDADD = $(LDADD)
+mkv_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(mkv_test_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -285,7 +294,8 @@ am__v_at_1 =
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/inc/lektor
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = base/$(DEPDIR)/cmd.Po base/$(DEPDIR)/common.Po \
+am__depfiles_remade = base/$(DEPDIR)/bufferfd.Po base/$(DEPDIR)/cmd.Po \
+	base/$(DEPDIR)/common.Po \
 	base/$(DEPDIR)/liblektor_la-bufferfd.Plo \
 	base/$(DEPDIR)/liblektor_la-cmd.Plo \
 	base/$(DEPDIR)/liblektor_la-commands.Plo \
@@ -308,9 +318,11 @@ am__depfiles_remade = base/$(DEPDIR)/cmd.Po base/$(DEPDIR)/common.Po \
 	database/$(DEPDIR)/liblektor_la-user.Plo \
 	klkt/$(DEPDIR)/klkt-icons.qrc.Po klkt/$(DEPDIR)/klkt-klkt.Po \
 	klkt/$(DEPDIR)/klkt-klkt.moc.Po main/$(DEPDIR)/lkt.Po \
-	main/$(DEPDIR)/server.Po mkv/$(DEPDIR)/liblektor_la-mkv.Plo \
+	main/$(DEPDIR)/mkv_test.Po main/$(DEPDIR)/server.Po \
+	mkv/$(DEPDIR)/liblektor_la-mkv.Plo \
 	mkv/$(DEPDIR)/liblektor_la-utils.Plo \
-	mkv/$(DEPDIR)/liblektor_la-write.Plo \
+	mkv/$(DEPDIR)/liblektor_la-write.Plo mkv/$(DEPDIR)/mkv.Po \
+	mkv/$(DEPDIR)/utils.Po mkv/$(DEPDIR)/write.Po \
 	module/$(DEPDIR)/liblektor_la-thread.Plo \
 	module/$(DEPDIR)/liblktmodrepo_la-module_repo.Plo \
 	module/$(DEPDIR)/liblktmodrepo_la-worker.Plo \
@@ -358,11 +370,11 @@ am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 SOURCES = $(liblektor_la_SOURCES) $(liblktmodrepo_la_SOURCES) \
 	$(liblktmodsdl_la_SOURCES) $(klkt_klkt_SOURCES) \
-	$(lektord_SOURCES) $(lkt_SOURCES)
+	$(lektord_SOURCES) $(lkt_SOURCES) $(mkv_test_SOURCES)
 DIST_SOURCES = $(am__liblektor_la_SOURCES_DIST) \
 	$(liblktmodrepo_la_SOURCES) $(liblktmodsdl_la_SOURCES) \
 	$(am__klkt_klkt_SOURCES_DIST) $(lektord_SOURCES) \
-	$(lkt_SOURCES)
+	$(lkt_SOURCES) $(mkv_test_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -592,6 +604,8 @@ liblektor_la_LDFLAGS = -avoid-version -pthread -lsqlite3 -ldl \
 @LKT_STATIC_MODULE_TRUE@liblektor_la_LIBADD = liblktmodsdl.la liblktmodrepo.la
 CLEANFILES = database/disk.c database/memory.c $(am__append_11)
 EXTRA_DIST = database/disk.sql database/memory.sql $(am__append_10)
+mkv_test_SOURCES = main/mkv_test.c base/common.c base/segv.c mkv/mkv.c mkv/utils.c mkv/write.c base/bufferfd.c
+mkv_test_LDFLAGS = -pthread -ldl -static
 lkt_SOURCES = main/lkt.c base/cmd.c base/common.c base/segv.c
 lkt_LDFLAGS = -pthread -ldl -static
 lektord_SOURCES = main/server.c
@@ -899,6 +913,17 @@ base/segv.$(OBJEXT): base/$(am__dirstamp) \
 lkt$(EXEEXT): $(lkt_OBJECTS) $(lkt_DEPENDENCIES) $(EXTRA_lkt_DEPENDENCIES) 
 	@rm -f lkt$(EXEEXT)
 	$(AM_V_CCLD)$(lkt_LINK) $(lkt_OBJECTS) $(lkt_LDADD) $(LIBS)
+main/mkv_test.$(OBJEXT): main/$(am__dirstamp) \
+	main/$(DEPDIR)/$(am__dirstamp)
+mkv/mkv.$(OBJEXT): mkv/$(am__dirstamp) mkv/$(DEPDIR)/$(am__dirstamp)
+mkv/utils.$(OBJEXT): mkv/$(am__dirstamp) mkv/$(DEPDIR)/$(am__dirstamp)
+mkv/write.$(OBJEXT): mkv/$(am__dirstamp) mkv/$(DEPDIR)/$(am__dirstamp)
+base/bufferfd.$(OBJEXT): base/$(am__dirstamp) \
+	base/$(DEPDIR)/$(am__dirstamp)
+
+mkv_test$(EXEEXT): $(mkv_test_OBJECTS) $(mkv_test_DEPENDENCIES) $(EXTRA_mkv_test_DEPENDENCIES) 
+	@rm -f mkv_test$(EXEEXT)
+	$(AM_V_CCLD)$(mkv_test_LINK) $(mkv_test_OBJECTS) $(mkv_test_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -918,6 +943,7 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/bufferfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/cmd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/common.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/liblektor_la-bufferfd.Plo@am__quote@ # am--include-marker
@@ -945,10 +971,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@klkt/$(DEPDIR)/klkt-klkt.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@klkt/$(DEPDIR)/klkt-klkt.moc.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/lkt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/mkv_test.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/server.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@mkv/$(DEPDIR)/liblektor_la-mkv.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@mkv/$(DEPDIR)/liblektor_la-utils.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@mkv/$(DEPDIR)/liblektor_la-write.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mkv/$(DEPDIR)/mkv.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mkv/$(DEPDIR)/utils.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mkv/$(DEPDIR)/write.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@module/$(DEPDIR)/liblektor_la-thread.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@module/$(DEPDIR)/liblktmodrepo_la-module_repo.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@module/$(DEPDIR)/liblktmodrepo_la-worker.Plo@am__quote@ # am--include-marker
@@ -1432,7 +1462,8 @@ clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
 	clean-libtool clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
-		-rm -f base/$(DEPDIR)/cmd.Po
+		-rm -f base/$(DEPDIR)/bufferfd.Po
+	-rm -f base/$(DEPDIR)/cmd.Po
 	-rm -f base/$(DEPDIR)/common.Po
 	-rm -f base/$(DEPDIR)/liblektor_la-bufferfd.Plo
 	-rm -f base/$(DEPDIR)/liblektor_la-cmd.Plo
@@ -1459,10 +1490,14 @@ distclean: distclean-am
 	-rm -f klkt/$(DEPDIR)/klkt-klkt.Po
 	-rm -f klkt/$(DEPDIR)/klkt-klkt.moc.Po
 	-rm -f main/$(DEPDIR)/lkt.Po
+	-rm -f main/$(DEPDIR)/mkv_test.Po
 	-rm -f main/$(DEPDIR)/server.Po
 	-rm -f mkv/$(DEPDIR)/liblektor_la-mkv.Plo
 	-rm -f mkv/$(DEPDIR)/liblektor_la-utils.Plo
 	-rm -f mkv/$(DEPDIR)/liblektor_la-write.Plo
+	-rm -f mkv/$(DEPDIR)/mkv.Po
+	-rm -f mkv/$(DEPDIR)/utils.Po
+	-rm -f mkv/$(DEPDIR)/write.Po
 	-rm -f module/$(DEPDIR)/liblektor_la-thread.Plo
 	-rm -f module/$(DEPDIR)/liblktmodrepo_la-module_repo.Plo
 	-rm -f module/$(DEPDIR)/liblktmodrepo_la-worker.Plo
@@ -1516,7 +1551,8 @@ install-ps-am:
 installcheck-am: installcheck-binPROGRAMS
 
 maintainer-clean: maintainer-clean-am
-		-rm -f base/$(DEPDIR)/cmd.Po
+		-rm -f base/$(DEPDIR)/bufferfd.Po
+	-rm -f base/$(DEPDIR)/cmd.Po
 	-rm -f base/$(DEPDIR)/common.Po
 	-rm -f base/$(DEPDIR)/liblektor_la-bufferfd.Plo
 	-rm -f base/$(DEPDIR)/liblektor_la-cmd.Plo
@@ -1543,10 +1579,14 @@ maintainer-clean: maintainer-clean-am
 	-rm -f klkt/$(DEPDIR)/klkt-klkt.Po
 	-rm -f klkt/$(DEPDIR)/klkt-klkt.moc.Po
 	-rm -f main/$(DEPDIR)/lkt.Po
+	-rm -f main/$(DEPDIR)/mkv_test.Po
 	-rm -f main/$(DEPDIR)/server.Po
 	-rm -f mkv/$(DEPDIR)/liblektor_la-mkv.Plo
 	-rm -f mkv/$(DEPDIR)/liblektor_la-utils.Plo
 	-rm -f mkv/$(DEPDIR)/liblektor_la-write.Plo
+	-rm -f mkv/$(DEPDIR)/mkv.Po
+	-rm -f mkv/$(DEPDIR)/utils.Po
+	-rm -f mkv/$(DEPDIR)/write.Po
 	-rm -f module/$(DEPDIR)/liblektor_la-thread.Plo
 	-rm -f module/$(DEPDIR)/liblktmodrepo_la-module_repo.Plo
 	-rm -f module/$(DEPDIR)/liblktmodrepo_la-worker.Plo
diff --git a/src/database/disk.sql b/src/database/disk.sql
index befc1a34..1a5f4bf4 100644
--- a/src/database/disk.sql
+++ b/src/database/disk.sql
@@ -19,7 +19,7 @@ CREATE TABLE IF NOT EXISTS kara
   , available   INTEGER CHECK(available = 0 OR available = 1) DEFAULT 1 NOT NULL
   , string      TEXT GENERATED ALWAYS AS
     ( category || ' - ' || language || ' / ' || source_name || ' - ' || song_type ||
-      song_number || ' - ' || song_name || ' [ ' || author_name || ' ]' ||
+      song_number || ' - ' || song_name || ' [' || author_name || ']' ||
       CASE WHEN available = 0 THEN ' (U)' ELSE '' END
     ) STORED
   );
diff --git a/src/main/mkv_test.c b/src/main/mkv_test.c
new file mode 100644
index 00000000..be64642e
--- /dev/null
+++ b/src/main/mkv_test.c
@@ -0,0 +1,58 @@
+#define _POSIX_C_SOURCE 200809L
+
+#include <lektor/common.h>
+#include <lektor/segv.h>
+#include <lektor/mkv.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+#include <unistd.h>
+#include <signal.h>
+#include <limits.h>
+#include <ctype.h>
+
+int
+main(int argc, char **argv)
+{
+    if (argc != 2) {
+        puts("ARG MUST BE A FILENAME");
+        exit(EXIT_FAILURE);
+    }
+
+#define WHICH "TOTO"
+
+    struct kara_metadata mdt = {
+        .song_name   = WHICH "_SONG_NAME",
+        .source_name = WHICH "_SOURCE_NAME",
+        .category    = WHICH "_CAT_NAME",
+        .language    = WHICH "_LANG_NAME",
+        .author_name = WHICH "_AUTHOR_NAME",
+        .song_type   = WHICH "_TYPE ",
+        .song_number = 42,
+    };
+
+    puts(argv[1]);
+
+    if (kara_metadata_write(&mdt, argv[1], "/usr/bin/mkvpropedit")) {
+        puts("WRITE FAILED");
+        exit(EXIT_FAILURE);
+    }
+
+    if (kara_metadata_read(&mdt, argv[1])) {
+        puts("WRITE FAILED");
+        exit(EXIT_FAILURE);
+    }
+
+    fprintf(stdout, "title:\t%s\nsource:\t%s\ncat:\t%s\nlang:\t%s\nauthor:\t%s\ntype:\t%s%d\n",
+            mdt.song_name, mdt.source_name, mdt.category, mdt.language, mdt.author_name,
+            mdt.song_type, mdt.song_number);
+
+    return 0;
+
+    return 0;
+}
diff --git a/src/mkv/utils.c b/src/mkv/utils.c
index f80bf170..ef8c557f 100644
--- a/src/mkv/utils.c
+++ b/src/mkv/utils.c
@@ -24,7 +24,7 @@ mdtcat(struct kara_metadata *mdt, char **ret)
         return;
     }
 
-    safe_snprintf(*ret, size, "%s - %s / %s - %s%d - %s [ %s ]", mdt->category,
+    safe_snprintf(*ret, size, "%s - %s / %s - %s%d - %s [%s]", mdt->category,
                   mdt->language, mdt->source_name, mdt->song_type,
                   mdt->song_number, mdt->song_name, mdt->author_name);
 }
-- 
GitLab