[Scummvm-cvs-logs] SF.net SVN: scummvm:[42032] tools/branches/gsoc2009-gui
joostp at users.sourceforge.net
joostp at users.sourceforge.net
Thu Jul 2 21:01:42 CEST 2009
Revision: 42032
http://scummvm.svn.sourceforge.net/scummvm/?rev=42032&view=rev
Author: joostp
Date: 2009-07-02 19:01:41 +0000 (Thu, 02 Jul 2009)
Log Message:
-----------
- allow the same tool objects to be used by standalone and GUI tool linking (by defining a weak main symbol)
- add tool .o's to tools_gui target in Makefile
- fix name collision between extract_mm_nes and extract_loom_tg16
Modified Paths:
--------------
tools/branches/gsoc2009-gui/Makefile
tools/branches/gsoc2009-gui/compress_agos.cpp
tools/branches/gsoc2009-gui/compress_gob.cpp
tools/branches/gsoc2009-gui/compress_kyra.cpp
tools/branches/gsoc2009-gui/compress_queen.cpp
tools/branches/gsoc2009-gui/compress_saga.cpp
tools/branches/gsoc2009-gui/compress_scumm_bun.cpp
tools/branches/gsoc2009-gui/compress_scumm_san.cpp
tools/branches/gsoc2009-gui/compress_scumm_sou.cpp
tools/branches/gsoc2009-gui/compress_sword1.cpp
tools/branches/gsoc2009-gui/compress_sword2.cpp
tools/branches/gsoc2009-gui/compress_touche.cpp
tools/branches/gsoc2009-gui/compress_tucker.cpp
tools/branches/gsoc2009-gui/encode_dxa.cpp
tools/branches/gsoc2009-gui/extract_agos.cpp
tools/branches/gsoc2009-gui/extract_gob_stk.cpp
tools/branches/gsoc2009-gui/extract_kyra.cpp
tools/branches/gsoc2009-gui/extract_loom_tg16.cpp
tools/branches/gsoc2009-gui/extract_mm_apple.cpp
tools/branches/gsoc2009-gui/extract_mm_c64.cpp
tools/branches/gsoc2009-gui/extract_mm_nes.cpp
tools/branches/gsoc2009-gui/extract_parallaction.cpp
tools/branches/gsoc2009-gui/extract_scumm_mac.cpp
tools/branches/gsoc2009-gui/extract_zak_c64.cpp
Modified: tools/branches/gsoc2009-gui/Makefile
===================================================================
--- tools/branches/gsoc2009-gui/Makefile 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/Makefile 2009-07-02 19:01:41 UTC (rev 42032)
@@ -7,7 +7,7 @@
srcdir ?= .
-DEFINES := -DUNIX
+DEFINES := -DUNIX -DEXPORT_MAIN
LDFLAGS := $(LDFLAGS)
INCLUDES := -I. -I$(srcdir)
LIBS :=
@@ -204,8 +204,13 @@
extract_zak_c64$(EXEEXT): extract_zak_c64.o util.o
$(CXX) $(LDFLAGS) -o $@ $+
-tools_gui$(EXEEXT): gui/main.o gui/pages.o gui/tools.o
- $(CXX) $(LDFLAGS) -o $@ $+ `wx-config --libs`
+tools_gui$(EXEEXT): gui/main.o gui/pages.o gui/tools.o compress_agos.o compress_gob.o compress_kyra.o \
+ compress_queen.o compress_saga.o compress_scumm_bun.o compress_scumm_san.o compress_scumm_sou.o \
+ compress_sword1.o compress_sword2.o compress_touche.o compress_tucker.o encode_dxa.o \
+ extract_agos.o extract_gob_stk.o extract_kyra.o extract_loom_tg16.o extract_mm_apple.o \
+ extract_mm_c64.o extract_mm_nes.o extract_parallaction.o extract_scumm_mac.o \
+ extract_zak_c64.o kyra_pak.o kyra_ins.o compress.o util.o $(UTILS)
+ $(CXX) $(LDFLAGS) -o $@ $+ `wx-config --libs` -lpng -lz -lvorbis -logg -lvorbisenc -lFLAC
sword2_clue$(EXEEXT): sword2_clue.o util.o
$(CXX) $(LDFLAGS) -o $@ $+ `pkg-config --libs gtk+-2.0`
Modified: tools/branches/gsoc2009-gui/compress_agos.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_agos.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_agos.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -282,3 +282,10 @@
return(0);
}
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_agos)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_gob.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_gob.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_gob.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -395,3 +395,10 @@
else
return false;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_gob)(argc, argv);
+}
+#endif
Modified: tools/branches/gsoc2009-gui/compress_kyra.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_kyra.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_kyra.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -422,3 +422,10 @@
error("Unknown filetype of file: '%s'", infile->getFullPath());
}
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_kyra)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_queen.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_queen.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_queen.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -384,3 +384,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_queen)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_saga.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_saga.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_saga.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -493,3 +493,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_saga)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_scumm_bun.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_scumm_bun.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_scumm_bun.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -1197,3 +1197,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_scumm_bun)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_scumm_san.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_scumm_san.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_scumm_san.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -895,3 +895,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_scumm_san)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_scumm_sou.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_scumm_sou.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_scumm_sou.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -210,3 +210,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_scumm_sou)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_sword1.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_sword1.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_sword1.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -655,3 +655,10 @@
return EXIT_SUCCESS;
}
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_sword1)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_sword2.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_sword2.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_sword2.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -238,3 +238,11 @@
return EXIT_SUCCESS;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_sword2)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_touche.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_touche.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_touche.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -218,3 +218,11 @@
compress_sound_data(&inpath, &outpath);
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_touche)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/compress_tucker.cpp
===================================================================
--- tools/branches/gsoc2009-gui/compress_tucker.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/compress_tucker.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -569,3 +569,11 @@
compress_sound_files(&inpath, &outpath);
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_tucker)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/encode_dxa.cpp
===================================================================
--- tools/branches/gsoc2009-gui/encode_dxa.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/encode_dxa.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -795,3 +795,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(compress_dxa)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/extract_agos.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_agos.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_agos.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -234,4 +234,12 @@
}
return 0;
-}
\ No newline at end of file
+}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_agos)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/extract_gob_stk.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_gob_stk.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_gob_stk.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -470,3 +470,11 @@
return unpacked;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_gob_stk)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/extract_kyra.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_kyra.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_kyra.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -112,3 +112,11 @@
delete extract;
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_kyra)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/extract_loom_tg16.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_loom_tg16.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_loom_tg16.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -1414,3 +1414,11 @@
notice("All done!");
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_loom_tg16)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/extract_mm_apple.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_mm_apple.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_mm_apple.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -176,3 +176,11 @@
notice("All done!");
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_mm_apple)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/extract_mm_c64.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_mm_c64.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_mm_c64.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -174,3 +174,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_mm_c64)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/extract_mm_nes.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_mm_nes.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_mm_nes.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -1125,7 +1125,7 @@
uint16 script_addr[200];
uint8 sound_lfl[100];
uint16 sound_addr[100];
-} GCC_PACK lfl_index;
+} GCC_PACK mm_lfl_index;
#include "utils/pack-end.h" /* END STRUCT PACKING */
@@ -1241,7 +1241,7 @@
}
#ifdef MAKE_LFLS
- memset(&lfl_index, 0, sizeof(struct t_lflindex));
+ memset(&mm_lfl_index, 0, sizeof(struct t_lflindex));
for (i = 0; lfls[i].num != -1; i++) {
const struct t_lfl *lfl = &lfls[i];
@@ -1257,56 +1257,56 @@
const struct t_lflentry *entry = &lfl->entries[j];
switch (entry->type->type) {
case NES_ROOM:
- lfl_index.room_lfl[entry->index] = lfl->num;
- lfl_index.room_addr[entry->index] = (uint16)ftell(output);
+ mm_lfl_index.room_lfl[entry->index] = lfl->num;
+ mm_lfl_index.room_addr[entry->index] = (uint16)ftell(output);
break;
case NES_COSTUME:
- lfl_index.costume_lfl[entry->index] = lfl->num;
- lfl_index.costume_addr[entry->index] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[entry->index] = lfl->num;
+ mm_lfl_index.costume_addr[entry->index] = (uint16)ftell(output);
break;
case NES_SPRDESC:
- lfl_index.costume_lfl[entry->index + 25] = lfl->num;
- lfl_index.costume_addr[entry->index + 25] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[entry->index + 25] = lfl->num;
+ mm_lfl_index.costume_addr[entry->index + 25] = (uint16)ftell(output);
break;
case NES_SPRLENS:
- lfl_index.costume_lfl[entry->index + 27] = lfl->num;
- lfl_index.costume_addr[entry->index + 27] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[entry->index + 27] = lfl->num;
+ mm_lfl_index.costume_addr[entry->index + 27] = (uint16)ftell(output);
break;
case NES_SPROFFS:
- lfl_index.costume_lfl[entry->index + 29] = lfl->num;
- lfl_index.costume_addr[entry->index + 29] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[entry->index + 29] = lfl->num;
+ mm_lfl_index.costume_addr[entry->index + 29] = (uint16)ftell(output);
break;
case NES_SPRDATA:
- lfl_index.costume_lfl[entry->index + 31] = lfl->num;
- lfl_index.costume_addr[entry->index + 31] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[entry->index + 31] = lfl->num;
+ mm_lfl_index.costume_addr[entry->index + 31] = (uint16)ftell(output);
break;
case NES_COSTUMEGFX:
- lfl_index.costume_lfl[entry->index + 33] = lfl->num;
- lfl_index.costume_addr[entry->index + 33] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[entry->index + 33] = lfl->num;
+ mm_lfl_index.costume_addr[entry->index + 33] = (uint16)ftell(output);
break;
case NES_SPRPALS:
- lfl_index.costume_lfl[entry->index + 35] = lfl->num;
- lfl_index.costume_addr[entry->index + 35] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[entry->index + 35] = lfl->num;
+ mm_lfl_index.costume_addr[entry->index + 35] = (uint16)ftell(output);
break;
case NES_ROOMGFX:
- lfl_index.costume_lfl[entry->index + 37] = lfl->num;
- lfl_index.costume_addr[entry->index + 37] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[entry->index + 37] = lfl->num;
+ mm_lfl_index.costume_addr[entry->index + 37] = (uint16)ftell(output);
break;
case NES_SCRIPT:
- lfl_index.script_lfl[entry->index] = lfl->num;
- lfl_index.script_addr[entry->index] = (uint16)ftell(output);
+ mm_lfl_index.script_lfl[entry->index] = lfl->num;
+ mm_lfl_index.script_addr[entry->index] = (uint16)ftell(output);
break;
case NES_SOUND:
- lfl_index.sound_lfl[entry->index] = lfl->num;
- lfl_index.sound_addr[entry->index] = (uint16)ftell(output);
+ mm_lfl_index.sound_lfl[entry->index] = lfl->num;
+ mm_lfl_index.sound_addr[entry->index] = (uint16)ftell(output);
break;
case NES_CHARSET:
- lfl_index.costume_lfl[77] = lfl->num;
- lfl_index.costume_addr[77] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[77] = lfl->num;
+ mm_lfl_index.costume_addr[77] = (uint16)ftell(output);
break;
case NES_PREPLIST:
- lfl_index.costume_lfl[78] = lfl->num;
- lfl_index.costume_addr[78] = (uint16)ftell(output);
+ mm_lfl_index.costume_lfl[78] = lfl->num;
+ mm_lfl_index.costume_addr[78] = (uint16)ftell(output);
break;
default:
error("Unindexed entry found");
@@ -1327,7 +1327,7 @@
writeUint16LE(output, 0x4643);
extract_resource(input, output, &res_globdata.langs[ROMset][0], res_globdata.type);
for (i = 0; i < (int)sizeof(struct t_lflindex); i++)
- writeByte(output, ((uint8 *)&lfl_index)[i]);
+ writeByte(output, ((uint8 *)&mm_lfl_index)[i]);
fclose(output);
#else /* !MAKE_LFLS */
dump_resource(input, "globdata.dmp", 0, &res_globdata.langs[ROMset][0], res_globdata.type);
@@ -1358,3 +1358,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_mm_nes)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/extract_parallaction.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_parallaction.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_parallaction.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -347,3 +347,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_parallaction)(argc, argv);
+}
+#endif
+
Modified: tools/branches/gsoc2009-gui/extract_scumm_mac.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_scumm_mac.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_scumm_mac.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -154,3 +154,9 @@
fclose(ifp);
return 0;
}
+
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_scumm_mac)(argc, argv);
+}
+
Modified: tools/branches/gsoc2009-gui/extract_zak_c64.cpp
===================================================================
--- tools/branches/gsoc2009-gui/extract_zak_c64.cpp 2009-07-02 16:15:32 UTC (rev 42031)
+++ tools/branches/gsoc2009-gui/extract_zak_c64.cpp 2009-07-02 19:01:41 UTC (rev 42032)
@@ -176,3 +176,11 @@
return 0;
}
+
+#ifdef UNIX
+int main(int argc, char *argv[]) __attribute__((weak));
+int main(int argc, char *argv[]) {
+ return export_main(extract_zak_c64)(argc, argv);
+}
+#endif
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list