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@max:/tmp$ gcc -Wall -o rainer rainer.c
edd@max:/tmp$ ./rainer
Char vector is now [Hello, world]
edd@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@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
_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel