1 /***********************************************************************
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
13 * Information and Software Systems Research *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
21 ***********************************************************************/
24 * return pointer to formatted elapsed time for u 1/n secs
25 * compatible with strelapsed()
26 * return value length is at most 7
32 fmtelapsed(register unsigned long u
, register int n
)
34 register unsigned long t
;
45 sfsprintf(buf
, z
, "%lu.%02lus", t
, (u
* 100 / n
) % 100);
47 sfsprintf(buf
, z
, "%lum%02lus", t
/ 60, t
- (t
/ 60) * 60);
48 else if (t
< 24*60*60)
49 sfsprintf(buf
, z
, "%luh%02lum", t
/ (60*60), (t
- (t
/ (60*60)) * (60*60)) / 60);
50 else if (t
< 7*24*60*60)
51 sfsprintf(buf
, z
, "%lud%02luh", t
/ (24*60*60), (t
- (t
/ (24*60*60)) * (24*60*60)) / (60*60));
52 else if (t
< 31*24*60*60)
53 sfsprintf(buf
, z
, "%luw%02lud", t
/ (7*24*60*60), (t
- (t
/ (7*24*60*60)) * (7*24*60*60)) / (24*60*60));
54 else if (t
< 365*24*60*60)
55 sfsprintf(buf
, z
, "%luM%02lud", (t
* 12) / (365*24*60*60), ((t
* 12) - ((t
* 12) / (365*24*60*60)) * (365*24*60*60)) / (12*24*60*60));
56 else if (t
< (365UL*4UL+1UL)*24UL*60UL*60UL)
57 sfsprintf(buf
, z
, "%luY%02luM", t
/ (365*24*60*60), ((t
- (t
/ (365*24*60*60)) * (365*24*60*60)) * 5) / (152 * 24 * 60 * 60));
59 sfsprintf(buf
, z
, "%luY%02luM", (t
* 4) / ((365UL*4UL+1UL)*24UL*60UL*60UL), (((t
* 4) - ((t
* 4) / ((365UL*4UL+1UL)*24UL*60UL*60UL)) * ((365UL*4UL+1UL)*24UL*60UL*60UL)) * 5) / ((4 * 152 + 1) * 24 * 60 * 60));