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>
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     .

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

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>
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. >
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.