Skip Menu |
 

Preferred bug tracker

Please visit the preferred bug tracker to report your issue.

This queue is for tickets about the Time-Local CPAN distribution.

Report information
The Basics
Id: 124899
Status: rejected
Priority: 0/
Queue: Time-Local

People
Owner: Nobody in particular
Requestors: warrenldodge [...] comcast.net
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: possible problem with localtime or timelocal
Date: Sat, 24 Mar 2018 12:29:10 -0700
To: bug-Time-Local [...] rt.cpan.org
From: Warren L Dodge <warrenldodge [...] comcast.net>
Download (untitled) / with headers
text/plain 7.4k
I was writing code to adjust date/time in pictures and discovered a problem In the attached script it seems to be in error from 1900-1968 Example Taking 1960 and using timelocal  and then using localtime comes back 2060 Hopefully it isn't me missing something. $VERSION   = '1.2300'; Linux wdcentos72 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 20:13:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux Summary of my perl5 (revision 5 version 16 subversion 3) configuration:   Platform:     osname=linux, osvers=3.10.0-514.16.1.el7.x86_64, archname=x86_64-linux-thread-multi     uname='linux c1bm.rdu2.centos.org 3.10.0-514.16.1.el7.x86_64 #1 smp wed apr 12 15:04:24 utc 2017 x86_64 x86_64 x86_64 gnulinux '     config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Dccdlflags=-Wl,--enable-new-dtags -Dlddlflags=-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wl,-z,relro -DDEBUGGING=-g -Dversion=5.16.3 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl5 -Dsitearch=/usr/local/lib64/perl5 -Dprivlib=/usr/share/perl5 -Dvendorlib=/usr/share/perl5/vendor_perl -Darchlib=/usr/lib64/perl5 -Dvendorarch=/usr/lib64/perl5/vendor_perl -Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Duseshrplib -Dusethreads -Duseithreads -Dusedtrace=/usr/bin/dtrace -Duselargefiles -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin -Dusesitecustomize'     hint=recommended, useposix=true, d_sigaction=define     useithreads=define, usemultiplicity=define     useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef     use64bitint=define, use64bitall=define, uselongdouble=undef     usemymalloc=n, bincompat5005=undef   Compiler:     cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',     optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic',     cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'     ccversion='', gccversion='4.8.5 20150623 (Red Hat 4.8.5-16)', gccosandvers=''     intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16     ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8     alignbytes=8, prototype=define   Linker and Libraries:     ld='gcc', ldflags =' -fstack-protector'     libpth=/usr/local/lib64 /lib64 /usr/lib64     libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc -lgdbm_compat     perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc     libc=, so=so, useshrplib=true, libperl=libperl.so     gnulibc_version='2.17'   Dynamic Linking:     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE'     cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wl,-z,relro ' Characteristics of this binary (from libperl):   Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS                         PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT                         PERL_MALLOC_WRAP PERL_PRESERVE_IVUV USE_64_BIT_ALL                         USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES                         USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE                         USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF                         USE_REENTRANT_API USE_SITECUSTOMIZE   Locally applied patches:         Fedora Patch1: Removes date check, Fedora/RHEL specific         Fedora Patch3: support for libdir64         Fedora Patch4: use libresolv instead of libbind         Fedora Patch5: USE_MM_LD_RUN_PATH         Fedora Patch6: Skip hostname tests, due to builders not being network capable         Fedora Patch7: Dont run one io test due to random builder failures         Fedora Patch9: Fix find2perl to translate ? glob properly (RT#113054)         Fedora Patch10: Fix broken atof (RT#109318)         Fedora Patch13: Clear $@ before "do" I/O error (RT#113730)         Fedora Patch14: Do not truncate syscall() return value to 32 bits (RT#113980)         Fedora Patch15: Override the Pod::Simple::parse_file (CPANRT#77530)         Fedora Patch16: Do not leak with attribute on my variable (RT#114764)         Fedora Patch17: Allow operator after numeric keyword argument (RT#105924)         Fedora Patch18: Extend stack in File::Glob::glob, (RT#114984)         Fedora Patch19: Do not crash when vivifying $|         Fedora Patch20: Fix misparsing of maketext strings (CVE-2012-6329)         Fedora Patch21: Add NAME headings to CPAN modules (CPANRT#73396)         Fedora Patch22: Fix leaking tied hashes (RT#107000) [1]         Fedora Patch23: Fix leaking tied hashes (RT#107000) [2]         Fedora Patch24: Fix leaking tied hashes (RT#107000) [3]         Fedora Patch25: Fix dead lock in PerlIO after fork from thread (RT#106212)         Fedora Patch26: Make regexp safe in a signal handler (RT#114878)         Fedora Patch27: Update h2ph(1) documentation (RT#117647)         Fedora Patch28: Update pod2html(1) documentation (RT#117623)         Fedora Patch29: Document Math::BigInt::CalcEmu requires Math::BigInt (CPAN RT#85015)         RHEL Patch30: Use stronger algorithm needed for FIPS in t/op/crypt.t (RT#121591)         RHEL Patch31: Make *DBM_File desctructors thread-safe (RT#61912)         RHEL Patch32: Use stronger algorithm needed for FIPS in t/op/taint.t (RT#123338)         RHEL Patch33: Remove CPU-speed-sensitive test in Benchmark test         RHEL Patch34: Make File::Glob work with threads again         RHEL Patch35: Fix CRLF conversion in ASCII FTP upload (CPAN RT#41642)         RHEL Patch36: Do not leak the temp utf8 copy of namepv (CPAN RT#123786)         RHEL Patch37: Fix duplicating PerlIO::encoding when spawning threads (RT#31923)   Built under linux   Compiled at Aug  2 2017 17:45:03   %ENV:     PERL5LIB="/perl5/lib/perl5"   @INC:     /perl5/lib/perl5/x86_64-linux-thread-multi     /perl5/lib/perl5     /usr/local/lib64/perl5     /usr/local/share/perl5     /usr/lib64/perl5/vendor_perl     /usr/share/perl5/vendor_perl     /usr/lib64/perl5     /usr/share/perl5     .
Download timeBug.pl
text/x-perl 1012b

