X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcmem.c;h=bd6328d94ef80bdfadc72153fc51b5c2105cb6a6;hb=8eb3172e7dbce55ff705a8ab27b50d7cacb5ca99;hp=722c7075887f999812a430688a4390e975059149;hpb=169407674e2df2da91b62a9d1c51d497dcce2bd3;p=YACASL2.git diff --git a/src/cmem.c b/src/cmem.c index 722c707..bd6328d 100644 --- a/src/cmem.c +++ b/src/cmem.c @@ -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,22 +45,18 @@ char *strndup_chk(const char *s, size_t len, const char *tag) return t; } -char *strip_end(char *s) +void strip_end(char *s) { - int i; - i = strlen(s) - 1; - while(i > 0 && (s[i] == '\n' || s[i] == ' ' || s[i] == '\t')) { - s[i--] = '\0'; + 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) { - int i; bool quoting = false; - for(i = 0; s[i]; i++) { + for(int i = 0; s[i]; i++) { /* 「'」で囲まれた文字列の場合。「''」は無視 */ if(s[i] == '\'' && s[i+1] != '\'' && (quoting == false || s[i-1] != '\'')) { quoting = !quoting; @@ -72,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; }