mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
date_parse.c: str_end_with
* ext/date/date_parse.c (str_end_with): extract to tell if a string ends with the other string. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d618f7b79a
commit
4bb7485464
1 changed files with 10 additions and 3 deletions
|
@ -342,6 +342,13 @@ subx(VALUE str, VALUE rep, VALUE pat, VALUE hash, int (*cb)(VALUE, VALUE))
|
|||
|
||||
#include "zonetab.h"
|
||||
|
||||
static int
|
||||
str_end_with(const char *s, long l, const char *w)
|
||||
{
|
||||
int n = (int)strlen(w);
|
||||
return (l >= n && strncmp(s - n, w, n) == 0);
|
||||
}
|
||||
|
||||
VALUE
|
||||
date_zone_to_diff(VALUE str)
|
||||
{
|
||||
|
@ -384,14 +391,14 @@ date_zone_to_diff(VALUE str)
|
|||
static const char DST2[] = " dst";
|
||||
int dst = 0;
|
||||
|
||||
if (l >= (int)sizeof(STD) - 1 && strcmp(d - (sizeof(STD) - 1), STD) == 0) {
|
||||
if (str_end_with(d, l, STD)) {
|
||||
l -= sizeof(STD) - 1;
|
||||
}
|
||||
else if (l >= (int)sizeof(DST1) - 1 && strcmp(d - (sizeof(DST1) - 1), DST1) == 0) {
|
||||
else if (str_end_with(d, l, DST1)) {
|
||||
l -= sizeof(DST1) - 1;
|
||||
dst = 1;
|
||||
}
|
||||
else if (l >= (int)sizeof(DST2) - 1 && strcmp(d - (sizeof(DST2) - 1), DST2) == 0) {
|
||||
else if (str_end_with(d, l, DST2)) {
|
||||
l -= sizeof(DST2) - 1;
|
||||
dst = 1;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue