-/* $OpenBSD: mmc.c,v 1.30 2015/01/16 06:40:06 deraadt Exp $ */
+/* $OpenBSD: mmc.c,v 1.31 2017/12/23 20:04:23 cheloha Exp $ */
/*
* Copyright (c) 2006 Michael Coulter <mjc@openbsd.org>
*
*/
#include <sys/limits.h>
+#include <sys/time.h>
#include <sys/types.h>
#include <sys/scsiio.h>
#include <sys/param.h> /* setbit, isset */
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
+#include <time.h>
#include <unistd.h>
#include "extern.h"
int
writetrack(struct track_info *tr, int track)
{
- struct timeval tv, otv, atv;
+ struct timespec ts, ots, ats;
u_char databuf[65536], nblk;
u_int end_lba, lba, tmp;
scsireq_t scr;
scr.senselen = SENSEBUFLEN;
scr.flags = SCCMD_ESCAPE|SCCMD_WRITE;
- timerclear(&otv);
- atv.tv_sec = 1;
- atv.tv_usec = 0;
+ timespecclear(&ots);
+ ats.tv_sec = 1;
+ ats.tv_nsec = 0;
if (get_nwa(&lba) != SCCMD_OK) {
warnx("cannot get next writable address");
}
lba += nblk;
- gettimeofday(&tv, NULL);
- if (lba == end_lba || timercmp(&tv, &otv, >)) {
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ if (lba == end_lba || timespeccmp(&ts, &ots, >)) {
fprintf(stderr,
"\rtrack %02d '%c' %08u/%08u %3d%%",
track, tr->type,
lba, end_lba, 100 * lba / end_lba);
- timeradd(&tv, &atv, &otv);
+ timespecadd(&ts, &ats, &ots);
}
tmp = htobe32(lba); /* update lba in cdb */
memcpy(&scr.cmd[2], &tmp, sizeof(tmp));
-/* $OpenBSD: rip.c,v 1.16 2015/08/20 22:32:41 deraadt Exp $ */
+/* $OpenBSD: rip.c,v 1.17 2017/12/23 20:04:23 cheloha Exp $ */
/*
* Copyright (c) 2007 Alexey Vatchenko <av@bsdua.org>
#include <sys/ioctl.h>
#include <sys/scsiio.h>
#include <sys/stat.h>
+#include <sys/time.h>
#include <scsi/scsi_all.h>
#include <scsi/scsi_disk.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include <unistd.h>
#include "extern.h"
int
read_track(struct track *ti)
{
- struct timeval tv, otv, atv;
+ struct timespec ts, ots, ats;
u_int32_t i, blksize, n_sec;
u_char *sec;
int error;
if (sec == NULL)
return (-1);
- timerclear(&otv);
- atv.tv_sec = 1;
- atv.tv_usec = 0;
+ timespecclear(&ots);
+ ats.tv_sec = 1;
+ ats.tv_nsec = 0;
for (i = 0; i < n_sec; ) {
- gettimeofday(&tv, NULL);
- if (timercmp(&tv, &otv, >)) {
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ if (timespeccmp(&ts, &ots, >)) {
fprintf(stderr, "\rtrack %u '%c' %08u/%08u %3u%%",
ti->track,
(ti->isaudio) ? 'a' : 'd', i, n_sec,
100 * i / n_sec);
- timeradd(&tv, &atv, &otv);
+ timespecadd(&ts, &ats, &ots);
}
error = read_data_sector(i + ti->start_lba, sec, blksize);
-/* $OpenBSD: util.c,v 1.85 2017/09/05 05:37:35 jca Exp $ */
+/* $OpenBSD: util.c,v 1.86 2017/12/23 20:04:23 cheloha Exp $ */
/* $NetBSD: util.c,v 1.12 1997/08/18 10:20:27 lukem Exp $ */
/*-
* with flag = 0
* - After the transfer, call with flag = 1
*/
-static struct timeval start;
+static struct timespec start;
char *action;
*/
static const char prefixes[] = " KMGTP";
- static struct timeval lastupdate;
+ static struct timespec lastupdate;
static off_t lastsize;
static char *title = NULL;
- struct timeval now, td, wait;
+ struct timespec now, td, wait;
off_t cursize, abbrevsize;
double elapsed;
int ratio, barlength, i, remaining, overhead = 30;
char buf[512];
if (flag == -1) {
- (void)gettimeofday(&start, NULL);
+ clock_gettime(CLOCK_MONOTONIC, &start);
lastupdate = start;
lastsize = restart_point;
}
- (void)gettimeofday(&now, NULL);
+ clock_gettime(CLOCK_MONOTONIC, &now);
if (!progress || filesize < 0)
return;
cursize = bytes + restart_point;
" %5lld %c%c ", (long long)abbrevsize, prefixes[i],
prefixes[i] == ' ' ? ' ' : 'B');
- timersub(&now, &lastupdate, &wait);
+ timespecsub(&now, &lastupdate, &wait);
if (cursize > lastsize) {
lastupdate = now;
lastsize = cursize;
if (wait.tv_sec >= STALLTIME) { /* fudge out stalled time */
start.tv_sec += wait.tv_sec;
- start.tv_usec += wait.tv_usec;
+ start.tv_nsec += wait.tv_nsec;
}
wait.tv_sec = 0;
}
- timersub(&now, &start, &td);
- elapsed = td.tv_sec + (td.tv_usec / 1000000.0);
+ timespecsub(&now, &start, &td);
+ elapsed = td.tv_sec + (td.tv_nsec / 1000000000.0);
if (flag == 1) {
i = (int)elapsed / 3600;
void
ptransfer(int siginfo)
{
- struct timeval now, td;
+ struct timespec now, td;
double elapsed;
off_t bs;
int meg, remaining, hh;
if (!verbose && !siginfo)
return;
- (void)gettimeofday(&now, NULL);
- timersub(&now, &start, &td);
- elapsed = td.tv_sec + (td.tv_usec / 1000000.0);
+ clock_gettime(CLOCK_MONOTONIC, &now);
+ timespecsub(&now, &start, &td);
+ elapsed = td.tv_sec + (td.tv_nsec / 1000000000.0);
bs = bytes / (elapsed == 0.0 ? 1 : elapsed);
meg = 0;
if (bs > (1024 * 1024))