summaryrefslogtreecommitdiff
path: root/Utility
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2014-12-16 14:04:40 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2014-12-16 14:04:40 -0400
commit95418cc430284b65af13105f7c63da08908dd826 (patch)
tree9afab6aad8025f454b12b038936f6322b6a82f1c /Utility
parentbe93817b5bd80b051d5037e0641b63c16838b5fa (diff)
Use wget -q --show-progress for less verbose wget output, when built with wget 1.16.
Diffstat (limited to 'Utility')
-rw-r--r--Utility/DottedVersion.hs36
-rw-r--r--Utility/Url.hs13
2 files changed, 47 insertions, 2 deletions
diff --git a/Utility/DottedVersion.hs b/Utility/DottedVersion.hs
new file mode 100644
index 000000000..14aa16da9
--- /dev/null
+++ b/Utility/DottedVersion.hs
@@ -0,0 +1,36 @@
+{- dotted versions, such as 1.0.1
+ -
+ - Copyright 2011-2014 Joey Hess <joey@kitenet.net>
+ -
+ - License: BSD-2-clause
+ -}
+
+module Utility.DottedVersion where
+
+import Common
+
+data DottedVersion = DottedVersion String Integer
+ deriving (Eq)
+
+instance Ord DottedVersion where
+ compare (DottedVersion _ x) (DottedVersion _ y) = compare x y
+
+instance Show DottedVersion where
+ show (DottedVersion s _) = s
+
+{- To compare dotted versions like 1.7.7 and 1.8, they are normalized to
+ - a somewhat arbitrary integer representation. -}
+normalize :: String -> DottedVersion
+normalize v = DottedVersion v $
+ sum $ mult 1 $ reverse $ extend precision $ take precision $
+ map readi $ split "." v
+ where
+ extend n l = l ++ replicate (n - length l) 0
+ mult _ [] = []
+ mult n (x:xs) = (n*x) : mult (n*10^width) xs
+ readi :: String -> Integer
+ readi s = case reads s of
+ ((x,_):_) -> x
+ _ -> 0
+ precision = 10 -- number of segments of the version to compare
+ width = length "yyyymmddhhmmss" -- maximum width of a segment
diff --git a/Utility/Url.hs b/Utility/Url.hs
index cb950b824..cc15c82d0 100644
--- a/Utility/Url.hs
+++ b/Utility/Url.hs
@@ -191,9 +191,18 @@ download' quiet url file uo =
wget = go "wget" $ headerparams ++ quietopt "-q" ++ wgetparams
{- Regular wget needs --clobber to continue downloading an existing
- file. On Android, busybox wget is used, which does not
- - support, or need that option. -}
+ - support, or need that option.
+ -
+ - When the wget version is new enough, pass options for
+ - a less cluttered download display.
+ -}
#ifndef __ANDROID__
- wgetparams = [Params "--clobber -c -O"]
+ wgetparams = catMaybes
+ [ if Build.SysConfig.wgetquietprogress
+ then Just $ Params "-q --show-progress"
+ else Nothing
+ , Just $ Params "--clobber -c -O"
+ ]
#else
wgetparams = [Params "-c -O"]
#endif