1 76193d7c 2003-09-30 devnull #include "mk.h"
3 76193d7c 2003-09-30 devnull /* table-driven version in bootes dump of 12/31/96 */
6 76193d7c 2003-09-30 devnull mtime(char *name)
8 76193d7c 2003-09-30 devnull return mkmtime(name);
12 76193d7c 2003-09-30 devnull timeof(char *name, int force)
14 76193d7c 2003-09-30 devnull Symtab *sym;
17 76193d7c 2003-09-30 devnull if(utfrune(name, '('))
18 76193d7c 2003-09-30 devnull return atimeof(force, name); /* archive */
20 76193d7c 2003-09-30 devnull if(force)
21 76193d7c 2003-09-30 devnull return mtime(name);
24 76193d7c 2003-09-30 devnull sym = symlook(name, S_TIME, 0);
26 76193d7c 2003-09-30 devnull return (long) sym->value; /* uggh */
28 76193d7c 2003-09-30 devnull t = mtime(name);
29 76193d7c 2003-09-30 devnull if(t == 0)
30 76193d7c 2003-09-30 devnull return 0;
32 76193d7c 2003-09-30 devnull symlook(name, S_TIME, (void*)t); /* install time in cache */
33 76193d7c 2003-09-30 devnull return t;
37 76193d7c 2003-09-30 devnull touch(char *name)
39 76193d7c 2003-09-30 devnull Bprint(&bout, "touch(%s)\n", name);
40 76193d7c 2003-09-30 devnull if(nflag)
43 76193d7c 2003-09-30 devnull if(utfrune(name, '('))
44 76193d7c 2003-09-30 devnull atouch(name); /* archive */
45 76193d7c 2003-09-30 devnull else if(chgtime(name) < 0) {
46 76193d7c 2003-09-30 devnull fprint(2, "%s: %r\n", name);
52 76193d7c 2003-09-30 devnull delete(char *name)
54 76193d7c 2003-09-30 devnull if(utfrune(name, '(') == 0) { /* file */
55 76193d7c 2003-09-30 devnull if(remove(name) < 0)
56 76193d7c 2003-09-30 devnull fprint(2, "remove %s: %r\n", name);
58 76193d7c 2003-09-30 devnull fprint(2, "hoon off; mk can'tdelete archive members\n");
62 76193d7c 2003-09-30 devnull timeinit(char *s)
65 76193d7c 2003-09-30 devnull char *cp;
67 76193d7c 2003-09-30 devnull int c, n;
69 76193d7c 2003-09-30 devnull t = time(0);
70 76193d7c 2003-09-30 devnull while (*s) {
73 76193d7c 2003-09-30 devnull n = chartorune(&r, s);
74 76193d7c 2003-09-30 devnull if (r == ' ' || r == ',' || r == '\n')
77 76193d7c 2003-09-30 devnull } while(*s);
80 76193d7c 2003-09-30 devnull symlook(strdup(cp), S_TIME, (void *)t)->value = (void *)t;
82 76193d7c 2003-09-30 devnull *s++ = c;
83 76193d7c 2003-09-30 devnull while(*s){
84 76193d7c 2003-09-30 devnull n = chartorune(&r, s);
85 76193d7c 2003-09-30 devnull if(r != ' ' && r != ',' && r != '\n')