* [PATCH lttng-tools 1/2] Override the session.xsd path with an environment variable
@ 2014-04-11 3:58 Jérémie Galarneau
0 siblings, 0 replies; 5+ messages in thread
From: Jérémie Galarneau @ 2014-04-11 3:58 UTC (permalink / raw)
To: lttng-dev
The LTTNG_SESSION_CONFIG_XSD_PATH environment variable can be used
to specify a path which contains the session configuration schema.
This will allow save-load tests to be ran without installing
the XSD on the system.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
---
src/common/config/config.c | 37 ++++++++++++++++++++++++++++++++++++-
src/common/defaults.h | 6 +++---
2 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/src/common/config/config.c b/src/common/config/config.c
index e61791b..143e6f0 100644
--- a/src/common/config/config.c
+++ b/src/common/config/config.c
@@ -569,12 +569,46 @@ void fini_session_config_validation_ctx(
}
static
+char *get_session_config_xsd_path()
+{
+ char *xsd_path;
+ const char *base_path = getenv(DEFAULT_SESSION_CONFIG_XSD_PATH_ENV);
+ size_t base_path_len;
+
+ if (!base_path) {
+ base_path = DEFAULT_SESSION_CONFIG_XSD_PATH;
+ }
+
+ base_path_len = strlen(base_path);
+ xsd_path = malloc(base_path_len +
+ sizeof(DEFAULT_SESSION_CONFIG_XSD_FILENAME) + 1);
+ if (!xsd_path) {
+ goto end;
+ }
+
+ strcpy(xsd_path, base_path);
+ if (xsd_path[base_path_len - 1] != '/') {
+ xsd_path[base_path_len++] = '/';
+ }
+
+ strcpy(xsd_path + base_path_len, DEFAULT_SESSION_CONFIG_XSD_FILENAME);
+end:
+ return xsd_path;
+}
+
+static
int init_session_config_validation_ctx(
struct session_config_validation_ctx *ctx)
{
int ret;
+ char *xsd_path = get_session_config_xsd_path();
+
+ if (!xsd_path) {
+ ret = -LTTNG_ERR_NOMEM;
+ goto end;
+ }
- ctx->parser_ctx = xmlSchemaNewParserCtxt(DEFAULT_SESSION_CONFIG_XSD_PATH);
+ ctx->parser_ctx = xmlSchemaNewParserCtxt(xsd_path);
if (!ctx->parser_ctx) {
ERR("XSD parser context creation failed");
ret = -LTTNG_ERR_LOAD_INVALID_CONFIG;
@@ -606,6 +640,7 @@ end:
fini_session_config_validation_ctx(ctx);
}
+ free(xsd_path);
return ret;
}
diff --git a/src/common/defaults.h b/src/common/defaults.h
index 7acabf1..de61064 100644
--- a/src/common/defaults.h
+++ b/src/common/defaults.h
@@ -125,9 +125,9 @@
#define DEFAULT_SESSION_SYSTEM_CONFIGPATH DEFAULT_SYSTEM_CONFIGPATH "/" \
DEFAULT_SESSION_PATH
#define DEFAULT_SESSION_CONFIG_FILE_EXTENSION ".lttng"
-#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR \
- "/xml/lttng/session.xsd"
-
+#define DEFAULT_SESSION_CONFIG_XSD_FILENAME "session.xsd"
+#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR "/xml/lttng/"
+#define DEFAULT_SESSION_CONFIG_XSD_PATH_ENV "LTTNG_SESSION_CONFIG_XSD_PATH"
#define DEFAULT_GLOBAL_APPS_UNIX_SOCK \
DEFAULT_LTTNG_RUNDIR "/" LTTNG_UST_SOCK_FILENAME
--
1.9.2
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH lttng-tools 1/2] Override the session.xsd path with an environment variable
[not found] ` <1397491844-32336-1-git-send-email-jeremie.galarneau@efficios.com>
@ 2014-04-14 19:24 ` David Goulet
0 siblings, 0 replies; 5+ messages in thread
From: David Goulet @ 2014-04-14 19:24 UTC (permalink / raw)
To: Jérémie Galarneau; +Cc: lttng-dev
[-- Attachment #1.1: Type: text/plain, Size: 3119 bytes --]
Merged.
David
On 14 Apr (12:10:44), Jérémie Galarneau wrote:
> The LTTNG_SESSION_CONFIG_XSD_PATH environment variable can be used
> to specify a path which contains the session configuration schema.
> This will allow save-load tests to be ran without installing
> the XSD on the system.
>
> Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
> ---
> src/common/config/config.c | 40 +++++++++++++++++++++++++++++++++++++++-
> src/common/defaults.h | 6 +++---
> 2 files changed, 42 insertions(+), 4 deletions(-)
>
> diff --git a/src/common/config/config.c b/src/common/config/config.c
> index e61791b..8b34d02 100644
> --- a/src/common/config/config.c
> +++ b/src/common/config/config.c
> @@ -569,12 +569,49 @@ void fini_session_config_validation_ctx(
> }
>
> static
> +char *get_session_config_xsd_path()
> +{
> + char *xsd_path;
> + const char *base_path = getenv(DEFAULT_SESSION_CONFIG_XSD_PATH_ENV);
> + size_t base_path_len;
> + size_t max_path_len;
> +
> + if (!base_path) {
> + base_path = DEFAULT_SESSION_CONFIG_XSD_PATH;
> + }
> +
> + base_path_len = strlen(base_path);
> + max_path_len = base_path_len +
> + sizeof(DEFAULT_SESSION_CONFIG_XSD_FILENAME) + 1;
> + xsd_path = zmalloc(max_path_len);
> + if (!xsd_path) {
> + goto end;
> + }
> +
> + strncpy(xsd_path, base_path, max_path_len);
> + if (xsd_path[base_path_len - 1] != '/') {
> + xsd_path[base_path_len++] = '/';
> + }
> +
> + strncpy(xsd_path + base_path_len, DEFAULT_SESSION_CONFIG_XSD_FILENAME,
> + max_path_len - base_path_len);
> +end:
> + return xsd_path;
> +}
> +
> +static
> int init_session_config_validation_ctx(
> struct session_config_validation_ctx *ctx)
> {
> int ret;
> + char *xsd_path = get_session_config_xsd_path();
> +
> + if (!xsd_path) {
> + ret = -LTTNG_ERR_NOMEM;
> + goto end;
> + }
>
> - ctx->parser_ctx = xmlSchemaNewParserCtxt(DEFAULT_SESSION_CONFIG_XSD_PATH);
> + ctx->parser_ctx = xmlSchemaNewParserCtxt(xsd_path);
> if (!ctx->parser_ctx) {
> ERR("XSD parser context creation failed");
> ret = -LTTNG_ERR_LOAD_INVALID_CONFIG;
> @@ -606,6 +643,7 @@ end:
> fini_session_config_validation_ctx(ctx);
> }
>
> + free(xsd_path);
> return ret;
> }
>
> diff --git a/src/common/defaults.h b/src/common/defaults.h
> index 7acabf1..de61064 100644
> --- a/src/common/defaults.h
> +++ b/src/common/defaults.h
> @@ -125,9 +125,9 @@
> #define DEFAULT_SESSION_SYSTEM_CONFIGPATH DEFAULT_SYSTEM_CONFIGPATH "/" \
> DEFAULT_SESSION_PATH
> #define DEFAULT_SESSION_CONFIG_FILE_EXTENSION ".lttng"
> -#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR \
> - "/xml/lttng/session.xsd"
> -
> +#define DEFAULT_SESSION_CONFIG_XSD_FILENAME "session.xsd"
> +#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR "/xml/lttng/"
> +#define DEFAULT_SESSION_CONFIG_XSD_PATH_ENV "LTTNG_SESSION_CONFIG_XSD_PATH"
>
> #define DEFAULT_GLOBAL_APPS_UNIX_SOCK \
> DEFAULT_LTTNG_RUNDIR "/" LTTNG_UST_SOCK_FILENAME
> --
> 1.9.2
>
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 603 bytes --]
[-- Attachment #2: Type: text/plain, Size: 155 bytes --]
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH lttng-tools 1/2] Override the session.xsd path with an environment variable
[not found] ` <20140414143458.GC9369@thessa>
2014-04-14 16:10 ` Jérémie Galarneau
@ 2014-04-14 16:11 ` Jérémie Galarneau
[not found] ` <1397491844-32336-1-git-send-email-jeremie.galarneau@efficios.com>
2 siblings, 0 replies; 5+ messages in thread
From: Jérémie Galarneau @ 2014-04-14 16:11 UTC (permalink / raw)
To: David Goulet; +Cc: lttng-dev
On Mon, Apr 14, 2014 at 10:34 AM, David Goulet <dgoulet@efficios.com> wrote:
> On 10 Apr (23:58:02), Jérémie Galarneau wrote:
>> The LTTNG_SESSION_CONFIG_XSD_PATH environment variable can be used
>> to specify a path which contains the session configuration schema.
>> This will allow save-load tests to be ran without installing
>> the XSD on the system.
>>
>> Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
>> ---
>> src/common/config/config.c | 37 ++++++++++++++++++++++++++++++++++++-
>> src/common/defaults.h | 6 +++---
>> 2 files changed, 39 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/common/config/config.c b/src/common/config/config.c
>> index e61791b..143e6f0 100644
>> --- a/src/common/config/config.c
>> +++ b/src/common/config/config.c
>> @@ -569,12 +569,46 @@ void fini_session_config_validation_ctx(
>> }
>>
>> static
>> +char *get_session_config_xsd_path()
>> +{
>> + char *xsd_path;
>> + const char *base_path = getenv(DEFAULT_SESSION_CONFIG_XSD_PATH_ENV);
>> + size_t base_path_len;
>> +
>> + if (!base_path) {
>> + base_path = DEFAULT_SESSION_CONFIG_XSD_PATH;
>> + }
>> +
>> + base_path_len = strlen(base_path);
>> + xsd_path = malloc(base_path_len +
>> + sizeof(DEFAULT_SESSION_CONFIG_XSD_FILENAME) + 1);
>> + if (!xsd_path) {
>> + goto end;
>> + }
>> +
>> + strcpy(xsd_path, base_path);
>
> strncpy() please, I won't accept patches with dangerous libc calls that
> should burn in HELL! :P
>
Fair enough. Although maybe you should list the libc functions that
don't bear your stamp of approval in the coding standard ;-)
Resubmitting.
Jérémie
>> + if (xsd_path[base_path_len - 1] != '/') {
>> + xsd_path[base_path_len++] = '/';
>> + }
>> +
>> + strcpy(xsd_path + base_path_len, DEFAULT_SESSION_CONFIG_XSD_FILENAME);
>
> Same.
>
> Cheers!
> David
>
>> +end:
>> + return xsd_path;
>> +}
>> +
>> +static
>> int init_session_config_validation_ctx(
>> struct session_config_validation_ctx *ctx)
>> {
>> int ret;
>> + char *xsd_path = get_session_config_xsd_path();
>> +
>> + if (!xsd_path) {
>> + ret = -LTTNG_ERR_NOMEM;
>> + goto end;
>> + }
>>
>> - ctx->parser_ctx = xmlSchemaNewParserCtxt(DEFAULT_SESSION_CONFIG_XSD_PATH);
>> + ctx->parser_ctx = xmlSchemaNewParserCtxt(xsd_path);
>> if (!ctx->parser_ctx) {
>> ERR("XSD parser context creation failed");
>> ret = -LTTNG_ERR_LOAD_INVALID_CONFIG;
>> @@ -606,6 +640,7 @@ end:
>> fini_session_config_validation_ctx(ctx);
>> }
>>
>> + free(xsd_path);
>> return ret;
>> }
>>
>> diff --git a/src/common/defaults.h b/src/common/defaults.h
>> index 7acabf1..de61064 100644
>> --- a/src/common/defaults.h
>> +++ b/src/common/defaults.h
>> @@ -125,9 +125,9 @@
>> #define DEFAULT_SESSION_SYSTEM_CONFIGPATH DEFAULT_SYSTEM_CONFIGPATH "/" \
>> DEFAULT_SESSION_PATH
>> #define DEFAULT_SESSION_CONFIG_FILE_EXTENSION ".lttng"
>> -#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR \
>> - "/xml/lttng/session.xsd"
>> -
>> +#define DEFAULT_SESSION_CONFIG_XSD_FILENAME "session.xsd"
>> +#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR "/xml/lttng/"
>> +#define DEFAULT_SESSION_CONFIG_XSD_PATH_ENV "LTTNG_SESSION_CONFIG_XSD_PATH"
>>
>> #define DEFAULT_GLOBAL_APPS_UNIX_SOCK \
>> DEFAULT_LTTNG_RUNDIR "/" LTTNG_UST_SOCK_FILENAME
>> --
>> 1.9.2
>>
--
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH lttng-tools 1/2] Override the session.xsd path with an environment variable
[not found] ` <20140414143458.GC9369@thessa>
@ 2014-04-14 16:10 ` Jérémie Galarneau
2014-04-14 16:11 ` Jérémie Galarneau
[not found] ` <1397491844-32336-1-git-send-email-jeremie.galarneau@efficios.com>
2 siblings, 0 replies; 5+ messages in thread
From: Jérémie Galarneau @ 2014-04-14 16:10 UTC (permalink / raw)
To: lttng-dev
The LTTNG_SESSION_CONFIG_XSD_PATH environment variable can be used
to specify a path which contains the session configuration schema.
This will allow save-load tests to be ran without installing
the XSD on the system.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
---
src/common/config/config.c | 40 +++++++++++++++++++++++++++++++++++++++-
src/common/defaults.h | 6 +++---
2 files changed, 42 insertions(+), 4 deletions(-)
diff --git a/src/common/config/config.c b/src/common/config/config.c
index e61791b..8b34d02 100644
--- a/src/common/config/config.c
+++ b/src/common/config/config.c
@@ -569,12 +569,49 @@ void fini_session_config_validation_ctx(
}
static
+char *get_session_config_xsd_path()
+{
+ char *xsd_path;
+ const char *base_path = getenv(DEFAULT_SESSION_CONFIG_XSD_PATH_ENV);
+ size_t base_path_len;
+ size_t max_path_len;
+
+ if (!base_path) {
+ base_path = DEFAULT_SESSION_CONFIG_XSD_PATH;
+ }
+
+ base_path_len = strlen(base_path);
+ max_path_len = base_path_len +
+ sizeof(DEFAULT_SESSION_CONFIG_XSD_FILENAME) + 1;
+ xsd_path = zmalloc(max_path_len);
+ if (!xsd_path) {
+ goto end;
+ }
+
+ strncpy(xsd_path, base_path, max_path_len);
+ if (xsd_path[base_path_len - 1] != '/') {
+ xsd_path[base_path_len++] = '/';
+ }
+
+ strncpy(xsd_path + base_path_len, DEFAULT_SESSION_CONFIG_XSD_FILENAME,
+ max_path_len - base_path_len);
+end:
+ return xsd_path;
+}
+
+static
int init_session_config_validation_ctx(
struct session_config_validation_ctx *ctx)
{
int ret;
+ char *xsd_path = get_session_config_xsd_path();
+
+ if (!xsd_path) {
+ ret = -LTTNG_ERR_NOMEM;
+ goto end;
+ }
- ctx->parser_ctx = xmlSchemaNewParserCtxt(DEFAULT_SESSION_CONFIG_XSD_PATH);
+ ctx->parser_ctx = xmlSchemaNewParserCtxt(xsd_path);
if (!ctx->parser_ctx) {
ERR("XSD parser context creation failed");
ret = -LTTNG_ERR_LOAD_INVALID_CONFIG;
@@ -606,6 +643,7 @@ end:
fini_session_config_validation_ctx(ctx);
}
+ free(xsd_path);
return ret;
}
diff --git a/src/common/defaults.h b/src/common/defaults.h
index 7acabf1..de61064 100644
--- a/src/common/defaults.h
+++ b/src/common/defaults.h
@@ -125,9 +125,9 @@
#define DEFAULT_SESSION_SYSTEM_CONFIGPATH DEFAULT_SYSTEM_CONFIGPATH "/" \
DEFAULT_SESSION_PATH
#define DEFAULT_SESSION_CONFIG_FILE_EXTENSION ".lttng"
-#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR \
- "/xml/lttng/session.xsd"
-
+#define DEFAULT_SESSION_CONFIG_XSD_FILENAME "session.xsd"
+#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR "/xml/lttng/"
+#define DEFAULT_SESSION_CONFIG_XSD_PATH_ENV "LTTNG_SESSION_CONFIG_XSD_PATH"
#define DEFAULT_GLOBAL_APPS_UNIX_SOCK \
DEFAULT_LTTNG_RUNDIR "/" LTTNG_UST_SOCK_FILENAME
--
1.9.2
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH lttng-tools 1/2] Override the session.xsd path with an environment variable
[not found] <1397188683-25626-1-git-send-email-jeremie.galarneau@efficios.com>
@ 2014-04-14 14:34 ` David Goulet
[not found] ` <20140414143458.GC9369@thessa>
1 sibling, 0 replies; 5+ messages in thread
From: David Goulet @ 2014-04-14 14:34 UTC (permalink / raw)
To: Jérémie Galarneau; +Cc: lttng-dev
[-- Attachment #1.1: Type: text/plain, Size: 3114 bytes --]
On 10 Apr (23:58:02), Jérémie Galarneau wrote:
> The LTTNG_SESSION_CONFIG_XSD_PATH environment variable can be used
> to specify a path which contains the session configuration schema.
> This will allow save-load tests to be ran without installing
> the XSD on the system.
>
> Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
> ---
> src/common/config/config.c | 37 ++++++++++++++++++++++++++++++++++++-
> src/common/defaults.h | 6 +++---
> 2 files changed, 39 insertions(+), 4 deletions(-)
>
> diff --git a/src/common/config/config.c b/src/common/config/config.c
> index e61791b..143e6f0 100644
> --- a/src/common/config/config.c
> +++ b/src/common/config/config.c
> @@ -569,12 +569,46 @@ void fini_session_config_validation_ctx(
> }
>
> static
> +char *get_session_config_xsd_path()
> +{
> + char *xsd_path;
> + const char *base_path = getenv(DEFAULT_SESSION_CONFIG_XSD_PATH_ENV);
> + size_t base_path_len;
> +
> + if (!base_path) {
> + base_path = DEFAULT_SESSION_CONFIG_XSD_PATH;
> + }
> +
> + base_path_len = strlen(base_path);
> + xsd_path = malloc(base_path_len +
> + sizeof(DEFAULT_SESSION_CONFIG_XSD_FILENAME) + 1);
> + if (!xsd_path) {
> + goto end;
> + }
> +
> + strcpy(xsd_path, base_path);
strncpy() please, I won't accept patches with dangerous libc calls that
should burn in HELL! :P
> + if (xsd_path[base_path_len - 1] != '/') {
> + xsd_path[base_path_len++] = '/';
> + }
> +
> + strcpy(xsd_path + base_path_len, DEFAULT_SESSION_CONFIG_XSD_FILENAME);
Same.
Cheers!
David
> +end:
> + return xsd_path;
> +}
> +
> +static
> int init_session_config_validation_ctx(
> struct session_config_validation_ctx *ctx)
> {
> int ret;
> + char *xsd_path = get_session_config_xsd_path();
> +
> + if (!xsd_path) {
> + ret = -LTTNG_ERR_NOMEM;
> + goto end;
> + }
>
> - ctx->parser_ctx = xmlSchemaNewParserCtxt(DEFAULT_SESSION_CONFIG_XSD_PATH);
> + ctx->parser_ctx = xmlSchemaNewParserCtxt(xsd_path);
> if (!ctx->parser_ctx) {
> ERR("XSD parser context creation failed");
> ret = -LTTNG_ERR_LOAD_INVALID_CONFIG;
> @@ -606,6 +640,7 @@ end:
> fini_session_config_validation_ctx(ctx);
> }
>
> + free(xsd_path);
> return ret;
> }
>
> diff --git a/src/common/defaults.h b/src/common/defaults.h
> index 7acabf1..de61064 100644
> --- a/src/common/defaults.h
> +++ b/src/common/defaults.h
> @@ -125,9 +125,9 @@
> #define DEFAULT_SESSION_SYSTEM_CONFIGPATH DEFAULT_SYSTEM_CONFIGPATH "/" \
> DEFAULT_SESSION_PATH
> #define DEFAULT_SESSION_CONFIG_FILE_EXTENSION ".lttng"
> -#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR \
> - "/xml/lttng/session.xsd"
> -
> +#define DEFAULT_SESSION_CONFIG_XSD_FILENAME "session.xsd"
> +#define DEFAULT_SESSION_CONFIG_XSD_PATH CONFIG_LTTNG_SYSTEM_DATADIR "/xml/lttng/"
> +#define DEFAULT_SESSION_CONFIG_XSD_PATH_ENV "LTTNG_SESSION_CONFIG_XSD_PATH"
>
> #define DEFAULT_GLOBAL_APPS_UNIX_SOCK \
> DEFAULT_LTTNG_RUNDIR "/" LTTNG_UST_SOCK_FILENAME
> --
> 1.9.2
>
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 603 bytes --]
[-- Attachment #2: Type: text/plain, Size: 155 bytes --]
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-04-14 19:24 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-11 3:58 [PATCH lttng-tools 1/2] Override the session.xsd path with an environment variable Jérémie Galarneau
[not found] <1397188683-25626-1-git-send-email-jeremie.galarneau@efficios.com>
2014-04-14 14:34 ` David Goulet
[not found] ` <20140414143458.GC9369@thessa>
2014-04-14 16:10 ` Jérémie Galarneau
2014-04-14 16:11 ` Jérémie Galarneau
[not found] ` <1397491844-32336-1-git-send-email-jeremie.galarneau@efficios.com>
2014-04-14 19:24 ` David Goulet
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.