1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
/*
* Copyright (C) 2010 Robin H.Johnson, Ovechko Kostyantyn <fastinetserver@gmail.com>.
*
* Project: IDFetch.
* Developer: Ovechko Kostyantyn Olexandrovich (Kharkiv State Technical University of Construction and Architecture, Ukraine).
* Mentor: Robin H. Johnson (Gentoo Linux: Developer, Trustee & Infrastructure Lead).
* Mentoring organization: Gentoo Linux.
* Sponsored by GSOC 2010.
*
* This file is part of Segget.
*
* Segget is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Segget is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Segget; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "utils.h"
ulong time_left_since(timeval from_time){
try{
timeval now_time;
gettimeofday(&now_time,NULL);
ulong timeleft=(now_time.tv_sec-from_time.tv_sec)*1000+(now_time.tv_usec-from_time.tv_usec)/1000;
if (timeleft<1)
timeleft=1;
return timeleft;
}catch(...){
error_log("Error in utils.cpp: time_left_from()");
return 1;
}
}
string secsToString(ulong secs){
string result="";
ulong mins=0;
ulong hours=0;
ulong days=0;
ldiv_t time_div_spliter;
if (secs>60){
time_div_spliter = ldiv (secs,60);
secs=time_div_spliter.rem;
if (time_div_spliter.quot>60){
time_div_spliter = ldiv (time_div_spliter.quot,60);
mins=time_div_spliter.rem;
if (time_div_spliter.quot>24){
time_div_spliter = ldiv (time_div_spliter.quot,24);
hours=time_div_spliter.rem;
days=time_div_spliter.quot;
if (days>999) return ("inf");
result=result+field(" ", days,3)+"d";
}else{
hours=time_div_spliter.quot;
}
result=result+field(" ", hours,2)+"h";
}else{
mins=time_div_spliter.quot;
}
result=result+field(" ", mins,2)+"m";
}
result=result+field(" ", secs,2)+"s";
return result;
}
string speedToString(ulong dld_bytes, ulong time_left){
try{
string speed_str;
if (time_left==0){
speed_str="N/a";
}else{
ulong speed=(dld_bytes*1000/time_left);
string suffix;
if (speed>1500){
if (speed>1500000){
suffix=" MB/s";
speed=speed/1000000;
}else{
suffix=" KB/s";
speed=speed/1000;
}
}else{
suffix=" B/s";
}
speed_str=field("",speed,4)+suffix;
}
return speed_str;
}catch(...){
error_log("Error in utils.cpp: speedToString()");
}
return "";
}
string speedToString(ulong speed){
try{
string speed_str;
string suffix;
if (speed>1500){
if (speed>1500000){
suffix=" MB/s";
speed=speed/1000000;
}else{
suffix=" KB/s";
speed=speed/1000;
}
}else{
suffix=" B/s";
}
speed_str=field("",speed,4)+suffix;
return speed_str;
}catch(...){
error_log("Error in utils.cpp: speedToString()");
}
return "";
}
|