diff options
author | db <db@FreeBSD.org> | 2013-12-15 08:50:37 +0800 |
---|---|---|
committer | db <db@FreeBSD.org> | 2013-12-15 08:50:37 +0800 |
commit | 3b2a208e86761ef0b18d96e29959aae96e5cc0fb (patch) | |
tree | df9a085070a1919ff9435428e6c6abee3ca39cf4 /comms/soundmodem | |
parent | 60b1ed4602fd4fb97d9b4731f4780bfdeae86c5f (diff) | |
download | freebsd-ports-gnome-3b2a208e86761ef0b18d96e29959aae96e5cc0fb.tar.gz freebsd-ports-gnome-3b2a208e86761ef0b18d96e29959aae96e5cc0fb.tar.zst freebsd-ports-gnome-3b2a208e86761ef0b18d96e29959aae96e5cc0fb.zip |
- Fix build on 10
- Add STAGEDIR
- Add LICENSE
Diffstat (limited to 'comms/soundmodem')
18 files changed, 453 insertions, 4 deletions
diff --git a/comms/soundmodem/Makefile b/comms/soundmodem/Makefile index a705e2f7b64f..7896272efc39 100644 --- a/comms/soundmodem/Makefile +++ b/comms/soundmodem/Makefile @@ -10,16 +10,16 @@ MASTER_SITES= http://www.baycom.org/~tom/ham/soundmodem/ \ MAINTAINER= db@FreeBSD.org COMMENT= Amateur Radio sound modem +LICENSE= GPLv1 + LIB_DEPENDS= libaudiofile.so:${PORTSDIR}/audio/libaudiofile CONFIGURE_ARGS= --disable-alsatest WRKSRC= ${WRKDIR}/${DISTNAME} -USES= gmake pkgconfig +USES= gmake pkgconfig gettext HAS_CONFIGURE= yes USE_GNOME= gtk20 libxml2 -MAN8= soundmodem.8 soundmodemconfig.8 -NO_STAGE= yes pre-patch: @${CP} ${FILESDIR}/soundmodem ${WRKSRC} @@ -31,6 +31,6 @@ post-patch: ${WRKSRC}/configapp/src/main.c \ ${WRKSRC}/soundmodem post-install: - ${INSTALL_SCRIPT} ${WRKSRC}/soundmodem ${PREFIX}/etc/rc.d + ${INSTALL_SCRIPT} ${WRKSRC}/soundmodem ${STAGEDIR}${PREFIX}/etc/rc.d .include <bsd.port.mk> diff --git a/comms/soundmodem/files/patch-configapp_src_Makefile.in b/comms/soundmodem/files/patch-configapp_src_Makefile.in new file mode 100644 index 000000000000..be23bec4ccdd --- /dev/null +++ b/comms/soundmodem/files/patch-configapp_src_Makefile.in @@ -0,0 +1,20 @@ +--- configapp/src/Makefile.in.orig 2012-11-07 05:55:36.000000000 -0500 ++++ configapp/src/Makefile.in 2013-12-14 12:09:14.352210905 -0500 +@@ -87,7 +87,7 @@ + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(INTLLIBS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ + SOURCES = $(soundmodemconfig_SOURCES) + DIST_SOURCES = $(soundmodemconfig_SOURCES) + am__can_run_installinfo = \ +@@ -300,7 +300,7 @@ + + soundmodemconfig_LDADD = ../../soundcard/liblog.a ../../soundcard/libaudioio.a ../../soundcard/libpttio.a \ + $(MODEMLIBS) ../../matlib/libmat.a ../../libmisc/libmisc.a ../../soundcard/libcommon.a \ +- @LIBTHREAD@ @GTK_LIBS@ @XML_LIBS@ @AUDIOFILE_LIBS@ @ALSA_LIBS@ $(RCOBJ) ++ @LIBINTL@ @LIBTHREAD@ @GTK_LIBS@ @XML_LIBS@ @AUDIOFILE_LIBS@ @ALSA_LIBS@ $(RCOBJ) + + soundmodemconfig_LDFLAGS = $(MWINDOWS) + EXTRA_DIST = configapp.rc soundmodemconfig.8 diff --git a/comms/soundmodem/files/patch-configapp_src_diag.c b/comms/soundmodem/files/patch-configapp_src_diag.c new file mode 100644 index 000000000000..16e1410ba6d5 --- /dev/null +++ b/comms/soundmodem/files/patch-configapp_src_diag.c @@ -0,0 +1,11 @@ +--- configapp/src/diag.c.orig 2013-12-13 14:39:25.388350545 -0500 ++++ configapp/src/diag.c 2013-12-13 14:40:12.600347047 -0500 +@@ -473,7 +473,7 @@ + cp += sprintf(cp, "%c", diagstate.p3d.packet[i+j]); + } + } +- cp += sprintf(cp, "\n%04x: %02x %02x%44s", 512, diagstate.p3d.packet[512], diagstate.p3d.packet[514], " "); ++ cp += sprintf(cp, "\n%04x: %02x %02x%44s", 512, diagstate.p3d.packet[512], diagstate.p3d.packet[513], " "); + for (i = 512; i < 514; i++) { + if (diagstate.p3d.packet[i] < ' ' || diagstate.p3d.packet[i] >= 0x80) + cp += sprintf(cp, "."); diff --git a/comms/soundmodem/files/patch-fsk_gendf9icfilt.cc b/comms/soundmodem/files/patch-fsk_gendf9icfilt.cc new file mode 100644 index 000000000000..9a4024637918 --- /dev/null +++ b/comms/soundmodem/files/patch-fsk_gendf9icfilt.cc @@ -0,0 +1,21 @@ +--- fsk/gendf9icfilt.cc.orig 2013-12-13 08:19:49.459920041 -0500 ++++ fsk/gendf9icfilt.cc 2013-12-13 08:43:50.641820677 -0500 +@@ -41,6 +41,8 @@ + + #include "getopt.h" + ++#define FFTSZ 2048 ++ + /* --------------------------------------------------------------------- */ + + template<typename T> complex<T> rxfilter(T freq) +@@ -173,7 +175,8 @@ + printtransferfunc(os, fftsz, over); + else + os << "/* this file is automatically generated, do not edit!! */\n\n"; +- complex<double> fftb[fftsz]; ++// complex<double> fftb[fftsz]; ++ complex<double> fftb[FFTSZ]; + double rpulse[fftsz], tpulse[fftsz]; + double dover = double(over) / fftsz; + double sum; diff --git a/comms/soundmodem/files/patch-matlib_mat.hh b/comms/soundmodem/files/patch-matlib_mat.hh new file mode 100644 index 000000000000..4884ad08fcef --- /dev/null +++ b/comms/soundmodem/files/patch-matlib_mat.hh @@ -0,0 +1,63 @@ +--- matlib/mat.hh.orig 2013-12-13 08:25:15.148898287 -0500 ++++ matlib/mat.hh 2013-12-13 08:45:23.061999828 -0500 +@@ -91,36 +91,6 @@ + memcpy(c, r, d1 * d3 * sizeof(c[0])); + } + +-template<typename T> void mdet(const T *c, unsigned int d) +-{ +- T *c2; +- unsigned int i, j, k, l; +- T det = 0, dr; +- +- if (!d) +- return 0; +- if (d == 1) +- return c[0]; +- if (d == 2) +- return c[0] * c[3] - c[1] * c[2]; +- c2 = alloca(sizeof(T)*(d-1)*(d-1)); +- for (i = 0; i < d; i++) { +- for (j = k = 0; j < d; j++) { +- if (j == i) +- continue; +- for (l = 0; l < d-1; l++) +- c2[l*(d-1)+k] = c[(l+1)*d+j]; +- k++; +- } +- dr = mdet(c2, d-1); +- if (i & 1) +- det -= dr * c[i]; +- else +- det += dr * c[i]; +- } +- return det; +-} +- + /* Transpose a matrix (a el C^{d1 x d2}, b el C^{d2 x d1}) */ + template<typename T> void mtranspose(T *b, const T *a, unsigned int d1, unsigned int d2) + { +@@ -440,23 +410,6 @@ + } + } + +-template<typename T> void minv(T *ainv, const T *a, unsigned int d) +-{ +- T *u, *y; +- unsigned int *p; +- unsigned int k; +- +- u = alloca(d * d * sizeof(u[0])); +- p = alloca((d-1) * sizeof(p[0])); +- mlufact(u, p, a, d); +- for (k = 0; k < d; k++) { +- y = &ainv[k*d]; +- memset(y, 0, d * sizeof(y[0])); +- y[k] = T(1); +- mlusolve(y, y, u, p, d); +- } +- mtranspose(ainv, ainv, d, d); +-} + + /* + * Gauss-Seidel iterative solver diff --git a/comms/soundmodem/files/patch-newqpsk_complex.h b/comms/soundmodem/files/patch-newqpsk_complex.h new file mode 100644 index 000000000000..d7617bec6b6e --- /dev/null +++ b/comms/soundmodem/files/patch-newqpsk_complex.h @@ -0,0 +1,65 @@ +--- newqpsk/complex.h.orig 2008-12-14 09:47:34.000000000 -0500 ++++ newqpsk/complex.h 2013-12-14 17:54:58.000000000 -0500 +@@ -13,7 +13,7 @@ + /* + * Complex multiplication. + */ +-extern __inline__ complex cmul(complex x, complex y) ++static __inline__ complex cmul(complex x, complex y) + { + complex z; + +@@ -27,7 +27,7 @@ + * Complex ... yeah, what??? Returns a complex number that has the + * properties: |z| = |x| * |y| and arg(z) = arg(y) - arg(x) + */ +-extern __inline__ complex ccor(complex x, complex y) ++static __inline__ complex ccor(complex x, complex y) + { + complex z; + +@@ -40,7 +40,7 @@ + /* + * Real part of the complex ??? + */ +-extern __inline__ float ccorI(complex x, complex y) ++static __inline__ float ccorI(complex x, complex y) + { + return x.re * y.re + x.im * y.im; + } +@@ -48,7 +48,7 @@ + /* + * Imaginary part of the complex ??? + */ +-extern __inline__ float ccorQ(complex x, complex y) ++static __inline__ float ccorQ(complex x, complex y) + { + return x.re * y.im - x.im * y.re; + } +@@ -56,7 +56,7 @@ + /* + * Modulo (absolute value) of a complex number. + */ +-extern __inline__ float cmod(complex x) ++static __inline__ float cmod(complex x) + { + return sqrt(x.re * x.re + x.im * x.im); + } +@@ -64,7 +64,7 @@ + /* + * Square of the absolute value (power). + */ +-extern __inline__ float cpwr(complex x) ++static __inline__ float cpwr(complex x) + { + return (x.re * x.re + x.im * x.im); + } +@@ -72,7 +72,7 @@ + /* + * Argument of a complex number. + */ +-extern __inline__ float carg(complex x) ++static __inline__ float carg(complex x) + { + return atan2(x.im, x.re); + } diff --git a/comms/soundmodem/files/patch-newqpsk_fec.h b/comms/soundmodem/files/patch-newqpsk_fec.h new file mode 100644 index 000000000000..1b209798ab8d --- /dev/null +++ b/comms/soundmodem/files/patch-newqpsk_fec.h @@ -0,0 +1,20 @@ +--- newqpsk/fec.h.orig 2002-08-09 15:01:52.000000000 -0500 ++++ newqpsk/fec.h 2013-12-14 17:37:25.000000000 -0500 +@@ -13,7 +13,7 @@ + + /* --------------------------------------------------------------------- */ + +-extern inline void init_fec(struct fecstate *f) ++static inline void init_fec(struct fecstate *f) + { + switch (f->feclevel) { + case 0: +@@ -33,7 +33,7 @@ + + /* --------------------------------------------------------------------- */ + +-extern inline void init_inlv(struct fecstate *f) ++static inline void init_inlv(struct fecstate *f) + { + int i; + diff --git a/comms/soundmodem/files/patch-newqpsk_filter-i386.h b/comms/soundmodem/files/patch-newqpsk_filter-i386.h new file mode 100644 index 000000000000..4d962b6e79bc --- /dev/null +++ b/comms/soundmodem/files/patch-newqpsk_filter-i386.h @@ -0,0 +1,11 @@ +--- newqpsk/filter-i386.h.orig 2012-11-07 05:41:08.000000000 -0500 ++++ newqpsk/filter-i386.h 2013-12-14 17:39:18.000000000 -0500 +@@ -1,7 +1,7 @@ + #ifndef _FILTER_I386_H + #define _FILTER_I386_H + #define __HAVE_ARCH_MAC +-extern inline float mac(const float *a, const float *b, unsigned int size) ++static inline float mac(const float *a, const float *b, unsigned int size) + { + float f; + asm volatile ( diff --git a/comms/soundmodem/files/patch-newqpsk_filter.h b/comms/soundmodem/files/patch-newqpsk_filter.h new file mode 100644 index 000000000000..5c2bcc7cabe6 --- /dev/null +++ b/comms/soundmodem/files/patch-newqpsk_filter.h @@ -0,0 +1,11 @@ +--- newqpsk/filter.h.orig 2002-08-09 15:01:52.000000000 -0500 ++++ newqpsk/filter.h 2013-12-14 17:39:02.000000000 -0500 +@@ -12,7 +12,7 @@ + /* ---------------------------------------------------------------------- */ + + #ifndef __HAVE_ARCH_MAC +-extern inline float mac(const float *a, const float *b, unsigned int size) ++static inline float mac(const float *a, const float *b, unsigned int size) + { + float sum = 0; + unsigned int i; diff --git a/comms/soundmodem/files/patch-newqpsk_misc.h b/comms/soundmodem/files/patch-newqpsk_misc.h new file mode 100644 index 000000000000..8c4ee56dd415 --- /dev/null +++ b/comms/soundmodem/files/patch-newqpsk_misc.h @@ -0,0 +1,80 @@ +--- newqpsk/misc.h.orig 2002-08-09 15:01:52.000000000 -0500 ++++ newqpsk/misc.h 2013-12-14 17:36:50.000000000 -0500 +@@ -10,7 +10,7 @@ + /* + * Hamming weight (number of bits that are ones). + */ +-extern inline unsigned int hweight32(unsigned int w) ++static inline unsigned int hweight32(unsigned int w) + { + w = (w & 0x55555555) + ((w >> 1) & 0x55555555); + w = (w & 0x33333333) + ((w >> 2) & 0x33333333); +@@ -20,7 +20,7 @@ + return w; + } + +-extern inline unsigned int hweight16(unsigned short w) ++static inline unsigned int hweight16(unsigned short w) + { + w = (w & 0x5555) + ((w >> 1) & 0x5555); + w = (w & 0x3333) + ((w >> 2) & 0x3333); +@@ -29,7 +29,7 @@ + return w; + } + +-extern inline unsigned int hweight8(unsigned char w) ++static inline unsigned int hweight8(unsigned char w) + { + w = (w & 0x55) + ((w >> 1) & 0x55); + w = (w & 0x33) + ((w >> 2) & 0x33); +@@ -42,7 +42,7 @@ + /* + * Reverse order of bits. + */ +-extern inline unsigned int rbits32(unsigned int w) ++static inline unsigned int rbits32(unsigned int w) + { + w = ((w >> 1) & 0x55555555) | ((w << 1) & 0xaaaaaaaa); + w = ((w >> 2) & 0x33333333) | ((w << 2) & 0xcccccccc); +@@ -52,7 +52,7 @@ + return w; + } + +-extern inline unsigned short rbits16(unsigned short w) ++static inline unsigned short rbits16(unsigned short w) + { + w = ((w >> 1) & 0x5555) | ((w << 1) & 0xaaaa); + w = ((w >> 2) & 0x3333) | ((w << 2) & 0xcccc); +@@ -61,7 +61,7 @@ + return w; + } + +-extern inline unsigned char rbits8(unsigned char w) ++static inline unsigned char rbits8(unsigned char w) + { + w = ((w >> 1) & 0x55) | ((w << 1) & 0xaa); + w = ((w >> 2) & 0x33) | ((w << 2) & 0xcc); +@@ -71,7 +71,7 @@ + + /* ---------------------------------------------------------------------- */ + +-extern inline float avg(float average, float input, int scale) ++static inline float avg(float average, float input, int scale) + { + int i; + +@@ -82,12 +82,12 @@ + return (average + input); + } + +-extern inline float avg2(float average, float input, float weight) ++static inline float avg2(float average, float input, float weight) + { + return input * weight + average * (1.0 - weight); + } + +-extern inline float phaseavg(float *data, int len) ++static inline float phaseavg(float *data, int len) + { + float sum = 0.0; + float min = M_PI; diff --git a/comms/soundmodem/files/patch-p3dmodem_genp3dtbl.c b/comms/soundmodem/files/patch-p3dmodem_genp3dtbl.c new file mode 100644 index 000000000000..7d6c5e289d6b --- /dev/null +++ b/comms/soundmodem/files/patch-p3dmodem_genp3dtbl.c @@ -0,0 +1,11 @@ +--- p3dmodem/genp3dtbl.c.orig 2002-08-09 15:01:52.000000000 -0500 ++++ p3dmodem/genp3dtbl.c 2013-12-14 17:48:45.000000000 -0500 +@@ -39,6 +39,8 @@ + #include <float.h> + #include <stdio.h> + ++unsigned int log_verblevel; ++ + /* ---------------------------------------------------------------------- */ + + extern inline unsigned int hweight32(unsigned int w) diff --git a/comms/soundmodem/files/patch-pammodem_genpamtbl.c b/comms/soundmodem/files/patch-pammodem_genpamtbl.c new file mode 100644 index 000000000000..3b5084bc93ee --- /dev/null +++ b/comms/soundmodem/files/patch-pammodem_genpamtbl.c @@ -0,0 +1,11 @@ +--- pammodem/genpamtbl.c.orig 2002-08-09 15:01:52.000000000 -0500 ++++ pammodem/genpamtbl.c 2013-12-14 17:52:08.000000000 -0500 +@@ -38,6 +38,8 @@ + #include <math.h> + #include <stdio.h> + ++unsigned int log_verblevel; ++ + /* ---------------------------------------------------------------------- */ + + /* diff --git a/comms/soundmodem/files/patch-pskmodem_genpsktbl.c b/comms/soundmodem/files/patch-pskmodem_genpsktbl.c new file mode 100644 index 000000000000..73a284ae0b2e --- /dev/null +++ b/comms/soundmodem/files/patch-pskmodem_genpsktbl.c @@ -0,0 +1,11 @@ +--- pskmodem/genpsktbl.c.orig 2013-12-14 14:02:09.000000000 -0500 ++++ pskmodem/genpsktbl.c 2013-12-14 14:02:34.000000000 -0500 +@@ -40,6 +40,8 @@ + #include <stdio.h> + #include <string.h> + ++unsigned int log_verblevel; ++ + /* ---------------------------------------------------------------------- */ + + /* diff --git a/comms/soundmodem/files/patch-pskmodem_pskmodem.c b/comms/soundmodem/files/patch-pskmodem_pskmodem.c new file mode 100644 index 000000000000..bcdb16ef9bdc --- /dev/null +++ b/comms/soundmodem/files/patch-pskmodem_pskmodem.c @@ -0,0 +1,11 @@ +--- pskmodem/pskmodem.c.orig 2013-12-13 20:07:01.214995855 -0500 ++++ pskmodem/pskmodem.c 2013-12-13 20:07:04.005995698 -0500 +@@ -262,7 +262,7 @@ + } + } + +-extern inline int calcsync(int *toten, int *corren, cplxshort_t *samples) ++inline int calcsync(int *toten, int *corren, cplxshort_t *samples) + { + const cplxshort_t *tr = traincorrrotated; + unsigned int i; diff --git a/comms/soundmodem/files/patch-soundcard_modem.h b/comms/soundmodem/files/patch-soundcard_modem.h new file mode 100644 index 000000000000..a09ae14f6624 --- /dev/null +++ b/comms/soundmodem/files/patch-soundcard_modem.h @@ -0,0 +1,11 @@ +--- soundcard/modem.h.orig 2003-01-02 13:53:04.000000000 -0500 ++++ soundcard/modem.h 2013-12-14 17:32:44.000000000 -0500 +@@ -103,7 +103,7 @@ + extern void logprintf(unsigned int level, const char *fmt, ...); + extern void logerr(unsigned int level, const char *st); + extern unsigned int log_verblevel; +-extern inline int logcheck(unsigned int vl) ++static inline int logcheck(unsigned int vl) + { + return vl <= log_verblevel; + } diff --git a/comms/soundmodem/files/patch-soundcard_simd.h b/comms/soundmodem/files/patch-soundcard_simd.h new file mode 100644 index 000000000000..9f0fa105eaa0 --- /dev/null +++ b/comms/soundmodem/files/patch-soundcard_simd.h @@ -0,0 +1,79 @@ +--- soundcard/simd.h.orig 2002-08-09 15:01:52.000000000 -0500 ++++ soundcard/simd.h 2013-12-14 17:34:29.000000000 -0500 +@@ -54,16 +54,16 @@ + + #if !defined(USEMMX) && !defined(USEVIS) + +-extern inline void initsimd(int enable) ++static inline void initsimd(int enable) + { + } + +-extern inline int checksimd(void) ++static inline int checksimd(void) + { + return 0; + } + +-extern inline int simdfir16(const int16_t *p1, const int16_t *p2, unsigned int nr) ++static inline int simdfir16(const int16_t *p1, const int16_t *p2, unsigned int nr) + { + int s = 0; + +@@ -72,7 +72,7 @@ + return s; + } + +-extern inline void simdpreparefpu(void) ++static inline void simdpreparefpu(void) + { + } + +@@ -80,9 +80,9 @@ + + extern unsigned int simd_enabled; + +-extern void initsimd(int enable); ++void initsimd(int enable); + +-extern inline int checksimd(void) ++static inline int checksimd(void) + { + return simd_enabled; + } +@@ -91,7 +91,7 @@ + + #define MMXCLOBBER "st", "st(1)", "st(2)", "st(3)", "st(4)", "st(5)", "st(6)", "st(7)" + +-extern inline int simdfir16(const int16_t *p1, const int16_t *p2, unsigned int nr) ++static inline int simdfir16(const int16_t *p1, const int16_t *p2, unsigned int nr) + { + unsigned int i, j; + int s = 0; +@@ -114,7 +114,7 @@ + return s; + } + +-extern inline void simdpreparefpu(void) ++static inline void simdpreparefpu(void) + { + if (checksimd()) + asm volatile("emms"); +@@ -122,7 +122,7 @@ + + #elif defined(USEVIS) + +-/*extern inline*/static int simdfir16(const int16_t *p1, const int16_t *p2, unsigned int nr) ++/*extern static inline*/static int simdfir16(const int16_t *p1, const int16_t *p2, unsigned int nr) + { + double dsum1, dsum2, dsum3, dsum4, arg1, arg2, arg3, arg4; + float sum, sum1, sum2; +@@ -157,7 +157,7 @@ + return s; + } + +-extern inline void simdpreparefpu(void) ++static inline void simdpreparefpu(void) + { + } + diff --git a/comms/soundmodem/files/patch-soundcard_winlog.c b/comms/soundmodem/files/patch-soundcard_winlog.c new file mode 100644 index 000000000000..add5816cf9e3 --- /dev/null +++ b/comms/soundmodem/files/patch-soundcard_winlog.c @@ -0,0 +1,11 @@ +--- soundcard/winlog.c.orig 2013-12-13 08:55:02.797125391 -0500 ++++ soundcard/winlog.c 2013-12-13 08:55:35.636772475 -0500 +@@ -44,7 +44,7 @@ + + /* ---------------------------------------------------------------------- */ + +-unsigned int log_verblevel = 0; ++extern unsigned int log_verblevel = 0; + static HANDLE logh = NULL; + + /* ---------------------------------------------------------------------- */ diff --git a/comms/soundmodem/pkg-plist b/comms/soundmodem/pkg-plist index 24ad6a23356c..56633d5fdff6 100644 --- a/comms/soundmodem/pkg-plist +++ b/comms/soundmodem/pkg-plist @@ -5,6 +5,8 @@ include/modem.h include/simd.h share/locale/fr/LC_MESSAGES/soundmodem.mo share/locale/sv/LC_MESSAGES/soundmodem.mo +man/man8/soundmodem.8.gz +man/man8/soundmodemconfig.8.gz @dirrmtry share/locale/fr/LC_MESSAGES @dirrmtry share/locale/sv/LC_MESSAGES @dirrmtry share/locale/fr |