I have forgotten that I took up this bug in Jun this year.
Already fixed in distribution?

On 2013/10/01, at 20:34, arisawa <aris...@ar.aichi-u.ac.jp> wrote:

> Hello,
> 
> Am I missing something?
> It seems logic is inverted to me.
> 
> Kenji Arisawa
> 
> maia% ls -l
> ...
> --rw-rw-r-- M 323 arisawa arisawa         0 Sep 29 06:29 x
> --rw-rw-r-- M 323 arisawa arisawa        14 Sep 28 17:50 z
> maia% mtime x
> 1380403777 x
> maia% if(test z -older 1380403777) echo older
> maia% if(! test z -older 1380403777) echo older
> older
> maia% 
> 
> 
> man test(1)
>          f -older t True if file f is older than (modified before)
>                     time t. If t is a integer followed by the letters
>                     y(years), M(months), d(days), h(hours),
>                     m(minutes), or s(seconds), it represents current
>                     time minus the specified time.  If there is no
>                     letter, it represents seconds since epoch.  You
>                     can also concatenate mixed units.  For example,
>                     3d12h means three days and twelve hours ago.
> 
> the source code /sys/src/cmd/test.c
> int
> isolder(char *pin, char *f)
> {
>       int r;
>       ulong n, m;
>       char *p = pin;
>       Dir *dir;
> 
>       dir = dirstat(f);
>       if (dir == nil)
>               return 0;
> 
>       /* parse time */
>       n = 0;
>       while(*p){
>               m = strtoul(p, &p, 0);
>               switch(*p){
>               case 0:
>                       n = m;
>                       break;
>               case 'y':
>                       m *= 12;
>                       /* fall through */
>               case 'M':
>                       m *= 30;
>                       /* fall through */
>               case 'd':
>                       m *= 24;
>                       /* fall through */
>               case 'h':
>                       m *= 60;
>                       /* fall through */
>               case 'm':
>                       m *= 60;
>                       /* fall through */
>               case 's':
>                       n += m;
>                       p++;
>                       break;
>               default:
>                       synbad("bad time syntax, ", pin);
>               }
>       }
> 
>       r = dir->mtime + n < time(0);
>       free(dir);
>       return r;
> }
> 
> 
> 
> 


Reply via email to