strptime 0.1.5-x86-mingw32 → 0.1.6-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/appveyor.yml +1 -3
- data/ext/strptime/extconf.rb +2 -1
- data/ext/strptime/ruby_time.c +22 -9
- data/ext/strptime/strptime.c +12 -33
- data/ext/strptime/strptime.h +6 -2
- data/lib/strptime/2.0/strptime.so +0 -0
- data/lib/strptime/2.1/strptime.so +0 -0
- data/lib/strptime/2.2/strptime.so +0 -0
- data/lib/strptime/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e7d1e1c6d143a4c7e4fa6fdd5715b6f31262bcb7
         | 
| 4 | 
            +
              data.tar.gz: 42e889d62689533f02d4edbc115f800464f91558
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: cccb521b2eece10f0f543464a918f71785b915b59048ce47592f0408a582aaf491ff50b82c118608fdcb6fb69e458b7390d128487b7f2de941bf309657d6c5c8
         | 
| 7 | 
            +
              data.tar.gz: 39e04fa77536207aba071eab63f4e60b85a795f807857c0d09c04c94050510a00d0560502a69e3cbf8c4d19698a2de6bc221c809117e08e79f41c04fd9441b95
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/appveyor.yml
    CHANGED
    
    
    
        data/ext/strptime/extconf.rb
    CHANGED
    
    
    
        data/ext/strptime/ruby_time.c
    CHANGED
    
    | @@ -20,7 +20,8 @@ | |
| 20 20 | 
             
            typedef uint64_t WIDEVALUE;
         | 
| 21 21 | 
             
            typedef WIDEVALUE wideval_t;
         | 
| 22 22 |  | 
| 23 | 
            -
            # | 
| 23 | 
            +
            #ifndef HAVE_RB_TIME_TIMESPEC_NEW
         | 
| 24 | 
            +
            # if defined(PACKED_STRUCT_UNALIGNED) /* 2.2 */
         | 
