READMEのCASL II仕様書へのリンクを修正
[YACASL2.git] / src / cmem.c
index 48bc632..bd6328d 100644 (file)
@@ -25,9 +25,7 @@ void *calloc_chk(size_t nmemb, size_t size, const char *tag)
 char *strdup_chk(const char *s, const char *tag)
 {
     assert(s != NULL);
-    char *t = NULL;
-
-    t = malloc_chk(strlen(s) + 1, tag);
+    char *t = malloc_chk(strlen(s) + 1, tag);
     strcpy(t, s);
     return t;
 }
@@ -47,15 +45,14 @@ char *strndup_chk(const char *s, size_t len, const char *tag)
     return t;
 }
 
-char *strip_end(char *s)
+void strip_end(char *s)
 {
-    for(int i = strlen(s) - 1; i > 0 && (s[i] == '\n' || s[i] == ' ' || s[i] == '\t'); i--) {
+    for(int i = strlen(s) - 1; i > 0 && (s[i] == '\n' || s[i] == '\r' || s[i] == ' ' || s[i] == '\t'); i--) {
         s[i] = '\0';
     }
-    return s;
 }
 
-char *strip_casl2_comment(char *s)
+void strip_casl2_comment(char *s)
 {
     bool quoting = false;
 
@@ -69,5 +66,17 @@ char *strip_casl2_comment(char *s)
             break;
         }
     }
-    return s;
+}
+
+char *strrev(const char *s)
+{
+    char *t = strdup_chk(s, "strrev.t");
+    int l = strlen(t);
+
+    for(int i = 0; i < l-1-i; i++) {
+        char tmp = t[i];
+        t[i] = t[l-1-i];
+        t[l-1-i] = tmp;
+    }
+    return t;
 }