sd: remove 'ssd' driver support
[unleashed/tickless.git] / usr / src / lib / libast / common / tm / tmxtouch.c
blobf1dfab1f81c5218a6e2c1576666509df3b73324d
1 /***********************************************************************
2 * *
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 *
8 * *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
12 * *
13 * Information and Software Systems Research *
14 * AT&T Research *
15 * Florham Park NJ *
16 * *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
20 * *
21 ***********************************************************************/
22 #pragma prototyped
24 * Glenn Fowler
25 * AT&T Research
27 * Time_t conversion support
30 #include <tmx.h>
31 #include <tv.h>
34 * touch path <atime,mtime,ctime>
35 * (flags&PATH_TOUCH_VERBATIM) treats times verbatim, otherwise:
36 * Time_t==0 current time
37 * Time_t==TMX_NOTIME retains path value
40 int
41 tmxtouch(const char* path, Time_t at, Time_t mt, Time_t ct, int flags)
43 Tv_t av;
44 Tv_t mv;
45 Tv_t cv;
46 Tv_t* ap;
47 Tv_t* mp;
48 Tv_t* cp;
50 if (at == TMX_NOTIME && !(flags & PATH_TOUCH_VERBATIM))
51 ap = TV_TOUCH_RETAIN;
52 else if (!at && !(flags & PATH_TOUCH_VERBATIM))
53 ap = 0;
54 else
56 av.tv_sec = tmxsec(at);
57 av.tv_nsec = tmxnsec(at);
58 ap = &av;
60 if (mt == TMX_NOTIME && !(flags & PATH_TOUCH_VERBATIM))
61 mp = TV_TOUCH_RETAIN;
62 else if (!mt && !(flags & PATH_TOUCH_VERBATIM))
63 mp = 0;
64 else
66 mv.tv_sec = tmxsec(mt);
67 mv.tv_nsec = tmxnsec(mt);
68 mp = &mv;
70 if (ct == TMX_NOTIME && !(flags & PATH_TOUCH_VERBATIM))
71 cp = TV_TOUCH_RETAIN;
72 else if (!ct && !(flags & PATH_TOUCH_VERBATIM))
73 cp = 0;
74 else
76 cv.tv_sec = tmxsec(ct);
77 cv.tv_nsec = tmxnsec(ct);
78 cp = &cv;
80 return tvtouch(path, ap, mp, cp, flags & 1);