| 24 25 | 
             
            PACKED_STRUCT_UNALIGNED(struct vtm {
         | 
| 25 26 | 
             
                VALUE year;	/* 2000 for example.  Integer. */
         | 
| 26 27 | 
             
                VALUE subsecx;     /* 0 <= subsecx < TIME_SCALE.  possibly Rational. */
         | 
| @@ -41,7 +42,7 @@ PACKED_STRUCT_UNALIGNED(struct time_object { | |
| 41 42 | 
             
                uint8_t gmt : 3; /* 0:utc 1:localtime 2:fixoff 3:init */
         | 
| 42 43 | 
             
                uint8_t tm_got : 1;
         | 
| 43 44 | 
             
            });
         | 
| 44 | 
            -
            #else
         | 
| 45 | 
            +
            # else /* 2.0.0~2.1 */
         | 
| 45 46 | 
             
            struct vtm {
         | 
| 46 47 | 
             
                VALUE year; /* 2000 for example.  Integer. */
         | 
| 47 48 | 
             
                int mon; /* 1..12 */
         | 
| @@ -62,15 +63,13 @@ struct time_object { | |
| 62 63 | 
             
                int gmt; /* 0:utc 1:localtime 2:fixoff */
         | 
| 63 64 | 
             
                int tm_got;
         | 
| 64 65 | 
             
            };
         | 
| 65 | 
            -
            #endif
         | 
| 66 | 
            +
            # endif
         | 
| 66 67 |  | 
| 67 68 | 
             
            VALUE
         | 
| 68 | 
            -
             | 
| 69 | 
            -
            VALUE
         | 
| 70 | 
            -
            rbtime_timespec_new(const struct timespec *ts, int offset)
         | 
| 69 | 
            +
            rb_time_timespec_new(const struct timespec *ts, int offset)
         | 
| 71 70 | 
             
            {
         | 
| 72 71 | 
             
                VALUE obj = rb_time_nano_new(ts->tv_sec, ts->tv_nsec);
         | 
| 73 | 
            -
                if (offset) {
         | 
| 72 | 
            +
                if (-86400 < offset && offset <  86400) { /* fixoff */
         | 
| 74 73 | 
             
            	struct time_object *tobj;
         | 
| 75 74 | 
             
            	tobj = DATA_PTR(obj);
         | 
| 76 75 | 
             
            	tobj->tm_got = 0;
         | 
| @@ -78,12 +77,25 @@ rbtime_timespec_new(const struct timespec *ts, int offset) | |
| 78 77 | 
             
            	tobj->vtm.utc_offset = INT2FIX(offset);
         | 
| 79 78 | 
             
            	tobj->vtm.zone = NULL;
         | 
| 80 79 | 
             
                }
         | 
| 80 | 
            +
                else if (offset == INT_MAX) { /* localtime */
         | 
| 81 | 
            +
                }
         | 
| 82 | 
            +
                else if (offset == INT_MAX-1) { /* UTC */
         | 
| 83 | 
            +
            	struct time_object *tobj;
         | 
| 84 | 
            +
            	tobj = DATA_PTR(obj);
         | 
| 85 | 
            +
            	tobj->tm_got = 0;
         | 
| 86 | 
            +
            	tobj->gmt = 1;
         | 
| 87 | 
            +
                }
         | 
| 88 | 
            +
                else {
         | 
| 89 | 
            +
            	rb_raise(rb_eArgError, "utc_offset out of range");
         | 
| 90 | 
            +
                }
         | 
| 91 | 
            +
             | 
| 81 92 | 
             
                return obj;
         | 
| 82 93 | 
             
            }
         | 
| 94 | 
            +
            #endif
         | 
| 83 95 |  | 
| 84 | 
            -
             | 
| 96 | 
            +
            #ifndef RB_TIMESPEC_NOW
         | 
| 85 97 | 
             
            void
         | 
| 86 | 
            -
             | 
| 98 | 
            +
            rb_timespec_now(struct timespec *ts)
         | 
| 87 99 | 
             
            {
         | 
| 88 100 | 
             
            #ifdef HAVE_CLOCK_GETTIME
         | 
| 89 101 | 
             
                if (clock_gettime(CLOCK_REALTIME, ts) == -1) {
         | 
| @@ -100,6 +112,7 @@ timespec_now(struct timespec *ts) | |
| 100 112 | 
             
                }
         | 
| 101 113 | 
             
            #endif
         | 
| 102 114 | 
             
            }
         | 
| 115 | 
            +
            #endif
         | 
| 103 116 |  | 
| 104 117 | 
             
            /* localtime_with_gmtoff_zone */
         | 
| 105 118 | 
             
            #ifdef HAVE_GMTIME_R
         | 
    
        data/ext/strptime/strptime.c
    CHANGED
    
    | @@ -365,7 +365,7 @@ strptime_exec0(void **pc, const char *fmt, const char *str, size_t slen, | |
| 365 365 | 
             
            	const char *p0 = str + si;
         | 
| 366 366 | 
             
            	int r;
         | 
| 367 367 | 
             
            	size_t len;
         | 
| 368 | 
            -
            	if (*p0 == 'z') {
         | 
| 368 | 
            +
            	if (*p0 == 'z' || *p0 == 'Z') {
         | 
| 369 369 | 
             
            	    gmtoff = 0;
         | 
| 370 370 | 
             
            	    ADD_PC(1);
         | 
| 371 371 | 
             
            	    END_INSN(z)
         | 
| @@ -420,9 +420,10 @@ strptime_exec0(void **pc, const char *fmt, const char *str, size_t slen, | |
| 420 420 | 
             
            	struct timespec ts;
         | 
| 421 421 | 
             
            	struct tm tm;
         | 
| 422 422 | 
             
            	time_t t;
         | 
| 423 | 
            +
            	int gmt = gmtoff >= INT_MAX-1 ? INT_MAX-gmtoff : 2;
         | 
| 423 424 |  | 
| 424 425 | 
             
            	/* get current time with timezone */
         | 
| 425 | 
            -
            	 | 
| 426 | 
            +
            	rb_timespec_now(&ts);
         | 
| 426 427 | 
             
            	{
         | 
| 427 428 | 
             
            	    static time_t ct;
         | 
| 428 429 | 
             
            	    static struct tm ctm;
         | 
| @@ -436,6 +437,9 @@ strptime_exec0(void **pc, const char *fmt, const char *str, size_t slen, | |
| 436 437 | 
             
            	    if (gmtoff == INT_MAX) {
         | 
| 437 438 | 
             
            		gmtoff = localoff;
         | 
| 438 439 | 
             
            	    }
         | 
| 440 | 
            +
            	    else if (gmtoff == INT_MAX-1) {
         | 
| 441 | 
            +
            		gmtoff = 0;
         | 
| 442 | 
            +
            	    }
         | 
| 439 443 | 
             
            	    if (gmtoff != ctmoff) {
         | 
| 440 444 | 
             
            		tm_add_offset(&ctm, gmtoff - ctmoff);
         | 
| 441 445 | 
             
            		ctmoff = gmtoff;
         | 
| @@ -469,7 +473,8 @@ strptime_exec0(void **pc, const char *fmt, const char *str, size_t slen, | |
| 469 473 | 
             
            	    if (sec != -1) tm.tm_sec = sec;
         | 
| 470 474 | 
             
            	}
         | 
| 471 475 |  | 
| 472 | 
            -
            	t = timegm_noleapsecond(&tm) | 
| 476 | 
            +
            	t = timegm_noleapsecond(&tm);
         | 
| 477 | 
            +
            	if (gmt != 1) t -= gmtoff;
         | 
| 473 478 | 
             
            	tsp->tv_sec = t;
         | 
| 474 479 | 
             
            	tsp->tv_nsec = nsec;
         | 
| 475 480 | 
             
            	*gmtoffp = gmtoff;
         | 
| @@ -658,32 +663,6 @@ strptime_init_copy(VALUE copy, VALUE self) | |
| 658 663 | 
             
                return copy;
         | 
| 659 664 | 
             
            }
         | 
| 660 665 |  | 
| 661 | 
            -
            typedef uint64_t WIDEVALUE;
         | 
| 662 | 
            -
            typedef WIDEVALUE wideval_t;
         | 
| 663 | 
            -
            #ifndef PACKED_STRUCT_UNALIGNED
         | 
| 664 | 
            -
            #define PACKED_STRUCT_UNALIGNED(x) x
         | 
| 665 | 
            -
            #endif
         | 
| 666 | 
            -
            PACKED_STRUCT_UNALIGNED(struct vtm {
         | 
| 667 | 
            -
                VALUE year;	/* 2000 for example.  Integer. */
         | 
| 668 | 
            -
                VALUE subsecx;     /* 0 <= subsecx < TIME_SCALE.  possibly Rational. */
         | 
| 669 | 
            -
                VALUE utc_offset;  /* -3600 as -01:00 for example.  possibly Rational. */
         | 
| 670 | 
            -
                const char *zone;  /* "JST", "EST", "EDT", etc. */
         | 
| 671 | 
            -
                uint16_t yday : 9; /* 1..366 */
         | 
| 672 | 
            -
                uint8_t mon : 4;   /* 1..12 */
         | 
| 673 | 
            -
                uint8_t mday : 5;  /* 1..31 */
         | 
| 674 | 
            -
                uint8_t hour : 5;  /* 0..23 */
         | 
| 675 | 
            -
                uint8_t min : 6;   /* 0..59 */
         | 
| 676 | 
            -
                uint8_t sec : 6;   /* 0..60 */
         | 
| 677 | 
            -
                uint8_t wday : 3;  /* 0:Sunday, 1:Monday, ..., 6:Saturday 7:init */
         | 
| 678 | 
            -
                uint8_t isdst : 2; /* 0:StandardTime 1:DayLightSavingTime 3:init */
         | 
| 679 | 
            -
            });
         | 
| 680 | 
            -
            PACKED_STRUCT_UNALIGNED(struct time_object {
         | 
| 681 | 
            -
                wideval_t timew; /* time_t value * TIME_SCALE.  possibly Rational. */
         | 
| 682 | 
            -
                struct vtm vtm;
         | 
| 683 | 
            -
                uint8_t gmt : 3; /* 0:utc 1:localtime 2:fixoff 3:init */
         | 
| 684 | 
            -
                uint8_t tm_got : 1;
         | 
| 685 | 
            -
            });
         | 
| 686 | 
            -
             | 
| 687 666 | 
             
            /*
         | 
| 688 667 | 
             
             * @overload exec(str)
         | 
| 689 668 | 
             
             *   @param str [String] string to parse
         | 
| @@ -696,15 +675,15 @@ static VALUE | |
| 696 675 | 
             
            strptime_exec(VALUE self, VALUE str)
         | 
| 697 676 | 
             
            {
         | 
| 698 677 | 
             
                struct strptime_object *tobj;
         | 
| 699 | 
            -
                int r, gmtoff =  | 
| 678 | 
            +
                int r, gmtoff = INT_MAX;
         | 
| 679 | 
            +
                struct timespec ts;
         | 
| 700 680 | 
             
                StringValue(str);
         | 
| 701 681 | 
             
                GetStrptimeval(self, tobj);
         | 
| 702 | 
            -
                struct timespec ts;
         | 
| 703 682 |  | 
| 704 683 | 
             
                r = strptime_exec0(tobj->isns, RSTRING_PTR(tobj->fmt), RSTRING_PTR(str),
         | 
| 705 684 | 
             
            		       RSTRING_LEN(str), &ts, &gmtoff);
         | 
| 706 685 | 
             
                if (r) rb_raise(rb_eArgError, "string doesn't match");
         | 
| 707 | 
            -
                return  | 
| 686 | 
            +
                return rb_time_timespec_new(&ts, gmtoff);
         | 
| 708 687 | 
             
            }
         | 
| 709 688 |  | 
| 710 689 | 
             
            /*
         | 
| @@ -719,7 +698,7 @@ strptime_execi(VALUE self, VALUE str) | |
| 719 698 | 
             
            {
         | 
| 720 699 | 
             
                struct strptime_object *tobj;
         | 
| 721 700 | 
             
                struct timespec ts;
         | 
| 722 | 
            -
                int r, gmtoff =  | 
| 701 | 
            +
                int r, gmtoff = INT_MAX;
         | 
| 723 702 | 
             
                StringValue(str);
         | 
| 724 703 | 
             
                GetStrptimeval(self, tobj);
         | 
| 725 704 |  | 
    
        data/ext/strptime/strptime.h
    CHANGED
    
    | @@ -2,9 +2,13 @@ | |
| 2 2 | 
             
            #define STRPTIME_H 1
         | 
| 3 3 |  | 
| 4 4 | 
             
            #include "ruby.h"
         | 
| 5 | 
            -
             | 
| 5 | 
            +
            # ifndef HAVE_RB_TIME_TIMESPEC_NEW
         | 
| 6 | 
            +
            VALUE rb_time_timespec_new(const struct timespec *ts, int offset);
         | 
| 7 | 
            +
            # endif
         | 
| 6 8 | 
             
            struct tm * localtime_with_gmtoff_zone(const time_t *t, struct tm *result, long *gmtoff, const char **zone);
         | 
| 7 | 
            -
             | 
| 9 | 
            +
            # ifndef HAVE_RB_TIMESPEC_NOW
         | 
| 10 | 
            +
            void rb_timespec_now(struct timespec *ts);
         | 
| 11 | 
            +
            # endif
         | 
| 8 12 | 
             
            time_t timegm_noleapsecond(struct tm *tm);
         | 
| 9 13 | 
             
            void tm_add_offset(struct tm *tm, long diff);
         | 
| 10 14 |  | 
| Binary file | 
| Binary file | 
| Binary file | 
    
        data/lib/strptime/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: strptime
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.6
         | 
| 5 5 | 
             
            platform: x86-mingw32
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - NARUSE, Yui
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-12-17 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |