src/lib/common.c 1.147

1.147 2010/04/15 19:24:53 tdreszer
Added stripEnclosingQuotes()
Index: src/lib/common.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/lib/common.c,v
retrieving revision 1.146
retrieving revision 1.147
diff -b -B -U 4 -r1.146 -r1.147
--- src/lib/common.c	18 Mar 2010 01:52:09 -0000	1.146
+++ src/lib/common.c	15 Apr 2010 19:24:53 -0000	1.147
@@ -1291,8 +1291,30 @@
        ++out;
     }
 }
 
+char *stripEnclosingChar(char *inout,char encloser)
+// Removes enclosing char if found at both beg and end, preserving pointer
+// Note: handles brackets '(','{' and '[' by complement at end
+{
+if(inout == NULL || strlen(inout) < 2 || *inout != encloser)
+    return inout;
+
+char *end = inout + (strlen(inout) - 1);
+char closer = encloser;
+switch (closer)
+    {
+    case '(': closer = ')'; break;
+    case '{': closer = '}'; break;
+    case '[': closer = ']'; break;
+    default: break;
+    }
+if(*end  != closer)
+    return inout;
+*end = '\0';
+return memmove(inout,inout+1,strlen(inout));  // use memmove to safely copy in place
+}
+
 void stripString(char *s, char *strip)
 /* Remove all occurences of strip from s. */
 {
 char c, *in = s, *out = s;