Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-08-23 19:08:54 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-08-23 19:08:54 +0400
commitf6a2b8d724646ac357a0eafc2d29b345fdc1ba5f (patch)
tree2ef09a290f55ab9cd4ed642c3c050525b9d08292 /source/blender/blenlib/intern/string.c
parentabff0032c4dceabbd2cf5b9682f196dd4a283c76 (diff)
BLI_strescape for a basic, python like string escaping, currently only use for drag and drop ID's into the console but should eventually be used for the animsys too.
Diffstat (limited to 'source/blender/blenlib/intern/string.c')
-rw-r--r--source/blender/blenlib/intern/string.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/source/blender/blenlib/intern/string.c b/source/blender/blenlib/intern/string.c
index 8e0314ec17f..2f1ddf294ce 100644
--- a/source/blender/blenlib/intern/string.c
+++ b/source/blender/blenlib/intern/string.c
@@ -117,6 +117,49 @@ char *BLI_sprintfN(const char *format, ...)
return n;
}
+
+/* match pythons string escaping, assume double quotes - (")
+ * TODO: should be used to create RNA animation paths.
+ * TODO: support more fancy string escaping. current code is primitive
+ * this basically is an ascii version of PyUnicode_EncodeUnicodeEscape()
+ * which is a useful reference. */
+size_t BLI_strescape(char *dst, const char *src, const size_t maxlen)
+{
+ size_t len= 0;
+ while(len < maxlen) {
+ switch(*src) {
+ case '\0':
+ *dst= '\0';
+ break;
+ case '\\':
+ case '"':
+
+ /* less common but should also be support */
+ case '\t':
+ case '\n':
+ case '\r':
+ if(len + 1 < maxlen) {
+ *dst++ = '\\';
+ len++;
+ }
+ else {
+ /* not enough space to escape */
+ *dst= '\0';
+ break;
+ }
+ /* intentionally pass through */
+ default:
+ *dst = *src;
+ }
+ dst++;
+ src++;
+ len++;
+ }
+
+ return len;
+}
+
+
/* Makes a copy of the text within the "" that appear after some text 'blahblah'
* i.e. for string 'pose["apples"]' with prefix 'pose[', it should grab "apples"
*