Blame


1 76193d7c 2003-09-30 devnull #include "mk.h"
2 76193d7c 2003-09-30 devnull
3 76193d7c 2003-09-30 devnull /* table-driven version in bootes dump of 12/31/96 */
4 76193d7c 2003-09-30 devnull
5 76193d7c 2003-09-30 devnull long
6 76193d7c 2003-09-30 devnull mtime(char *name)
7 76193d7c 2003-09-30 devnull {
8 76193d7c 2003-09-30 devnull return mkmtime(name);
9 76193d7c 2003-09-30 devnull }
10 76193d7c 2003-09-30 devnull
11 76193d7c 2003-09-30 devnull long
12 76193d7c 2003-09-30 devnull timeof(char *name, int force)
13 76193d7c 2003-09-30 devnull {
14 76193d7c 2003-09-30 devnull Symtab *sym;
15 76193d7c 2003-09-30 devnull long t;
16 76193d7c 2003-09-30 devnull
17 76193d7c 2003-09-30 devnull if(utfrune(name, '('))
18 76193d7c 2003-09-30 devnull return atimeof(force, name); /* archive */
19 76193d7c 2003-09-30 devnull
20 76193d7c 2003-09-30 devnull if(force)
21 76193d7c 2003-09-30 devnull return mtime(name);
22 76193d7c 2003-09-30 devnull
23 76193d7c 2003-09-30 devnull
24 76193d7c 2003-09-30 devnull sym = symlook(name, S_TIME, 0);
25 76193d7c 2003-09-30 devnull if (sym)
26 3fe9465a 2006-04-20 devnull return sym->u.value;
27 76193d7c 2003-09-30 devnull
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;
31 76193d7c 2003-09-30 devnull
32 76193d7c 2003-09-30 devnull symlook(name, S_TIME, (void*)t); /* install time in cache */
33 76193d7c 2003-09-30 devnull return t;
34 76193d7c 2003-09-30 devnull }
35 76193d7c 2003-09-30 devnull
36 76193d7c 2003-09-30 devnull void
37 76193d7c 2003-09-30 devnull touch(char *name)
38 76193d7c 2003-09-30 devnull {
39 76193d7c 2003-09-30 devnull Bprint(&bout, "touch(%s)\n", name);
40 76193d7c 2003-09-30 devnull if(nflag)
41 76193d7c 2003-09-30 devnull return;
42 76193d7c 2003-09-30 devnull
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);
47 76193d7c 2003-09-30 devnull Exit();
48 76193d7c 2003-09-30 devnull }
49 76193d7c 2003-09-30 devnull }
50 76193d7c 2003-09-30 devnull
51 76193d7c 2003-09-30 devnull void
52 76193d7c 2003-09-30 devnull delete(char *name)
53 76193d7c 2003-09-30 devnull {
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);
57 76193d7c 2003-09-30 devnull } else
58 76193d7c 2003-09-30 devnull fprint(2, "hoon off; mk can'tdelete archive members\n");
59 76193d7c 2003-09-30 devnull }
60 76193d7c 2003-09-30 devnull
61 76193d7c 2003-09-30 devnull void
62 76193d7c 2003-09-30 devnull timeinit(char *s)
63 76193d7c 2003-09-30 devnull {
64 76193d7c 2003-09-30 devnull long t;
65 76193d7c 2003-09-30 devnull char *cp;
66 76193d7c 2003-09-30 devnull Rune r;
67 76193d7c 2003-09-30 devnull int c, n;
68 76193d7c 2003-09-30 devnull
69 76193d7c 2003-09-30 devnull t = time(0);
70 76193d7c 2003-09-30 devnull while (*s) {
71 76193d7c 2003-09-30 devnull cp = s;
72 76193d7c 2003-09-30 devnull do{
73 76193d7c 2003-09-30 devnull n = chartorune(&r, s);
74 76193d7c 2003-09-30 devnull if (r == ' ' || r == ',' || r == '\n')
75 76193d7c 2003-09-30 devnull break;
76 76193d7c 2003-09-30 devnull s += n;
77 76193d7c 2003-09-30 devnull } while(*s);
78 76193d7c 2003-09-30 devnull c = *s;
79 76193d7c 2003-09-30 devnull *s = 0;
80 3fe9465a 2006-04-20 devnull symlook(strdup(cp), S_TIME, (void *)t)->u.value = t;
81 76193d7c 2003-09-30 devnull if (c)
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')
86 76193d7c 2003-09-30 devnull break;
87 76193d7c 2003-09-30 devnull s += n;
88 76193d7c 2003-09-30 devnull }
89 76193d7c 2003-09-30 devnull }
90 76193d7c 2003-09-30 devnull }