1 #include "stralloc.h"
2 #include "scheduled.h"
3 #include "bailout.h"
4 #include "fmt.h"
5 
6 /* put a schedule file name into sa */
7 void
make_name(stralloc * sa,struct jobinfo * j)8 make_name(stralloc *sa, struct jobinfo *j)
9 {
10 	int needcomma=0;
11 	uint64 ui64;
12 	unsigned int l;
13 	char nb[FMT_ULONG];
14 
15 	if (!stralloc_copys(sa,"@")) oom();
16 	ui64=HACK_TAIA_SEC(&j->lastrun);
17 	l=fmt_xlong(nb,ui64>>32);
18 	if (8!=l)
19 		if (!stralloc_catb(sa,"00000000",8-l)) oom();
20 	if (!stralloc_catb(sa,nb,l)) oom();
21 	l=fmt_xlong(nb,ui64 & 0xffffffff);
22 	if (8!=l)
23 		if (!stralloc_catb(sa,"00000000",8-l)) oom();
24 	if (!stralloc_catb(sa,nb,l)) oom();
25 	if (!stralloc_cats(sa,":")) oom();
26 	/* tai finished */
27 	if (!stralloc_catb(sa,j->id,j->idlen)) oom();
28 	if (!stralloc_cats(sa,":")) oom();
29 
30 	nb[fmt_ulong(nb,j->late)]=0;
31 	if (!stralloc_cats(sa,nb)) oom();
32 	if (!stralloc_cats(sa,":")) oom();
33 
34 	nb[fmt_ulong(nb,j->repeats)]=0;
35 	if (!stralloc_cats(sa,nb)) oom();
36 	if (!stralloc_cats(sa,":")) oom();
37 
38 	if (!stralloc_catb(sa,j->cronspec,j->cronlen)) oom();
39 	if (!stralloc_cats(sa,":")) oom();
40 	if (!stralloc_catb(sa,j->comment,j->commentlen)) oom();
41 	if (!stralloc_cats(sa,":")) oom();
42 
43 	if (j->null1) {
44 		if (needcomma)
45 			if (!stralloc_cats(sa,",")) oom();
46 		if (!stralloc_cats(sa,"null1")) oom();
47 		needcomma=1;
48 	}
49 	if (j->null2) {
50 		if (needcomma)
51 			if (!stralloc_cats(sa,",")) oom();
52 		if (!stralloc_cats(sa,"null2")) oom();
53 		needcomma=1;
54 	}
55 	if (!stralloc_cats(sa,":")) oom();
56 	if (!stralloc_catb(sa,j->fromspec,j->fromlen)) oom();
57 	if (!stralloc_cats(sa,":")) oom();
58 	if (!stralloc_catb(sa,j->tospec,j->tolen)) oom();
59 	if (!stralloc_cats(sa,":")) oom();
60 	nb[fmt_ulong(nb,j->every)]=0;
61 	if (!stralloc_cats(sa,nb)) oom();
62 	if (!stralloc_0(sa)) oom();
63 }
64 
65