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

Reply via email to