1da2e3ebdSchin /***********************************************************************
25947648bSMarcel Telka  *                                                                      *
35947648bSMarcel Telka  *               This software is part of the ast package               *
45947648bSMarcel Telka  *          Copyright (c) 1985-2013 AT&T Intellectual Property          *
55947648bSMarcel Telka  *                      and is licensed under the                       *
65947648bSMarcel Telka  *                 Eclipse Public License, Version 1.0                  *
75947648bSMarcel Telka  *                    by AT&T Intellectual Property                     *
85947648bSMarcel Telka  *                                                                      *
95947648bSMarcel Telka  *                A copy of the License is available at                 *
105947648bSMarcel Telka  *          http://www.eclipse.org/org/documents/epl-v10.html           *
115947648bSMarcel Telka  *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
125947648bSMarcel Telka  *                                                                      *
135947648bSMarcel Telka  *              Information and Software Systems Research               *
145947648bSMarcel Telka  *                            AT&T Research                             *
155947648bSMarcel Telka  *                           Florham Park NJ                            *
165947648bSMarcel Telka  *                                                                      *
175947648bSMarcel Telka  *               Glenn Fowler <glenn.s.fowler@gmail.com>                *
185947648bSMarcel Telka  *                    David Korn <dgkorn@gmail.com>                     *
195947648bSMarcel Telka  *                     Phong Vo <phongvo@gmail.com>                     *
205947648bSMarcel Telka  *                                                                      *
215947648bSMarcel Telka  ***********************************************************************/
225947648bSMarcel Telka 
235947648bSMarcel Telka #include <errno.h>
245947648bSMarcel Telka #include <time.h>
255947648bSMarcel Telka 
265947648bSMarcel Telka #include "tv.h"
27da2e3ebdSchin 
28da2e3ebdSchin /*
29da2e3ebdSchin  * sleep for tv
30da2e3ebdSchin  * non-zero exit if sleep did not complete
31da2e3ebdSchin  * with remaining time in rv
325947648bSMarcel Telka  *
335947648bSMarcel Telka  * NOTE: some systems hide nanosleep() ouside of -lc -- puleeze
34da2e3ebdSchin  */
35da2e3ebdSchin 
tvsleep(const Tv_t * tv,Tv_t * rv)365947648bSMarcel Telka int tvsleep(const Tv_t *tv, Tv_t *rv) {
375947648bSMarcel Telka     struct timespec stv;
385947648bSMarcel Telka     struct timespec srv;
395947648bSMarcel Telka     int r;
405947648bSMarcel Telka 
415947648bSMarcel Telka     stv.tv_sec = tv->tv_sec;
425947648bSMarcel Telka     stv.tv_nsec = tv->tv_nsec;
435947648bSMarcel Telka     if ((r = nanosleep(&stv, &srv)) && errno == EINTR && rv) {
445947648bSMarcel Telka         rv->tv_sec = srv.tv_sec;
455947648bSMarcel Telka         rv->tv_nsec = srv.tv_nsec;
465947648bSMarcel Telka     }
475947648bSMarcel Telka     return r;
48*b30d1939SAndy Fiddaman  }
49