Message body is not shown because sender requested not to inline it.

Download (untitled) / with headers
text/plain 524b
On 2018-03-24 14:30:45, warrenldodge@comcast.net wrote: Show quoted text
> I was writing code to adjust date/time in pictures and discovered a problem > > In the attached script it seems to be in error from 1900-1968 > > Example > Taking 1960 and using timelocal  and then using localtime comes back 2060 > > Hopefully it isn't me missing something.
I'm afraid this is you missing something. See the section of the docs starting with "Year Value Interpretation". It's a terrible API decision, but it wasn't mine, and now I maintain it.
Subject: Re: [rt.cpan.org #124899] possible problem with localtime or timelocal
Date: Sat, 24 Mar 2018 17:47:46 -0700
To: bug-Time-Local [...] rt.cpan.org
From: Warren L Dodge <warrenldodge [...] comcast.net>
Download (untitled) / with headers
text/plain 1.1k
I see. You are right it is kind of weird. It makes no sense to me, but I guess it did at the time it was done. I wonder if an enhancement could be done to allow a straight conversion. Maybe set some variable like $Time::Local::straightConvert = 1 and skip all the current special stuff. I have seen this style in other modules. Just a thought. It seems that the way it is could break things as time moves along. I will code around it by limiting the year range in my script On 03/24/18 12:52, Dave Rolsky via RT wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=124899 > > > On 2018-03-24 14:30:45, warrenldodge@comcast.net wrote:
>> I was writing code to adjust date/time in pictures and discovered a problem >> >> In the attached script it seems to be in error from 1900-1968 >> >> Example >> Taking 1960 and using timelocal  and then using localtime comes back 2060 >> >> Hopefully it isn't me missing something.
> I'm afraid this is you missing something. See the section of the docs starting with "Year Value Interpretation". > > It's a terrible API decision, but it wasn't mine, and now I maintain it. >
Download (untitled) / with headers
text/plain 842b
On 2018-03-24 19:49:01, warrenldodge@comcast.net wrote: Show quoted text
> I see. You are right it is kind of weird. > > It makes no sense to me, but I guess it did at the time it was done. > > I wonder if an enhancement could be done to allow a straight > conversion. > Maybe set some variable > like $Time::Local::straightConvert = 1 and skip all the current > special > stuff. > I have seen this style in other modules. Just a thought. > > It seems that the way it is could break things as time moves along. > > I will code around it by limiting the year range in my script
A global is not the right way to do this, since it would affect everything loaded in the current interpreter, including module code. A better option would be an import option like ":sane" that exported a different version of timelocal() that doesn't do this wacky year munging.


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

Please report any issues with rt.cpan.org to rt-cpan-admin@bestpractical.com.