summaryrefslogtreecommitdiff
path: root/src/htscharset.c
diff options
context:
space:
mode:
authorXavier Roche <xroche@users.noreply.github.com>2013-05-21 17:53:05 +0000
committerXavier Roche <xroche@users.noreply.github.com>2013-05-21 17:53:05 +0000
commit03d57e2e73891f28f09a721d5d58108912d7157f (patch)
tree79fcd90600b0ebee8956041d4f9bbbd1af3f6c93 /src/htscharset.c
parent362ea71c8fc91d877ea790310dd61118ffd875f2 (diff)
Added hts_isStringIDNA()
Diffstat (limited to 'src/htscharset.c')
-rw-r--r--src/htscharset.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/htscharset.c b/src/htscharset.c
index a65e299..54465ae 100644
--- a/src/htscharset.c
+++ b/src/htscharset.c
@@ -970,6 +970,22 @@ char *hts_convertStringUTF8ToIDNA(const char *s, size_t size) {
return dest;
}
+int hts_isStringIDNA(const char *s, size_t size) {
+ size_t i, startSeg;
+ for(i = startSeg = 0 ; i <= size ; i++) {
+ const unsigned char c = i < size ? s[i] : 0;
+ if (c == 0 || c == '.' || c == ':' || c == '/' || c == '?') {
+ const size_t segSize = i - startSeg;
+ /* IDNA segment ? */
+ if (segSize > 4
+ && strncasecmp(&s[startSeg], "xn--", 4) == 0) {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
char *hts_convertStringIDNAToUTF8(const char *s, size_t size) {
char *dest = NULL;
size_t capa = 0, destSize = 0;