X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcmem.c;h=48bc632b9ae58728a2145fd8fa4961c01257a3f9;hb=ee29a1d56e8a0f146b7a8291e5c79920b390a5d5;hp=e921bb08f4678bf2c783e0e0621a303b34ea2cd5;hpb=1474b863964dc39064d70b7204a2c60ec9bffe50;p=YACASL2.git diff --git a/src/cmem.c b/src/cmem.c index e921bb0..48bc632 100644 --- a/src/cmem.c +++ b/src/cmem.c @@ -49,10 +49,25 @@ char *strndup_chk(const char *s, size_t len, const char *tag) char *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] == ' ' || s[i] == '\t'); i--) { + s[i] = '\0'; + } + return s; +} + +char *strip_casl2_comment(char *s) +{ + bool quoting = false; + + for(int i = 0; s[i]; i++) { + /* 「'」で囲まれた文字列の場合。「''」は無視 */ + if(s[i] == '\'' && s[i+1] != '\'' && (quoting == false || s[i-1] != '\'')) { + quoting = !quoting; + /* 「'」で囲まれた文字列でない場合、文字列末尾の「;」以降を削除 */ + } else if(quoting == false && s[i] == ';') { + s[i] = '\0'; + break; + } } return s; }