summaryrefslogtreecommitdiff
path: root/libguile/symbols.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/symbols.c')
-rw-r--r--libguile/symbols.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libguile/symbols.c b/libguile/symbols.c
index 657723cc6..375ce8cf7 100644
--- a/libguile/symbols.c
+++ b/libguile/symbols.c
@@ -34,6 +34,8 @@
#include "libguile/hashtab.h"
#include "libguile/weaks.h"
#include "libguile/modules.h"
+#include "libguile/read.h"
+#include "libguile/srfi-13.h"
#include "libguile/validate.h"
#include "libguile/symbols.h"
@@ -245,6 +247,19 @@ SCM_DEFINE (scm_string_to_symbol, "string->symbol", 1, 0, 0,
}
#undef FUNC_NAME
+SCM_DEFINE (scm_string_ci_to_symbol, "string-ci->symbol", 1, 0, 0,
+ (SCM str),
+ "Return the symbol whose name is @var{str}. @var{str} is\n"
+ "converted to lowercase before the conversion is done, if Guile\n"
+ "is currently reading symbols case-insensitively.")
+#define FUNC_NAME s_scm_string_ci_to_symbol
+{
+ return scm_string_to_symbol (SCM_CASE_INSENSITIVE_P
+ ? scm_string_downcase(str)
+ : str);
+}
+#undef FUNC_NAME
+
#define MAX_PREFIX_LENGTH 30
SCM_DEFINE (scm_gensym, "gensym", 0, 1, 0,