1implement Newer; 2 3# 4# test if a file is up to date 5# 6 7include "sys.m"; 8 9include "draw.m"; 10 11Newer: module 12{ 13 init: fn(nil: ref Draw->Context, nil: list of string); 14}; 15 16init(nil: ref Draw->Context, args: list of string) 17{ 18 sys := load Sys Sys->PATH; 19 if(len args != 3){ 20 sys->fprint(sys->fildes(2), "usage: newer newfile oldfile\n"); 21 raise "fail:usage"; 22 } 23 args = tl args; 24 (ok1, d1) := sys->stat(hd args); 25 if(ok1 < 0) 26 raise sys->sprint("fail:new:%r"); 27 if(d1.mode & Sys->DMDIR) 28 raise "fail:new:directory"; 29 (ok2, d2) := sys->stat(hd tl args); 30 if(ok2 < 0) 31 raise sys->sprint("fail:old:%r"); 32 if(d2.mode & Sys->DMDIR) 33 raise "fail:old:directory"; 34 if(d2.mtime > d1.mtime) 35 raise "fail:older"; 36} 37