/***********************************************************************1* *2* This software is part of the ast package *3* Copyright (c) 1985-2011 AT&T Intellectual Property *4* and is licensed under the *5* Eclipse Public License, Version 1.0 *6* by AT&T Intellectual Property *7* *8* A copy of the License is available at *9* http://www.eclipse.org/org/documents/epl-v10.html *10* (with md5 checksum b35adb5213ca9657e911e9befb180842) *11* *12* Information and Software Systems Research *13* AT&T Research *14* Florham Park NJ *15* *16* Glenn Fowler <[email protected]> *17* David Korn <[email protected]> *18* Phong Vo <[email protected]> *19* *20***********************************************************************/21#pragma prototyped22/*23* Glenn Fowler24* AT&T Research25*26* Time_t conversion support27*/2829#include <tmx.h>30#include <tv.h>3132/*33* touch path <atime,mtime,ctime>34* (flags&PATH_TOUCH_VERBATIM) treats times verbatim, otherwise:35* Time_t==0 current time36* Time_t==TMX_NOTIME retains path value37*/3839int40tmxtouch(const char* path, Time_t at, Time_t mt, Time_t ct, int flags)41{42Tv_t av;43Tv_t mv;44Tv_t cv;45Tv_t* ap;46Tv_t* mp;47Tv_t* cp;4849if (at == TMX_NOTIME && !(flags & PATH_TOUCH_VERBATIM))50ap = TV_TOUCH_RETAIN;51else if (!at && !(flags & PATH_TOUCH_VERBATIM))52ap = 0;53else54{55av.tv_sec = tmxsec(at);56av.tv_nsec = tmxnsec(at);57ap = &av;58}59if (mt == TMX_NOTIME && !(flags & PATH_TOUCH_VERBATIM))60mp = TV_TOUCH_RETAIN;61else if (!mt && !(flags & PATH_TOUCH_VERBATIM))62mp = 0;63else64{65mv.tv_sec = tmxsec(mt);66mv.tv_nsec = tmxnsec(mt);67mp = &mv;68}69if (ct == TMX_NOTIME && !(flags & PATH_TOUCH_VERBATIM))70cp = TV_TOUCH_RETAIN;71else if (!ct && !(flags & PATH_TOUCH_VERBATIM))72cp = 0;73else74{75cv.tv_sec = tmxsec(ct);76cv.tv_nsec = tmxnsec(ct);77cp = &cv;78}79return tvtouch(path, ap, mp, cp, flags & 1);80}818283