[Rcpp-devel] RcppArmadillo fails on FreeBSD
Rainer Hurling
rhurlin at gwdg.de
Tue May 31 09:27:48 CEST 2011
Am 30.05.2011 18:21 (UTC+1) schrieb Dirk Eddelbuettel:
>
> On 30 May 2011 at 17:21, Rainer Hurling wrote:
> |> I do not understand what you are asking: "as meant in RcppArmadilloConfig" ?
> |> Neither Romain, Doug nor I use a *BSD variant (if we ignore OS X as a BSD-derivative).
> |> So nothing in RcppArmadillo explicitly enables or disables *BSD.
> |
> | Thanks for answering. Sorry for my bad english and the misunderstanding.
> | I am not a developer so the following is just a wild guess:
> |
> | In FreeBSD there is a function snprintf in stdio of libc. I was
> | wondering if this could be the function, which RcppArmadillo would
> | expect to find (on linux etc.) at std:snprintf?
> |
> | If yes, is there some chance to use this type of snprintf on FreeBSD
> | systems? Or is my below patch ok and there is no problem not using
> | snprintf (on FreeBSD) at all?
> |
> | Hope this is not totally nonsense.
>
> Between you and me, somebody is confused.
It's me, I am afraid ;-)
> snprintf is a standard C library function going (IIRC) back to Kernighan and
> Ritchie. My system's manual page shows
>
> int snprintf(char *str, size_t size, const char *format, ...);
>
> which is the same as what you quoted:
>
> int snprintf(char * restrict str, size_t size, const char * restrict format, ...);
>
> apart from the sole difference of 'restrict' which I've never seen before.
I agree.
> So per se, we should not need anything special to use snprintf. Can you try
> something like this on your box, please?
>
> edd at max:/tmp$ gcc -Wall -o rainer rainer.c
> edd at max:/tmp$ ./rainer
> Char vector is now [Hello, world]
> edd at max:/tmp$ cat rainer.c
>
> #include<stdio.h>
>
> int main(void) {
> char foo[32];
> snprintf(foo, 31, "Hello, world");
> printf("Char vector is now [%s]\n", foo);
> return(0);
> }
> edd at max:/tmp$
I erroneously thought that '#undef ARMA_HAVE_STD_SNPRINTF' will stop
using the systems snprintf.
./rainer
Char vector is now [Hello, world]
So it works as aspected.
> We may have turned snprintf off for you by accident, but following your patch
> we should now be good.
Dirk, sorry again for my misunderstanding. Yes, I also think that
FreeBSD people could live with this patch.
> Unless I am totally undercaffeinated and missing something here.
Thanks again for your patience and advice,
Rainer
> Dirk
>
> |> You have to tell us what works or doesn't. We cannot test or develop changes
> |> for *BSD.
> |>
> |> | Many thanks in advance,
> |> | Rainer Hurling
> |> |
> |> | ----------------------------------------------------------------------
> |> | --- inst/include/RcppArmadilloConfig.h.origin 2011-05-27 17:18:47.000000000 +0200
> |> | +++ inst/include/RcppArmadilloConfig.h 2011-05-30 13:53:25.000000000 +0200
> |> | @@ -37,7 +37,7 @@
> |> |
> |> |
> |> | /* TODO: we might need to undef this on other platforms as well */
> |> | -#if defined(__GNUC__)&& defined(_WIN64)
> |> | +#if defined(__GNUC__)&& defined(_WIN64) || defined(__FreeBSD__)
> |> | #undef ARMA_HAVE_STD_SNPRINTF
> |> | #endif
> |>
> |> That patch looks fine to me and would presumabky play nicely with Armadillo
> |> as the change would be solely at our level.
> |>
> |> I'll apply it it now, so 0.2.22 will have it.
> |
> | Thanks for including the patch,
> | Rainer
> |
> |> Dirk
>
More information about the Rcpp-devel
mailing list