1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Merge remote-tracking branch 'origin/stable-2.0'

Conflicts:
	libguile/debug.h
	module/ice-9/psyntax-pp.scm
	module/ice-9/psyntax.scm
	module/language/tree-il/peval.scm
	module/language/tree-il/primitives.scm
This commit is contained in:
Andy Wingo 2012-01-30 19:59:08 +01:00
commit dfadcf85cb
45 changed files with 20479 additions and 19006 deletions

View file

@ -177,12 +177,46 @@ SCM_DEFINE (scm_macro_binding, "macro-binding", 1, 0, 0,
#undef FUNC_NAME
static SCM syntax_session_id;
#define SESSION_ID_LENGTH 22 /* bytes */
#define BASE64_RADIX_BITS 6
#define BASE64_RADIX (1 << (BASE64_RADIX_BITS))
#define BASE64_MASK (BASE64_RADIX - 1)
static SCM
fresh_syntax_session_id (void)
{
static const char base64[BASE64_RADIX] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$@";
unsigned char digit_buf[SESSION_ID_LENGTH];
char char_buf[SESSION_ID_LENGTH];
size_t i;
scm_i_random_bytes_from_platform (digit_buf, SESSION_ID_LENGTH);
for (i = 0; i < SESSION_ID_LENGTH; ++i)
char_buf[i] = base64[digit_buf[i] & BASE64_MASK];
return scm_from_latin1_stringn (char_buf, SESSION_ID_LENGTH);
}
static SCM
scm_syntax_session_id (void)
{
return syntax_session_id;
}
void
scm_init_macros ()
{
scm_tc16_macro = scm_make_smob_type ("macro", 0);
scm_set_smob_print (scm_tc16_macro, macro_print);
#include "libguile/macros.x"
syntax_session_id = fresh_syntax_session_id();
scm_c_define_gsubr ("syntax-session-id", 0, 0, 0, scm_syntax_session_id);
}
/*