Ӂ      !"#$%&'()*+,-./0123456789:;<=>?@ABCD E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k lmnopqrstuvwxyz{|}~portable experimentaljeremy@n-heptane.com-turns the quickcheck test into an hunit test )Use this if you want to provide a custom  instead of  . quickcheck config quickcheck property <modified version of the tests function from Test.QuickCheck @an instance of Test.HUnit.Testable for Test.QuickCheck.Property !Note: I did not add an instance: ,instance (QC.Testable a) => (HU.Testable a) BBecause it results in undeciable instances. For example, there is  an instance of * for QC.Testable and HU.Testable already. ,Create a relative URI with the given query. DSet the port number in the URI authority, creating it if necessary. Return the pairs in a URI's query  Modify a URI',s query by applying a function to the pairs  6Turn a list of attribute value pairs into a uriQuery. CEscape a value so it can safely appear on the RHS of an element of E the URI query. The isUnreserved predicate is the set of characters # that can appear in a URI which don't have any special meaning.  Everything else gets escaped. 5   6 ?A record used to hold the output style information for a task. C This The prefixes that will appear at the beginning of each line, E and the desired verbosity level. Suggested verbosity level policy: C -1: No output of any kind, as if you were directing all output to devnull L 0: Error output only, suitable for a run whose log you might examine later I 1: casual progress reporting - if you were running on a console but didn't " expect anything to go wrong J 2: detailed progress reporting - show more progress, particularly things N that might fail during the normal operation of the autobuilder: patches J that fail to apply, dpkg-buildpackage runs that return errors, etc. C 3: Debugging output - use this level or higher if you suspect the J autobuilder itself is failing, or you are doing development work on  the autobuilder. .Add this string at the beginning of each line 4Ignore v functions whose argument is more than this Per-handle prefix =Class representing ways of doing console (terminal?) output. Write output to a handle. BIf we are not already at the beginning of a line, move the cursor # to the beginning of the next one.  Return the "effective verbosity" for a task. If the argument : is 2 it means the caller is computing ev for a task that ? normally does output when the verbosity level is 2 or higher. < If the verbosity of the current style is 1, then the ev or : effective verbosity is 2-1 = -1, so the output should be  quieter. !Modify the current output style. %Implementation of try for this monad #Use a new style for the TIO action /Set the output style for a handle to prefixed. !Prepend some text to the prefix.  Append some text to the prefix. /Get the current prefix for a particular handle CSet the output style for the stdout and stderr handle to prefixed, > using whatever prefixes were most recently set (default is [1] and [2].) HSwitch to prefixed mode and modify both the stdout and stderr prefixes. <Perform an action if the effective verbosity level is >= 0, ' otherwise return the default value d. Write a string to stdout. !Write a string to stderr. "(Verbosity controlled version of ePutStr #;Write a string to stdout depending on the verbosity level. $Write a character. %Write a character to stdout. &Write a character to stderr. (Verbosity controlled version of hPutStr '*Verbosity controlled version of hPutChar. ((Verbosity controlled version of putChar ))Verbosity controlled version of ePutChar *CMove to beginning of next line (if necessary) and output a string. +hPutStrBl to stdout. ,hPutStrBl to stderr. -*Verbosity controlled version of hPutStrBl .)Verbosity controlled version of putStrBl /*Verbosity controlled version of ePutStrBl 0(Write a newline character and a string. 1hPutStrLn to stdout. 2hPutStrLn to stderr. 3+Verbosity controlled version of hPutStrLn. 4)Verbosity controlled version of putStrLn 5*Verbosity controlled version of ePutStrLn 6hBOL to stdout. 7hBOL to stderr. 89$Verbosity controlled version of BOL :%Verbosity controlled version of eBOL 1  !"#$%&'()*+,-./0123456789:1  !#"$%&'()*+,-./0123456789:1    !"#$%&'()*+,-./0123456789:;1This represents the state of the IO system. The 6 flag keeps B track of whether we are at the beginning of line on the console. D This is computed in terms of what we have sent to the console, but C it should be remembered that the order that stdout and stderr are D sent to the console may not be the same as the order in which they @ show up there. However, in practice this seems to work as one  would hope. %Is the console at beginning of line? <*Perform a TIO monad task in the IO monad. ="Catch exceptions in a TIO action. KThe initial output state - at the beginning of the line, no special handle ; state information, no repositories in the repository map. AThe TIO instance of CIO adds some features to the normal console A output. By tracking the cursor position it is able to insert a ) prefix to each line, and to implement a beginning of line (BOL) C function which only adds a newline when the cursor is not already H at BOL. It also allows verbosity controlled output, where a verbosity D level is stored in the monad state and output requests are given a 6 verbosity which must be greater or equal to the monad' s verbosity ! level for the output to appear. 4  !"#$%&'()*+,-./0123456789:;<=;<=;<==Use this module to call functions in the CIO module from the > regular IO monad. This instance ignores all style and state E information. The verbosity controlled output functions will ignore E any calls when v is greater than zero. This allows you to call the D functions in the haskell-debian package from the regular IO monad. 0This is in a separate module from CIO so you don't accidentally do = a liftIO of some other CIO operation and get this instance. >?>?@"Set up access to destination (user@host). 6Make sure there is a public key for the local account A6See if we already have access to the destination (user@host). 8Try to set up the keys so we have access to the account 7Get the destination account info from the command line B-Copy the ssh configuration from $HOME to the /root directory of a  changeroot. @ABA@B@ABC<Parse the text returned when a directory is listed by a web < server. This is currently only known to work with Apache. CCC DEALike withLock, but instead of giving up immediately, try n times  with a wait between each. DEDEDE FGHFGHFGHFGH I/The mighty consperse function - e.g. consperse , [a, b] -> a,b  consperse = MissingH.List.join J0surround each element of a list - e.g. surround ( ) [a, b] -> [(a)(b)] K3Replace the prefix of s, return Nothing if it doesn' t match. L0Remove a prefix of s, return nothing if it doesn' t match. McartesianProduct [[1,2,3], [4,5],[6]] -> [[1,4,6],[1,5,6],[2,4,6],[2,5,6],[3,4,6],[3,5,6]] NFIXME: implement for a string O.Like maybe, but with empty vs. non-empty list PCSort a list using the compare function on the list elements mapped  over f. This is like $sortBy ( a b -> compare (f a) (f b)) ; except that f is applied O(n) times instead of O(n log n) Q Monadic version of sortByMapped RST IJKLMNOPQRST IJKLMNOPQRST IJKLMNOPQRST UVBPad strings so the columns line up. The argument and return value E elements are the rows of a table. Do not pad the rightmost column. W,Group words into lines of length n or less. Xdirname Y3Turn a list of (k, a) pairs into a map from k -> [a] . The order of the elements in  the a list is preserved. Z[,Weak attempt at canonicalizing a file path. \@Run md5sum on a file and return the resulting checksum as text. ]6Predicate to decide if two files have the same inode. ^=Predicate to decide if two files have the same md5 checksum. _#Backwards compatibility functions. `ac5A version of read with a more helpful error message. d7Given a tarball, return the name of the top directory. eUVWXYZ[\]^_`abcdeVWUX[YZc\]^d_`aebUVWXYZ[\]^_`acde fghijkefghijkifhgjkefhgghijklBReturn the list of subdirectories, omitting . and .. and ignoring  symbolic links. mAAtomically install a list of files. Returns a list of what went E wrong on failure. Will throw an error if it fails and is unable to 6 restore the original files to their original states. n Change a file'!s name only if the new name doesn' t exist. o Change a file'6s name, removing any existing file with the new name.  Change a file's name if it exists. pDelete a file if it exists :Create or update gzipped and bzip2-ed versions of a file. q9like removeLink, but does not fail if link did not exist rCWrite out three versions of a file, regular, gzipped, and bzip2ed. sCWrite out three versions of a file, regular, gzipped, and bzip2ed. H This new version assumes the files are written to temporary locations, , so any existing file there can be removed. tu2Like writeFile, but if the file already exists don' t touch it. " Example: writeFileIfMissing True "/var/lib/dpkg/status" "" v>Write a file if its content is different from the given text. wAdd-on for System.Posix.Files xylmnopqrstuvwxylonpmrstuvwxqylmnopqrstuvwxyz.render a Doc using the current terminal width zzz{6exitFailure with nicely formatted help text on stderr >generate help text, the argument is the result of getProgName =no value is returned, this function always calls exitFailure {{{|}~/Turn a list of eithers into an either of lists *Return a pair of the lefts and the rights |}~|}~|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~   Extra-1.33Test.QuickCheck.Properties Test.QUnit Extra.URI Extra.CIO Extra.TIO Extra.Time Extra.SSH Extra.Net Extra.LockExtra.Terminal Extra.List Extra.Misc Extra.GPGSign Extra.FilesExtra.HughesPJ Extra.Exit Extra.Either Extra.BoolExtra.IOisIdempotentBy isIdempotenttestQuickCheckrelURI setURIPort parseURIQuerymodifyURIQuery setURIQuerysetURIQueryAttrdeleteURIQueryAttrTStyleprefix verbosityhPrefixCIOhPutStrhBOLevsetStyletryCIOdefStyle withStyle setVerbosity addVerbosity setPrefix addPrefix appPrefix hGetPrefix setPrefixes addPrefixes appPrefixesputStrePutStrvEPutStrvPutStrhPutCharputCharePutChar vHPutCharvPutChar vEPutChar hPutStrBlputStrBl ePutStrBl vHPutStrBl vPutStrBl vEPutStrBl hPutStrLnputStrLn ePutStrLn vHPutStrLn vPutStrLn vEPutStrLnboleBOLvHBOLvBOLvEBOLTIOrunTIOtryTIOformatDebianDatemyTimeDiffToString sshExport sshVerifysshCopywebServerDirectoryContentswithLock awaitLockc_get_window_size getWinSizegetWidth conspersesurround changePrefix dropPrefixcartesianProductwordsByempty sortByMapped sortByMappedM partitionMlistIntersection isSublistOfmapSndcolumnsjustify parentPathlistMaplistDiffcanonmd5sum sameInode sameMd5sum processOutputprocessOutput2 splitOutputread'checkSuperUsertarDircdPGPKeyDefaultKeysign pgpSignFiles pgpSignFilegetSubDirectories installFiles renameMissing renameAlways deleteMaybeforceRemoveLinkwriteAndZipFileWithBackupwriteAndZipFile backupFilewriteFileIfMissingmaybeWriteFilecreateSymbolicLinkIfMissingprepareSymbolicLink replaceFile renderWidth exitWithHelpleftsrights concatEitherspartitionEitherscondQuickCheck-1.2.0.0Test.QuickCheckConfig defaultConfigtests$fTestablePropertyghc-primGHC.BoolBoolformatURIQuery $fReadURInetwork-2.2.1.7 Network.URIfragmentquerypath authorityscheme unreservedreserved escapeStringparseabsoluteURInormalizePathSegmentsnormalizeEscape normalizeCase relativeFrom relativeTononStrictRelativeTounEscapeStringescapeURIString escapeURICharisUnescapedInURIisAllowedInURI uriToString isUnreserved isReserved isIPv4address isIPv6address isAbsoluteURIisRelativeReferenceisURIReferenceisURIparseAbsoluteURIparseRelativeReferenceparseURIReferenceparseURInullURI uriFragmenturiQueryuriPath uriAuthority uriSchemeURIuriPort uriRegName uriUserInfoURIAuth hSetPrefix hAddPrefix hAppPrefixvIOvHPutStrTIOTPositionEOLMOLBOLTStatecursorliftTIO initState_test $fCIORWST$fCIOIOgeneratePublicKey testAccess openAccessgetDest processIDPGPKey'' renameMaybezipFile restoreBackuptriesisRightisLeft rightOnlyeitherFromList