summaryrefslogtreecommitdiff
path: root/strings/ctype-simple.c
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2015-03-02 18:24:22 +0400
committerAlexander Barkov <bar@mariadb.org>2015-03-02 18:24:22 +0400
commitb1b6101af2f69871ff3f3049c6e42e95ced20544 (patch)
treeb395810839d006b6101352b2c8f65984ffd28d92 /strings/ctype-simple.c
parent7047bef1ef8c2cf04932b4b1a51a479a746d9a40 (diff)
downloadmariadb-git-b1b6101af2f69871ff3f3049c6e42e95ced20544.tar.gz
A preparatory patch for MDEV-6566.
Adding a new virtual function MY_CHARSET_HANDLER::copy_abort(). Moving character set specific code into the correspoding implementations (for simple, multi-byte and mbmaxlen>1 character sets).
Diffstat (limited to 'strings/ctype-simple.c')
-rw-r--r--strings/ctype-simple.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c
index 7f13cef4474..b010c528979 100644
--- a/strings/ctype-simple.c
+++ b/strings/ctype-simple.c
@@ -1108,6 +1108,25 @@ size_t my_well_formed_len_8bit(CHARSET_INFO *cs __attribute__((unused)),
}
+/*
+ Copy a 8-bit string. Not more than "nchars" character are copied.
+*/
+size_t
+my_copy_8bit(CHARSET_INFO *cs __attribute__((unused)),
+ char *dst, size_t dst_length,
+ const char *src, size_t src_length,
+ size_t nchars, MY_STRCOPY_STATUS *status)
+{
+ set_if_smaller(src_length, dst_length);
+ set_if_smaller(src_length, nchars);
+ if (src_length)
+ memmove(dst, src, src_length);
+ status->m_source_end_pos= src + src_length;
+ status->m_well_formed_error_pos= NULL;
+ return src_length;
+}
+
+
size_t my_lengthsp_8bit(CHARSET_INFO *cs __attribute__((unused)),
const char *ptr, size_t length)
{
@@ -1886,7 +1905,8 @@ MY_CHARSET_HANDLER my_charset_8bit_handler=
my_strntod_8bit,
my_strtoll10_8bit,
my_strntoull10rnd_8bit,
- my_scan_8bit
+ my_scan_8bit,
+ my_copy_8bit,
};
MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler =