diff options
Diffstat (limited to 'ckt0.awk')
| -rw-r--r-- | ckt0.awk | 60 |
1 files changed, 49 insertions, 11 deletions
@@ -49,6 +49,22 @@ function sigfig(val, unc) { } +function unc_g(val) { + + # order of magnitude + omag_val = log10(val) + + # trim punctuation from val + sub("[eE].*$", "", val) + gsub("[.+-]", "", val) + n_digits = omag_val - (length(val) - 0.0) + n_digits *= omag_val - (length(val) - 1.0) + + return sprintf("%.2g", 10.0^(n_digits)) + +} + + function ck_boottime(unm) { if (unm ~/OpenBSD/) { @@ -84,11 +100,11 @@ function ck_boottime(unm) { function ck_time(unm) { - if (unm ~/FreeBSD/) { + if (unm ~ /FreeBSD/ || unm ~ /Linux/) { "date +%s.%N" | getline t close("date +%s.%N") } - #if (unm ~/Darwin/) { + #if (unm ~ /Darwin/) { else { "date +%s" | getline t close("date +%s") @@ -118,7 +134,6 @@ function ck_uptime(unm) { for (i in t_up_cmd_arr) { - # TODO: add cases for days, months, years, etc. if (t_up_cmd_arr[i] ~ /day/) { split(t_up_cmd_arr[i], days) t_up_meas[1] += 86400.0*(days[1] + 0.0) @@ -137,11 +152,11 @@ function ck_uptime(unm) { (t_up_meas[2] > 60.0) ? t_up_meas[2] = 60.0 : t_up_meas[2] += 0.0 } - if (t_up_cmd_arr[i] ~ /sec/) { - split(t_up_cmd_arr[i], sec) - t_up_meas[1] += sec[1] - (t_up_meas[2] > 1.0) ? t_up_meas[2] = 1.0 : t_up_meas[2] += 0.0 - } + #if (t_up_cmd_arr[i] ~ /sec/) { + # split(t_up_cmd_arr[i], sec) + # t_up_meas[1] += sec[1] + # (t_up_meas[2] > 1.0) ? t_up_meas[2] = 1.0 : t_up_meas[2] += 0.0 + #} if (t_up_cmd_arr[i] ~ /:/) { split(t_up_cmd_arr[i], hrs_min, ":") @@ -153,11 +168,34 @@ function ck_uptime(unm) { } + if (uname ~ /FreeBSD/ || uname ~ /Linux/) { + split(ck_proc_uptime(uname), t_pu_meas) + split(merge_meas(t_up_meas[1], t_up_meas[2], t_pu_meas[1], 0.1), t_up_meas) + } + return sigfig(t_up_meas[1], t_up_meas[2]) } +function ck_proc_uptime(unm) { + + proc_file = "" + if (unm ~ /FreeBSD/) { + proc_file = "/compat/linux/proc/uptime" + } + if (unm ~ /Linux/) { + proc_file = "/proc/uptime" + } + + getline proc_uptime < proc_file + close(proc_file) + + return proc_uptime + +} + + BEGIN { OFMT="%f" @@ -179,15 +217,15 @@ BEGIN { ## check systime, check uptime, check systime again t_meas[1] = ck_time(uname) - split(ck_uptime(), t_up_meas) + split(ck_uptime(uname), t_up_meas) t_meas[2] = ck_time(uname) ## convert to [val, unc] vector t_meas[2] -= t_meas[1] t_meas[1] += 0.5*t_meas[2] if ( t_meas[2] == 0.0 ) { - #split(merge_meas(t_meas[1], 1.0, t_meas[2], 1.0), t_meas) - t_meas[2] = sqrt(t_meas[2]^2.0 + 1.0^2.0) + t_meas[2] = unc_g(t_meas[1]) + #t_meas[2] = sqrt(t_meas[2]^2.0 + 1.0^2.0) } t_meas_str = sigfig(t_meas[1], t_meas[2]) |
