packages feed

git-annex 5.20151102 → 5.20151102.1

raw patch · 290 files changed

+46/−22183 lines, 290 filessetup-changed

Files

Build/DesktopFile.hs view
@@ -79,3 +79,9 @@ 			createDirectoryIfMissing True (parentDir programfile) 			writeFile programfile command 		)++installUser :: FilePath -> IO ()+installUser command = ifM systemwideInstall+	( return ()+	, install command+	)
CHANGELOG view
@@ -1,3 +1,13 @@+git-annex (5.20151102.1) unstable; urgency=medium++  * Avoid installing desktop file and program file if cabal install+    git-annex is run as root, since that is not a systemwide install,+    but to /root, and so generating a systemwide desktop file is not right.+  * When cabal install is run with the desktop file location not writable,+    display a warning, but continue successfully.++ -- Joey Hess <id@joeyh.name>  Tue, 03 Nov 2015 12:08:38 -0400+ git-annex (5.20151102) unstable; urgency=medium    * Use statvfs on OSX.
Setup.hs view
@@ -14,6 +14,7 @@ import Control.Monad import System.Directory import Data.List+import Control.Exception  import qualified Build.DesktopFile as DesktopFile import qualified Build.Configure as Configure@@ -64,7 +65,10 @@ installDesktopFile :: CopyDest -> Verbosity -> PackageDescription -> LocalBuildInfo -> IO () installDesktopFile copyDest _verbosity pkg lbi 	| progfile copyDest == progfile NoCopyDest =-		DesktopFile.install (progfile copyDest)+		DesktopFile.installUser (progfile copyDest)+			`catch` installerror 	| otherwise = return ()   where 	progfile cd = bindir (absoluteInstallDirs pkg lbi cd) </> "git-annex"+	installerror :: SomeException -> IO ()+	installerror e = putStrLn ("Warning: Installation of desktop integration files did not succeed (" ++ show e ++ "); skipping.")
debian/changelog view
@@ -1,3 +1,13 @@+git-annex (5.20151102.1) unstable; urgency=medium++  * Avoid installing desktop file and program file if cabal install+    git-annex is run as root, since that is not a systemwide install,+    but to /root, and so generating a systemwide desktop file is not right.+  * When cabal install is run with the desktop file location not writable,+    display a warning, but continue successfully.++ -- Joey Hess <id@joeyh.name>  Tue, 03 Nov 2015 12:08:38 -0400+ git-annex (5.20151102) unstable; urgency=medium    * Use statvfs on OSX.
− doc/Android/oldcomments/comment_10_20e3d513b8b97496d76aca4619026cd6._comment
@@ -1,16 +0,0 @@-[[!comment format=mdwn- username="http://yarikoptic.myopenid.com/"- nickname="site-myopenid"- subject="comment 10"- date="2013-05-24T03:11:50Z"- content="""->you said before the error was \"Read-only file system\". Now you're saying it's \"Cross-device link\". I'm slightly confused.--;-)  Sorry for confusion, here are the details:--\"Read-only file system\" -- that error appeared when I started \"stock git annex\", i.e. from running /data/data/ga.androidterm/lib/lib.start.so .-Since you have suggested that it might be coming from hard linking command, I have ran that one manually, and that is when I got \"Cross-device link\" error, which suggests that hard linking is not the one at fault here.--I will try fresh build now-Cheers,-"""]]
− doc/Android/oldcomments/comment_11_c96b8f1cc1583a74eb2483f48357f023._comment
@@ -1,15 +0,0 @@-[[!comment format=mdwn- username="http://yarikoptic.myopenid.com/"- nickname="site-myopenid"- subject="fresh build"- date="2013-05-24T03:21:29Z"- content="""-With fresh build got:--u0_a39@android:/ $ git annex webapp-/system/bin/sh: git: not found--the PATH is /sbin:/system/bin:/system/xbin--where should git (and ga) reside now ? (/data somehow is not accessible now to u0_a39)-"""]]
− doc/Android/oldcomments/comment_12_6551f5fa081494b079c10a33c9b0d8ad._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 12"- date="2013-05-24T03:26:33Z"- content="""-You should be able to run /data/data/ga.androidterm/runshell even if you cannot ls /data. This adds /data/data/ga.androidterm/bin to PATH--However, the shell that the app starts is started by runshell anyway, so I don't understand how this could happen.-"""]]
− doc/Android/oldcomments/comment_13_7c633d245651ec08f63194fe1fc194ae._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkwjBDXkP9HAQKhjTgThGOxUa1B99y_WRA"- nickname="Franck"- subject="Still problems with my old N1/CM7"- date="2013-05-24T06:01:18Z"- content="""-Hi, thank you for addressing this issue! I installed the new release but now it fails in another way: the message is just \"In mgmain NJI_OnLoad\" then the terminal says that the session is closed.-"""]]
− doc/Android/oldcomments/comment_14_60c2403140085f9caf48a33b59a36ab4._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://yarikoptic.myopenid.com/"- nickname="site-myopenid"- subject="It starts after uninstall/install"- date="2013-05-24T23:29:52Z"- content="""-Hi Joey -- there is success here... previous installation was \"updated\" by installing the new package without uninstalling previous one, and that apparently didn't work correctly (I didn't even have bin/ directory you mentioned).  So I have removed previous installation and reinstalled it again -- it starts now!  Thanks ;)-"""]]
− doc/Android/oldcomments/comment_15_77bafc01b47d4cf8f96bde2b6704ed71._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://yarikoptic.myopenid.com/"- nickname="site-myopenid"- subject="asking for ssh password in the terminal (not in web ui)"- date="2013-05-24T23:49:40Z"- content="""-not sure if that is a known issue:  whenever \"remote server\" is added, password needs to be typed back in the original terminal... is a bit challenging to do on android and not straightforward user-wise  -"""]]
− doc/Android/oldcomments/comment_16_9af73451be09f03cfff81fdf9481ffc4._comment
@@ -1,27 +0,0 @@-[[!comment format=mdwn- username="http://yarikoptic.myopenid.com/"- nickname="site-myopenid"- subject="Few other issues"- date="2013-05-25T15:35:46Z"- content="""-Hi again.--talking about 4.20130523-gcfe07a2 version:--- because working in the terminal to interact with git-annex probably should not be a common case on Android, may be it is worth making default type of new added repository to become a full backup?  I have initiated a new one, attached a remote one, it said \"synced\" but all the files were just containing symlinks and were not usable.  I had to switch to \"full backup\" (or whatever that name) to finally get directory synced--- log file might grow too large simply because of containing numerous entries for attempting connect remote repository while offline, e.g.--Please make sure you have the correct access rights-and the repository exists.-ssh: Could not resolve hostname onerussian.com: No address associated with hostname-fatal: Could not read from remote repository.--IMHO those should not be there at all, e.g. if it is known that ATM there is no network connectivity--- In addition to two existing repositories (1 local /sdcard/annex, which is also avail at/storage/sdcard0/annex + 1 remote) I have added one more local (and said to keep it in sync with original local).  But it didn't work -- it \"Synced with onerussian.com_annex but not with Annex\" and claimed that the /external/extSdCard/Annex doesn't exist, although it is there (and with .git generated etc).  When I restarted the deamon I got into a \"new\" Repository: /storage/extSdCard/Annex which also listed the 1st local but with \"Failed to sync with localhost\" message -- no remote one listed.  Whenever I try to \"Switch repository\" to /sdcard/annex (the original local) -- it starts loading a new page but gets stuck right there.  The only way to revive webui is to go back to Dashboard.  Log there says (retyping from the screen so typos might be there):--error: cannot run git-receive-pack '/storage/sdcard0/annex': No such file or directory-fatal: unable to fork--"""]]
− doc/Android/oldcomments/comment_17_f76561a654b534df3a807b1c045710b2._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://yarikoptic.myopenid.com/"- nickname="site-myopenid"- subject="comment 17"- date="2013-05-29T02:43:29Z"- content="""-joey -- any additional information could I provide to troubleshoot the issue?  original repository seems to sync ok, but I can't \"administer\" it if I can't even switch to it...-"""]]
− doc/Android/oldcomments/comment_18_1b46cdf154ddadfe17e4b6e4054dc619._comment
@@ -1,17 +0,0 @@-[[!comment format=mdwn- username="http://aap.liquidid.net/"- nickname="AAP"- subject="comment 18"- date="2013-05-30T11:23:58Z"- content="""-I too get the 'link busybox: Read-only file system' message. Here is my phone info: --Phone: Samsung Galaxy Y GT-S5360 (rooted)   -Android: 2.3.6 Gingerbread   -BusyBox path: /system/xbin/ ---Androids own terminal seems not to understand the d argument (-ld: No such file or directory) but over ssh 'ls -ld /data/data/ga.androidterm' returns-     -         drwxr-x--x    1 app_97   app_97           0 May 30 12:57 /data/data/ga.androidterm/-"""]]
− doc/Android/oldcomments/comment_1_cc9caa5dd22dd67e5c1d22d697096dd2._comment
@@ -1,15 +0,0 @@-[[!comment format=mdwn- username="http://yarikoptic.myopenid.com/"- nickname="site-myopenid"- subject="Does it require the device to be rooted?"- date="2013-05-16T20:55:45Z"- content="""-Following your news on kickstarter downloaded the .apk, and installed it.  Upn start I just got a terminal window with--  link busybox: Read-only file system--  [Terminal session finished]--That is on Galaxy Note--"""]]
− doc/Android/oldcomments/comment_21_5903f6a4a81a6534fa8cfafb3b6c37bb._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://afoolishmanifesto.com/"- nickname="frioux"- subject="SSH Keys - 2"- date="2013-07-17T22:56:37Z"- content="""-@joey should I be using the nightlies to see that?  Under \"Adding a remote server using ssh\" I only see  Host name, user name, directory, and port.  Will it only be an option after I type in a password?-"""]]
− doc/Android/oldcomments/comment_22_36afd354f9669a154d7b6b2c4d43ded9._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.6.48"- subject="comment 22"- date="2013-07-17T23:25:21Z"- content="""-@frioux it will automatically generate a new ssh key and configure the server to use it, once you submit the form and enter the password to let it into the server.-"""]]
− doc/Android/oldcomments/comment_23_de98154792e8611a134429f06d82bcb1._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://afoolishmanifesto.com/"- nickname="frioux"- subject="comment 23"- date="2013-07-18T02:01:28Z"- content="""-@joey: ok, I got it to connect and it indeed sent over a key etc.  For some reason now though git-annex (on android) \"crashes\" shortly after starting.  To be clear, the web app says that the program crashed, the console is still there.  I suspect that it may have something to do with my largish remote repo and the time required to sync just the metadata, but I can't tell.  Any ideas what I should do next?  (Note that I *did* change it to manual mode because my phone doesn't have 30G of storage :)-"""]]
− doc/Android/oldcomments/comment_24_7ab509c25243009bfbffd796ec64e77b._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://afoolishmanifesto.com/"- nickname="frioux"- subject="comment 24"- date="2013-07-18T11:35:06Z"- content="""-ok, it eventually got the details from the remote server, but now I'm getting some other oddities.  here is some of my log that shows what I am running into--Watcher crashed: addWatch: does not exist (No such file or directory) [2013-07-18 06:22:46 CDT] Watcher: warning Watcher crashed: addWatch: does not exist (No such file or directory) (scanning...) [2013-07-18 06:23:19 CDT] Watcher: Performing startup scan Watcher crashed: addWatch: does not exist (No such file or directory) [2013-07-18 06:24:28 CDT] Watcher: warning Watcher crashed: addWatch: does not exist (No such file or directory) (scanning...) [2013-07-18 06:24:31 CDT] Watcher: Performing startup scan Watcher crashed: addWatch: does not exist (No such file or directory) [2013-07-18 06:25:44 CDT] Watcher: warning Watcher crashed: addWatch: does not exist (No such file or directory)-"""]]
− doc/Android/oldcomments/comment_25_026d1a01d5753d71ac3dfc002f2a5eec._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnRfQArYOmDd7r2DC7DkIJFOQgqXCVcAeU"- nickname="Frew"- subject="comment 25"- date="2013-07-18T13:14:46Z"- content="""-frioux here (something messed up with myopenid or something)--So I deleted the repo on my phone (via the CLI since the web app seemed hung) and recreated it; this time making sure that I set things to manual mode ASAP.  It didn't have the problem it was having before, but now what seems to have happened is that it fetches from the remote, commits to the local repo, and then immediately fetches and commits again.  It looks like it's about a 4s repeat loop.  Any ideas what I should do next?-"""]]
− doc/Android/oldcomments/comment_26_f0a044fb649d43e32c96b08edbc336c3._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.0.140"- subject="comment 26"- date="2013-07-18T17:07:27Z"- content="""-@Frew, you should file bug reports when you have a bug.--One problem you mentioned had already had a bug report filed by someone-else:-<http://git-annex.branchable.com/bugs/Watcher_crashed:_addWatch:_does_not_exist/> So you can post your details there.-"""]]
− doc/Android/oldcomments/comment_27_6b9ae35b1ceeba14cd7a74e142870705._comment
@@ -1,34 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"- nickname="Nigel"- subject="Watcher crashed in Android on /storage/sdcard1 - bug?"- date="2013-07-29T11:50:46Z"- content="""-In webapp UI, added on first install, the location for repository: /storage/sdcard1--!warning--Watcher crashed: addWatch:--permission denied (Permission denied)--[Restart Thread]--:Performing startup scan---In terminal Window 1:--nex webapp                                         <--  Detected a crippled filesystem.--  Enabling direct mode.--  Detected a filesystem without fifo support.--  Disabling ssh connection caching.---Android 4.1.1 Huawei Y300 Annex.apk v1.0.52 version 4.20130723-"""]]
− doc/Android/oldcomments/comment_28_c91db1215f529aa68bfb0576c3c5eddc._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="Jonathan"- ip="63.131.117.194"- subject="link busybox: Read-only file system"- date="2013-07-29T20:08:12Z"- content="""-Phone: HTC EVO 3d 4g-Model Number: pg86100-Android Version: 4.0.3-"""]]
− doc/Android/oldcomments/comment_2_c2422b7dd9d526b3616e49f48cf178c2._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 2"- date="2013-05-17T22:28:34Z"- content="""-The Android app works on many non-rooted Android systems.--The \"link busybox: Read-only file system\" means that `/data/data/ga.androidterm/lib/lib.busybox.so` cannot be hard linked to `/data/data/ga.androidterm/busybox`. That's not normal. I'd appreciate if you could provide more information on your Android device, like Android version and model number.-"""]]
− doc/Android/oldcomments/comment_3_0e4980c27b13dbc28477c02a82898248._comment
@@ -1,14 +0,0 @@-[[!comment format=mdwn- username="http://yarikoptic.myopenid.com/"- nickname="site-myopenid"- subject="Follow-up information on my system"- date="2013-05-18T01:23:28Z"- content="""-Sorry for the delay:  my android is stock Samsung-tuned Jelly beans.-Android 4.1.2-Baseband version N7000XXLSO--not sure if that would be of any use :-/  nothing in the logs (aLogcat) if I filter by annex -- should there any debug output? what should be a key to search by?---"""]]
− doc/Android/oldcomments/comment_4_86f7b5444e2eaea7f8f7b9160f671a1d._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnu1NYw8UF-NoDbKu8YKVGxi8FoZLH7JPs"- nickname="Chris"- subject="Not starting browser on Nexus 7, Android 4.2.2"- date="2013-05-19T14:04:28Z"- content="""-I just tried to run this on my Nexus 7 which has Android 4.2.2, and I received the following: <http://hodapple.com/files/Screenshot_2013-05-19-09-49-53.png> <http://hodapple.com/files/git-annex-error.txt>--In spite of that, though, the URL provided still worked.-"""]]
− doc/Android/oldcomments/comment_5_9d78009435736a178d5a3f5a9bc0ed6a._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 5"- date="2013-05-19T19:46:14Z"- content="""-@Chris, that is a known bug: [[bugs/Android_app_permission_denial_on_startup]]-"""]]
− doc/Android/oldcomments/comment_6_7b9523ddb20dc4a929e556c3ed0c7406._comment
@@ -1,18 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 6"- date="2013-05-19T20:06:56Z"- content="""-@yarikoptic, there is a process you can perform that will help me determine what's going on.--You should be able to get the git-annex app to let you into a shell. You can do this by starting the app, and then going into its configuration menu, to Preferences, selecting \"Command Line\", and changing it to run \"/system/bin/sh\"--Then when you open a new window in the git-annex app, you'll be at a shell prompt. From there, you can run:--ls -ld /data/data/ga.androidterm--I'm interested to know a) whether the directory exists and b) what permissions and owner it has. On my tablet, I get back \"drwxr-x--x app_39 app_39\" .. and if I run `id` in the shell, it tells me it's running as `app_39`.--My guess is the directory probably does exist, but cannot be written to by the app. If you're able to verify that, the next step will be to investigate if there is some other directory that the app can write to. It needs to be able to write to someplace that is not on the `/sdcard` to install itself.-"""]]
− doc/Android/oldcomments/comment_7_a56628a622da752806c42c5b8b54ceef._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkwjBDXkP9HAQKhjTgThGOxUa1B99y_WRA"- nickname="Franck"- subject="Link issue"- date="2013-05-22T12:01:38Z"- content="""-Hi, I have exactly the same problem with the link that fails on my phone. However, I checked the permissions and they are as you describe on your tablet (except for the app number). At the same time, everything is fine on my tablet... The phone runs an old Cyanogenmod 7.2.0 (Android 2.3.7) while the tablet is a more recent Asus TF700T (Android 4.1.1). Let me know if you want me to run tests.-"""]]
− doc/Android/oldcomments/comment_8_19656ec99b8f6aa64c1d01a3c9ae9bd0._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://yarikoptic.myopenid.com/"- nickname="site-myopenid"- subject="why ln failed"- date="2013-05-23T13:27:39Z"- content="""-Finally got to check it out:  so indeed hardlinking fails but not because of permissions but \"link failed Cross-device link\"  that lib is -> /mnt/asec/ga.androidterm-1/lib  which resides on a different partition (vfat, /dev/block/dm-2, ro) from /data (ext4, /dev/block/mmcblk0p10)-"""]]
− doc/Android/oldcomments/comment_9_55e703ae105d0c0ee9ac50df8cc59dfb._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 9"- date="2013-05-23T18:44:46Z"- content="""-@yarikoptic you said before the error was \"Read-only file system\". Now you're saying it's \"Cross-device link\". I'm slightly confused.--I've reworked the android app to not need any hard links. Try the current autobuild: <http://downloads.kitenet.net/git-annex/autobuild/android/git-annex.apk>-"""]]
− doc/bugs/Assistant_drops_files_from_remote_repos_that_it_shouldn__39__t.mdwn
@@ -1,39 +0,0 @@-### Please describe the problem.--git-annex assistant starts to drop files in remote repos, even when they are set to manual.--### What steps will reproduce the problem?---Create 3 repos:--* A -- standard, archive-* m1 -- standard, manual-* m2 -- standard, manual--System has 3 files annexed: file1, file2, file3. Repo "A" has all three files, m1 has none, m2 has file3.--So, while in m1:--    m1 $ git annex find --want-drop --in m2-    file3--file3 shouln't be dropped from m2. There is no reason to do this. m2 is set as manual, and it shouldn't be touched in any case.--Now, let's get this file in m1:--    m1 $ git annex get file3-    get file3 (from m2...) ok-    (Recording state in git...)-    m1 $ git annex find --want-drop --in m2--So when 'file3' is present in local repo, it's not going to be dropped from m2.--I guess that rule 'present' works in local repo context while 'drop' acts on remote files.---### What version of git-annex are you using? On what operating system?--I'm using latest version in Debian Jessie (5.20141024) on amd64 and armhf. I've also reproduced the bug with manually compiled 5.20141105-g8d8b248 on amd64.--[[!tag moreinfo]]
− doc/bugs/Assistant_from_standalone_5.20131230_64bit_crashes_on_startup.mdwn
@@ -1,31 +0,0 @@-The assistant from the standalone 64bit build crashes upon startup.--### Version information--     [0 zerodogg@firefly annexed]$ git annex version-     git-annex version: 5.20131230-g4aa88d8-     build flags: Assistant Webapp Pairing S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA-     key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL-     remote types: git gcrypt S3 bup directory rsync web webdav glacier hook external-     local repository version: 5-     supported repository version: 5-     upgrade supported from repository versions: 0 1 2 4-     [0 zerodogg@firefly annexed]$ uname -a-     Linux firefly 3.12.5-302.fc20.x86_64 #1 SMP Tue Dec 17 20:42:32 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux-     [0 zerodogg@firefly annexed]$ cat /etc/fedora-release -     Fedora release 20 (Heisenbug)-     [0 zerodogg@firefly annexed]$ --### Error--     [0 zerodogg@firefly annexed]$ git annex webapp-     Launching web browser on file:///home/zerodogg/Documents/annexed/.git/annex/webapp.html-     -     (process:6045): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed-     libgcc_s.so.1 must be installed for pthread_cancel to work-     error: git-annex died of signal 6-     [134 zerodogg@firefly annexed]$ ls -l /usr/lib64/libgcc_s.so.1-     lrwxrwxrwx. 1 root root 28 2013-12-18 10:54 /usr/lib64/libgcc_s.so.1 -> libgcc_s-4.8.2-20131212.so.1-     [0 zerodogg@firefly annexed]$ --> [[fixed|done]] --[[Joey]]
− doc/bugs/Error_writing_log_message_when_filename_contains_Unicode_chars.mdwn
@@ -1,25 +0,0 @@-### Please describe the problem.-I’ve noticed that daemon.log will sometimes contain error messages arising from logging a file name during transfer. Additionally, I’ve occasionally noticed that certain files get «stuck» after being added to the objects store, i. e., they will never be committed by the assistant and have to be staged manually; it appears there is a correlation between files where the logger errors out and files getting stuck.--I can reproduce this using the en-dash (U+2013).--### What steps will reproduce the problem?-1. Create a file named «Behold – the majestic en-dash» in a repository where the assistant is running.-2. Observe file has not been added by the assistant and daemon.log contains no message pertaining to new file.-3. Restart assistant.-4. Observe in daemon.log that the logger has errored out with «hPutChar: invalid argument» and gives the Unicode replacement character thrice for each en-dash.-5. Observe that file is added to object store, but the symlink is not staged or committed by the assistant.--### What version of git-annex are you using? On what operating system?-git-annex 5.20150731-Linux 4.0.9--### Please provide any additional information below.-[[!format sh """-# After restarting the assistant.-[2015-07-28 14:24:58 CEST] Committer: Adding 978Error writing log message: <stderr>: hPutChar: invalid argument (invalid character) (original message: [2015-07-28 14:24:58 CEST] Committer: Adding 978\65533\65533\655330\65533\65533..1\65533\65533\655330.pdf)-[2015-07-28 14:24:59 CEST] Transferrer: Uploaded 978Error writing log message: <stderr>: hPutChar: invalid argument (invalid character) (original message: [2015-07-28 14:24:59 CEST] Transferrer: Uploaded 978\65533\65533\655330\65533\65533..1\65533\65533\655330.pdf)-"""]]--> Closing this because the main bug is fixed in hinotify git and will-> percolate to the git-annex builds eventually. [[done]] --[[Joey]]
− doc/bugs/Huge_annex_out_of_memory_on_switch_to_indirect_mode_and_status.mdwn
@@ -1,69 +0,0 @@-### Please describe the problem.--[[!tag moreinfo]]--I added a lot of files to my annex in direct mode. Now I want to switch to indirect mode. git-annex status and indirect create an out-of-memory error.--### What steps will reproduce the problem?--I am not really sure, I added a lot of files to the annex, almost 3TB.-Then either git-annex status or git-annex indirect cause a similar error (see below).---### What version of git-annex are you using? On what operating system?--git-annex version: 4.20130501-g4a5bfb3-local repository version: 4-default repository version: 3-supported repository versions: 3 4-upgrade supported from repository versions: 0 1 2-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP--Ubuntu precise-3.2.0-26-generic---### Please provide any additional information below.--[[!format sh """-# If you can, paste a complete transcript of the problem occurring here.-# If the problem is with the git-annex assistant, paste in .git/annex/debug.log-git-annex status-supported backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL-supported remote types: git S3 bup directory rsync web webdav glacier hook-repository mode: direct-trusted repositories: 0-semitrusted repositories: 7-	00000000-0000-0000-0000-000000000001 -- web- 	0b8e6666-80d5-11e2-adf3-6f4d3d6ef0aa -- marek@x4:~/tmp/annex- 	65c057c6-6027-11e2-84b0-b77d71696e49 -- here (.)- 	96b31c5e-6524-11e2-b136-fbd1a03b2799 -- BackupOnGlacier- 	b509c388-629a-11e2-be5f-d376e201ad86 -- marek@x201:~/AllData- 	c636e33c-6e31-11e2-a9c4-a3c5546d69d9 -- desktop- 	fbaa1c3a-60d7-11e2-842f-9348368d2f4c -- .-untrusted repositories: 0-dead repositories: 0-transfers in progress: none-available local disk space: 81 gigabytes (+1 megabyte reserved)-temporary directory size: 9 megabytes (clean up with git-annex unused)-local annex keys: 61396-local annex size: 3 terabytes-known annex keys: git-annex: out of memory (requested 985661440 bytes)--OR--git-annex indirect-commit  git-annex: out of memory (requested 985661440 bytes)------# End of transcript or log.-"""]]--> [[fixed|done]]. However, if you saw this behavior,-> you have large files checked directly into git. You may-> want to examine your repository and use git filter-branch to clean-> it up.-> --[[Joey]] 
− doc/bugs/Is_there_any_way_to_rate_limit_uploads_to_an_S3_backend__63__.mdwn
@@ -1,20 +0,0 @@-What steps will reproduce the problem?--Adding files to a local annex set up to sync to a remote S3 one---What is the expected output? What do you see instead?--It syncs, but maxes out the uplink---What version of git-annex are you using? On what operating system?--3.20121112 on Debian testing---Please provide any additional information below.--The man page lists how to configure rate limiting for rsync, not sure how to do it for this--[[!tag confirmed]]
− doc/bugs/Mac_OS_10.9_GPG_erro_when_creating_USB_repo___40__solved__41__.mdwn
@@ -1,23 +0,0 @@-### Please describe the problem.--Creating a USB repo fails with a GPG error.--### What steps will reproduce the problem?--  * Build git-annex and git-annex assistant using the instructions at https://gist.github.com/calmyournerves/7144127-  * Run git-annex app to launch web interface-  * Create local repo using web interface-  * Try to create USB repo using web interface--### What version of git-annex are you using? On what operating system?--git-annex version 4.20131105-g136b030 on Mac OS 10.9 Mavericks.--### Please provide any additional information below.--[[!format sh """-07/Nov/2013:06:51:07 +1100 [Error#yesod-core] user error (gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--with-colons","--list-secret-keys","--fixed-list-mode"] exited 5) @(yesod-core-1.2.4.5:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-"""]]--> [[fixed|done]]; it seems that this was a local build issue ad does not-> affect the autobuild. --[[Joey]]
− doc/bugs/S3_memory_leaks/comment_1_a7268213b090bce6b1f1858a8e23d90e._comment
@@ -1,14 +0,0 @@-[[!comment format=mdwn- username="http://schnouki.net/"- nickname="Schnouki"- subject="comment 1"- date="2013-10-18T08:36:45Z"- content="""-Hi Joey,--It looks like your patch hasn't been merged yet. And this bug is quite annoying for me (can't backup files bigger than 1.5 GB from my NAS).--Would it be possible to include this fix in your standalone builds and Debian packages?--Thanks!-"""]]
− doc/bugs/S3_memory_leaks/comment_2_320a8e3bb7b207d1aff8926b9247f5ba._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://schnouki.net/"- nickname="Schnouki"- subject="comment 2"- date="2014-01-29T01:19:27Z"- content="""-Any news about this?-"""]]
− doc/bugs/S3_memory_leaks/comment_3_5e9cecb0e2ec7602963406779b6e3c1f._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.112"- subject="comment 3"- date="2014-08-02T23:08:44Z"- content="""-hS3's author seems to have abandoned it and it has other problems. I should try to switch to a different S3 library.--There is now a workaround; S3 special remotes can be configured to use [[chunking]]. A max of one chunk will then be buffered in memory at a time. --For example, to reconfigure an existing mys3 remote: `enableremote mys3 chunk=1MiB`-"""]]
− doc/bugs/S3_memory_leaks/comment_4_37e41b518813bd7c349017abf4a0ca0f._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.112"- subject="comment 4"- date="2014-08-03T18:40:26Z"- content="""-Beginning work on a `s3-aws` branch using the aws library instead of hS3.-"""]]
− doc/bugs/S3_memory_leaks/comment_5_1b6d13852aeb37c5c29baf100bd62789._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmUJBh1lYmvfCCiGr3yrdx-QhuLCSRnU5c"- nickname="Justin"- subject="comment 5"- date="2014-11-30T22:18:56Z"- content="""-This is getting in my way, but I'm concerned about using a mostly-untested branch (and also, compiling for ARM sounds really unpleasant).  Can you elaborate on the risks here?  Can I perhaps donate developer time to get this merged into mainline?-"""]]
− doc/bugs/S3_memory_leaks/comment_6_71ffb88f548969fd4d45eac4656380c0._comment
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 6"""- date="2014-12-02T17:10:42Z"- content="""-The s3-aws branch is well tested now.--I am blocked from merging it by some dependency issues, in particular -<http://hackage.haskell.org/package/dbus> needs to have a small dependency-fix. I have emailed its author a second time now to try to get that done.-"""]]
− doc/bugs/S3_memory_leaks/comment_7_1ac572b79caa23e3f791e4f8461fcddd._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmUJBh1lYmvfCCiGr3yrdx-QhuLCSRnU5c"- nickname="Justin"- subject="comment 7"- date="2014-12-06T18:15:50Z"- content="""-The new version works really great for me.  I've been copying to S3 over the past few days with no issues on my raspberry pi.--Thanks a ton for getting this out.-"""]]
− doc/bugs/Support_non-default_storage_classes_with_Google_Cloud_Storage.mdwn
@@ -1,94 +0,0 @@-### Please describe the problem.--The S3 remote does not support Google Cloud Storage buckets with the-Durable Reduced Availability or Nearline storage classes.  These are-less-expensive alternatives to the Standard storage class, which would-otherwise be a good fit for git-annex.--### What steps will reproduce the problem?--1. `git annex initremote cloud type=S3 encryption=none host=storage.googleapis.com bucket=storage-class-test storageclass=NEARLINE`-2. Observe that the bucket is created with Standard storage class.--or,--1. Use Cloud Storage web interface to create the `storage-class-test` bucket with Nearline storage class.-2. `git annex -d initremote cloud type=S3 encryption=none host=storage.googleapis.com bucket=storage-class-test storageclass=NEARLINE`-2. Observe failure shown below.--### What version of git-annex are you using? On what operating system?--5.20150528, Fedora 22--### Please provide any additional information below.--Google Cloud Storage applies the storage class per-bucket rather than per-object.  As a result there are two separate problems:--1. If git-annex creates the bucket, there is no way to get it to pass the `StorageClass` XML element in the PUT Bucket operation (see e.g. [here](https://cloud.google.com/storage/docs/nearline#create), the "XML API" tab).-2. If the bucket is manually created by the user, subsequent PUT Object operations explicitly pass an `x-amz-storage-class` of `STANDARD` (or `REDUCED_REDUNDANCY`).  Since this is incompatible with the storage class of the bucket, Google Cloud Storage returns `InvalidArgument`.--Example of the second problem:--[[!format sh """-$ git annex -d initremote cloud type=S3 encryption=none host=storage.googleapis.com bucket=storage-class-test storageclass=NEARLINE -[2015-05-31 17:38:21 EDT] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","git-annex"]-[2015-05-31 17:38:21 EDT] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]-[2015-05-31 17:38:21 EDT] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..417a5e8880eb22fa5288056f4f4e5d998e64a3e6","-n1","--pretty=%H"]-[2015-05-31 17:38:21 EDT] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch"]-initremote cloud (checking bucket...) [2015-05-31 17:38:21 EDT] String to sign: "GET\n\n\nSun, 31 May 2015 21:38:21 GMT\n/storage-class-test/annex-uuid"-[2015-05-31 17:38:21 EDT] Host: "storage-class-test.storage.googleapis.com"-[2015-05-31 17:38:21 EDT] Path: "/annex-uuid"-[2015-05-31 17:38:21 EDT] Query string: ""-[2015-05-31 17:38:21 EDT] Response status: Status {statusCode = 404, statusMessage = "Not Found"}-[2015-05-31 17:38:21 EDT] Response header 'Content-Type': 'application/xml; charset=UTF-8'-[2015-05-31 17:38:21 EDT] Response header 'Content-Length': '127'-[2015-05-31 17:38:21 EDT] Response header 'Date': 'Sun, 31 May 2015 21:38:21 GMT'-[2015-05-31 17:38:21 EDT] Response header 'Expires': 'Sun, 31 May 2015 21:38:21 GMT'-[2015-05-31 17:38:21 EDT] Response header 'Cache-Control': 'private, max-age=0'-[2015-05-31 17:38:21 EDT] Response header 'Server': 'UploadServer ("Built on May 21 2015 09:31:47 (1432225907)")'-[2015-05-31 17:38:21 EDT] Response header 'Alternate-Protocol': '80:quic,p=0'-[2015-05-31 17:38:21 EDT] Response metadata: S3: request ID=<none>, x-amz-id-2=<none>-[2015-05-31 17:38:21 EDT] String to sign: "GET\n\n\nSun, 31 May 2015 21:38:21 GMT\n/storage-class-test/"-[2015-05-31 17:38:21 EDT] Host: "storage-class-test.storage.googleapis.com"-[2015-05-31 17:38:21 EDT] Path: "/"-[2015-05-31 17:38:21 EDT] Query string: ""-[2015-05-31 17:38:22 EDT] Response status: Status {statusCode = 200, statusMessage = "OK"}-[2015-05-31 17:38:22 EDT] Response header 'x-goog-metageneration': '1'-[2015-05-31 17:38:22 EDT] Response header 'Content-Type': 'application/xml; charset=UTF-8'-[2015-05-31 17:38:22 EDT] Response header 'Content-Length': '219'-[2015-05-31 17:38:22 EDT] Response header 'Date': 'Sun, 31 May 2015 21:38:21 GMT'-[2015-05-31 17:38:22 EDT] Response header 'Expires': 'Sun, 31 May 2015 21:38:21 GMT'-[2015-05-31 17:38:22 EDT] Response header 'Cache-Control': 'private, max-age=0'-[2015-05-31 17:38:22 EDT] Response header 'Server': 'UploadServer ("Built on May 21 2015 09:31:47 (1432225907)")'-[2015-05-31 17:38:22 EDT] Response header 'Alternate-Protocol': '80:quic,p=0'-[2015-05-31 17:38:22 EDT] Response metadata: S3: request ID=<none>, x-amz-id-2=<none>-[2015-05-31 17:38:22 EDT] String to sign: "GET\n\n\nSun, 31 May 2015 21:38:22 GMT\n/storage-class-test/annex-uuid"-[2015-05-31 17:38:22 EDT] Host: "storage-class-test.storage.googleapis.com"-[2015-05-31 17:38:22 EDT] Path: "/annex-uuid"-[2015-05-31 17:38:22 EDT] Query string: ""-[2015-05-31 17:38:22 EDT] Response status: Status {statusCode = 404, statusMessage = "Not Found"}-[2015-05-31 17:38:22 EDT] Response header 'Content-Type': 'application/xml; charset=UTF-8'-[2015-05-31 17:38:22 EDT] Response header 'Content-Length': '127'-[2015-05-31 17:38:22 EDT] Response header 'Date': 'Sun, 31 May 2015 21:38:22 GMT'-[2015-05-31 17:38:22 EDT] Response header 'Expires': 'Sun, 31 May 2015 21:38:22 GMT'-[2015-05-31 17:38:22 EDT] Response header 'Cache-Control': 'private, max-age=0'-[2015-05-31 17:38:22 EDT] Response header 'Server': 'UploadServer ("Built on May 21 2015 09:31:47 (1432225907)")'-[2015-05-31 17:38:22 EDT] Response header 'Alternate-Protocol': '80:quic,p=0'-[2015-05-31 17:38:22 EDT] Response metadata: S3: request ID=<none>, x-amz-id-2=<none>-[2015-05-31 17:38:22 EDT] String to sign: "PUT\n\n\nSun, 31 May 2015 21:38:22 GMT\nx-amz-storage-class:STANDARD\n/storage-class-test/annex-uuid"-[2015-05-31 17:38:22 EDT] Host: "storage-class-test.storage.googleapis.com"-[2015-05-31 17:38:22 EDT] Path: "/annex-uuid"-[2015-05-31 17:38:22 EDT] Query string: ""-[2015-05-31 17:38:22 EDT] Body: "6eb85d96-8f9b-456a-819c-1724d12d2ffd"-[2015-05-31 17:38:22 EDT] Response status: Status {statusCode = 400, statusMessage = "Bad Request"}-[2015-05-31 17:38:22 EDT] Response header 'Content-Type': 'application/xml; charset=UTF-8'-[2015-05-31 17:38:22 EDT] Response header 'Content-Length': '117'-[2015-05-31 17:38:22 EDT] Response header 'Vary': 'Origin'-[2015-05-31 17:38:22 EDT] Response header 'Date': 'Sun, 31 May 2015 21:38:22 GMT'-[2015-05-31 17:38:22 EDT] Response header 'Server': 'UploadServer ("Built on May 21 2015 09:31:47 (1432225907)")'-[2015-05-31 17:38:22 EDT] Response header 'Alternate-Protocol': '80:quic,p=0'-[2015-05-31 17:38:22 EDT] Response metadata: S3: request ID=<none>, x-amz-id-2=<none>-git-annex: S3Error {s3StatusCode = Status {statusCode = 400, statusMessage = "Bad Request"}, s3ErrorCode = "InvalidArgument", s3ErrorMessage = "Invalid argument.", s3ErrorResource = Nothing, s3ErrorHostId = Nothing, s3ErrorAccessKeyId = Nothing, s3ErrorStringToSign = Nothing}-"""]]--> [[done]], see comments --[[Joey]] 
− doc/bugs/__34__old__34___and___34__new__34___hash_formats_are_mixed_up.mdwn
@@ -1,31 +0,0 @@-~~~~-$ git annex version-git-annex version: 5.20140818-g10bf03a-~~~~--When repository was initially created, it used "old" hashing from http://git-annex.branchable.com/internals/hashing/ . After some operations, annex was upgraded to "new" format. However, symlinks are still in "old" format and dangling. "git annex fsck", "git annex repair", "git annex pre-commit" - none helps.--~~~~-$ ls -l pics-lrwxrwxrwx 1 pfalcon pfalcon 199 Jan 22  2012 IMG_3776.JPG -> ../.git/annex/objects/KM/j6/SHA256E-s688630--5bc2e8beb7a57f6fbcd7d9321cd5283f04448ea475099dac07ae38f002208040.JPG/SHA256E-s688630--5bc2e8beb7a57f6fbcd7d9321cd5283f04448ea475099dac07ae38f002208040.JPG-lrwxrwxrwx 1 pfalcon pfalcon 199 Jan 22  2012 renamed2.jpg -> ../.git/annex/objects/7F/z3/SHA256E-s676047--3cd28892ee54aba13e074f230709b2c3b87915ff36efd9be3ddfc603e92ecdda.JPG/SHA256E-s676047--3cd28892ee54aba13e074f230709b2c3b87915ff36efd9be3ddfc603e92ecdda.JPG-lrwxrwxrwx 1 pfalcon pfalcon 199 Jan 22  2012 renamed.jpg -> ../.git/annex/objects/W1/vK/SHA256E-s585398--005fe0534d6cc17a3536c1817b091d00249834c338f289ec6569e9f262889251.JPG/SHA256E-s585398--005fe0534d6cc17a3536c1817b091d00249834c338f289ec6569e9f262889251.JPG--$ find .git/annex/objects/-.git/annex/objects/-.git/annex/objects/219-.git/annex/objects/219/741-.git/annex/objects/219/741/SHA256E-s585398--005fe0534d6cc17a3536c1817b091d00249834c338f289ec6569e9f262889251.JPG-.git/annex/objects/219/741/SHA256E-s585398--005fe0534d6cc17a3536c1817b091d00249834c338f289ec6569e9f262889251.JPG/SHA256E-s585398--005fe0534d6cc17a3536c1817b091d00249834c338f289ec6569e9f262889251.JPG-.git/annex/objects/7a6-.git/annex/objects/7a6/632-.git/annex/objects/7a6/632/SHA256E-s688630--5bc2e8beb7a57f6fbcd7d9321cd5283f04448ea475099dac07ae38f002208040.JPG-.git/annex/objects/7a6/632/SHA256E-s688630--5bc2e8beb7a57f6fbcd7d9321cd5283f04448ea475099dac07ae38f002208040.JPG/SHA256E-s688630--5bc2e8beb7a57f6fbcd7d9321cd5283f04448ea475099dac07ae38f002208040.JPG-.git/annex/objects/df3-.git/annex/objects/df3/9a8-.git/annex/objects/df3/9a8/SHA256E-s676047--3cd28892ee54aba13e074f230709b2c3b87915ff36efd9be3ddfc603e92ecdda.JPG-.git/annex/objects/df3/9a8/SHA256E-s676047--3cd28892ee54aba13e074f230709b2c3b87915ff36efd9be3ddfc603e92ecdda.JPG/SHA256E-s676047--3cd28892ee54aba13e074f230709b2c3b87915ff36efd9be3ddfc603e92ecdda.JPG-~~~~--> Unforunately, I cannot see through the attitude problem to a clear bug-> report. Lacking time/energy to try to coax one out. [[done]] --[[Joey]] 
− doc/bugs/__39__git_annex_get__39___returns_success_when_file_not_found.mdwn
@@ -1,30 +0,0 @@-### Please describe the problem.-When attempting to 'git annex get' a file that does not exist in the git repository, git-annex correctly reports "not found".  But it still returns exit code 0, incorrectly indicating success.  This is problematic for scripting.--### What steps will reproduce the problem?-See transcript--### What version of git-annex are you using? On what operating system?-git-annex 5.20140517.4 as supplied by 'git-annex' aptitude package on Ubuntu 12.04.4 LTS (32-bit) --### Please provide any additional information below.--[[!format sh """--henry@commsbox:~/work/tmp$ git init test-Initialized empty Git repository in /home/henry/work/tmp/test/.git/-henry@commsbox:~/work/tmp$ cd test-henry@commsbox:~/work/tmp/test$ git annex init-init  ok-(Recording state in git...)-henry@commsbox:~/work/tmp/test$ git annex get nonexistent.file-git-annex: nonexistent.file not found-henry@commsbox:~/work/tmp/test$ echo $?-0---"""]]--> Ok, I can find no reason why it was implemented as a warning in -> 5f3661238de9f31e6fed0be74fca9d5f1659278c in the bug report associated-> with that commit. So, promoted to error. [[done]] --[[Joey]] 
− doc/bugs/__96__minimal_build__39____fails_due_to_missing_stm_dependency.mdwn
@@ -1,95 +0,0 @@-### Please describe the problem.--Building a recent git-annex with cabal with the `minimal build'-options given in the installation instructions fails. It is probably-just a matter of fixing the dependencies in the cabal file.--### What steps will reproduce the problem?-Compile with:--cabal install git-annex-5.20140108 --bindir=$HOME/bin -f"-assistant -webapp -webdav -pairing -xmpp -dns"--### What version of git-annex are you using? On what operating system?-Linux 2.6.32-5-686 i686 GNU/Linux---### Please provide any additional information below.--[[!format sh """-# If you can, paste a complete transcript of the problem occurring here.-# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log-Resolving dependencies...-[ 1 of 27] Compiling Utility.PartialPrelude ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/PartialPrelude.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/PartialPrelude.o )-[ 2 of 27] Compiling Utility.FileSystemEncoding ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/FileSystemEncoding.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/FileSystemEncoding.o )-[ 3 of 27] Compiling Utility.Applicative ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Applicative.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Applicative.o )-[ 4 of 27] Compiling Utility.Data     ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Data.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Data.o )-[ 5 of 27] Compiling Utility.Exception ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Exception.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Exception.o )-[ 6 of 27] Compiling Utility.Tmp      ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Tmp.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Tmp.o )-[ 7 of 27] Compiling Utility.Env      ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Env.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Env.o )-[ 8 of 27] Compiling Utility.UserInfo ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/UserInfo.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/UserInfo.o )-[ 9 of 27] Compiling Utility.OSX      ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/OSX.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/OSX.o )-[10 of 27] Compiling Utility.Monad    ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Monad.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Monad.o )-[11 of 27] Compiling Utility.Misc     ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Misc.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Misc.o )-[12 of 27] Compiling Utility.Process  ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Process.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Process.o )-[13 of 27] Compiling Utility.Path     ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Path.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Path.o )-[14 of 27] Compiling Utility.FreeDesktop ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/FreeDesktop.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/FreeDesktop.o )-[15 of 27] Compiling Assistant.Install.AutoStart ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Assistant/Install/AutoStart.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Assistant/Install/AutoStart.o )-[16 of 27] Compiling Utility.SafeCommand ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/SafeCommand.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/SafeCommand.o )-[17 of 27] Compiling Utility.ExternalSHA ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/ExternalSHA.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/ExternalSHA.o )-[18 of 27] Compiling Utility.Directory ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Utility/Directory.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Utility/Directory.o )-[19 of 27] Compiling Common           ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Common.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Common.o )-[20 of 27] Compiling Git.Version      ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Git/Version.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Git/Version.o )-[21 of 27] Compiling Config.Files     ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Config/Files.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Config/Files.o )-[22 of 27] Compiling Assistant.Install.Menu ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Assistant/Install/Menu.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Assistant/Install/Menu.o )-[23 of 27] Compiling Build.TestConfig ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Build/TestConfig.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Build/TestConfig.o )-[24 of 27] Compiling Build.Version    ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Build/Version.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Build/Version.o )-[25 of 27] Compiling Build.Configure  ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Build/Configure.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Build/Configure.o )-[26 of 27] Compiling Build.DesktopFile ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Build/DesktopFile.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Build/DesktopFile.o )-[27 of 27] Compiling Main             ( /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/Setup.hs, /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/Main.o )-Linking /tmp/git-annex-5.20140108-30015/git-annex-5.20140108/dist/setup/setup ...-  checking version...fatal: Not a git repository (or any of the parent directories): .git- 5.20140107-  checking UPGRADE_LOCATION... not available-  checking git... yes-  checking git version... 1.7.2.5-  checking cp -a... yes-  checking cp -p... yes-  checking cp --reflink=auto... yes-  checking xargs -0... yes-  checking rsync... yes-  checking curl... no-  checking wget... yes-  checking bup... no-  checking quvi... no-  checking newquvi... no-  checking nice... yes-  checking ionice... yes-  checking nocache... no-  checking gpg... gpg-  checking lsof... lsof-  checking git-remote-gcrypt... not available-  checking ssh connection caching... no-  checking sha1... sha1sum-  checking sha256... sha256sum-  checking sha512... sha512sum-  checking sha224... sha224sum-  checking sha384... sha384sum-Configuring git-annex-5.20140108...-Building git-annex-5.20140108...-Preprocessing executable 'git-annex' for git-annex-5.20140108...--Remote/External.hs:29:8:-    Could not find module `Control.Concurrent.STM'-    It is a member of the hidden package `stm-2.4.2'.-    Perhaps you need to add `stm' to the build-depends in your .cabal file.-    Use -v to see a list of the files searched for.-Failed to install git-annex-5.20140108-cabal: Error: some packages failed to install:-git-annex-5.20140108 failed during the building phase. The exception was:-ExitFailure 1---# End of transcript or log.-"""]]--> [[fixed|done]] --[[Joey]]
− doc/bugs/annex_add_doesn__39__t_any_longer_by_default_commit_git-annex.mdwn
@@ -1,43 +0,0 @@-### Please describe the problem.--I thought it was just my failing memory but then our tests started to fail (e.g. https://travis-ci.org/datalad/datalad/builds/69776125#L810):  previously (e.g. with 5.20150409+git126-ga29f683-1~ndall+1) git annex add (without -c alwayscommit=False) would commit git-annex branch with information about that file right away, but currently (e.g. with 5.20150610+gitg608172f-1~ndall+1) it doesn't happen any longer.  I glanced through the logs but didn't find explicit doc on change of behavior so decided to check if that is intended change?--### What version of git-annex are you using? On what operating system?--5.20150610+gitg608172f-1~ndall+1---### Please provide any additional information below.--[[!format sh """-# If you can, paste a complete transcript of the problem occurring here.-# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log-hopa:/tmp/XX-$> git init-Initialized empty Git repository in /tmp/XX/.git/-2 14055.....................................:Mon 06 Jul 2015 06:12:41 PM EDT:.-(git)hopa:/tmp/XX[master]-$> git annex init-init  ok-(recording state in git...)-2 14056.....................................:Mon 06 Jul 2015 06:12:43 PM EDT:.-(git)hopa:/tmp/XX[master]-$> echo 21234 > 2-2 14057.....................................:Mon 06 Jul 2015 06:12:45 PM EDT:.-(git)hopa:/tmp/XX[master]-$> git annex add 2-add 2 ok-(recording state in git...)-2 14058.....................................:Mon 06 Jul 2015 06:12:48 PM EDT:.-(git)hopa:/tmp/XX[master]-$> git annex log  -fatal: unrecognized argument: -raw----# End of transcript or log.-"""]]--> `git annex log`, was broken in the last release, and has since been-> fixed (in git). The git-annex branxh is still being committed, as you can-> see with `git log`. [[done]] --[[Joey]]
− doc/bugs/can__39__t_get/comment_1_ef32287828481c161bd913c9db9052a5._comment
@@ -1,27 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"- nickname="Yaroslav"- subject="git annex fix starts fixing but then spits bulk of errors"- date="2014-01-18T05:42:15Z"- content="""-probably related:--```-fix books/Мои первые книжки/PDF/Благинина Е.А. - Лодочки (Мои первые книжки) - 1962.pdf ok-fix books/Мои первые книжки/PDF/Благинина Е.А. - Не мешайте мне трудиться (Мои первые книжки) - 1975.pdf fatal: This operation must be run in a work tree-ok-(Recording state in git...)--git-annex: user error (xargs [\"-0\",\"git\",\"--git-dir=/home/yoh/annex/.git\",\"add\",\"--force\",\"--\"] exited 123)-fatal: This operation must be run in a work tree-failed-(Recording state in git...)--git-annex: user error (xargs [\"-0\",\"git\",\"--git-dir=/home/yoh/annex/.git\",\"add\",\"--force\",\"--\"] exited 123)-fatal: This operation must be run in a work tree-failed-(Recording state in git...)--....-```-"""]]
− doc/bugs/can__39__t_get/comment_2_31fe400f4bac516a5c1101612cb06a54._comment
@@ -1,32 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"- nickname="Yaroslav"- subject="repair seems to be also confused"- date="2014-01-18T05:47:02Z"- content="""-[[[-$> git annex repair                               -Running git fsck ...-No problems found.-fatal: '/home/yoh/annex/.git' is outside repository-Had to delete the .git/annex/index file as it was corrupt.-No data was lost.-ok--$> ls-2enjoy/   2read/    2watch/  books/  hardware/  videos/-2listen/  2review/  abooks/  docs/   pics/--$> git annex repair-Running git fsck ...-No problems found.-fatal: '/home/yoh/annex/.git' is outside repository-Had to delete the .git/annex/index file as it was corrupt.-No data was lost.-ok--$> git annex get 2read/ISNN2010__Tang.pdf-git-annex: Cannot mix --all or --unused with file names.--]]]-"""]]
− doc/bugs/can__39__t_get/comment_3_87d123c04815d38abb92f967829c3a23._comment
@@ -1,16 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"- nickname="Yaroslav"- subject="could it be part/reason of the problem"- date="2014-01-18T06:05:50Z"- content="""-not sure how that happened... definitely not me consciously! ;-)  some commands are complaining that \"You cannot run this command in a bare repository\" which I thought is BS since it is not BARE! but then looked into .git/config and it does have core.bare = True ... yikes!.. --This repository is also under assistant \"control\".--changing to bare=False seems to start 'get'ing things, git annex repair doesn't produce obscure errors.--git annex fix though now doesn't report any problems -- only 'ok', but none of those files mentioned 'ok' has a working symlink,,,  but I guess that is a fluke after many upgrades -- just dropping everything locally and getting needed context after purging .git/annex/objects .--So I guess issue is resolved by discovering that repository was set to 'bare' mode somehow although it was not and seemed like working but not quite-"""]]
− doc/bugs/can__39__t_get/comment_4_b99cff87dbe38f08f888200dfe7e2436._comment
@@ -1,14 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.43"- subject="comment 4"- date="2014-01-18T15:42:59Z"- content="""-git-annex sets core.bare=true for direct mode, but it also then sets annex.direct=true and so does not treat it as a bare mode repository. If you had eg, manually tried to change annex.direct to false, and left it in bare mode, that would explain everything.--> git annex fix though now doesn't report any problems -- only 'ok', but none of those files mentioned 'ok' has a working symlink--That is completely normal behavior; git annex fix does not care if the content is locally present or not; it just checks that the symlinks would point to it if it were present.--(Fixed the partial function in dropunused.)-"""]]
− doc/bugs/creating_a_plain_directory_where_a_mountpoint_should_have_been.mdwn
@@ -1,29 +0,0 @@-### Please describe the problem.--This is a one-off thing, not a reproducible bug.  It was just so weird that I wanted to make a note of it in case somebody else had the same problem and it was reproducible.--I have a remote on the a USB drive which I mount once in a while on /Volumes/TOSHIBAEXT which has a remote on /Volumes/TOSHIBAEXT/annex.   It's a remote which I created by hand using "git clone" a long time ago, not something the assistant set up for me.--Anyway, today the assistant kept reporting that it could not sync to it.  I didn't know why, because I checked in my Finder sidebar and it showed a mounted drive called TOSHIBAEXT.  It's only when I checked with the command line that I noticed something was up!  There was now an ordinary directory at /Volumes/TOSHIBAEXT/annex.   This had apparently been created at some point when the drive was unmounted, so when it re-mounted, because there was a directory in the way, it re-mounted at "/Volumes/TOSHIBAEXT 1".  But it was displayed in the finder sidebar as just "TOSHIBAEXT" anyway because the finder hides this workaround from the user for whatever reason.--Presumably git-annex assistant at some point, for some reason, created an ordinary directory where it expected to find the annex.--I wonder if this may have to do with the fact that this is a non-bare, created-by-hand repo, from before I was using the assistant, not a normal bare remote that the assistant would have created for me if I'd been using the webapp.--### What steps will reproduce the problem?--I've only seen it once, and report the bug not as an outstanding issue but only as a heads-up that this has ever happened.--### What version of git-annex are you using? On what operating system?--git-annex version: 4.20130501-gb61740e--OS X lion (10.7)--### Please provide any additional information below.--I wasn't logging when this happened.--Again, just a heads-up; I'll keep my eye open for this happening again and post more info if it does.--[[!tag confirmed]]
− doc/bugs/direct_mode_merge_can_overwrite_local__44___non-annexed_files.mdwn
@@ -1,14 +0,0 @@-Direct mode merge handles the case where there's a conflict between local and remote files, that are checked into git.--However, the the local file (or directory, or symlink, whatever)-is not checked into git, the merge will overwrite it with the remote file from git.--> That's fixed; now this is detected and the local variant-> is renamed with ".variant-local", and possibly a number to make it-> unique.--New problem: If the merge pulls in a directory, and a file exists with-the name of the directory, locally, not annexed, the file is left alone,-but the directory is thus not checked out, and will be deleted on commit.--> [[fixed|done]]; regression test in place. --[[Joey]]
− doc/bugs/git-annex-shell/comment_1_3d2c3827de34509c0a5595eda07dd18f._comment
@@ -1,13 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 1"""- date="2015-04-09T17:48:20Z"- content="""-GIT_SSH is set to the full path of the binary, unless-~/.config/git-annex/program overrides it.--Finding the full path to the binary is not a trivial or error-free-operation.--Could you please follow up to this bug or close it?-"""]]
− doc/bugs/git_annex_info_is_reporting_file_as_not_annexed_in_direct_mode.mdwn
@@ -1,38 +0,0 @@-### Please describe the problem.--I was thinking to answer Emanuele's question in forum (http://git-annex.branchable.com/forum/test_whether_a_file_is_already_annexed/) but realized that 'info' is not the way :-/ (whereis could be used I guess)--### What version of git-annex are you using? On what operating system?--5.20150826+gitg87972f5-1~ndall+1--### Please provide any additional information below.--[[!format sh """--$> git annex indirect     -commit  ok-indirect 1.dat ok-indirect  ok-ok--$> git annex info 1.dat-file: 1.dat-size: 4 bytes-key: SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat--$> git annex direct    -commit  -On branch master-nothing to commit, working directory clean-ok-direct 1.dat ok-direct  ok--$> git annex info 1.dat-git-annex: 1.dat is not a directory or an annexed file or a remote or a uuid---"""]]--> [[fixed|done]] --[[Joey]]
− doc/bugs/git_annex_sync_--content_may_copy_then_drop_a_file_to_a_remote.mdwn
@@ -1,35 +0,0 @@-### Please describe the problem.--When using `git annex sync --content` with two archive with different cost, git annex will upload my file to the first archive, then to the second one, then it will drop it from the first one.--### What steps will reproduce the problem?--I've set both remote to "trusted", both in the "archive" group, both with "standard" preferred content, the remote named "hubic2" as an annex-cost of 200.0, and the remote named "hubic3" as an annex-cost of 175.0--### What version of git-annex are you using? On what operating system?-I'm using git-annex 5.20141125 on Debian Sid (upgraded today on November 7 2014).--### Please provide any additional information below.--[[!format sh """-# If you can, paste a complete transcript of the problem occurring here.-# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log--$ git annex list | head-here-|hubic2-||hubic3-|||-X__ Avatars/archer.jpg-$ git annex sync --content-commit  ok-copy Avatars/archer.jpg copy Avatars/archer.jpg (to hubic3...)-ok-copy Avatars/archer.jpg copy Avatars/archer.jpg (to hubic2...)-ok-drop hubic3 Avatars/archer.jpg ok--# End of transcript or log.-"""]]--> [[fixed|done]] --[[Joey]]
− doc/bugs/hPutChar_error_message_with_UTF-8_chars_above_7F_in_filenames.mdwn
@@ -1,80 +0,0 @@-### Please describe the problem.--When using `--incremental` together with `git annex fsck`, the error -message "hPutChar: invalid argument (invalid character)" appears in the -"Only X of Y trustworthy copies exist" message when the filename -contains an UTF-8 character above U+007F. The only locale in which this -doesn't happen is "C.UTF-8".--### What steps will reproduce the problem?--- Create and add a file with an UTF-8 character in the file name above U+007F to git-annex-- Set `numcopies` high enough so `git annex fsck` will produce a warning about missing copies-- Execute `git annex fsck --incremental`--I've created two test scripts on -<https://gist.github.com/sunny256/ebf4d055f5500b257ed8> that demonstrate -this error:--- `git clone https://gist.github.com/ebf4d055f5500b257ed8.git`-- `cd ebf4d055f5500b257ed8`-- `./runme`--You can specify a locale to `runme` as `$1` to experiment with different -locales.--There's also a `test-all-locales` script that executes `./runme` with -all defined locales on the computer. Both scripts return 1 if the error -message appears, if it's gone, 0 is returned.--### What version of git-annex are you using? On what operating system?--Newest git-annex amd64 (5.20150812) from `downloads.kitenet.net`.--### Please provide any additional information below.--The `runme` script contains more information about this issue.--[[!format sh """-# If you can, paste a complete transcript of the problem occurring here.-# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log--Here are two excerpts of the test output using the "C" and -"C.UTF-8" locale:--$ ./runme C-[snip]-================== git annex --incremental fsck ==================-fsck U00D8_Ø.txt (checksum...)--  Only 1 of 2 trustworthy copies exist of U00D8_-git-annex: <stderr>: hPutChar: invalid argument (invalid character)-failed-fsck ascii_only.txt (checksum...)--  Only 1 of 2 trustworthy copies exist of ascii_only.txt-  Back it up with git-annex copy.-failed-(recording state in git...)-git-annex: fsck: 2 failed--$ ./runme C.UTF-8-[snip]-================== git annex --incremental fsck ==================-fsck U00D8_Ø.txt (checksum...)--  Only 1 of 2 trustworthy copies exist of U00D8_Ø.txt-  Back it up with git-annex copy.-failed-fsck ascii_only.txt (checksum...)--  Only 1 of 2 trustworthy copies exist of ascii_only.txt-  Back it up with git-annex copy.-failed-(recording state in git...)-git-annex: fsck: 2 failed--# End of transcript or log.-"""]]--> [[fixed|done]] --[[Joey]]
− doc/bugs/local_pair_fails_if_non-ascii_characters_present_on_annex_path.mdwn
@@ -1,18 +0,0 @@-### Please describe the problem.--When the annex directory has a non-ascii character (like a tilde) on its path, local pairing fails and a couple of instances of the following message appear on the log--"illegal control characters in pairing message; ignoring"--### What steps will reproduce the problem?--* make a new annex repo named on /home/someone/Vídeos/blah/ (notice the i with a tilde) on two computers-* try to pair them--### What version of git-annex are you using? On what operating system?--git-annex version: 5.20141016-g26b38fd on Arch Linux--git-annex version: 5.20140717 on Ubuntu 14.10--> [[done]]; see comment
− doc/bugs/misuse_of_--git-dir_might_destroy_a_git_repository_completely.mdwn
@@ -1,34 +0,0 @@-### Please describe the problem.-Doing a git annex command while passing a bad --git-dir can result in the .git directory being deleted. I've never experienced it with plain git, so I assume that it comes for annex.--### What steps will reproduce the problem?--[[!format sh """-$ mkdir annex_destroyed_my_git_directory-$ cd annex_destroyed_my_git_directory-$ git init-$ git annex init-$ ls -a-. .. .git-$ git --git-dir=$PWD annex find-fatal: Not a git repository: '/home/doudou/tmp/annex_destroyed_my_git_directory'-$ ls -a-. .. config-"""]]--### What version of git-annex are you using? On what operating system?-dpkg -l git-annex reports 5.20141024--I am running Debian sid.--### Please provide any additional information below.--[[!format sh """-# If you can, paste a complete transcript of the problem occurring here.-# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log---# End of transcript or log.-"""]]--> [[fixed|done]] --[[Joey]]
@@ -1,72 +0,0 @@-### Please describe the problem.--in direct mode files with absent content are promised to become regular files but empty... seems to be not a case for me.  page describing direct mode has comments about past problems like that but they were told to be dealt with... so I decided to file a new issue--### What steps will reproduce the problem?--switch to direct mode--### What version of git-annex are you using? On what operating system?--5.20150519-geaf72fe--### Please provide any additional information below.--[[!format sh """-# If you can, paste a complete transcript of the problem occurring here.-# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log--$> git clone ~exppsy/pymvpa2-tutorialdata /tmp/pymvpa2-tutorialdata-clone -Cloning into '/tmp/pymvpa2-tutorialdata-clone'...-done.--$> cd /tmp/pymvpa2-tutorialdata-clone-debian/  freesurfer/  haxby2001/  hyperalignment_tutorial_data.hdf5.gz@  results/  suma_surfaces/--$> ls -l haxby2001/bold_mc.par hyperalignment_tutorial_data.hdf5.gz-lrwxrwxrwx 1 yoh yoh 199 May 29 15:42 haxby2001/bold_mc.par -> ../.git/annex/objects/KM/Jq/SHA256E-s106236--64972f56116ba575996a0b2fbd26a033dd3e8369e87fda503fec5a45dcd06f57.par/SHA256E-s106236--64972f56116ba575996a0b2fbd26a033dd3e8369e87fda503fec5a45dcd06f57.par-lrwxrwxrwx 1 yoh yoh 208 May 29 15:42 hyperalignment_tutorial_data.hdf5.gz -> .git/annex/objects/1g/M2/SHA256E-s15769613--d4b54133f873ff043df22c6250810c1cb9a177b5eb551ca97d98d664edf8ea3f.hdf5.gz/SHA256E-s15769613--d4b54133f873ff043df22c6250810c1cb9a177b5eb551ca97d98d664edf8ea3f.hdf5.gz--$> git annex enableremote data.pymvpa.org                           -(merging origin/git-annex into git-annex...)-(recording state in git...)-enableremote data.pymvpa.org ok-(recording state in git...)--$> git annex get hyperalignment_tutorial_data.hdf5.gz-/tmp/pymvpa2-tutorialdata-clone/.git/annex/tm 100%[==================================================================================================>]  15.04M  11.2MB/s   in 1.3s   -ok-(recording state in git...)--$> ls -l haxby2001/bold_mc.par hyperalignment_tutorial_data.hdf5.gz-lrwxrwxrwx 1 yoh yoh 199 May 29 15:42 haxby2001/bold_mc.par -> ../.git/annex/objects/KM/Jq/SHA256E-s106236--64972f56116ba575996a0b2fbd26a033dd3e8369e87fda503fec5a45dcd06f57.par/SHA256E-s106236--64972f56116ba575996a0b2fbd26a033dd3e8369e87fda503fec5a45dcd06f57.par-lrwxrwxrwx 1 yoh yoh 208 May 29 15:42 hyperalignment_tutorial_data.hdf5.gz -> .git/annex/objects/1g/M2/SHA256E-s15769613--d4b54133f873ff043df22c6250810c1cb9a177b5eb551ca97d98d664edf8ea3f.hdf5.gz/SHA256E-s15769613--d4b54133f873ff043df22c6250810c1cb9a177b5eb551ca97d98d664edf8ea3f.hdf5.gz--$> git annex direct-commit  -On branch master-Your branch is up-to-date with 'origin/master'.-nothing to commit, working directory clean-ok-direct hyperalignment_tutorial_data.hdf5.gz ok-direct  ok--$> ls -l haxby2001/bold_mc.par hyperalignment_tutorial_data.hdf5.gz-lrwxrwxrwx 1 yoh yoh      199 May 29 15:42 haxby2001/bold_mc.par -> ../.git/annex/objects/KM/Jq/SHA256E-s106236--64972f56116ba575996a0b2fbd26a033dd3e8369e87fda503fec5a45dcd06f57.par/SHA256E-s106236--64972f56116ba575996a0b2fbd26a033dd3e8369e87fda503fec5a45dcd06f57.par--rw------- 1 yoh yoh 15769613 May  8 03:42 hyperalignment_tutorial_data.hdf5.gz-2 12569.....................................:Fri 29 May 2015 03:43:08 PM EDT:.--$> git annex version-git-annex version: 5.20150519-geaf72fe-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external-local repository version: 5-supported repository version: 5-upgrade supported from repository versions: 0 1 2 4---# End of transcript or log.-"""]]--> This is behaving as it's intended to. [[done]] --[[Joey]]
@@ -1,90 +0,0 @@-### Please describe the problem.--subject + what was described  in https://git-annex.branchable.com/forum/some_symlinks_left_in_direct_mode/ some time ago I guess--### What steps will reproduce the problem?--clone git annex repo, switch immediately to direct mode and observe files being left as dangling symlinks, get some content -- they get into normal files, drop them -- broken symlinks again.  I thought (and I believe that it was like that) that in direct mode -- no symlinks to .git/annex regardless of the state (present/absent).--full example /transcript is below--### What version of git-annex are you using? On what operating system?--Debian sid 5.20150710-2--### Please provide any additional information below.--[[!format sh """-# If you can, paste a complete transcript of the problem occurring here.-# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log--$> git clone git://github.com/datalad/testrepo--basic--r1-Cloning into 'testrepo--basic--r1'...-remote: Counting objects: 23, done.-remote: Total 23 (delta 0), reused 0 (delta 0), pack-reused 23-Receiving objects: 100% (23/23), done.-Resolving deltas: 100% (3/3), done.-Checking connectivity... done.-2 22606.....................................:Tue 28 Jul 2015 04:11:23 PM EDT:.-hopa:/tmp-$> cd testrepo--basic--r1-INFO.txt  test-annex.dat@  test.dat-2 22607.....................................:Tue 28 Jul 2015 04:11:30 PM EDT:.-(git)hopa:/tmp/testrepo--basic--r1[master]-$> ls -l-total 12--rw------- 1 yoh yoh  53 Jul 28 16:11 INFO.txt-lrwxrwxrwx 1 yoh yoh 186 Jul 28 16:11 test-annex.dat -> .git/annex/objects/zk/71/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat--rw------- 1 yoh yoh   4 Jul 28 16:11 test.dat-2 22608.....................................:Tue 28 Jul 2015 04:11:31 PM EDT:.-(git)hopa:/tmp/testrepo--basic--r1[master]-$> git annex direct-(merging origin/git-annex into git-annex...)-(recording state in git...)-commit  -(recording state in git...)-On branch master-Your branch is up-to-date with 'origin/master'.-nothing to commit, working directory clean-ok-direct  ok-2 22609.....................................:Tue 28 Jul 2015 04:11:36 PM EDT:.-(git)hopa:/tmp/testrepo--basic--r1[master]-$> ls -l -total 12--rw------- 1 yoh yoh  53 Jul 28 16:11 INFO.txt-lrwxrwxrwx 1 yoh yoh 186 Jul 28 16:11 test-annex.dat -> .git/annex/objects/zk/71/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat--rw------- 1 yoh yoh   4 Jul 28 16:11 test.dat-2 22610.....................................:Tue 28 Jul 2015 04:11:38 PM EDT:.-(git)hopa:/tmp/testrepo--basic--r1[master]-$> git annex get test-annex.dat-get test-annex.dat (from web...) -/tmp/testrepo--basic--r1/.git/annex/tmp/SHA256E-s4--1 100%[===========================================================================================================================>]       4  --.-KB/s   in 0s     -ok-(recording state in git...)-2 22611.....................................:Tue 28 Jul 2015 04:11:45 PM EDT:.-(git)hopa:/tmp/testrepo--basic--r1[master]-$> ls -lta-total 12-drwxrwxrwt 126 root root 4020 Jul 28 16:11 ../-drwx------   3 yoh  yoh   120 Jul 28 16:11 ./--rw-------   1 yoh  yoh     4 Jul 28 16:11 test-annex.dat-drwx------   9 yoh  yoh   300 Jul 28 16:11 .git/--rw-------   1 yoh  yoh    53 Jul 28 16:11 INFO.txt--rw-------   1 yoh  yoh     4 Jul 28 16:11 test.dat-2 22612.....................................:Tue 28 Jul 2015 04:11:49 PM EDT:.-(git)hopa:/tmp/testrepo--basic--r1[master]-$> git annex drop test-annex.dat-drop test-annex.dat (checking https://raw.githubusercontent.com/datalad/testrepo--basic--r1/master/test.dat...) ok-(recording state in git...)-2 22613.....................................:Tue 28 Jul 2015 04:11:57 PM EDT:.-(git)hopa:/tmp/testrepo--basic--r1[master]-$> ls -l -total 12--rw------- 1 yoh yoh  53 Jul 28 16:11 INFO.txt-lrwxrwxrwx 1 yoh yoh 186 Jul 28 16:11 test-annex.dat -> .git/annex/objects/zk/71/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat--rw------- 1 yoh yoh   4 Jul 28 16:11 test.dat---# End of transcript or log.-"""]]
− doc/bugs/webapp_fails_to_connect_to_ssh_repository___40__windows__41__.mdwn
@@ -1,40 +0,0 @@-### Please describe the problem.--I added a remote repository, and it successfully tested the ssh connection to the server. Nothing happens, however, once it comes to actually creating the remote repository (or merging with an existing one). It'll just sit there forever, never actually connecting to the server.--A quick look in process explorer shows something of what's going on: git-annex has launched ssh, and ssh is spamming subprocesses. It's launching ssh.exe which is launching git-annex.exe (yes, on the local machine.) It exits right away, but the command line is "C:\Program Files (x86)\Git\cmd\git-annex.exe" "Please type 'yes' or 'no': ". I've no idea why it's doing that though.--If I kill that parent ssh process, I get this error message in the transcript:--    Could not create directory '/home/db48x/.ssh'.--This seems a bit dubious; both my local computer and the remote computer have a ~/.ssh directory.--In order to rule out a problem with my local computer (an ancient install of Git or cygwin/msys or something, we've tried this on fresh computers which have never had git installed; we get exactly the same problem there.--### What steps will reproduce the problem?--Create or connect to a repository via SSH.--### What version of git-annex are you using? On what operating system?--Windows 7--    Version: 5.20150420-gb0ebb23-    Build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA TorrentParser--### Please provide any additional information below.--While this is going on, the log has is showing that it's executing the following command:--[[!format sh """-[2015-04-28 22:34:16 Pacific Daylight Time] chat: ssh ["-oNumberOfPasswordPrompts=1","-p","22","db48x@eambar.db48x.net","sh -c 'mkdir -p '\"'\"'annex'\"'\"'&&cd '\"'\"'annex'\"'\"'&&if [ ! -d .git ]; then if [ -x ~/.ssh/git-annex-wrapper ]; then ~/.ssh/git-annex-wrapper git init --bare --shared; else git init --bare --shared; fi && if [ -x ~/.ssh/git-annex-wrapper ]; then ~/.ssh/git-annex-wrapper git config receive.denyNonFastforwards; else git config receive.denyNonFastforwards; fi ;fi&&mkdir -p ~/.ssh&&if [ ! -e ~/.ssh/git-annex-shell ]; then (echo '\"'\"'#!/bin/sh'\"'\"';echo '\"'\"'set -e'\"'\"';echo '\"'\"'if [ \"x$SSH_ORIGINAL_COMMAND\" != \"x\" ]; then'\"'\"';echo '\"'\"'exec git-annex-shell -c \"$SSH_ORIGINAL_COMMAND\"'\"'\"';echo '\"'\"'else'\"'\"';echo '\"'\"'exec git-annex-shell -c \"$@\"'\"'\"';echo '\"'\"'fi'\"'\"') > ~/.ssh/git-annex-shell; fi&&chmod 700 ~/.ssh/git-annex-shell&&touch ~/.ssh/authorized_keys&&chmod 600 ~/.ssh/authorized_keys&&echo '\"'\"'command=\"env GIT_ANNEX_SHELL_DIRECTORY='\"'\"'\"'\"'\"'\"'\"'\"'annex'\"'\"'\"'\"'\"'\"'\"'\"' ~/.ssh/git-annex-shell\",no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiPFdIMyYCBmc14f9cUZaG36Zw+NziqX9Z+xGl5GAYq16nORxVc+70Bj+A9cHoHLzTMBJnw7G/f7xJNGbKNgKUPKZohT8AQfg8lnyK8qpyzI2dJB3R0vPBMPxZCBm4IOpdB6ad3B6dUiyNtyMn1hza7GVhIFOsHfGG+K3PGtFgwOz/Zj+2zmcZIL/BHObFsba/yhQxbsjLYPI7mmNV9CLb1+XcR0z2okWvxu28lOrcIXDAdEhp1cjjjpBhwTH1F8/gJcJ6ENBa4JiGt/oEKb1b/pXLaMX6dRjc/gYoy7z0Hw7RD73hH+UtPj5TAeKwoNdaVXdqSsVI+3ql+O5PFTxt db48x@caradhras\n'\"'\"' >>~/.ssh/authorized_keys'"]-"""]]--> This sounds like it's all down to the newer ssh from cygwin ignoring HOME-> and trying to use /home/user which doesn't work very well outside cygwin.->-> Since git-annex has switched to not include that ssh any longer, and-> instead use the ssh that's bundled with msysgit, I think this bug is-> closed. [[done]] Upgrading to the latest daily build should fix your-> system's ssh. Please followup if I'm wrong. --[[Joey]]
− doc/design/assistant/OSX/comment_1_9290f6e6f265e906b08631224392b7bf._comment
@@ -1,14 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4"- nickname="Jörn"- subject="Mount detection"- date="2012-09-21T09:23:34Z"- content="""-regarding the current mount polling on OSX: why not use the NSNotificationCenter for being notified on mount events on OSX?--Details see:--1. <http://stackoverflow.com/questions/12409458/detect-when-a-volume-is-mounted-on-os-x>-2. <http://stackoverflow.com/questions/6062299/how-to-add-an-observer-to-nsnotificationcenter-in-a-c-class-using-objective-c>-3. <https://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFNotificationCenterRef/Reference/reference.html#//apple_ref/doc/uid/20001438>-"""]]
− doc/design/assistant/blog/day_81__enabling_pre-existing_special_remotes.mdwn
@@ -1,34 +0,0 @@-It's possible for one git annex repository to configure a special remote-that it makes sense for other repositories to also be able to use. Today I-added the UI to support that; in the list of repositories, such-repositories have a "enable" link.--To enable pre-existing rsync special remotes, the webapp has to do the same-probing and ssh key setup that it does when initially creating them.-Rsync.net is also handled as a special case in that code. There was one-ugly part to this.. When a rsync remote is configured in the webapp,-it uses a mangled hostname like "git-annex-example.com-user", to-make ssh use the key it sets up. That gets stored in the `remote.log`, and so-the enabling code has to unmangle it to get back to the real hostname.-------Based on the still-running [[prioritizing_special_remotes]] poll, a lot-of people want special remote support for their phone or mp3 player.-(As opposed to running git-annex on an Android phone, which comes later..)-It'd be easy enough to make the webapp set up a directory special remote-on such a device, but that makes consuming some types of content on the-phone difficult (mp3 players seem to handle them ok based on what people tell-me). I need to think more about some of the ideas mentioned in [[android]]-for more suitable ways of storing files.--One thing's for sure: You won't want the assistant to sync all your files-to your phone! So I also need to start coming up with partial syncing-controls. One idea is for each remote to have a configurable matcher for files-it likes to receive. That could be only mp3 files, or all files inside a-given subdirectory, or all files *not* in a given subdirectory. That means-that when the assistant detects a file has been moved, it'll need to add-(or remove) a queued transfer. Lots of other things could be matched on,-like file size, number of copies, etc. Oh look, I have a-[beautiful library I wrote earlier](http://joeyh.name/blog/entry/happy_haskell_hacker)-that I can reuse!
+ doc/devblog/day_331__concurrent-output_preparations.mdwn view
@@ -0,0 +1,11 @@+Today started with getting a release of git-annex out, to deal with a new+version of the aws library, which broke the build. That also added support+to the S3 remotes for creating Google Nearline buckets, although only when+git-annex is built with the newest version of the aws library.++Rest of the day (and most of the past weekend) I've been working on the+concurrent-output library. Today I finished making it support multi-line+regions, and color, and even fully optimised its console updates to use+minimal bandwidth. So, it's got everything git-annex can possibly need+to display those troublesome concurrent actions. Will be starting to make+git-annex use it soon!
− doc/devblog/moving_blogs/comment_1_6caa7e67461a6ea5de8155ae9cf75fab._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://pnijjar.livejournal.com/"- ip="99.236.22.229"- subject="comment 1"- date="2013-08-31T00:05:16Z"- content="""-Do we need to update our RSS feeds? I appear to be getting your devblog posts in my old feed, but I do not know whether that will continue working.-"""]]
− doc/devblog/moving_blogs/comment_2_e3e2048fc2397b87a2f29c9fe49394cb._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmkBwMWvNKZZCge_YqobCSILPMeK6xbFw8"- nickname="develop"- subject="comment 2"- date="2013-08-31T10:03:04Z"- content="""-The old RSS feed will continue working.--So sit back, relax, and enjoy the show.-"""]]
− doc/forum/Direct_Mode_-_Restore_file_from_Full_Backup_Repository__63__.mdwn
@@ -1,14 +0,0 @@-Hi, I'm using the webapp and created a repository on my local computer. Then I created another remote repository (encrypted remote with gcrypt), this remote repository is selected as type "full backup". --I've added some files to the local repository, then changed some of them and watched the sync happen. Then I deleted some files, and these also get synced to the remote.--Now, how can I recover those files from the foreign repo, using the webapp or the command line? I could not find any solution.--I tried:-git log --diff-filter=D --summary-and then-git checkout 488408bfcd58eced685d9e3ca5daf55250850f5d -- .-to recover the file listed in this remote but got the following response:-fatal: This operation must be run in a work tree--What do I miss and how does the "Restore" part work when using "full backup" remote repository?
− doc/forum/How_to_prevent_the_assistant_from_downloading_all_data__63__.mdwn
@@ -1,9 +0,0 @@-I have a repository on my laptop with a single remote on a USB drive. Both were created without the assistant.--The remote holds all the content. My understanding is that this would be a "backup" repository, using the group definitions.--The local repository generally holds no content. When I want a file, I make sure the remote is available, and then I `git annex get` it.--This works fine in git annex, but I'm now experimenting with the assistant. As soon as I fire up the assistant, it starts downloading all of the data from the remote. I don't ever want it to automatically get any content from the remote. If it sees new content in the repository, I would like it to push that out to the remote. But never get anything from the remote, and never drop anything that is in the repository.--How can I setup this behaviour in the assistant? I have set the remote's repository group to "backup". The local repository is not in any group, since none of the groups fit my model for this repo.
− doc/forum/Import_options/comment_1_118a5f978090a3909299876a01c0adec._comment
@@ -1,21 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkeJKC5Sy0stmcTWyePOLEVv0G-x1yaT_w"- nickname="Josef"- subject="wishlist"- date="2013-09-26T11:11:19Z"- content="""-Posted the above yesterday before realizing that it should probably go to wishlist requests. I am sorry about that.--Basically it is a request to extend import options and perhaps make the options easier to use/understand.--Suggested Import Options:--- source directory,-- destination directory,-- deduplicate in annex ( yes, no )-- delete source files ( yes, no )-- trial run ( screen output only )--Many thanks for a great product!--"""]]
− doc/forum/Import_options/comment_2_21da91f08cb6b28ae3e79ade033db516._comment
@@ -1,17 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkeJKC5Sy0stmcTWyePOLEVv0G-x1yaT_w"- nickname="Josef"- subject="Additional Comments"- date="2013-09-30T21:33:31Z"- content="""-Imported several thousand files to annex and would like to add the following comments:--- it would be great to have an option to exclude hidden dot files from import,--- empty directories should be deleted when files located in the directories are deleted,--- \"git annex add\" seems to process directories and files alphabetically, unfortunately import processes files in a different order, which makes it hard to predict which files are deleted when deduplicating,--Cheers,--"""]]
− doc/forum/Purge_a_remote/comment_1_78b3b77f457c65d31fd8a5abf714905d._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.47"- subject="comment 1"- date="2013-11-05T16:17:22Z"- content="""-In the git-annex webapp, each repository has a settings menu with \"delete repository\".-"""]]
− doc/forum/Purge_a_remote/comment_2_dc65719157dee63b3979563ed57ee0ce._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkzwmw_zyMpZC9_J7ey--woeYPoZkAOgGw"- nickname="dxtrish"- subject="comment 2"- date="2013-11-05T17:46:02Z"- content="""-When I use that Delete button it seems to still have records of it-because when I delete the repo on the other end and create a new bare-one it complains about some UUID mismatch.-"""]]
− doc/forum/Purge_a_remote/comment_3_63e0280273b816fa4b837724e102f813._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.47"- subject="comment 3"- date="2013-11-05T18:03:26Z"- content="""-Hmm well, it's true that deleting a repository does not clean out any git remotes that other repositories might have configured using it, and the uuid of the old remote is cached in there. This is only a problem if you put back another repository in the same location as the old one. `git remote remove` should clean that up for you.-"""]]
− doc/forum/Purge_a_remote/comment_4_7fad1c4798ca03a4095ac3241c279f6d._comment
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkzwmw_zyMpZC9_J7ey--woeYPoZkAOgGw"- nickname="dxtrish"- subject="comment 4"- date="2013-11-06T14:24:21Z"- content="""-That is exactly what I have wanted to do a couple of times now and 'git remote remove' does not seem to remove it all either.-When I try to create a new repository in the same place it still complains about that darn UUID :)--What is working is to manually add the new UUID to .git/config-"""]]
− doc/forum/Syncronisation_of_syncronisation_between_3_repositories__63__.mdwn
@@ -1,11 +0,0 @@-Hello Joey,--I just want to know if file transfers between three inter-connected repositories somehow gets syncronized. I have a laptop, a local file server in my home and a virtual server on the internet.--Both my laptop and my file server are configured with a full git repository and connected through pairing and xmpp. The server on the internet is configured as a rsync special remote.--I want the local file server to hold a copy of everything in my annex, the rsync remote should get everything except the folder "media" (too large to upload and not that important) and the laptop whatever I manually decide (preferred content is set to "present").--I have added some files to the repository on the local file server and transferred their content to my laptop by using "git annex get". But when I started the web interface, I saw that those files who are present on both the file server and on the laptop get uploaded to the remote server from both computers, often the same file at the same time. Previously I though the two assistants would somehow talk to each other via xmpp so that doubled effort like that would be avoided. I'm also worried about data consistency because two apparently separate processes rsync to the same remote repository at the same time.--So my question would be: Is your xmpp protocol designed to deal with situations like this and I did not set it up correctly or is what I'm trying to accomplish simply not (yet) possible?
− doc/forum/Using_the_Git-Annex_Assistant_as_a_Backup_and_Syncing_Service.mdwn
@@ -1,5 +0,0 @@-I'm looking to use the Git-Annex Assistant to backup a single repository that is present on and synced between two computers (a home and a working computer). Ideally, each computer uses rsync.net for both of these service, while at the same time treating the cloud storage service as untrusted (so anything stored or tranferred through there is encrypted). Is it possible to do this using solely rsync.net (without the addition of some XMPP service)? According to the software, using shared encryption allows anyone with a clone of the repository to decrypt files on a remote, but the simplest way to make this clone seems to be to first clone to a removable drive, and then from the drive to the second computer (and then deleting the records of the clone to the drive). I'm unsure if by then setting up the backup at rsync.net for the second computer, whether the software will create a second backup that acts independently of the first, neglecting any syncing, or if it will recognize the backup as one of the same repository. I'm also unsure as to whether the software will even sync if the backup is recognized, or whether a tranfer repository at rsync.net is also necessary to complete the setup. Could you perhaps give me some advice on how to achieve this setup, or point me to some information that may help me along?--(If the setup is unclear, I'm essentially trying to replicate something like SpiderOak with the Git-Annex Assistant, without using an XMPP service)--[Edit: It may be easier to just use Git-Annex (no assistant), so that works too]
− doc/forum/Webapp_on_ARM/comment_1_82ac40cef5b59070136527b8d81a5ce2._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.1.10"- subject="comment 1"- date="2013-07-22T19:13:38Z"- content="""-To build the WebApp on arm, you need a ghc that supports template haskell on arm. While I have heard persistent rumors of such a thing existing, I have yet to see it.--It's possible to build the WebApp on arm without that, but it's a complicated process, involving first building on x86 with the same versions of the haskell libraries that you have on the arm system, and then using the EvilSplicer to generate a source tree with the template haskell expanded, which can then be built on arm. This build process is not really suitable for a Debian package.-"""]]
− doc/forum/__91__NEED_HELP__93___manual_ssh_remote_setup_with_shared_key.mdwn
@@ -1,19 +0,0 @@--So much time gone by after the kickstarter and now I wanted to give it a kick finally.-I set up everything on my linux desktop with no problems at all.--I configured a ssh remote with shared encryption key.--Then I tried to use this to share files with a windows Desktop. This is where problems started.--1. Since there is no jabber sync I need to exchange keys manually. But although I read and googled for hours I just found that it would be there in the git repo somewhere in plain text. I didnt find a command to actually display it on the command line.-2. I need to setup the (existing) ssh remote on windows manually, because I could not make the webapp recognize the ssh-keys from pageant. Also, unfortunately, all examples refer to s3. I didnt even find out which type I had to specify. There seems to be no comprehensive list of repository types for the cmdline and their required arguments respectively at all. The man page says "type=..." for the three-line description of shared encryption setups which appeared like a mockery to me. Since the remote does not have git metadata I also can not use git clone.-3. The docs say initremote would only be used on fresh remotes, not existing ones. But enableremote only enables remotes that are already configured. So what am I to do here?--Could someone tell me please--1. How to find the shared key-2. How to add the ssh remote properly-3. Where 1 and 2 are documented--Thank you!
− doc/forum/big_overhead/comment_10_d5f4e353e7f711d8c38cdcc222339bca._comment
@@ -1,14 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="108.236.230.124"- subject="comment 10"- date="2014-09-18T17:27:36Z"- content="""-In the meantime, I've been looking over the Annex.Branch code. --`stageJournal` is only ever called in code paths that commit the updated index, so those code paths cannot result in dangling objects unless git-annex is interrupted before it can commit. (This may explain some of my own repos having a few dangling refs, that were not commits; I could have ctrl-c'd git-annex.)--It's possible for a forced update of the local git-annex branch, done by eg a push from another repo, to overwrite a commit made to it. In this case, the git-annex index is merged with the branch, resulting in a new commit, and the old commit that was overwritten will indeed be dangling. However, `git annex sync` doesn't overwrite the git-annex branch; it pushes to synced/git-annex, or does a `taggedPush` to a private ref. It is the case that both those pushes are forced pushes, so can overwrite a branch ref and leave the old commit it pointed to dangling. In the case of `taggedPush`, the old commit should be a parent of the new, so it won't dangle. In the case of synced/git-annex being overwritten, the old commit could dangle, but only until whatever repo pushed it syncs again, at which time it should get incorporated as one of the parents of the new synced/git-annex it pushes. So, I don't see how long-term dangling commits could happen this way, except for in the case where a repository stops syncing/goes missing/rebases its git-annex branch (ie, git-annex forget is used). (This may explain the 2 dangling commits I found on elephant; we did delete some clones of that repository recently.)--At this point I'm not convinced that the dangling objects I found in my own repos are due to some systematic problem, the above seems like it could explain them, and the above is not a problem on the class of the one Rasmus is having. Of course, it's hard to be sure you've spotted all possible ways that a resource leak can happen, and that's what these dangling objects basically are.-"""]]
− doc/forum/big_overhead/comment_11_cbf25217e4149f2cfad4e2bf94f2b4ca._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="108.236.230.124"- subject="comment 11"- date="2014-09-18T17:32:09Z"- content="""-I knew I *had* used \"Initial commit\" somewhere ... etckeeper uses that message. And commits as root. Could an etckeeper repo have somehow gotten merged into your git-annex repo? Seems strange, and the filenames and contents don't really look like /etc to me, but it otherwise somewhat fits.-"""]]
− doc/forum/big_overhead/comment_12_475d5af95adcfcd3a51e10f270205eb7._comment
@@ -1,71 +0,0 @@-[[!comment format=mdwn- username="rasmus"- ip="146.185.23.178"- subject="comment 12"- date="2014-09-19T00:43:56Z"- content="""-Hi Joey,--Thanks for giving the thread a more appropriate title and thanks for the helpful messages. --Let me start with the easy points:---* Looking at my log file of installed packages I have never used `etckeeper` on my system.  So unless it could have entered through `annex` then I think we can rule that one out. -* According to `git log` the repos are from January 2014 where I restarted my repos. ---        commit 029a8e76ab5f66aa4390987130985550a1ccd69c-        Author: Rasmus <w530@domain.eu>-        Date:   Thu Jan 23 21:06:13 2014 +0100--        created repository---* When I start git repos I typically just use \"init\" so I don't think I did the 2012 commits. -* I checked out one of the 74mb files.  When I do `file test.blob` it shows `test.blob: GPG symmetrically encrypted data (CAST5 cipher)`.  But none of my normal passwords worked.  Could such a gpg'ed file be from local network connections where the assistant asks for a passphrase?  I'm pretty sure that my transfer repo has only been using `gcrypt` and I believe I \"restarted\" my repos because I switched to `gcrypt` repos.  Also, my transfer repo is 10Gb as well which sounds big for transfer repo. --I performed a similar \"analysis\" on the `conf.annex` repo which should contain mostly no binary files (some 16x16 pngs etc).  --`conf.annex` has 727 unreachable objects and 3477 commits in total.  Of these 338 are commits.  Here's an example of a larger commit message of an unreachable commit.--    commit 601c10f9512e8d3502d9dd52ef409560ebb5b7e0-    Author: root <root@localhost>-    Date:   Mon Dec 31 19:00:01 2012 -0400--         Initial commit--     diff --git a/6fbbea493cdec9d912d256374199cc4c012022d35524c8789a7aceeb953442a5 b/6fbbea493cdec9d912d256374199cc4c012022d35524c8789a7aceeb953442a5-     new file mode 100644-     index 0000000..ea5fcc3-     Binary files /dev/null and b/6fbbea493cdec9d912d256374199cc4c012022d35524c8789a7aceeb953442a5 differ-     diff --git a/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a-     new file mode 100644-     index 0000000..a86c1a9-     Binary files /dev/null and b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a differ-     diff --git a/9da3fcfc1635c674012c35d90c21adce3c35440e629d64fe117fe349a6b3e194 b/9da3fcfc1635c674012c35d90c21adce3c35440e629d64fe117fe349a6b3e194-     new file mode 100644-     index 0000000..ef1d71c-     Binary files /dev/null and b/9da3fcfc1635c674012c35d90c21adce3c35440e629d64fe117fe349a6b3e194 differ-     diff --git a/ad4ae79c29b3756f7e41257db7454f3c319112d06385a8bc12d28209a82f2594 b/ad4ae79c29b3756f7e41257db7454f3c319112d06385a8bc12d28209a82f2594-     new file mode 100644-     index 0000000..61d3e5b-     Binary files /dev/null and b/ad4ae79c29b3756f7e41257db7454f3c319112d06385a8bc12d28209a82f2594 differ-     diff --git a/bd0e9cb492077e0c090bc62892c8de438c51a956c8215b2c68de7caa7e2431cc b/bd0e9cb492077e0c090bc62892c8de438c51a956c8215b2c68de7caa7e2431cc-     new file mode 100644-     index 0000000..92e9bd7-     Binary files /dev/null and b/bd0e9cb492077e0c090bc62892c8de438c51a956c8215b2c68de7caa7e2431cc differ--Across all commits 6006 objects are mentioned, but only 371 are unique. --I checked out one blob and again `file` reports `GPG symmetrically encrypted data (CAST5 cipher)`.  Interesting for `conf.annex` I get this line when trying to decrypt--    gpg: DBG: cleared passphrase cached with ID: SBF83A0F822D0F664---For `doc.annex` I get--    gpg: DBG: cleared passphrase cached with ID: S32DEAD1E8DD06A4D--And on my other computer I see a third ID.  I'm not sure if this means anything when files are symmetrically encrypted, though. -"""]]
− doc/forum/big_overhead/comment_13_1c8cc992f04fc63179094c494bd25025._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="108.236.230.124"- subject="I know what it is now"- date="2014-09-19T02:43:22Z"- content="""-These objects are the ones written by git-remote-gcrypt when pushing to a remote. That's why the weird dates, root pseudo-commit, crazy filenames, and big gpg encrypted blobs. All countermeasures that git-remote-gcrypt uses to keep your encrypted git remote safe and not leak information about what's in it.--So, this is a bug in git-remote-gcrypt. It needs to clean these objects up after pushing them! (Also after failed pushes.)-"""]]
− doc/forum/big_overhead/comment_14_cbfb3d557915258e72c65a4e84df77a9._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="108.236.230.124"- subject="comment 14"- date="2014-09-19T02:59:36Z"- content="""-<https://github.com/bluss/git-remote-gcrypt/issues/16>-"""]]
− doc/forum/big_overhead/comment_15_b973529bae549bcbaaae792f0403989b._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="rasmus"- ip="217.130.110.20"- subject="comment 15"- date="2014-09-19T06:29:58Z"- content="""-Brilliant!  Thanks for taking time to analyze the issue and taking the bug to `gcrypt`.--[I'm surprised that a different key than my git-annex key is used and that it's a symmetric key, but I will explore the technology on my own].-"""]]
− doc/forum/git_annex_copy_--fast_--to_blah_much_slower_than_--from_blah.mdwn
@@ -1,15 +0,0 @@-I keep a repo synced between machines over ssh. Assuming all the files are in sync, so no actual file transfer needs to takes place, when I do--```-git annex copy --fast --quiet --to blah-```--is quite slow, about 10 seconds, using 100% CPU on one core, just to decide nothing needs to be done. On the other hand, doing--```-  git annex copy --fast --quiet --from blah-```--takes about 1 second.--I'm confused, as it seems to me that, since I'm using --fast, both transactions should use only locally available data, and both should need about the same amount of computing. Am I missing something? Can this be fixed?
− doc/forum/glacier_-_range_retrievals_and_daily_free_retrieval_allowance.mdwn
@@ -1,6 +0,0 @@-I propose to add some functionality to git-annex, to automatically "throttle" the data retrieval from amazon glacier to stay within the daily free retrieval allowance. If someone would need to get his/her files faster, there should be an option to disable this throttling (or even better, specify the retrieval rate).--As far as I understand glacier, this could be implemented using range retrievals. In short range retrievals enable you, to only retrieve a part of an archive in glacier. This can be used to only retrieve / request so much data, that you stay within the free retrieval allowance. ( please see [Q: Why would I retrieve only a range of an archive?](http://aws.amazon.com/glacier/faqs/#Why_would_I_retrieve_only_a_range_of_an_archive) ).---This would be somewhat similar to the [smart retrieval feature in cloudberry](http://blog.cloudberrylab.com/2012/12/introducing-smart-restore-for-amazon.html) .
− doc/forum/how_to_prevent_accidentally_running___96__git_add__96____63__.mdwn
@@ -1,5 +0,0 @@-I fear that while using git annex I will at some point accidentally `git add` some small files and not notice it until the only way to fix the problem is to rewrite history. What would be the best way to prevent myself from ever `git add`-ing a file into my annex repository instead of `git annex add`-ing it?--And secondly, how can I best search in my git annex repository whether I already did this mistake in the past or not? Currently I'm using this which returns everything that's not a symlink or a git submodule:--    git ls-files -s | awk ' $1 != 120000 && $1 != 160000 { print $4 }'
− doc/forum/mistakenly_checked___42__files__42___into_an_annex.__bummer..mdwn
@@ -1,3 +0,0 @@-A couple times working in an annex manually, I accidentally did "git add" instead of "git annex add" and ended up with files checked into my repo instead of symlinks.  So now there is some file content in git, rather than in the annex.  Is there any way to root that out, or is it there forever?  (My limited knowledge of git says: it's there forever, unless maybe you go into the branches where it lives, do an interactive rebase to the time before it was added, remove that commit, replay history, and then garbage collect, but I have no idea if that would suddenly break git annex, and it sounds painful anyway.)--If say I were a neat freak and wanted to just start over with a clean annex, I imagine the thing to do would be to just start the hell over -- and if I wanted to do that, the way to go would be to get into a full repository, do a "git annex uninit" and then throw away the .git directory, then do "git init" and "git annex init" and then "git annex add ." ?
− doc/forum/switching_to__47__from_direct_mode_while_assistant_is_running.mdwn
@@ -1,2 +0,0 @@-Is that really unsafe?  Because I did that and the switch to direct mode seemed to leave a lot of files still as links, and when I panicked and switched back to indirect mode, a whole lot of stuff seemed to have become unannexed and I reannexed it.-
@@ -1,27 +0,0 @@-I am running git-annex on Mac OS 10.9 and syncing to a Linux device that was attached to a Synology NAS.  Both were running December versions of git-annex.--While working on an application in IntelliJ my workspace.xml file disappeared.  It went from being a real file to being a symlink to a location that didn't exist.--The symlink looks like this: workspace.xml -> ../../../.git/annex/objects/M2/8W/SHA256E-s68106--90e9cc4f617c9034db1bf462d058b82c59ade0be58de1d3a3e2f8c02606631c2.xml/SHA256E-s68106--90e9cc4f617c9034db1bf462d058b82c59ade0be58de1d3a3e2f8c02606631c2.xml--I tried git-annex fsck and I get this message: ** No known copies exist of XXXXXXX/workspace.xml--"XXXXXXX" is a path I needed to obscure I can see it in the git-annex repo but it is a reference to a symlink that doesn't exist--It was mentioned in another thread ( http://git-annex.branchable.com/forum/git_annex_on_osx_only_creating_symlinks__63____63__/ ) that this could happen if I did a forced drop but I do not use git-annex on the command line.  I'm using the assistant and having it manage all of my files for me.--I tried looking at the log for it and it shows this:--<pre>-timmattison$ /Applications/git-annex.app/Contents/MacOS/git-annex log XXXXXXX/.idea/workspace.xml -- 2014-01-03 19:49:58 XXXXXXX/.idea/workspace.xml | d6747880-b355-4d41-b4e5-d1ad3afcb4a5 -- timmattison@MacBook-Pro.local:~/Desktop/annex-+ 2014-01-03 17:08:32 XXXXXXX/.idea/workspace.xml | d6747880-b355-4d41-b4e5-d1ad3afcb4a5 -- timmattison@MacBook-Pro.local:~/Desktop/annex-(Recording state in git...)-</pre>--So I can see that the git-annex thinks the file was deleted but what really happened is that IntelliJ just modified it.  workspace.xml files are modified very often when working in IntelliJ.--Is this a known bug that has been fixed in the new version (2013-12-30 or later)?--Thanks,-Tim
− doc/install/OSX/MacPorts/comment_3_47a77a03040fe628109bd54f82f9ad7a._comment
@@ -1,17 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlDDW-g2WLLsLpcnCm4LykAquFY_nwbIrU"- nickname="Daniel"- subject="comment 3"- date="2013-01-15T15:22:43Z"- content="""-Installing via the MacPorts method. I ran into this error.--    \"_locale_charset\", referenced from: _localeEncoding in libHSbase-4.5.1.0.a(PrelIOUtils.o) -    ld: symbol(s) not found for architecture x86_64--I was able to solve and get git-annex to build buy providing the --extra-lib-dirs parameter--    cabal install c2hs git-annex --bindir=$HOME/bin --extra-lib-dirs=/usr/lib--Cheers, [Daniel Wozniak](http://woz.io)-"""]]
− doc/install/OSX/porting/comment_10_cd2120552ef894a37933b328136fa4cc._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0"- nickname="Pere"- subject="Segmentation Fault"- date="2013-01-19T16:10:08Z"- content="""-I guess my adventure ends here. :'(-"""]]
− doc/install/OSX/porting/comment_11_740fa80e2e54e6fb570f820ff1f56440._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmyFvkaewo432ELwtCoecUGou4v3jCP0Pc"- nickname="Eric"- subject="Updating to latest build"- date="2013-01-25T06:05:35Z"- content="""-What is the appropriate way to update to the latest build of git-annex using cabal?-"""]]
− doc/install/OSX/porting/comment_12_a84028080578a8b60115b6c4ef823627._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0"- nickname="Pere"- subject="git annex on Snow Leopard"- date="2013-01-25T14:36:52Z"- content="""-Is there any way I can try to solve or by-pass the Segmentation Fault I commeted before? -"""]]
− doc/install/OSX/porting/comment_13_d6f1db401858ffea23c123db49f5b296._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.3.125"- subject="comment 13"- date="2013-02-05T19:46:29Z"- content="""-@eric `cabal update && cabal upgrade git-annex`-"""]]
− doc/install/OSX/porting/comment_14_035f856923276b0edad879e196e94097._comment
@@ -1,9 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmCmNS-oUgYfNg85-LPuxzTZJUp0sIgprM"- nickname="Jonas"- subject="more homebrew"- date="2013-02-16T19:46:47Z"- content="""-i had macports installed. then i installed brew, instaled haskell via brew. i needed to set -    PATH=$HOME/bin:/usr/local/bin:$PATH-"""]]
− doc/install/OSX/porting/comment_15_336e0acb00e84943715e69917643a69e._comment
@@ -1,35 +0,0 @@-[[!comment format=mdwn- username="https://launchpad.net/~wincus"- nickname="Juan Moyano"- subject="git annex on Snow Leopard"- date="2013-03-26T16:02:54Z"- content="""-I'm having the same issue as @Pere, with a newer version of DAV :(--cabal: Error: some packages failed to install:-DAV-0.3.1 failed during the building phase. The exception was:-ExitFailure 11-git-annex-4.20130323 depends on shakespeare-css-1.0.3 which failed to install.-persistent-1.1.5.1 failed during the building phase. The exception was:-ExitFailure 11-persistent-template-1.1.3.1 depends on persistent-1.1.5.1 which failed to-install.-shakespeare-css-1.0.3 failed during the building phase. The exception was:-ExitFailure 11-yesod-1.1.9.2 depends on shakespeare-css-1.0.3 which failed to install.-yesod-auth-1.1.5.3 depends on shakespeare-css-1.0.3 which failed to install.-yesod-core-1.1.8.2 depends on shakespeare-css-1.0.3 which failed to install.-yesod-default-1.1.3.2 depends on shakespeare-css-1.0.3 which failed to-install.-yesod-form-1.2.1.3 depends on shakespeare-css-1.0.3 which failed to install.-yesod-json-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install.-yesod-persistent-1.1.0.1 depends on shakespeare-css-1.0.3 which failed to-install.-yesod-static-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install.----*Any ideas?*---"""]]
− doc/install/OSX/porting/comment_16_1befafa862b7d07b1f6e57c0182497cf._comment
@@ -1,36 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc"- nickname="Bret"- subject="Snow Leopard Issues"- date="2013-04-14T20:17:17Z"- content="""-I was able to build snow leopard completely for the first time over last night (it took a very long time to build all the tools and dependancies).  Woohoo!--The way I was able to fully build on a 32-bit 10.6 machine was this--1. Delete ~/.ghc and ~/.cabal.  They were full of random things and were causing problems.-2. `brew uninstall ghc and haskell-platform`-3. `brew update`-4. `brew install git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2`-5. `brew upgrade git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2` (Some of these were already installed/up to date.-6. `brew link libxml2`-7. `brew install haskell-platform`  (This takes a long, long time).-8. `cabal update` (assuming you have added `~/.cabal/bin` to your path-9. `cabal install cablal-install`-10. `cabal install c2hs`-11. `cabal install git-annex`---It also appears to be running fairly smoothly than it had in the past on a 32-bit SL system.  Thats also neat.  --The problem is that it seems to not really work as git annex though, probably due to the error relating you get when you start up the webapp:-Running-`git annex webapp` -The browser starts up, and I get 3 of these errors:-`Watcher crashed: Need at least OSX 10.7.0 for file-level FSEvents`--Pairing with a local computer appears to work to systems running 10.7, but when you complete the process, they never show up in the repository list.---Also on a side note, when running `git annex webapp` it triggers the opening of an html file in whatever the default html file handler is.  I edit a lot of html, so for me that is usually a text editor.  I had to change the file handler to open html files with my web browser for the `git annex webapp` to actually work.  Is there a way to change that so that `git annex webapp` uses the default web browser for the system rather than the default html file handler?-"""]]
− doc/install/OSX/porting/comment_17_19c08b2c6c2c5cd88bf96d2bcbbd9055._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 17"- date="2013-04-16T20:31:10Z"- content="""-@Bret, the assistant relies on FSEvents pretty heavily. It seems to me your best bet is to upgrade OSX to a version that supports FSEvents.--You can certainly use the rest of git-annex on Snow Leopard without FSEvents.-"""]]
− doc/install/OSX/porting/comment_18_537fad5d8854e765499d47602d1ab398._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc"- nickname="Bret"- subject="Can't update"- date="2013-04-18T00:58:19Z"- content="""-The laptop is one of the first macbook pro's with a 32 bit chip, which apple dropped support for in 10.7, so the furthest it can update to is 10.6.x. :(-"""]]
− doc/install/OSX/porting/comment_19_18d4377f4ded5604d395d73783ba82c9._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://edheil.wordpress.com/"- ip="99.54.57.201"- subject="comment 19"- date="2013-04-18T02:05:34Z"- content="""-sounds like a prime candidate for a nice lightweight linux distro ;)-"""]]
− doc/install/OSX/porting/comment_22_6b5f44a98f9d37a1c6ecfe19a60fe6c5._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"- nickname="Andrew"- subject="comment 22"- date="2013-07-25T02:19:53Z"- content="""-Rather than specifying --bindir on the command line for cabal, I edited my ~/.cabal/config to add this line:--    symlink-bindir: /usr/local/bin--This installs the binaries to ~/.cabal/bin but symlinks them into /usr/local/bin alongside the links that homebrew installs. Additionally, I symlinked /usr/local/bin/git-annex-shell to /usr/local/bin/git-annex which made things work great from remote hosts via ssh.-"""]]
− doc/install/OSX/porting/comment_23_3d82a270dd4b0159f4aab5675166e1e3._comment
@@ -1,30 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmL8pteP2jbYJUn1M3CbeLDvz2SWAA1wtg"- nickname="Kristian"- subject="Build failure using Haskel Platform"- date="2013-09-15T18:49:01Z"- content="""-I get this error when I try to build git-annex using \"cabal install git-annex\"--    [ 34 of 347] Compiling Utility.Misc     ( Utility/Misc.hs, dist/build/git-annex/git-annex-tmp/Utility/Misc.o )-    [ 35 of 347] Compiling Utility.Process  ( Utility/Process.hs, dist/build/git-annex/git-annex-tmp/Utility/Process.o )-    [ 36 of 347] Compiling Utility.Network  ( Utility/Network.hs, dist/build/git-annex/git-annex-tmp/Utility/Network.o )-    [ 37 of 347] Compiling Utility.SRV      ( Utility/SRV.hs, dist/build/git-annex/git-annex-tmp/Utility/SRV.o )-    -    Utility/SRV.hs:70:54:-        Couldn't match expected type `Maybe-                                        [(Int, Int, Integer, B8.ByteString)]'-                    with actual type `Either-                                        dns-1.0.0:Network.DNS.Internal.DNSError-                                        [(Int, Int, Int, dns-1.0.0:Network.DNS.Internal.Domain)]'-        In the third argument of `maybe', namely `r'-        In the second argument of `($)', namely-          `maybe [] (orderHosts . map tohosts) r'-        In a stmt of a 'do' block:-          return $ maybe [] (orderHosts . map tohosts) r-    Failed to install git-annex-4.20130909-    cabal: Error: some packages failed to install:-    git-annex-4.20130909 failed during the building phase. The exception was:-    ExitFailure 1--"""]]
− doc/install/OSX/porting/comment_24_b9d3563a2cc3d769f27876e028dc344d._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.152.108.128"- subject="comment 24"- date="2013-09-17T15:56:17Z"- content="""-@Kristian, a new version of the DNS library has caused this. A workaround is to pass `-f-DNS` to the cabal command.--I am in the process of adding support for the new DNS library version in git now.--By the way, please [[file_a_bug|bugs]] if you have a big ugly looking build failure like that, so as to not clutter up this page.-"""]]
− doc/install/OSX/porting/comment_27_2a60108a440231ba83f5a54b6bcc5488._comment
@@ -1,14 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U"- nickname="Carlo"- subject="comment 27"- date="2013-10-16T09:40:23Z"- content="""-The [FSevents framework itself has been around since leopard](http://arstechnica.com/apple/2007/10/mac-os-x-10-5/7/).--[This fsevents wrapper project](https://github.com/rastersize/CDEvents) supports snow leopard and even leopard, maybe it will provide some clues on how it was done.--I'm guessing it would be worth it, [snow leopard is still the most popular OSX as of April](http://www.patentlyapple.com/patently-apple/2013/04/snow-leopard-remains-the-most-popular-version-of-os-x.html). From my own experience, snow leopard is a huge life extender for 2+ year old hardware. Lion just makes them sluggishly painful to use.--Maybe someone could volunteer an SL machine for remote development? Sorry, mine are tied down :(-"""]]
− doc/install/OSX/porting/comment_27_d453510b9bb62072a4c663206c12c8a4._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="64.134.31.139"- subject="comment 27"- date="2013-10-16T15:14:53Z"- content="""-The git-annex assistant uses **file level** FSevents to detect which files have been changed. Would it be possible to make it work with older versions that don't provide file-level events? Probably. The code for BSD kqueue deals with similar limitations in needing to scan the directory to find the files that actually changed. If someone cares about old versions of OSX and wants to do that work I'll happily support you.-"""]]
− doc/install/OSX/porting/comment_28_0970bfd63137ea48701dff6aea1b4bcb._comment
@@ -1,18 +0,0 @@-[[!comment format=mdwn- username="http://alan.petitepomme.net/"- nickname="Alan Schmitt"- subject="dbus support?"- date="2013-10-18T08:24:11Z"- content="""-Hello,--I just compiled git-annex using cabal on OS X, and I see there is no dbus support:--    Assistant/Threads/NetWatcher.hs:26:0:-         warning: #warning Building without dbus support; will poll for network connection changes-    -    Assistant/Threads/MountWatcher.hs:33:0:-         warning: #warning Building without dbus support; will use mtab polling--Is this problematic? I see I can install dbus using homebrew. If I do so, will I have dbus support (after recompiling git-annex)?-"""]]
− doc/install/OSX/porting/comment_29_8622ed56c6a8034c20fb311418d94003._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U"- nickname="Carlo"- subject="comment 29"- date="2013-10-18T15:58:59Z"- content="""-I think I dragged you out of dev mode for commenting unnecessarily, sorry about that. Apparently, [Lion](http://www.redmondpie.com/os-x-lion-vs-os-x-snow-leopard-head-to-head-performance-showdown/) and [Mountain Lion are fine on older hardware](http://apple.stackexchange.com/questions/58453/will-mountain-lion-make-an-older-computer-run-faster-or-slower). For a while [a daemon cause Lion slowdowns for a day after upgrade](https://discussions.apple.com/message/15719036) for a while, which was enough to cause a reputation.-"""]]
− doc/install/OSX/porting/comment_30_ce58633ef5b2f8f4caa7e626358f33be._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="64.134.31.139"- subject="comment 30"- date="2013-10-19T15:31:45Z"- content="""-@Alan you don't need to install dbus on OSX. The polling code will work. On the other hand if you'd like to experiment with installing dbus and report back, perhaps it's worth a try. It's nice when the git-annex assistant can instantly detect when drives are plugged in, and then the network connection changes and react to it. On Linux, dbus gives it that capability.-"""]]
− doc/install/OSX/porting/comment_31_09084a7b3cf06bfa3add0f4991476ffe._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://alan.petitepomme.net/"- nickname="Alan Schmitt"- subject="dbus and homebrew"- date="2013-10-20T17:25:04Z"- content="""-I'm trying to build git-annex with dbus support, and even though I installed dbus (through homebrew), at the end of compilation I get the warning about \"building without dbus\". Is there something special I need to do for git-annex to see I have installed dbus?--(Also, it tells me at the beginning that I don't have gcrypt, but libgcrypt is installed.)-"""]]
− doc/install/OSX/porting/comment_32_a46d8e3e7795b9afb1e1c2be943d12af._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="64.134.31.139"- subject="comment 32"- date="2013-10-21T22:47:14Z"- content="""-You probably need to install libdbus dev stuff, and then the haskell dbus library. But it's certainly going to need code changes to make git-annex use dbus in any way on OSX, assuming there are even useful dbus events generated for network connections and drives being mounted on OSX.--It was saying \"gcrypt\" when it meant \"git-remote-gcrypt\".-"""]]
− doc/install/OSX/porting/comment_33_203a36322b3c453c05c8906c64e62e06._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://alan.petitepomme.net/"- nickname="Alan Schmitt"- subject="comment 33"- date="2013-10-23T11:39:51Z"- content="""-I installed the haskell DBus library, but it's still not picking it up. Is there some additional option to pass to cabal, or is it supposed to find it automatically?-"""]]
− doc/install/OSX/porting/comment_34_874ff01f27911baf6ef0f559d5d5f5a0._comment
@@ -1,27 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawn3rK4VDzxyhmrIc18z7F5OuXvEbUsgUac"- nickname="Srinath"- subject="build issue with brew technique on Darwin Kernel Version 13.0.0"- date="2014-02-15T02:17:16Z"- content="""-Following the Mac OS X brew instructions from the top of the board, I got the following error:--[5 of 5] Compiling Yesod            ( Yesod.hs, dist/build/Yesod.o )-In-place registering yesod-1.2.5...-Installing library in /Users/srinathv/.cabal/lib/yesod-1.2.5/ghc-7.6.3-Registering yesod-1.2.5...-Installed yesod-1.2.5-cabal: Error: some packages failed to install:-git-annex-5.20140210 depends on libxml-sax-0.7.4 which failed to install.-libxml-sax-0.7.4 failed during the configure step. The exception was:-ExitFailure 1-network-protocol-xmpp-0.4.5 depends on libxml-sax-0.7.4 which failed to-install.---Then I perused the comments and did:-$brew link libmxl2 --force-$cabal install git-annex --bindir=$HOME/bin--with success.  -"""]]
− doc/install/OSX/porting/comment_8_38d9c2eea1090674de2361274eab5b0e._comment
@@ -1,29 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0"- nickname="Pere"- subject="I couldn't install it on Snow Leopard"- date="2013-01-19T15:04:27Z"- content="""-Bad news, it looks like I'm not able to install git-annex to my machine: When I run--    sudo cabal install c2hs git-annex --bindir=$HOME/bin--I get the following error:--    cabal: Error: some packages failed to install:-    DAV-0.3 failed during the building phase. The exception was:-    ExitFailure 11-    git-annex-3.20130114 depends on yesod-core-1.1.7.1 which failed to install.-    yesod-1.1.7.2 depends on yesod-core-1.1.7.1 which failed to install.-    yesod-auth-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.-    yesod-core-1.1.7.1 failed during the building phase. The exception was:-    ExitFailure 11-    yesod-default-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.-    yesod-form-1.2.0.2 depends on yesod-core-1.1.7.1 which failed to install.-    yesod-json-1.1.2 depends on yesod-core-1.1.7.1 which failed to install.-    yesod-persistent-1.1.0.1 depends on yesod-core-1.1.7.1 which failed to-    install.-    yesod-static-1.1.1.2 depends on yesod-core-1.1.7.1 which failed to install.--What does *ExitFailure 11* mean?-"""]]
− doc/install/OSX/porting/comment_9_35bf3812db6f3ef25da9b3bc84f147c5._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.3.194"- subject="comment 9"- date="2013-01-19T16:02:35Z"- content="""-sig11 is a Segmentation Fault, probably from a C library used by DAV for HTTP in this case.-"""]]
− doc/install/fromsource/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.152.246.110"- subject="comment 10"- date="2013-07-27T17:49:07Z"- content="""-@Henning; see the [[OSX]] page for full installation instructions for OSX. Which include all the neccesary brew incantations.-"""]]
− doc/install/fromsource/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment
@@ -1,44 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlXEIT2PEAuHuInLP4UYVzWE0lceMYd2lA"- nickname="Gregor"- subject="Installation on tonidoplug"- date="2013-08-03T07:19:54Z"- content="""-I tried various ways to install git-annex on my [TonidoPlug](http://www.tonidoplug.com/).--System Info:--	root@TonidoPlug2:~# uname -a-	Linux TonidoPlug2 2.6.31.8-topkick1281p2-001-004-20101214 #1 Thu Jun 16 10:06:20 CST 2011 armv5tel GNU/Linux--`apt-get` didn't work.--	root@TonidoPlug2:~# apt-get install git-annex-	Reading package lists... Done-	Building dependency tree       -	Reading state information... Done-	E: Unable to locate package git-annex--The Linux standalone installation results in an error message like this, when calling `git-annex` (or `git annex`)--	~$ git-annex.linux/git-annex-	/home/gitolite/git-annex.linux/bin/git-annex: 1: Syntax error: \")\" unexpected--(git-annex.linux/bin/git-annex is a binary file and works fine on other distros)--When installing with cabal, I get the error message (tried as root and gitolite user)--	~$ cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"-	Resolving dependencies...-	cabal: cannot configure git-annex-4.20130802. It requires base >=4.5 && <4.8-	For the dependency on base >=4.5 && <4.8 there are these packages:-	base-4.5.0.0, base-4.5.1.0, base-4.6.0.0 and base-4.6.0.1. However none of-	them are available.-	base-4.5.0.0 was excluded because of the top level dependency base -any-	base-4.5.1.0 was excluded because of the top level dependency base -any-	base-4.6.0.0 was excluded because of the top level dependency base -any-	base-4.6.0.1 was excluded because of the top level dependency base -any--Any help is appreciated.-Thanks for providing git-annex. I started cleaning up my backups with it yesterday and really like it.-"""]]
− doc/install/fromsource/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="2001:4978:f:21a::2"- subject="comment 12"- date="2013-08-07T16:31:30Z"- content="""-The Linux standalone builds for i386 and amd64 will not work on Arm systems.--There are builds of git-annex for arm in eg, Debian. You should be able to use one of those if this system is running Debian. You may need to upgrade to eg, Debian stable, which includes git-annex.--It looks like you have an old and/or broken GHC compiler too. You could upgrade that to a newer version (eg from Debian stable) and build it that way, but it seems like the long way around if you have a Debian system there.-"""]]
− doc/install/fromsource/comment_13_3dac019cda71bf99878c0a1d9382323b._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlXEIT2PEAuHuInLP4UYVzWE0lceMYd2lA"- nickname="Gregor"- subject="TonidoPlug"- date="2013-08-09T17:46:28Z"- content="""-@Joey Thanks for the answer. I didn't want to mess around too much with the TonidoPlug. I am currently setting up a raspberry pi, which works fine. -"""]]
− doc/install/fromsource/comment_14_14b46470593f84f8c3768a91cb77bdab._comment
@@ -1,9 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlfIVXjkzrYE9qJAO2A0H7K6tKGMaSgc3U"- nickname="Daniel"- subject="Problems with cryptocipher"- date="2013-08-22T01:36:50Z"- content="""-I had problems following these directions on recent releases of Fedora/Ubuntu. The install attempts failed on cryptocipher-0.3.1, which I think came as a dependency of Yesod.-I was able to work around this by installing yesod-platform with cabal first, then installing git-annex.-"""]]
− doc/install/fromsource/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="77.247.181.162"- subject="git-annex assistant on Arm"- date="2013-08-23T03:07:11Z"- content="""-I'd like to use the assistant's power on a Raspberry Pi to build an always-on file/sync server. Is there a way to get the assistant running on Arm? I know there's a Debian package, but it's Version 3.20120629 and comes without the assistant. Has anyone ever successfully built a recent git-annex version on Arm? What would I need in order to do it myself? -"""]]
− doc/install/fromsource/comment_16_4faf214f97f9516898d7c17d743ef825._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.0.63"- subject="comment 16"- date="2013-08-23T17:37:52Z"- content="""-The git-annex assistant can easily be built on arm. But not the webapp. It's entirely possible to use the assistant without the webapp though; you just have to make the git repository and configure the remotes by hand, and then the assistant will sync them the same way the webapp does.--It is possible but very involved to build the webapp for arm. I do not anticipate doing it in the Debian package until ghc gets proper template haskell support for arm. See [[forum/Webapp_on_ARM]]-"""]]
− doc/install/fromsource/comment_17_2a9d6807a3a13815c824985521757167._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="77.247.181.162"- subject="comment 17"- date="2013-08-23T18:51:51Z"- content="""-Thanks for the quick answer. I will try to build git-annex with just the assistant, as you suggest, and once it works set up the server by hand as you suggest. --BTW: Awesome job you're doing with git-annex. I appreciate your enthusiasm.-"""]]
− doc/install/fromsource/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="96.47.226.20"- subject="git-annex assistant for the Raspberry Pi"- date="2013-09-04T03:58:37Z"- content="""-It took a while and a few tries, but I finally built the git-annex binary including the assistant on a Raspberry Pi. The build comes without the flags webapp, webdav, and dbus as these rely on a Template Haskell compiler that hasn't been ported to Arm architecture yet. --I put the binary up on Github in case anyone's interested: <https://github.com/tradloff/git-annex-RPi>-"""]]
− doc/install/fromsource/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment
@@ -1,44 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlu7K3h7Ry1uDAU_ERYGuqt0LoGNJqGuRo"- nickname="Nathan"- subject="Cabal installing git-annex on Ubuntu 12.04 Precise with GHC 7.6.3"- date="2013-09-25T22:39:04Z"- content="""-I now realize [there is a Ubuntu 12.04 Precise PPA with a current-version of-git-annex](http://git-annex.branchable.com/install/Ubuntu/), so that's-probably a better choice, but here's how I cabal isntalled git-annex.--1. Apt install non-cabal dependencies:--       sudo aptitude install c2hs libgsasl7-dev libxml2-dev--2. Manually cabal install yesod-platform to avoid the [cryptocipher problem -   mentioned above](-   http://git-annex.branchable.com/install/cabal/#comment-1807da37dc144b572b76aaf4b574bb54):--       cabal install yesod-platform--3. Cabal install git-annex with DNS flag disabled:--       cabal install git-annex -f\"-dns\"--I was getting this error building git-annex before disabling the DNS flag:--    Utility/SRV.hs:70:54:-        Couldn't match expected type `Maybe-                                        [(Int, Int, Integer, B8.ByteString)]'-                    with actual type `Either-                                        dns-1.0.0:Network.DNS.Internal.DNSError-                                        [(Int, Int, Int, dns-1.0.0:Network.DNS.Internal.Domain)]'-        In the third argument of `maybe', namely `r'-        In the second argument of `($)', namely-          `maybe [] (orderHosts . map tohosts) r'-        In a stmt of a 'do' block:-          return $ maybe [] (orderHosts . map tohosts) r--Looking at Utiltity/SRV.hs, it appears that disabling the DNS flag-just makes git annex use a different DNS library (ADNS), not-actually disable DNS lookups.--"""]]
− doc/install/fromsource/comment_20_0f553be2a4c666e3bed58b2bce549406._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlkA6XinbeOdnEDxEGQUWyjqPGh0kdMXr4"- nickname="Blake"- subject="Updating git-annex via cabal"- date="2013-10-09T21:21:22Z"- content="""-What is the best way to update git-annex and the dependencies via cabal? Just the `$ cabal install *` commands again?-"""]]
− doc/install/fromsource/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.4.22"- subject="comment 21"- date="2013-10-11T17:09:33Z"- content="""-If you run the \"cabal update\" command followed by the \"cabal install\" command it'll upgrade git-annex.-"""]]
− doc/install/fromsource/comment_22_2f27b78215f97ade1986ca806c634cb3._comment
@@ -1,16 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="96.44.189.100"- subject="&quot;Could not find module Crypto.Hash&quot; error when building git-annex "- date="2013-10-21T19:55:12Z"- content="""-Lately I get this error message when trying to build git-annex-v4.20131002:--    Utility/Hash.hs:7:8:-        Could not find module `Crypto.Hash'-        Perhaps you meant-    	  Crypto.HMAC (needs flag -package crypto-api-0.10.2)-        Use -v to see a list of the files searched for.--crypto-api-0.10.2 is installed as a debian dev package. All the dependencies are met. I have no idea what's going on.  -"""]]
− doc/install/fromsource/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="64.134.31.139"- subject="comment 23"- date="2013-10-21T22:09:05Z"- content="""-git-annex needs cryptohash version 0.10.0 or greater. You appear to have an old version. You can cabal `configure -f-CryptoHash` if it's for some reason failing to disable the cryptohash support despite the declared dependency not being met.-"""]]
− doc/install/fromsource/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="37.130.227.133"- subject="comment 24"- date="2013-10-22T17:55:32Z"- content="""-I fixed the error by installing a newer version of cryptohash. Thanks for pointing out the culprit. -"""]]
− doc/install/fromsource/comment_25_8a7664e6f9271718dc607a0782366c5b._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="141.138.141.208"- subject="Bad version on Hackage"- date="2013-10-30T18:56:25Z"- content="""-Quick note: The latest version in the Hackage repository (git-annex-4.20131024) fails to build, due to a faulty version of Assistant/Threads/Cronner.hs. -"""]]
− doc/install/fromsource/comment_26_bd455c732639728bce2bfc39e32871d2._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.47"- subject="comment 26"- date="2013-11-01T16:33:25Z"- content="""-@RaspberryPie that only affected builds without the webapp, in any case it's fixed now.-"""]]
− doc/install/fromsource/comment_27_c080e9239b6eec88d329c28da7bb4141._comment
@@ -1,17 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="37.221.160.203"- subject="comment 27"- date="2013-11-02T12:52:18Z"- content="""-Okay, the error doesn't show up anymore. I didn't even get to Cronner though, because this time I got a different error:--    Assistant/Alert.hs:195:20:-        Couldn't match expected type `Assistant ()' with actual type `()'-        Expected type: Maybe Remote -> Assistant ()-          Actual type: Maybe Remote -> ()-        In the expression: noop-        In an equation for `notFsckedNudge': notFsckedNudge _ = noop--This is from trying to compile 4.20131101 with `-f\"-webapp -webdav\"`-"""]]
− doc/install/fromsource/comment_28_15951dd070a675300420eea137a28ef9._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.47"- subject="comment 28"- date="2013-11-02T17:40:18Z"- content="""-Unfortunate about that. I've fixed it in git.--(It would be best to file bug reports about build failures to avoid cluttering up this page.)-"""]]
− doc/install/fromsource/comment_29_ac082dca67f4a29b06070c0283130f52._comment
@@ -1,39 +0,0 @@-[[!comment format=mdwn- username="robohack"- ip="24.67.98.78"- subject="cabal install failing due to problems building pcre-light-0.4"- date="2013-11-21T20:17:10Z"- content="""-After a fresh install of Haskell, and following the instructions above, I end up with the following rather bizarre and unexpected problem:--	$ cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"-	Resolving dependencies...-	Configuring pcre-light-0.4...-	Building pcre-light-0.4...-	Preprocessing library pcre-light-0.4...-	Base.hsc:103:18: error: pcre.h: No such file or directory-	Base.hsc: In function ‘main’:-	Base.hsc:402: error: ‘PCRE_ANCHORED’ undeclared (first use in this function)-	Base.hsc:402: error: (Each undeclared identifier is reported only once-	Base.hsc:402: error: for each function it appears in.)-	Base.hsc:405: error: ‘PCRE_AUTO_CALLOUT’ undeclared (first use in this function)--(followed by an error for every other macro that was expected to be defined in the header...)--	compiling dist/build/Text/Regex/PCRE/Light/Base_hsc_make.c failed (exit code 1)-	command was: /usr/bin/gcc -c dist/build/Text/Regex/PCRE/Light/Base_hsc_make.c -o dist/build/Text/Regex/PCRE/Light/Base_hsc_make.o -m64 -fno-stack-protector -m64 -fno-stack-protector -m64 -D__GLASGOW_HASKELL__=700 -Ddarwin_BUILD_OS -Ddarwin_HOST_OS -Dx86_64_BUILD_ARCH -Dx86_64_HOST_ARCH -I/sw/lib/ghc-7.0.4/bytestring-0.9.1.10/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/base-4.3.1.0/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include/-	Failed to install pcre-light-0.4-	cabal: Error: some packages failed to install:-	git-annex-3.20120230 depends on pcre-light-0.4 which failed to install.-	pcre-light-0.4 failed during the building phase. The exception was:-	ExitFailure 1--This is a somewhat older Mac OS X 10.6.8 system.--I do have PCRE already installed via Fink, and pcre.h is in /sw/include.  I see other -I/sw/... things in the compile command above, but obviously /sw/include is not one of them.--Any clues for me?--(Why the heck does git-annex need pcre in particular anyway???  I saw another regex library get installed earlier somewhere in this (massive) process.)--"""]]
− doc/install/fromsource/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment
@@ -1,35 +0,0 @@-[[!comment format=mdwn- username="robohack"- ip="24.67.98.78"- subject="hmmm... ok, the PCRE problem was odd, but now this:"- date="2013-11-21T20:30:54Z"- content="""-The PCRE problem is solved trivially in my case with a couple more cabal install options, though the need for these seems oddly dissatisfying given the reams of other stuff that was successfully built and installed without these options.--Now however I seem to have encountered a deeper problem:--	$ cabal install git-annex --bindir=$HOME/bin --extra-include-dirs=/sw/include --extra-lib-dirs=/sw/lib               -	Resolving dependencies...-	[1 of 1] Compiling Main             ( /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/Setup.hs, /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/dist/setup/Main.o )-	Linking /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/dist/setup/setup ...-	hsc2hs Utility/StatFS.hsc-	perl -i -pe 's/^{-# INCLUDE.*//' Utility/StatFS.hs-	ghc -O2 -Wall -ignore-package monads-fd --make configure-	-	Utility/StatFS.hsc:54:8:-	    Could not find module `GHC.Foreign':-	      Use -v to see a list of the files searched for.-	make: *** [Build/SysConfig.hs] Error 1-	Configuring git-annex-3.20120230...-	Building git-annex-3.20120230...-	Preprocessing executable 'git-annex' for git-annex-3.20120230...-	-	Git/Version.hs:11:18:-	    Could not find module `Build.SysConfig':-	      Use -v to see a list of the files searched for.-	Failed to install git-annex-3.20120230-	cabal: Error: some packages failed to install:-	git-annex-3.20120230 failed during the building phase. The exception was:-	ExitFailure 1--"""]]
− doc/install/fromsource/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment
@@ -1,22 +0,0 @@-[[!comment format=mdwn- username="robohack"- ip="24.67.98.78"- subject="a different error trying to build from the git repo...."- date="2013-11-21T21:14:54Z"- content="""-I'm using the ghc7.0 branch because Fink's GHC is still at 7.0.4....--	$ cabal build                                -	Building git-annex-3.20120523...-	Preprocessing executable 'git-annex' for git-annex-3.20120523...-	[ 78 of 163] Compiling Utility.Url      ( Utility/Url.hs, dist/build/git-annex/git-annex-tmp/Utility/Url.o )-	-	Utility/Url.hs:111:88:-	    Couldn't match expected type `Maybe URI' with actual type `URI'-	    In the second argument of `fromMaybe', namely-	      `(newURI `relativeTo` u)'-	    In the expression: fromMaybe newURI (newURI `relativeTo` u)-	    In an equation for `newURI_abs':-	        newURI_abs = fromMaybe newURI (newURI `relativeTo` u)--"""]]
− doc/install/fromsource/comment_32_1d34c294486c85b1149675fa5861ae35._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.64"- subject="comment 32"- date="2013-11-22T16:27:36Z"- content="""-@robohack, the ghc7.0 branch is not being maintained, and is so old I don't recommend it. To build it against current cabal you will probably need to version its dependency on network to an older version than 2.4.0. --Also, git-annex has not depended on pcre for a long time. But you're building thoroughly old version so get to trip over every bug that's been reported for the past 2 years..-"""]]
− doc/install/fromsource/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment
@@ -1,21 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawn3p4i4lk_zMilvjnJ9sS6g2nerpgz0Fjc"- nickname="Matthias"- subject="Build failure"- date="2014-03-20T09:10:44Z"- content="""-I followed the instructions and the invocation of--    cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"--resulted in the following error:--    Test.hs:107:41: Not in scope: `errMessage'-    Failed to install git-annex-5.20140306-    cabal: Error: some packages failed to install:-    git-annex-5.20140306 failed during the building phase. The exception was:-    ExitFailure 1--I used the Haskell Platform for Mac OS X (10.8)--"""]]
− doc/install/fromsource/comment_34_38451e751add6daf479b559c4b6a7c61._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://openid.stackexchange.com/user/a05bb829-932b-49f2-85a9-00dcda8b5e20"- nickname="Christian Pietsch"- subject="Re: Build failure"- date="2014-03-20T13:56:16Z"- content="""-I get exactly the same error message as Matthias when attempting the minimal Cabal install on openSUSE 12.2 (x86_64) Linux.-"""]]
− doc/install/fromsource/comment_35_4d44e4531e6686bd340f26836ad40026._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.102"- subject="comment 35"- date="2014-03-20T16:06:22Z"- content="""-The `errMessage` build failure is due to a new version of optparse-applicative. I've added support for it in git master.-"""]]
− doc/install/fromsource/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment
@@ -1,16 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkNcHu5T1Pxzl-r2co9vf6SxXYWubv2P04"- nickname="Matthew"- subject="I did indeed get problems on Ubuntu 13.04"- date="2014-06-25T01:01:43Z"- content="""-The issues I had were version mismatches when resolving dependencies of git-annex.--It seems that when you install haskell-platform package with apt-get, it installs a bunch of haskell dependencies as apt packages, yet those aren't needed for any other system packages.  So some people here who complain about version mismatches might not have intended to install any Haskell libraries with apt, they just come along for the ride by default.--I can't remember the exact ones, but I ended up uninstalling some of the stuff that gets auto-installed along with haskell-platform, and using cabal to build those.  Then all the git-annex dependencies worked.--Why 13.04 in this day and age?  Using Zentyal as a home server/gateway, and it currently runs on 13.04.--This method might not work if you installed other apt packages that _do_ need those apt-based Haskell libraries.   But if git-annex is all you need that uses the Haskell platform, might work.-"""]]
− doc/install/fromsource/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment
@@ -1,69 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmveNWaFIL1zEehHr_0416bKBzsul5tGlE"- nickname="Daniel"- subject="Install fails horribly"- date="2014-07-10T23:11:51Z"- content="""-```-lyriondesktop:/home/zilti/tmp # cabal install c2hs-Resolving dependencies...-Configuring c2hs-0.17.2...-Building c2hs-0.17.2...-Preprocessing executable 'c2hs' for c2hs-0.17.2...-[ 1 of 26] Compiling Data.DLists      ( src/Data/DLists.hs, dist/build/c2hs/c2hs-tmp/Data/DLists.o )-[ 2 of 26] Compiling Control.StateTrans ( src/Control/StateTrans.hs, dist/build/c2hs/c2hs-tmp/Control/StateTrans.o )--src/Control/StateTrans.hs:77:1: Warning:-    Module `Prelude' does not export `catch'-[ 3 of 26] Compiling Data.Errors      ( src/Data/Errors.hs, dist/build/c2hs/c2hs-tmp/Data/Errors.o )-[ 4 of 26] Compiling Data.Attributes  ( src/Data/Attributes.hs, dist/build/c2hs/c2hs-tmp/Data/Attributes.o )-[ 5 of 26] Compiling Text.Lexers      ( src/Text/Lexers.hs, dist/build/c2hs/c2hs-tmp/Text/Lexers.o )-[ 6 of 26] Compiling Control.StateBase ( src/Control/StateBase.hs, dist/build/c2hs/c2hs-tmp/Control/StateBase.o )-[ 7 of 26] Compiling Data.NameSpaces  ( src/Data/NameSpaces.hs, dist/build/c2hs/c2hs-tmp/Data/NameSpaces.o )-[ 8 of 26] Compiling C2HS.C.Attrs     ( src/C2HS/C/Attrs.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Attrs.o )-[ 9 of 26] Compiling C2HS.C.Builtin   ( src/C2HS/C/Builtin.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Builtin.o )-[10 of 26] Compiling Paths_c2hs       ( dist/build/autogen/Paths_c2hs.hs, dist/build/c2hs/c2hs-tmp/Paths_c2hs.o )-[11 of 26] Compiling C2HS.Config      ( src/C2HS/Config.hs, dist/build/c2hs/c2hs-tmp/C2HS/Config.o )-[12 of 26] Compiling C2HS.Switches    ( src/C2HS/Switches.hs, dist/build/c2hs/c2hs-tmp/C2HS/Switches.o )-[13 of 26] Compiling C2HS.Version     ( src/C2HS/Version.hs, dist/build/c2hs/c2hs-tmp/C2HS/Version.o )-[14 of 26] Compiling System.CIO       ( src/System/CIO.hs, dist/build/c2hs/c2hs-tmp/System/CIO.o )-[15 of 26] Compiling Control.State    ( src/Control/State.hs, dist/build/c2hs/c2hs-tmp/Control/State.o )-[16 of 26] Compiling C2HS.State       ( src/C2HS/State.hs, dist/build/c2hs/c2hs-tmp/C2HS/State.o )-[17 of 26] Compiling C2HS.CHS.Lexer   ( src/C2HS/CHS/Lexer.hs, dist/build/c2hs/c2hs-tmp/C2HS/CHS/Lexer.o )--src/C2HS/CHS/Lexer.hs:612:16: Warning:-    Defined but not used: `lexeme'-[18 of 26] Compiling C2HS.CHS         ( src/C2HS/CHS.hs, dist/build/c2hs/c2hs-tmp/C2HS/CHS.o )-[19 of 26] Compiling C2HS.Gen.Header  ( src/C2HS/Gen/Header.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Header.o )-[20 of 26] Compiling C2HS.C.Trav      ( src/C2HS/C/Trav.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Trav.o )-[21 of 26] Compiling C2HS.C.Names     ( src/C2HS/C/Names.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Names.o )-[22 of 26] Compiling C2HS.C           ( src/C2HS/C.hs, dist/build/c2hs/c2hs-tmp/C2HS/C.o )-[23 of 26] Compiling C2HS.Gen.Monad   ( src/C2HS/Gen/Monad.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Monad.o )--src/C2HS/Gen/Monad.hs:227:10: Warning:-    Orphan instance: instance Read Ident-[24 of 26] Compiling C2HS.C.Info      ( src/C2HS/C/Info.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Info.o )-[25 of 26] Compiling C2HS.Gen.Bind    ( src/C2HS/Gen/Bind.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Bind.o )--src/C2HS/Gen/Bind.hs:971:43: Warning:-    In the use of `posColumn' (imported from Language.C.Data.Position):-    Deprecated: \"column number information is inaccurate in presence of macros - do not rely on it.\"--src/C2HS/Gen/Bind.hs:789:10: Warning:-    Orphan instance: instance Num CInteger-[26 of 26] Compiling Main             ( src/Main.hs, dist/build/c2hs/c2hs-tmp/Main.o )-Linking dist/build/c2hs/c2hs ...-Installing executable(s) in /root/.cabal/bin-Installed c2hs-0.17.2-lyriondesktop:/home/zilti/tmp # cabal install git-annex-Resolving dependencies...-Configuring gnuidn-0.2.1...-cabal: The program c2hs is required but it could not be found.-Failed to install gnuidn-0.2.1-cabal: Error: some packages failed to install:-git-annex-5.20140709 depends on gnuidn-0.2.1 which failed to install.-gnuidn-0.2.1 failed during the configure step. The exception was:-ExitFailure 1-network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.-```-"""]]
− doc/install/fromsource/comment_38_5c1e96221154a4ae4ebd636232044ced._comment
@@ -1,16 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.2"- subject="comment 38"- date="2014-07-11T18:30:55Z"- content="""-@Daniel, I suggest you either follow the instuctions above, or if you don't want to follow the instructions, follow the error messages. :P In this case, the instructions say to do:--> PATH=$HOME/bin:$PATH-> cabal install c2hs --bindir=$HOME/bin--Which is exactly to work around the problem that we can see in your transcript: `Installing executable(s) in /root/.cabal/bin` --Also, to reiterate the top of the page: If you are not comfortable tracking down and dealing with library build problems, installing git-annex with cabal is probably not the right choice for you!--"""]]
− doc/install/fromsource/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkftzaCvV7EDKVDfJhsQZ3E1Vn-0db516w"- nickname="Edward"- subject="GHC 7.8 Issue"- date="2014-08-20T20:06:01Z"- content="""-Just an FYI: I tried to \"cabal install --only-dependencies\" with GHC 7.8 and it fails because DAV-1.0.1 is pulling in lens-3.10.3 which is not compatible with GHC 7.8 due to changes in Typeable. --I don't have enough experience with cabal to figure out why it's not trying to use a newer version of lens.-"""]]
− doc/install/fromsource/comment_45_d9cccbb9620cc8218e72b5380fd89a05._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.22"- subject="no need for c2hs"- date="2014-09-16T19:28:09Z"- content="""-The c2hs mentioned in some of the above comments is not needed any longer; ghc 7.6.3 and newer come with a hsc2hs command that is used.-"""]]
− doc/install/fromsource/comment_46_954de34275d33bc4590927f911761563._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.22"- subject="comment 46"- date="2014-09-16T19:33:11Z"- content="""-Britt's comment is spot on, but git-annex tries pretty hard to work with lots of older versions of haskell libraries, as well as the latest and greatest. So it should be ok to install haskell libraries with apt-get and use them to build git-annex, as the (revised) instructions above show.--What tends not to work so well is use apt-get to install older versions of haskell libraries and then cabal install on top to add newer stuff. Gets complicated and I'd recommend not going there. The instructions above show using either apt-get or cabal to install the haskell libraries, but not both.-"""]]
− doc/install/fromsource/comment_47_6de25c1e450e1e3b1d18d2c76235ccb8._comment
@@ -1,7 +0,0 @@-[[!comment format=mdwn- username="thnetos"- subject="Where to start reading the source code?"- date="2014-12-15T22:04:06Z"- content="""-Do you have any recommendations for the overall haskell architecture of the project? Where to start looking if I want to read through the source code?-"""]]
− doc/install/fromsource/comment_48_9c08300c5d172ba9223042a00c8acb2b._comment
@@ -1,18 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""where to start reading the source code"""- date="2015-01-05T20:58:50Z"- content="""-@thnetos, great question!--Annex.hs is a key starting place, as it defines git-annex's main monad.-If you like learning code bases bottom-up, Types/* has files for-the main data types used in git-annex, such as Key and UUID and Remote and-GitConfig.--Command/* gets you the implementation of any particular git-annex command-you are interested in. Or Remote/* for any particular special remote.--I recommend running "make tags" and then your editor should be able to use-the tags file to bounce around in the source code.-"""]]
− doc/install/fromsource/comment_49_c8370525547b435d963a2c1192a21124._comment
@@ -1,93 +0,0 @@-[[!comment format=mdwn- username="dave@2ab82f485adf7e2ce787066e35f5f9789bff430b"- nickname="dave"- subject="apt-get build-dep fails"- date="2015-07-09T00:07:32Z"- content="""-    hobbes@namagiri:~/src$ sudo apt-get build-dep git-annex-    Reading package lists... Done-    Building dependency tree       -    Reading state information... Done-    E: Build-Depends dependency for git-annex cannot be satisfied because the package libghc-hamlet-dev cannot be found--Hmm, deprecated in favor of libghc-shakespear-dev, according to http://hackage.haskell.org/package/hamlet ...--    hobbes@namagiri:~/src/apt-get-source-git-annex$ grep -iR build-depends.*hamlet|tr , \\n-    git-annex_5.20141125.dsc:Build-Depends: debhelper (>= 9)-     ghc (>= 7.4)-     cabal-install-     libghc-mtl-dev (>= 2.1.1)-     libghc-missingh-dev-     libghc-data-default-dev-     libghc-hslogger-dev-     libghc-pcre-light-dev-     libghc-sha-dev-     libghc-cryptohash-dev-     libghc-dataenc-dev-     libghc-utf8-string-dev-     libghc-hs3-dev (>= 0.5.6)-     libghc-dav-dev (>= 1.0) [amd64 i386 kfreebsd-amd64 kfreebsd-i386 powerpc]-     libghc-quickcheck2-dev-     libghc-monad-control-dev (>= 0.3)-     libghc-exceptions-dev (>= 0.6)-     libghc-transformers-dev-     libghc-unix-compat-dev-     libghc-dlist-dev-     libghc-uuid-dev-     libghc-json-dev-     libghc-aeson-dev-     libghc-ifelse-dev-     libghc-bloomfilter-dev-     libghc-edit-distance-dev-     libghc-hinotify-dev [linux-any]-     libghc-stm-dev (>= 2.3)-     libghc-dbus-dev (>= 0.10.3) [linux-any]-     libghc-fdo-notify-dev (>= 0.3) [linux-any]-     libghc-yesod-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]-     libghc-yesod-static-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]-     libghc-yesod-default-dev [i386 amd64 kfreebsd-amd64 powerpc]-     libghc-hamlet-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]-     libghc-shakespeare-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]-     libghc-clientsession-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]-     libghc-warp-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]-     libghc-warp-tls-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]-     libghc-wai-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]-     libghc-wai-extra-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]-     libghc-securemem-dev-     libghc-byteable-dev-     libghc-dns-dev-     libghc-case-insensitive-dev-     libghc-http-types-dev-     libghc-http-conduit-dev-     libghc-blaze-builder-dev-     libghc-crypto-api-dev-     libghc-network-multicast-dev-     libghc-network-info-dev [linux-any kfreebsd-any]-     libghc-safesemaphore-dev-     libghc-network-protocol-xmpp-dev (>= 0.4.3-1+b1)-     libghc-gnutls-dev (>= 0.1.4)-     libghc-xml-types-dev-     libghc-async-dev-     libghc-feed-dev (>= 0.3.9.2)-     libghc-regex-tdfa-dev [!mipsel !s390]-     libghc-regex-compat-dev [mipsel s390]-     libghc-tasty-dev (>= 0.7) [!sparc]-     libghc-tasty-hunit-dev [!sparc]-     libghc-tasty-quickcheck-dev [!sparc]-     libghc-tasty-rerun-dev [!sparc]-     libghc-optparse-applicative-dev [!sparc]-     lsof [!kfreebsd-i386 !kfreebsd-amd64 !hurd-any]-     ikiwiki-     perlmagick-     git (>= 1:2.0)-     rsync-     wget-     curl-     openssh-client-     git-remote-gcrypt (>= 0.20130908-6)-     llvm-3.4 [armel armhf]-    -I think that's the bug, right there: *git-annex_5.20141125.dsc*.--I hope this helps.-"""]]
− doc/install/fromsource/comment_50_c1ce6084ba1e96afa30e18f0f6433aa4._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 50"""- date="2015-07-15T15:54:15Z"- content="""-Yes, Debian has a by now very outdated version of git-annex.--You can clone git-annex's git repo and build a debian package from there;-it's been updated for these changes.-"""]]
− doc/special_remotes/S3/comment_10_c366f020c9b97a365e21878a33360079._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 10"- date="2013-05-23T20:04:03Z"- content="""-You can enable a special remote on a clone by running `git annex enableremote $name`, where $name is the name you used to originally create the special remote. (Older versions of git-annex used `git annex initremote` to enable the special remote on the clone.)--(Just in case, I have verified that embedcreds does cause the cipher= to be stored in the remote.log. It does.)-"""]]
− doc/special_remotes/S3/comment_11_c1da387e082d91feec13dde91ccb111a._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="basak"- ip="2001:8b0:1c8::2"- subject="comment 11"- date="2013-05-24T09:38:40Z"- content="""-Thanks Joey - initremote on my slightly older version appears to work. I'll use `enableremote` when I can.--> (Just in case, I have verified that embedcreds does cause the cipher= to be stored in the remote.log. It does.)--This doesn't do what I expect. The documentation suggests that my S3 _login_ credentials would be stored. I understand that the cipher would be stored; but isn't this a separate concept? Instead, I'm being asked to set `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`; my understanding was that git-annex will keep them in the repository for me, so that I don't have to set them after running `initremote` before cloning. This works, apart from surviving the cloning. I'm using `encryption=shared`; does this affect anything? Or am I using a version of git-annex (3.20121112ubuntu3) that's too old?-"""]]
− doc/special_remotes/S3/comment_12_59c3ecab7dbc8be53258460473cac21c._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 12"- date="2013-05-24T15:33:12Z"- content="""-Ah -- No, your AWS creds are not stored. While some other special remotes, like webdav, can store all necessary credentials, it's not done for AWS. I didn't want git-annex to be responsible for someone accidentially publishing their AWS creds to their friends, since that could cost them a lot of money.-"""]]
− doc/special_remotes/S3/comment_13_0789a21d980825188bb09f7fc8bba8be._comment
@@ -1,33 +0,0 @@-[[!comment format=mdwn- username="basak"- ip="2001:8b0:1c8::2"- subject="comment 13"- date="2013-05-24T15:47:14Z"- content="""-That's not what the documentation here says! It even warns me: \"Think carefully about who can access your repository before using embedcreds without gpg encryption.\"--My use case:--Occasional use of EC2, and a desire to store some persistent stuff in S3, since the dataset is large and I have limited bandwidth. I want to destroy the EC2 instance when I'm not using it, leaving the data in S3 for later.--If I use git-annex to manage the S3 store, then I get the ability to clone the repository and destroy the instance. Later, I can start a new instance, push the repo back up, and would like to be able to then pull the data back out of S3 again.--I'd really like the login credentials to persist in the repository (as the documentation here says it should). Even if I have to add a --yes-i-know-my-s3-credentials-will-end-up-available-to-anyone-who-can-see-my-git-repo flag. This is because I use some of my git repos to store private data, too.--If I use an Amazon IAM policy as follows, I can generate a set of credentials that are limited to access to a particular prefix of a specific S3 bucket only - effectively creating a sandboxed area just for git-annex:--    { -      \"Statement\": [{\"Sid\": \"Stmt1368780615583\",-                     \"Action\": [\"s3:GetObject\", \"s3:PutObject\", \"s3:DeleteObject\"],-                     \"Effect\": \"Allow\",-                     \"Resource\": [\"arn:aws:s3:::bucketname/prefix/*\"]}-                    ],-      \"Statement\": [{\"Sid\": \"Stmt1368781573129\",-                    \"Action\": [\"s3:GetBucketLocation\"],-                    \"Effect\": \"Allow\",-                    \"Resource\": [\"arn:aws:s3:::bucketname\"]}-                   ]-    }--Doing this means that I have a different set of credentials for every annex, so it would be really useful to be able have these stored and managed within the repository itself. Each set is limited to what the annex stores, so there is no bigger compromise I have to worry about apart from the compromise of the data that the annex itself manages.-"""]]
− doc/special_remotes/S3/comment_14_29574a51d5831c51e2e765eb2c06e567._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 14"- date="2013-05-24T16:45:25Z"- content="""-I apologise for incorrect information. I was thinking about defaults when using the webapp.--I have verified that embedcreds=yes stores the AWS creds, always.---"""]]
− doc/special_remotes/S3/comment_15_ceb9048c743135f6beca57a23505f0a3._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawne_amN4fko4p5cRY_9EYwaYuJKNn7LRio"- nickname="Tobias"- subject="different s3 storage URLs"- date="2013-08-23T08:59:32Z"- content="""-Is it possible to change the S3 endpoint hosts? I'm running a radosgw with S3 support which I'd like to define as S3 remote for git-annex-"""]]
− doc/special_remotes/S3/comment_16_7b79f8b5ef88a2775d61b5ac5774d3e0._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.0.63"- subject="comment 16"- date="2013-08-23T17:39:56Z"- content="""-Yes, you can specify the host to use when setting up the remote. It's actually documented earlier on this very page, if ou search for \"host\". Any S3 compatabile host will probably work -- the Internet Archive's S3 does, for example.-"""]]
− doc/special_remotes/S3/comment_17_52d3510016c099d083553f9b3fa40db9._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlc-3pdibcizrdz4WmZooECL0k6AvM1cWc"- nickname="Joe"- subject="S3 file/folder names"- date="2015-02-19T22:22:26Z"- content="""-Is there a way to tell the S3 backend to store the files as they are named locally, instead of by hashed content name? i.e., I've annexed foo/bar.txt and annex puts it in s3 as mybucket.name/foo/bar.txt instead of mybucket.name/GPGHMACSHA1-random.txt--Or should I just write a script to s3cmd sync my annex, and add the S3/cloudfront distribution URL as a web remote?-"""]]
− doc/special_remotes/S3/comment_18_0dcb84048563fc9e45b66ca8f365f320._comment
@@ -1,7 +0,0 @@-[[!comment format=mdwn- username="darkfeline"- subject="Sharing S3 bucket between repos"- date="2015-10-09T01:16:25Z"- content="""-What are the implications of sharing an S3 remote/bucket between two repositories with using fileprefix?  Can this be used to \"deduplicate\" files shared between repositories?-"""]]
− doc/special_remotes/S3/comment_19_9d0d622b6202698f09eb06c097579fbb._comment
@@ -1,19 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 19"""- date="2015-10-12T17:10:21Z"- content="""-@darkfeline I suppose you're talking about two completely disjoint git-repositories, and not two clones of the same parent repo.--If you don't use fileprefix, and have the same file in two disjoint-repositories, git-annex will pick the same key for it in both cases, and-so you'll get deduplication, but only if you don't use different-fileprefixes.--And this will mostly work pretty well. The danger is, if you drop the file-from the S3 repo, because say, it's not used anymore in one repository,-then you're also removing it from the S3 repo as used by the other-repository. If that was the last copy of the file, that may not be what you-want.-"""]]
− doc/special_remotes/bup/comment_10_f78c1ed97d2e4c6ebffaa7482cfe0c9b._comment
@@ -1,23 +0,0 @@-[[!comment format=mdwn- username="http://sekenre.wordpress.com/"- nickname="sekenre"- subject="Synchronizing Bup repositories"- date="2013-05-07T16:46:34Z"- content="""-Hi All,--I managed to answer my questions above about copying changes between local bup repositories efficiently.--You run the following commands --    git annex copy . --to bup_repo_1                      # Uses bup split in the background (slow)-    rsync -av /mnt/repodisk1/repo/ /mnt/repodisk2/repo/ \-    --exclude=config --exclude=*.bloom --exclude=*.midx   # rsync without bup-specific indices (speed depends on delta between repositories)-    BUP_DIR=/mnt/repodisk2/repo/ bup midx -a && bup bloom # rebuild bup-specific indices on the target (this is extremely fast)-    git annex copy . --to bup_repo_2                      # Records file is now available in repo2 (also extremely fast)--Now `git annex whereis` will show the correct location and `git annex get <file> --from bup_repo_2` will work.--So far in my testing I haven't found any problems...--"""]]
− doc/special_remotes/bup/comment_11_b53bceb0058acf4d1ab12ea4853ee443._comment
@@ -1,24 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnAvbXOnK57sqgvZvxkbG74NUKBDwKDcuk"- nickname="Tim"- subject="bup location data not synced through annex assistant"- date="2013-05-15T15:08:54Z"- content="""-I set up 2 servers running git annex assistant, both with a ~/annex dir and an additional ~/annex-bup bup repo. There is no additional cloud repository.-For test, I added my /etc dir which uploaded correctly from server1, but which never arrived on server2--    bup@bup1:~/annex/etc$ git annex whereis updatedb.conf-    whereis updatedb.conf (3 copies) -  	    687d3a7f-4798-4dbe-8774-1785b8ab6b7d -- here (bup@bup1:~/annex)-   	    adfc1307-771f-40e9-b794-bae2e1f21b8b -- bup2-annex-bup-   	    e4e0ac0b-992a-4312-a4ac-fc8d3d9f7c0f -- bup1-annex-bup-    ok--    bup@bup2:~/annex/etc$ git annex whereis updatedb.conf-    whereis updatedb.conf (1 copy) -  	    687d3a7f-4798-4dbe-8774-1785b8ab6b7d -- bup1 (bup@bup1:~/annex)-    ok--As you can see, server 2 just doesn't know the data is already on it's own disk in it's local bup repo.-Is there a reason this data does not get synced? Should I set up a transfer repo?-"""]]
− doc/special_remotes/bup/comment_12_65d923226cf6120349d807c5c60f640c._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnAvbXOnK57sqgvZvxkbG74NUKBDwKDcuk"- nickname="Tim"- subject="my bad"- date="2013-05-15T15:39:31Z"- content="""-Sorry, looks like I did initremote twice on the same folder, instead of enableremote the second time...-"""]]
− doc/special_remotes/bup/comment_12_fca579678edde073716f099c767767e1._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkEYZEqLf3Aj_FGV7S0FvsMplmGqqb555M"- nickname="Sergiusz"- subject="bup-join local-arch/2014-12-03-235617 "- date="2014-12-04T19:38:07Z"- content="""-How can I restore the previous commit from bup archives created with bup-split? Yes, I know I can use bup-join local-arch~1 git notation, but I would like to use bup-join local-arch/2014-12-03-235617 (bup-ls local-arch results) ...but this method does not work ...--s.-"""]]
− doc/special_remotes/bup/comment_13_ce960bc69b27dfc2a233c9baa5b2cd2b._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="darkfeline@e6d098788a13ce41f3141a2dfc1bd31b401e83f0"- nickname="darkfeline"- subject="buprepo doesn't work properly"- date="2015-08-17T12:59:25Z"- content="""-The buprepo parameter doesn't seem to work properly, at least for local repos.  For example, I added a bup remote with buprepo=/media/hdd/bup, yet when I try to move files onto it, it still tries to use /home/foo/.bup (the default path).  I suppose git-annex should be setting the envvar BUP_DIR before calling bup?--I can do it manually like BUP_DIR=/media/hdd/bup git annex move --to hdd foo, but that almost seems to defeat the purpose...-"""]]
− doc/special_remotes/bup/comment_14_940b778f97377e83dc16439c0c7e5b38._comment
@@ -1,21 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 14"""- date="2015-08-19T18:30:16Z"- content="""-@darkfeline, setting buprepo= causes git-annex to run bup with -r. -You can verify this by using the --debug switch.--IIRC, bup still creates ~/.bup when used this way, but doesn't store the-contents of annexed files there. It uses it only to store some small index-files, which are also stored in the repo specified with -r. This seems-weird, but I don't think this is a bug on bup's part; it seems to-intentionally do that, using path names in ~/.bup that are constructed to-not conflict when -r is used with different repositories.-I suppose bup has a good reason to do this, though I don't know what the-reason is.--I can blow ~/.bup away, run "bup init" to make a fresh clean ~/.bup,-and then git-annex can still get the content of files from the buprepo=-repository. So, it seems that buprepo= is working ok.-"""]]
− doc/special_remotes/bup/comment_1_96179a003da4444f6fc08867872cda0a._comment
@@ -1,43 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkgbXwQtPQSG8igdS7U8l031N8sqDmuyvk"- nickname="Albert"- subject="Error with bup and gnupg"- date="2012-10-22T20:56:56Z"- content="""-Hello,--I get this error when trying to use git-annex with bup and gnupg:--<pre>-move importable_pilot_surveys.tar (gpg) (checking localaseebup...) (to localaseebup...) -Traceback (most recent call last):-  File \"/usr/lib/bup/cmd/bup-split\", line 133, in <module>-    progress=prog)-  File \"/usr/lib/bup/bup/hashsplit.py\", line 167, in split_to_shalist-    for (sha,size,bits) in sl:-  File \"/usr/lib/bup/bup/hashsplit.py\", line 118, in _split_to_blobs-    for (blob, bits) in hashsplit_iter(files, keep_boundaries, progress):-  File \"/usr/lib/bup/bup/hashsplit.py\", line 86, in _hashsplit_iter-    bnew = next(fi)-  File \"/usr/lib/bup/bup/helpers.py\", line 86, in next-    return it.next()-  File \"/usr/lib/bup/bup/hashsplit.py\", line 49, in blobiter-    for filenum,f in enumerate(files):-  File \"/usr/lib/bup/cmd/bup-split\", line 128, in <genexpr>-    files = extra and (open(fn) for fn in extra) or [sys.stdin]-IOError: [Errno 2] No such file or directory: '-'-</pre>---I was able to work-around this issue by altering /usr/lib/bup/cmd/bup-split (though I don't think its a bup bug) to just pull from stdin:--files = [sys.stdin]--on ~ line 128.--Any ideas? Also, do you think that bup's data-deduplication does anything when gnupg is enabled, i.e. is it just as well to use a directory remote with gnupg?--Thanks! Git annex rules!--Albert-"""]]
− doc/special_remotes/bup/comment_2_612b038c15206f9f3c2e23c7104ca627._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.0.23"- subject="comment 2"- date="2012-10-23T20:01:43Z"- content="""-@Albert, thanks for reporting this bug (but put them in [[bugs]] in future please).--This is specific to using the bup special remote with encryption. Without encryption it works. And no, it won't manage to deduplicate anything that's encrypted, as far as I know. --I think bup-split must have used - for stdin in the past, but now, it just reads from stdin when no file is specified, so I've updated git-annex.-"""]]
− doc/special_remotes/bup/comment_3_1186def82741ddab1ade256fb2e59e6f._comment
@@ -1,17 +0,0 @@-[[!comment format=mdwn- username="http://sekenre.wordpress.com/"- nickname="sekenre"- subject="Bup remotes in git-annex assistant"- date="2013-03-13T12:54:56Z"- content="""-Hi,--Is the bup remote available via the Assistant user interface?--Unrelated question;--If you are syncing files between two bup repos on local usb drives, does it use git to sync the changes or does it use \"bup split\" to re-add the file? (Basically, is the syncing as efficient as possible using git-annex or would I have to go to a lower level)--Many Thanks,-Sek-"""]]
− doc/special_remotes/bup/comment_4_7d22a805dd2914971e7ca628ceea69be._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 4"- date="2013-03-13T16:05:50Z"- content="""-I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up.--Your two bup repos would be synced using bup-split.-"""]]
− doc/special_remotes/bup/comment_6_5942333cde09fd98e26c4f1d389cb76f._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnZWCbRYPVnwscdkdEDwgQHZJLwW6H_AHo"- nickname="Tobias"- subject="bup fail?"- date="2013-03-31T21:05:32Z"- content="""-I've run into problems storing a huge number of files in the bup repo. It seems that thousands of branches are a problem. I don't know if it's a problem of git-annex, bup, or the filesystem.--How about adding an option to store tree/commit ids in git-annex instead of using branches in bup?-"""]]
− doc/special_remotes/bup/comment_7_cb1a0d3076e9d06e7a24204478f6fa98._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 7"- date="2013-04-02T21:24:06Z"- content="""-`bup-split` uses a git branch to name the objects stored in the bup repository. So it will be limited by any scalability issues affecting large numbers of git branches. I don't know what those are.--Yes, it would be possible to make git-annex store this in the git-annex branch instead.-"""]]
− doc/special_remotes/bup/comment_8_4cbc67e5911748d13cee3c483d7ece8a._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlsXhOlsW6RaGR83VNSMxPh159l5dFau70"- nickname="Yung-Chin"- subject="re scaling issue"- date="2013-05-03T14:57:51Z"- content="""-Tobias/joey,--I think there are at least two scaling issues that may be causing you trouble. One is that bup writes pack+idx files rather than bare objects, and if you send 1 file per call to bup-split, you end up with a pair of pack and idx files for each such call. When you later try to retrieve a blob, bup currently just calls git, and git will have to traverse all these tiny idx files looking for the right hash (bare objects you could at least find by name). You can probably ameliorate the pain by calling git repack (look at the -a and --max-pack-size switches) on your bup repository. The other is the \"thousands of branches\" issue, and I think \"git pack-refs --all\" (that's again on your bup repository) might help a little bit. --It would certainly help performance if you could store blob/tree ids in git-annex instead of branch names. For small files, all bup would need to store is a blob, but currently you end up storing a blob, a tree, and a commit (and looking-up all of those, plus the ref too, on calling bup-join). (you might want to patch bup-split, so it would allow you to ask it for \"--blob-or-tree\", because currently if you say you pass it -b for blob-ids, then for bigger files you get a series of IDs, whereas you'd be much better off with a tree-id there)-"""]]
− doc/special_remotes/bup/comment_9_ca7096a759961af375e6bd49663b45b3._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlsXhOlsW6RaGR83VNSMxPh159l5dFau70"- nickname="Yung-Chin"- subject="comment 9"- date="2013-05-03T16:34:05Z"- content="""-Thinking about this some more, a very elegant way to make a bup remote could actually be to just pass the whole .git/annex tree into bup-index/save (you could avoid sending some files by only bup-indexing select subtrees, or by using --exclude-*'s, but you'd run bup-save over the whole .git/annex tree). You could then use bup-restore to retrieve files or whole subtrees, and you'd refer to the files you're retrieving by their actual pathname under which they live in .git/annex (if that doesn't make sense it's because I've misunderstood how git-annex is organised!), so something like \"bup restore branch_name/latest/.git/annex/aa/bb/sha-of-some-sort\" would work - that's cute, right? And you'd only have 1 branch.--However... somebody who is good with lazy-evaluation would need to rework bup.vfs: currently, if you'd call bup-restore on a path like that, it would instantiate a _lot_ of vfs-nodes you don't need - to begin with, it would make a node for every commit you ever made (on any branch!) - on a big repository you'd wait ages for it to just find the commit objects...-"""]]
− doc/special_remotes/hook/comment_1_6a74a25891974a28a8cb42b87cb53c26._comment
@@ -1,32 +0,0 @@-[[!comment format=mdwn- username="helmut"- ip="89.0.176.236"- subject="Asynchronous hooks?"- date="2012-10-13T09:46:14Z"- content="""-Is there a way to use asynchronous remotes? Interaction with git annex would have to-split the part of initiating some action from completing it.--I imagine I could `git annex copy` a file to an asynchronous remote and the command-would almost immediately complete. Later I would learn that the transfer is-completed, so the hook must be able to record that information in the `git-annex`-branch. An additional plumbing command seems required here as well as a way to-indicate that even though the store-hook completed, the file is not transferred.--Similarly `git annex get` would immediately return without actually fetching the-file. This should already be possible by returning non-zero from the retrieve-hook.-Later the hook could use plumbing level commands to actually stick the received file-into the repository.--The remove-hook should need no changes, but the checkpresent-hook would be more like-a trigger without any actual result. The extension of the plumbing required for the-extension to the receive-hook could update the location log. A downside here is that-you never know when a fsck has completed.--My proposal does not include a way to track the completion of actions, but relies on-the hook to always complete them reliably. It is not clear that this is the best road-for asynchronous hooks.--One use case for this would be a remote that is only accessible via uucp. Are there-other use cases? Is the drafted interface useful?-"""]]
− doc/special_remotes/hook/comment_2_ee7c43b93c5b787216334f019643f6a0._comment
@@ -1,17 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg"- nickname="Bence"- subject="More environment variables"- date="2013-07-09T10:28:58Z"- content="""-Could you please include the original filename+path in the environment variables (_next to ANNEX_KEY & ANNEX_FILE_)? Like ANNEX_FILENAME and ANNEX_PATH.--Having these infos in a hook would help eg. a flickr backend to be more usefull. [Tags](http://www.flickr.com/help/tags/) would contain the ANNEX_KEY and the image title could be the original filename (ANNEX_FILENAME). Also, having directory path (ANNEX_PATH) for the given file, the uploading process could put images into the proper sets/collections. Voila, you have a \"filesystem based\" flickr image gallery (almost like flickrfs).--Other backends, like AmazonS3 having [meta data](http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html) also could benefit from this. --To build the Death Star further, an _annex.$hooktype-**sync**-hook_ would instruct the backend to sync data, eg. place or move images/files in the proper image-sets/directories after they are moved/repositioned in git-annex, but that would be the backend's job, not git-annex's. Maybe the sync-hook would be called when _git annex sync_ is called. This is just an idea.--While writing this, a new hook for sharing came into my mind: _annex.$hooktype-**share**-hook_.-Calling this on a file/directory (_git annex share my_image_to_share.jpg_) would return a publicly shareable (short)url pointing to the file/directory. This would work for web-backends like AmazonS3, flickr, DropBox, Google Drive, ...-"""]]
− doc/special_remotes/hook/comment_3_2593291795e732994862d08bf2ed467b._comment
@@ -1,17 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA"- nickname="Tobias"- subject="comment 3"- date="2013-07-09T10:54:58Z"- content="""-I have requested this before. But it doesn't seem to be entirely doable because some items may have multiple equally correct filenames/paths. And some items may have zero filenames/paths.--That said I hope a solution can be found because I really want this feature too. And would implement it in all my hooks.--And for some of the cases i don't really see it as an issue. If you have a public flickr repo with clean(unencrypted) files. It is because you want to access existing files. If an object has no filename/path the hook could/would/should just ignore the file, sure this means no backup of old versions of files, but you can have other backends for those versions.--The bigger issue is with the same file existing multiple places in the annex, which filename/path should be used? And the filename/path can change between sync(if it is deleted from one of the positions). I personally still see this as being entirely doable. The key for downloading would always be the same, so worst case scenario is the image may be duplicated on flickr. Or that the picture only one of the multiple folders it should be in on flickr. Still, i see these issues as being minor, and that usability would increase if this was implemented, even with these caveats.--And there probably is some issues I haven't realized/know about.--"""]]
− doc/special_remotes/hook/comment_4_35d79b5ffa5a19056efcdc805070bc4b._comment
@@ -1,18 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg"- nickname="Bence"- subject="checkpresent success and failure"- date="2013-07-31T13:06:21Z"- content="""-What value should be returned in the \"checkpresent-hook\" to signal that the given file does not exist in the given backend? --Should the called hook process return an exit code less or greater then zero? In this case the following is displayed: ->(user error (sh [\"-c\",\"name_of_the_process\"] exited 1)) failed--This tells that the process failed (no internet connection or something that prevents the process from doing its job) and not that result is false, which would mean the file/entry does not exist in the given backend.-If the return code is zero the file is treated as existing file/entry (no matter what I write to stderr).--Also I think, the \"checkpresent\" block misses the ending ;; in the example.--Here is my work-in-progress hook: https://gist.github.com/parhuzamos/31bf4516eea434e0d248-"""]]
− doc/special_remotes/hook/comment_5_6fbf1e963fa3ea4b2eb8ca5a3819762d._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.0.21"- subject="comment 5"- date="2013-07-31T16:25:55Z"- content="""-The checkpresent hook should always exit 0 unless there was an exceptional condition (eg, perhaps it cannot check if the file exists one way or the other). Like the documentation for it says, the important thing is what it outputs to stdout, which should contain the key name if it's present, and should not contain the key name if it's not present.--I hope you post to this website about your special remote when you get it fully working!-"""]]
− doc/special_remotes/hook/comment_6_e0ab48d5333e5de85f016b097e6fdac1._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg"- nickname="Bence"- subject="comment 6"- date="2013-07-31T17:34:50Z"- content="""-Roger that.--If this is acceptable: [terminal output screenshot](http://i.imgur.com/lsJJYwF.png), than I'm almost done and will publish soon.-(Of course a REST API using client would much be better, but this is just the start.)--"""]]
− doc/special_remotes/hook/comment_7_cc2b1243c2c36e63241513bcaddfea67._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.0.21"- subject="comment 7"- date="2013-07-31T17:42:22Z"- content="""-If I were you I'd suppress that \"File not found\" error.--Hook special remotes *can* output messages to stderr, and it's also fine to output eg, progress bars to stdout when seding/receving files. But unnecessary cluttery output should be avoided.-"""]]
− doc/special_remotes/hook/comment_8_bbae315233bda48eb04662dfd48cf1ae._comment
@@ -1,30 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg"- nickname="Bence"- subject="checkpresent again"- date="2013-08-01T23:18:38Z"- content="""-In the current [HEAD](https://github.com/joeyh/git-annex/commit/bb74db6ef094324062adcf26a677113ee6fd0e58) the \"checkpresent\" method in [Hook.hs](https://github.com/joeyh/git-annex/blob/master/Remote/Hook.hs#L145) is missing a \"return\" while other hooks have a return value eg. [Directory.hs](https://github.com/joeyh/git-annex/blob/master/Remote/Directory.hs#L241), [Rsync.hs](https://github.com/joeyh/git-annex/blob/master/Remote/Rsync.hs#L272), ...---I noticed that if my *checkpresent* hook does not output anything (to be exact: I commented out all the lines in the block) it behaves strangely. I copied the test file to \"copyrepo\", removed it by hand (so git-annex does not know about the change) and executed a fsck.--    ~/annex5/test1/123 $ git annex fsck --from copyrepo --fast-    fsck somefile.1 (checking copyrepo...) (fixing location log) -      ** Based on the location log, somefile.1-      ** was expected to be present, but its content is missing.-    failed--running the check again--    ~/annex5/test1/123 $ ga fsck --from copyrepo --fast-    fsck somefile.1 (checking copyrepo...) ok--and running the check again without --fast--    ~/annex5/test1/123 $ ga fsck --from copyrepo-    fsck somefile.1 (checking copyrepo...) ok--It thinks, the file is in the repo but it is not.--"""]]
− doc/special_remotes/hook/comment_9_037523d1994c702239ca96791156fe65._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.152.108.145"- subject="comment 9"- date="2013-08-01T23:51:48Z"- content="""-The behavior you show with `fsck --from` is that the first time it's run against the damaged remote it notices the file is not present using the checkpresent hook. It then updates the location log. The subsequent times it's run, it sees that the location log says the file is not present in the remote. It verifies this is the case by calling the checkpresent hook. Since the two data sources agree, and numcopies is still satisfied, it prints \"ok\". There does not seem to be a bug here.--(`return` in Haskell does not do what you would expect to happen in a traditional imperative language. It does not alter control flow, and any function using `return` can be mechanically converted to one that does not use `return`.)-"""]]
− doc/special_remotes/ipfs/comment_1_d1b2da148715476015716a2f866558b9._comment
@@ -1,7 +0,0 @@-[[!comment format=mdwn- username="https://id.koumbit.net/anarcat"- subject="about copying to the local store"- date="2015-03-07T13:16:02Z"- content="""-there's a [discussion](https://github.com/jbenet/go-ipfs/issues/875) happening upstream about how copying to the local datastore could be avoided.-"""]]
− doc/special_remotes/ipfs/comment_2_564271a8660d7bbade6e4ed396fcfb57._comment
@@ -1,18 +0,0 @@-[[!comment format=mdwn- username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"- nickname="rob.syme"- subject="Finding IPFS hash"- date="2015-05-26T04:55:32Z"- content="""-I'm using git-annex version: 5.20150522-gb199d65--The example above gives the ipfs hash for the file, but when I run whereis, the hash is not reported:--    $ git annex whereis test.txt-    whereis test.txt (2 copies) -            1bd0f840-2247-4888-9237-596515788671 -- rob@rob-G60JX:/tmp/gitannextest [here]-            adf361b3-7b1a-43e1-8360-937f7e436e90 -- [ipfs]-    ok--Is there a way for git-annex to report the file's ipfs hash ID?-"""]]
− doc/special_remotes/ipfs/comment_3_b8c7e402e0ee63d659ae33e3e2504ca2._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"- nickname="rob.syme"- subject="Finding IPFS hash"- date="2015-05-26T05:08:38Z"- content="""-I see now that git-annex only reports the ipfs hash when the remote is unencrypted. It the ipfs hash not reported for encrypted ipfs remotes for security reasons?-"""]]
− doc/special_remotes/ipfs/comment_4_06611859079239659ba7d73d655f517e._comment
@@ -1,23 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 4"""- date="2015-05-27T19:02:30Z"- content="""-@rob.syme, the reason that does not work when using encryption-is that git-annex internally generates an encrypted key, and stores-that on IPFS. The ipfs special remote records the IPFS address-that can be used for a key, but it's recorded on the encrypted-key, which is not the one you're querying with whereis.--This is a general problem with git-annex; ipfs is probably the-first special remote that exposes the problem.--Anyway, I'm not sure what benefit knowing the IPFS address of a file-encrypted by git-annex is. You need to use git-annex to decrypt it, in-general. You might be able to use your gpg key to decrypt it, if the-special remote was set up using pubkey encryption, but that's not going to-help anyone else you give the IPFS address to access the encrypted data..--Does your use case involve pinning the IPFS address, or something like-that?-"""]]
− doc/special_remotes/web/comment_1_0bd570025f6cd551349ea88a4729ac8e._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://olivier.berger.myopenid.com/"- nickname="obergix"- subject="Which URL prefix are supported ?"- date="2013-08-17T08:44:05Z"- content="""-It is not clear whether only http:// URLs are supported. Can you list others ?-"""]]
− doc/special_remotes/web/comment_2_333141cc9ec6c26ffd19aa95303a91e3._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="2001:4978:f:21a::2"- subject="comment 2"- date="2013-08-17T08:59:11Z"- content="""-When it says \"arbitrary urls\", it means it. The only requirement is that the url be well formed and that wget or whatever command you have it configured to use via annex.web-download-command knows how to download it.-"""]]
− doc/special_remotes/xmpp/comment_1_568247938929a2934e8198fca80b7184._comment
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA"- nickname="Tobias"- subject="User defined server"- date="2013-04-17T09:45:59Z"- content="""-It would be nice if you could expand the XMPP setup in the assistant to support an \"advanced\" settings view where a custom server could be defined.--Example: I have a google Apps domain called mytest.com, with the users bla1@mytest.com and bla2@mytest.com. When trying to add either of those accounts to the assistant XMPP will try to use mytest.com as the jabber server, and not googles server.--"""]]
− doc/special_remotes/xmpp/comment_2_9fc3f512020b7eb2591d6b7b2e8de2d7._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"- nickname="Andrew"- subject="comment 2"- date="2013-04-17T22:28:39Z"- content="""-Yeah, I agree, this would be nice. --For your own domain, you can configure DNS like this: [[http://support.google.com/a/bin/answer.py?hl=en&answer=34143]] to make XMPP find the right server. But for some that's not an option and the \"advanced\" mode would be useful in that case.-"""]]
− doc/special_remotes/xmpp/comment_3_48ddbba1402d89acaea07cff747c48e0._comment
@@ -1,28 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="46.19.143.203"- subject="Missing prerequisites for XMPP syncing?"- date="2013-09-17T06:53:59Z"- content="""-I set up two fresh annexes that can talk via XMPP and no other way. After I fire up the assistants I expect them to sync their metadata, but nothing happens. One log gives me an 'XMPPClient: received: [\"Unknown message\"]' message every two minutes. The other one doesn't contain the string XMPP at all, not once. So my suspicion is that this particular version of git-annex doesn't support XMPP, which is weird because:--    $ git annex version-    git-annex version: 4.20130909-    build flags: Assistant Pairing Testsuite S3 Inotify XMPP DNS Feeds-    local repository version: 3-    default repository version: 3-    supported repository versions: 3 4-    upgrade supported from repository versions: 0 1 2--This is the version output from the other machine: --    $ git annex version-    git-annex version: 4.20130827-    build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP-    local repository version: 3-    default repository version: 3-    supported repository versions: 3 4-    upgrade supported from repository versions: 0 1 2--What am I missing? Are there more build flags for XMPP than the one called XMPP? (Also, no, I can't just copy versions between machines b/c the architectures are different. And yep, the one giving me trouble is ARM.)-"""]]
− doc/special_remotes/xmpp/comment_4_59857879abaae22bde444a215e00bf18._comment
@@ -1,14 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.153.14.105"- subject="comment 4"- date="2013-09-19T21:07:35Z"- content="""-If you have the XMPP flag in your git-annex build, it will support XMPP. Are you sure you set up the xmpp creds file and the xmpp special remote correctly on the ARM machine? (I assume it has no webapp, so you had to set that up manually..)--Here's how you can do that manually:--1. Run git-annex on a machine with the webapp, set up XMPP, and copy the .git/annex/creds/xmpp to the machine without the webapp.-2. On the machine without the webapp, add a git remote that has its \"url = xmpp::loginname@xmppserver.com\" and its annex-uuid set to the annex.uuid of the repository on the first machine.-3. Run git-annex assistant on the machine without the webapp.-"""]]
− doc/special_remotes/xmpp/comment_5_583ee374bd34fcc9ae26c2fd690e8c47._comment
@@ -1,73 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="37.221.161.234"- subject="Nope"- date="2013-09-24T22:05:55Z"- content="""-Your guess is right, Joey, I'm configuring by hand as the ARM machine has no webapp. And yes, I'm mostly sure I set up everything correctly. The XMPP account is working, and my configuration of git-annex is all but identical to your example.--Here's what I do. First on the machine with the webapp:--    mkdir ~/test-    cd ~/test-    git init-    git annex init-    git annex webapp--I set up XMPP from within the webapp. The file ~/test/.git/annex/creds/xmpp is created with the correct credentials. (BTW: The file's default permissions are 620 instead of 600 - is that a bug?)--I add a file or two to the annex for good measure. Then, on the ARM machine:--    mkdir ~/test-    cd ~/test-    git init-    git annex init-    mkdir .git/annex/creds-    scp -2 webappmachine:~/test/.git/annex/creds/xmpp .git/annex/creds -    chmod 600 .git/annex/creds/xmpp-    git remote add webappmachine xmpp::login@server--The final step is to edit .git/config on the ARM machine. The [remote] section now looks like this:--    [remote \"webappmachine\"]-        url = xmpp::login@server-        fetch = +refs/heads/*:refs/remotes/webappmachine/*-        annex-uuid = aaaaaaaa-bbbb-cccc-dddddddddddd--where aaaaaaaa-bbbb-cccc-dddddddddddd is the return value of `git config --get annex.uuid` on the webapp machine.--I then run `git annex assistant` on the ARM machine and expect the two machines to synchronize their metadata, e.g. the number of knownn annex keys in the repo. But it doesn't happen.--So I set `debug = true`, restart the assistants and check the log. This is what I get on the webapp machine:--    [2013-09-24 17:45:41 EDT] XMPPClient: connected a5/25577ac4-3248-4c83-8391-bd93708bcf2b-    [2013-09-24 17:45:41 EDT] XMPPClient: received: [\"Presence from a5/dc9bcde8-fe18-47de-807c-c620019279f2 Just (Element {elementName = Name {nameLocalName = \\"git-annex\\", nameNamespace = Just \\"git-annex\\", namePrefix = Nothing}, elementAttributes = [(Name {nameLocalName = \\"query\\", nameNamespace = Nothing, namePrefix = Nothing},[ContentText \\"\\"])], elementNodes = []})\",\"QueryPresence\"]-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Presence from a5/900e3b6e-a7f4-4a6a-8d12-ed94de429258 Just (Element {elementName = Name {nameLocalName = \\"git-annex\\", nameNamespace = Just \\"git-annex\\", namePrefix = Nothing}, elementAttributes = [(Name {nameLocalName = \\"push\\", nameNamespace = Nothing, namePrefix = Nothing},[ContentText \\"43357474-abbb-4667-a334-e4615ea6d4a2\\"])], elementNodes = []})\",\"NotifyPush [UUID \\"43357474-abbb-4667-a334-e4615ea6d4a2\\"]\"]-    [2013-09-24 17:45:42 EDT] XMPPClient: push notification for-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"symbolic-ref\",\"HEAD\"]-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"show-ref\",\"refs/heads/master\"]-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Pushing \\"a59\\" (CanPush (UUID \\"d50c4cc9-e7c0-4ef0-84c6-f11012051eb9\\") [34f875cc7fa1198414f93990af9ab78e6cee893e,6fad42234060361435d6cf2ab4bd40e438c2d05c])\"]-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"show-ref\",\"git-annex\"]-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"show-ref\",\"--hash\",\"refs/heads/git-annex\"]-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"log\",\"refs/heads/git-annex..6fad42234060361435d6cf2ab4bd40e438c2d05c\",\"--oneline\",\"-n1\"]-    [2013-09-24 17:45:42 EDT] chat: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"cat-file\",\"--batch\"]-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Ignorable Presence from a5/25577ac4-3248-4c83-8391-bd93708bcf2b Just (Element {elementName = Name {nameLocalName = \\"git-annex\\", nameNamespace = Just \\"git-annex\\", namePrefix = Nothing}, elementAttributes = [], elementNodes = []})\"]-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Unknown message\"]-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Pushing \\"a59\\" (PushRequest (UUID \\"d50c4cc9-e7c0-4ef0-84c6-f11012051eb9\\"))\"]-    [2013-09-24 17:45:42 EDT] XMPPSendPack: started running push Pushing \"a59\" (PushRequest (UUID \"d50c4cc9-e7c0-4ef0-84c6-f11012051eb9\"))-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"symbolic-ref\",\"HEAD\"]-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Ignorable Presence from a5/25577ac4-3248-4c83-8391-bd93708bcf2b Just (Element {elementName = Name {nameLocalName = \\"git-annex\\", nameNamespace = Just \\"git-annex\\", namePrefix = Nothing}, elementAttributes = [], elementNodes = []})\"]-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"show-ref\",\"refs/heads/master\"]-    [2013-09-24 17:45:42 EDT] call: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"branch\",\"-f\",\"synced/master\"]-    [2013-09-24 17:45:42 EDT] XMPPSendPack: finished running push Pushing \"a59\" (PushRequest (UUID \"d50c4cc9-e7c0-4ef0-84c6-f11012051eb9\")) False--And from then on, in two-minute intervals:--    [2013-09-24 17:47:42 EDT] XMPPClient: received: [\"Unknown message\"]-    [2013-09-24 17:49:42 EDT] XMPPClient: received: [\"Unknown message\"]-    [2013-09-24 17:51:42 EDT] XMPPClient: received: [\"Unknown message\"]-    -The log on the ARM machine is rather unhelpful. Actually it doesn't even contain the string \"XMPP\". This looks to me like the webapp machine tries to communicate via Jabber but doesn't get any intelligible answer. And this is the reason I wondered whether the problem lies with my self-compiled ARM git-annex  binary. I actually spent a while compiling 4.20130909 with all flags but webapp and webdav, but the result is still the same. --Any other ideas what I'm doing wrong here?-"""]]
− doc/special_remotes/xmpp/comment_6_8f0b5bba1271d031a67e7f0c175d67d5._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.152.108.220"- subject="comment 6"- date="2013-09-25T18:13:24Z"- content="""-If you're not getting an \"XMPPClient: connected\", then my guess would be that your git-annex build's XMPP is screwed up somehow. For example, if it hung forever when connecting to the XMPP server, it would never get as far as printing that message. (If it tried and failed to connect, you'd get a message about the connection having failed.)-"""]]
− doc/special_remotes/xmpp/comment_7_ac7acbded03325b015959d82ae77faf1._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="RaspberryPie"- ip="46.165.221.166"- subject="comment 7"- date="2013-09-26T03:46:18Z"- content="""-I see. Is there a way to check whether the build is corrupt? The build logs gave me nothing. --Anyway, XMPP is not the most important feature to me. It still bugs me though that it doesn't work when it should.  -"""]]
− doc/special_remotes/xmpp/comment_8_81a9636a1e8a36a58185468a26f8633d._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U"- nickname="Carlo"- subject="comment 8"- date="2013-10-22T14:30:58Z"- content="""-Same setup, same problem... no log output on raspberry pi.-"""]]
− doc/special_remotes/xmpp/comment_9_eda76b826491c96b1ce072aacf9d3adf._comment
@@ -1,23 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4"- nickname="Jörn"- subject="Same problem, no XMPP showing up in daemon.log"- date="2013-11-21T21:13:16Z"- content="""-I have the same setup like @RaspberryPie, except that my server is not running on the Pi but on Debian7-amd64. On my client (OSX, self-compiled using cabal) I can see XMPP log entries like @RaspberryPi, however, on the Debian7 machine (also self-compiled) I do not see any XMPP entry in the daemon.log. Setup regarding .git/annex/creds/xmpp and the special xmpp remote is correct (checked a thousand times).--Do you have any idea what could be wrong, Joey? Thanks a lot.--Output of git annex version:--    git-annex version: 5.20131120-    build flags: Assistant Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS Feeds Quvi CryptoHash -    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL-    remote types: git gcrypt S3 bup directory rsync web webdav glacier hook-    local repository version: 4-    default repository version: 3-    supported repository versions: 3 5-    upgrade supported from repository versions: 0 1 2 4--Jörn-"""]]
− doc/tips/assume-unstaged/comment_1_44abd811ef79a85e557418e17a3927be._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://me.yahoo.com/a/2djv2EYwk43rfJIAQXjYt_vfuOU-#a11a6"- nickname="Olivier R"- subject="It doesn't work 100%"- date="2012-05-03T21:42:54Z"- content="""-When you remove tracked files... it doesn't show the new status. it's like if the file was ignored.---"""]]
− doc/tips/assume-unstaged/comment_2_5b589f37cfc03bf7be33a51826cc4dba._comment
@@ -1,13 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnxlx1UrzVhdy6_gFjzmF42x6QXxBUxg00"- nickname="Jakukyo"- subject="comment 2"- date="2013-09-05T12:14:42Z"- content="""-> There are two gotchas...--So just always run `git annex add` after editing a file-and `git update-index --really-refresh` after migrating-backend?--"""]]
− doc/tips/skydriveannex/comment_10_c3465b5587548dea56b80b32cd66d653._comment
@@ -1,16 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"- nickname="Ovidiu"- subject="Syncing not working :-/"- date="2014-05-17T19:52:33Z"- content="""-Error log says:--    git-annex-remote-skydrive is not installed in PATH (/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/usr/bin:/bin:/usr/sbin:/sbin)--BUT I did a symlink, I even did 2 to 2 different locations that are in my path:--    cd /Users/ovi/skydriveannex/-    ln -sf `pwd`/git-annex-remote-skydrive /usr/bin/git-annex-remote-skydrive-    ln -sf `pwd`/git-annex-remote-skydrive /opt/local/bin/git-annex-remote-skydrive-"""]]
− doc/tips/skydriveannex/comment_11_13692d8cb9ccf10ced26d90739385a6a._comment
@@ -1,47 +0,0 @@-[[!comment format=mdwn- username="ovidiu@66ace8a8d99ce938b0538ffa0f26d30db02a9626"- nickname="ovidiu"- subject="comment 11"- date="2015-10-03T19:18:24Z"- content="""-shiny:skydriveannex ovi$ git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=gitannex-initremote skydrive (encryption setup) (shared cipher)  21:14:20 [skydriveannex-0.2.1] <module> : 'Starting'- 21:14:20 [skydriveannex-0.2.1] login : 'EXCEPTION api.auth_get_token:AuthenticationError(u\"Insufficient authentication data provided (missing keys: [u'code'])\",)'-osascript: OpenScripting.framework - scripting addition \"/Library/ScriptingAdditions/AeroFSFinderExtension.osax\" cannot be used with the current OS because it has no OSAXHandlers entry in its Info.plist.-git-annex: You need to set OAUTH environment variables and folder and encryption parameters when running initremote.--the folder gitannex was created on my onedrive but that is all.--Log files:-[2015-10-03 21:12:43.322605] main: Syncing with onedrive - 21:12:50 [skydriveannex-0.2.1] <module> : 'Starting'- 21:12:5--9  [ sYkoyud rnieveeda ntnoe xs-e0t. 2O.A1U]T Hl oegnivni r:o n'mEeXnCtE PvTaIrOiNa balpeis. aauntdh _fgoeltd_etro kaennd: PernoctroycpotliEornr opra(r4a0m0e,t e'r4s0 0f oCrl itehnet  rEermrootre:. -Bad Request')'-[2015-10-03 21:13:07.435901] main: Syncing with onedrive ---  You need to set OAUTH environment variables and folder and encryption parameters for the remote.-[2015-10-03 21:15:14.60821] main: Syncing with onedrive ---  You need to set OAUTH environment variables and folder and encryption parameters for the remote.-[2015-10-03 21:15:57.926083] main: starting assistant version 5.20150929-g7010007-(scanning...) [2015-10-03 21:15:58.506776] Watcher: Performing startup scan-(started...) gpg: Signature made Wed Sep 30 20:45:53 2015 CEST using DSA key ID 89C809CB-gpg: /var/folders/m6/zkd11n111m38ff37zbtgq0lr0000gp/T/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created-gpg: Good signature from \"git-annex distribution signing key (for Joey Hess) <id@joeyh.name>\"-gpg: WARNING: This key is not certified with a trusted signature!-gpg:          There is no indication that the signature belongs to the owner.-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB- 21:16:01 [skydriveannex-0.2.1] <module> : 'Starting'- 21:16:--01   [Ysokuy dnreievde atnon esxe-t0 .O2A.U1T]H  leongviinr o:n m'eEnXtC EvPaTrIiOaNb laepsi .aanudt hf_ogledte_rt oaknedn :ePnrcortyopctoiloEnr rpoarr(a4m0e0t,e r's4 0f0o rC ltiheen tr eEmrortoer.:- Bad Request')'-[2015-10-03 21:16:34.655604] main: Syncing with onedrive ---  You need to set OAUTH environment variables and folder and encryption parameters for the remote.-"""]]
− doc/tips/using_Amazon_S3/comment_1_666a26f95024760c99c627eed37b1966._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY"- nickname="Matt"- subject="ANNEX_S3 vs AWS for keys"- date="2012-05-29T12:24:25Z"- content="""-The instructions state ANNEX_S3_ACCESS_KEY_ID and ANNEX_SECRET_ACCESS_KEY but git-annex cannot connect with those constants. git-annex tells me to set both \"AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY\" instead, which works. This is with Xubuntu 12.04.-"""]]
− doc/tips/using_Amazon_S3/comment_2_f5a0883be7dbb421b584c6dc0165f1ef._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.153.81.112"- subject="comment 2"- date="2012-05-29T19:10:42Z"- content="""-Thanks, I've fixed that. (You could have too.. this is a wiki ;)-"""]]
− doc/tips/using_Amazon_S3/comment_3_32acba030c2ad252e2f7027075e4303e._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="annexuser"- ip="64.71.7.82"- subject="Altering AWS credentials"- date="2014-04-15T21:59:43Z"- content="""-If I revoke old AWS credentials and create new ones, how would I inform git-annex of the change to `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`?-"""]]
− doc/tips/using_Amazon_S3/comment_4_92df5a9f923beafba55a1c455728112e._comment
@@ -1,13 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.191"- subject="comment 4"- date="2014-04-17T19:44:55Z"- content="""-You can use `git annex enableremote` to change an existing remote's configuration. So this should work:--    # export AWS_ACCESS_KEY_ID=\"newRANDOMGOBBLDEYGOOK\"-    # export AWS_SECRET_ACCESS_KEY=\"news3kr1t\"-    # git annex enableremote cloud--"""]]
− doc/tips/using_Amazon_S3/comment_5_6b288e06010bedbb71e0afed6b427704._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkmN2ZZIdYNiFKmEH7rz4jMb6sYsx_dptA"- nickname="Jack William"- subject="What if you do not want to encrypt?"- date="2014-09-07T18:35:19Z"- content="""-Once use case for GIT with Amazon S3 is to maintain a web site on S3 you can easily update from a local machine. In that case you would not want to encrypt. Is encryption optional? This isn't clear from the instructions.-"""]]
− doc/tips/using_Amazon_S3/comment_6_3b6c74b40ea666389ac04b52ab0819a0._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://schnouki.net/"- nickname="Schnouki"- subject="comment 6"- date="2014-09-09T12:48:59Z"- content="""-Jack, if you don't want to use encryption you can use `encryption=none` as documented [here](http://git-annex.branchable.com/special_remotes/S3/).--I'm not sure exactly what you're trying to do, but please note that you files won't be easily available on S3: they will be named as git-annex keys, with long and unreadable names such as \"SHA256E-s6311--c7533fdd259d872793b7298cbb56a1912e80c52a845661b0b9ff391c65ee2abc.html\" instead of \"index.html\".-"""]]
− doc/tips/using_Amazon_S3/comment_7_cf6755d88463878f2ea6e4c300899027._comment
@@ -1,33 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmH7o6q2l99M-PQolOfbR3_i5B_jtTIcAE"- nickname="Giovanni"- subject="How to publish your files to the public"- date="2014-09-13T15:29:18Z"- content="""-I don't know if this is what Jack wanted, but you can upload your files to S3 and let them be accessible through a public URL.--First, go to (or create) the bucket you will use at [S3](https://console.aws.amazon.com/s3/) and add a public get policy to it:--```-   {-    	\"Version\": \"2008-10-17\",-    	\"Statement\": [-    		{-    			\"Sid\": \"AllowPublicRead\",-    			\"Effect\": \"Allow\",-    			\"Principal\": {-    				\"AWS\": \"*\"-    			},-    			\"Action\": \"s3:GetObject\",-    			\"Resource\": \"arn:aws:s3:::BUCKETNAME/*\"-    		}-    	]-    }-```--Then set up your special remote with the options `encryption=none`, `bucket='BUCKETNAME'` `chunk=0` (and any others you want).--Your files will be accessible through `http://BUCKETNAME.s3-website-LOCATION.amazonaws.com/KEY` where location is the one specified through the options `datacenter` and KEY is the SHA-SOMETHING hash of the file, created by git annex and accessible if you run `git annex lookupkey FILEPATH`.--This way you can share a link to each file you have at your S3 remote.-"""]]
− doc/tips/using_Amazon_S3/comment_8_4f9c2f6627f8ed3423bcc8b7bf2f76cb._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkPIqJZ88VZEVqLhLOd1LMdYXcy6bAW9qE"- nickname="Lemao"- subject="comment 8"- date="2015-01-07T13:54:23Z"- content="""-I use github as my central git repository and I would like to use S3 to store large files with annex. Since the s3 remote in .git/config is not stored in github, how do I make sure I reconnect to the same s3 bucket in case I delete my local clone? Reinitializing the remote will create a completely new bucket.--I would also be a good idea to centralize git-annex folders inside a single bucket so I keep the global namespace under control and can narrow down the permissioning.-"""]]
− doc/tips/using_Amazon_S3/comment_9_47e4ea77d0262d332d86a06d7aaeddd8._comment
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- subject="comment 9"- date="2015-01-07T17:25:43Z"- content="""-Lemao, make sure you have pushed your git-annex branch to your central git repository.--When you clone that repo elsewhere, you can add the S3 remote by running `git annex enableremote cloud` (replace \"cloud\" with whatever name you originally picked when you used `git annex initremote` to set up the S3 remote in the first place.--git-annex stores the necessary configuration of the S3 remote on the git-annex branch.-"""]]
− doc/todo/Move_ssh_config_to___126____47__ssh__47__git-annex__47__config.mdwn
@@ -1,9 +0,0 @@-### Please describe the problem.-Instead of storing config for each remote in ~/.ssh/config, which mixes the user own config with that of git-annex-assistant, which is irritating if (like me) you store your ssh config in a vcs. Since the option -F allows the choice of the config file, it should be possible to move the config into ~/.ssh/git-annex/config. The only issue I see is according to the ssh man page on my system states that the system-wide config is ignored if a config file is specified on the command line.--### What version of git-annex are you using? On what operating system?-I'm using git-annex 4.20130601 on a Debian Testing/Unstable/Experimental mix.--[[!tag design/assistant]]--[[wontfix]]
− doc/todo/S3_fsck_support/comment_1_9317598723ea38ae9432ad50e0de666d._comment
@@ -1,26 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 1"""- date="2015-06-16T17:50:56Z"- content="""-You're incorrect; `git-annex fsck --from remote` works to fsck *any*-remote. For remotes like S3, it has to download the content to check it-locally, which is why `remoteFsck` is not provided.--Since you passed -f (--fast) to fsck, it avoids checksuming the content,-so avoids downloading it, and only verifies that S3 still says it has-the content. As documented on the git-annex fsck man page.--AFAICS, the Content-MD5 is only used by S3 to check that the data uploaded-to S3 didn't get corrupted over the wire. I assume that S3 implements its-own checksums to detect when data already stored on it gets corrupted, so-it seems redundant and complicating for git-annex to query it for md5sums.-It would work just as well for git-annex to verify a key after downloading-it, using the key's own hash, per [[todo/ checksum verification on transfer]].--It **might** be worth filling in the `poContentMD5` field with the md5 of-the file when uploading it to S3. Of course, this requires hashing the file-locally. And when storing an encrypted object on S3, it would require-buffering the whole encrypted object to disk first, in order to hash it-(but that's currently done anyway).-"""]]
− doc/todo/S3_fsck_support/comment_2_7a1ce64d362b8f75adf22709771a7787._comment
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="anarcat"- subject="comment 2"- date="2015-06-16T20:10:50Z"- content="""-understood: i thought `-f` was `--from`... hence my confusion.--as for `remoteFsck`, i guess what i am saying is exactly that: there *does* seem to be a way to do a remote checksum of the file *without* downloading it. it seems to be a critical advantage over having to download the whole repository to check it... maybe `--fast` could use that technique and `non--fast` would download?--as for the on-wire MD5 stuff, that does seem to be overkill...-"""]]
− doc/todo/S3_fsck_support/comment_3_2b96f61188b2ada729a284e95fc89dab._comment
@@ -1,21 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 3"""- date="2015-07-02T16:43:03Z"- content="""-Not knowing how S3's backend is implemented, I have to assume that, in-order to get the advertised number of 9's of reliability, it involves some-replication of data, as well as some method to detect if a bit has flipped-or a drive has died, and recover.--This is requesting that git-annex ask S3 for a md5sum, and compare it-against a md5sum that it, presumably, keeps track of locally. If the two-are different, git-annex could tell that S3 has lost data. But, git-annex is-in a much worse position to tell if S3 has lost data then S3 itself is.-It seems very unlikely that this extra checking would ever detect a problem-that S3 didn't itself detect and fix (or in the 0.00001% case, -fail to fix and delete the lost file?)--Bit flips during transfer seem more likely than that. `poContentMD5` could-help guard against those.-"""]]
− doc/todo/Use_a_remote_as_a_sharing_site_for_files_with_obfuscated_URLs.mdwn
@@ -1,7 +0,0 @@-There are times when it is handy to be able to upload a file to a web host somewhere and share a link for that file to a select few people.--It seems to be that the assistant could handle this scenario. It could generate a directory with a random name on the remote, and transfer the file there (using the existing filename) and the appropriate URL could be displayed in the assistant webapp to allow the user to copy the URL to send it to the appropriate people.--Note: Joey and I had a quick chat about this use case at LCA2013.--[[!tag design/assistant]]
@@ -1,26 +0,0 @@-So annex is super cool and all. But there is one really annoying thing about it. The symlinks disrupt workflow really horribly! For example if I have a .psd file that is annex'd and I open that file in photoshop, edit it, then try to save it again. It doesn't allow me, because the actual file is the one deep in the annex sub structure that is read only. There a bunch of other annoyances like this. But you basically can't work with annex'd files without some additional struggle.--But there is a solution to this. Just don't symlink the files that are active. I think potentially the simplest way to do this is to have a 'annex' and 'unannex' command. Or rather, a 'create symlink' and 'uncreate symlink' command. --So then you can be going along, doing your work, nothing in your directory symlinked.--You then type you 'annex symlink' command all priorly annexed filed will be deleted and replaced with their symlinks.--Then you can add your new files to annex. Adding new files will just automatically symlink them unless you put like a -ns or something to signify to not symlink them.--With all priorly annexed filed symlinked and all your new files symlinked, you then git commit and push.--Then you do a git annex unsymlink command. And then all your symlinks are deleted and the actual file placed there.--Then you just type git annex symlink again to re-symlink them all.--> I think you are looking for the `unlock` and `add` (or `lock`) commands. Basically, to edit the file in photoshop, you want:->-> <pre>-> git annex unlock file.psd-> photoshop file.psd # ...-> git annex add file.psd # if you are happy with your changes or...-> git annex lock file.psd # if you want to discard your changes-> </pre>->-> So basically what you are asking for is already [[done]], in my mind. I still think there are significant [[usability issues|forum/usability:_what_are_those_arrow_things__63__/]] with symlinks, but that's another story. --[[anarcat]]
− doc/todo/cache_key_info/comment_1_578df1b3b2cbfdc4aa1805378f35dc48._comment
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U"- nickname="Richard"- subject="comment 1"- date="2011-05-17T07:27:02Z"- content="""-Sounds like a good idea.--* git annex fsck (or similar) should check/rebuild the caches-* I would simply require a clean tree with a verbose error. 80/20 rule and defaulting to save actions.-"""]]
− doc/todo/ctrl_c_handling/comment_1_3addbe33817db5de836c014287b14c07._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.172"- subject="comment 1"- date="2014-02-21T21:36:14Z"- content="""-This really depends on the remote, some can resume where they were interrupted, such as rsync, and some cannot, such as glacier (and, er, encrypted rsync).-"""]]
− doc/todo/ctrl_c_handling/comment_2_cc2776dc4805421180edcdf96a89fcaa._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://grossmeier.net/"- nickname="greg"- subject="very remote specific"- date="2014-02-21T22:11:16Z"- content="""-Yeah, this is very remote specific and probably means adding the functionality there as well (eg: in the glacier.py code, not only in git-annex haskell). Maybe I should file bugs there accordingly :)-"""]]
− doc/todo/ctrl_c_handling/comment_3_8d7d357368987f5d5d59b4d8d99a0e06._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.172"- subject="comment 3"- date="2014-02-21T22:34:14Z"- content="""-Hmm, I forget if it's possible for git-annex to mask SIGINT when it runs glacier or rsync, so that the child process does not receive it, but the parent git-annex does.-"""]]
− doc/todo/git_annex_grep/comment_1_890b3ecb679b941f9c0075ed360b203e._comment
@@ -1,9 +0,0 @@-[[!comment format=mdwn- username="CandyAngel"- subject="comment 1"- date="2015-06-04T12:31:32Z"- content="""-You can do this:--    git annex find --in here | grep-"""]]
− doc/todo/git_annex_open/comment_1_67d90a1cb104d98e816354d96e1b0306._comment
@@ -1,21 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 1"""- date="2014-11-10T17:11:52Z"- content="""-Hmm, well, there have been requests for access to files as they're being-get-ed before. This does have the advantage of providing that,-but I don't know if I like trying in xdg-open, which might not always-be the way a user wants to open a file.--git-annex does have progress info available while a file is being-transferred. (If nothing else, it tends to know the key size, and can-see the file size.) However I don't know how it could tell if "enough"-of the file was available to stream it.--I guess what I'd be most comfortable with is putting in plumbing.-Like making `examinekey` be able to report the temporary file-that is used when a key is being downloaded. It might also make sense to-have a bit of plumbing that waits for a file being downloaded to get-to X% complete, or something.-"""]]
− doc/todo/git_annex_push/comment_1_54c5494ec21621298b3111cd7c2325b1._comment
@@ -1,19 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 1"""- date="2015-08-04T20:19:22Z"- content="""-`git annex sync --content` does what you want, only it also does a pull and-a merge from remotes.--I don't know that wanting to only push, w/o pull and merge, is common-enough to make a separate command for it.--There's also the problem that to push the git-annex branch, it really-makes sense to first pull/merge from the remote. Otherwise, the push-is not likely to work as well. And too, it makes sense to update the-git-annex branch from remotes in order to know what files that have, so-that info can be better used to decide which files to send to them ---especially when preferred content might make some file not be sent to all-remotes, depending on which other remotes contain the file.-"""]]
− doc/todo/git_annex_push/comment_2_67938223c42c2a81dbfd32cd8a6a39c2._comment
@@ -1,7 +0,0 @@-[[!comment format=mdwn- username="https://me.yahoo.com/a/EbvxpTI_xP9Aod7Mg4cwGhgjrCrdM5s-#7c0f4"- subject="comment 2"- date="2015-08-09T03:04:31Z"- content="""- indeed  pull/merge ( ie sync)  would often  be  needed.  but the same  in regular git  workflow -  we  can't push if remote has new  changes.  so we know that we need to \" git  pull\" ( or alternative merge dance).   my  whining here is pretty much about  dichotomy  between  regular git command  and  accompanying  annex commands  for simple typical workflows - i  need to  educate people  much more  beyond \" in your typical use case,  when you all collaborate  on this repo,  just use git annex add  to place big files under annex control,  and then git annex push  to push all your  changes\".   then if  annex push  checked  first that push   of annex  branch can't happen  and that annex  merge is due,  and let user know  to run it first -  they will do,  and things will remain clear.  now there is a  lot of annex  uniquely named commands  which do not \" correlate\"  with git ones   even for simple  use cases, which makes  adoption harder imho.-"""]]
− doc/todo/git_annex_push/comment_3_ccb822eeb9b0d60f811568e4f27f970a._comment
@@ -1,19 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 3"""- date="2015-08-11T17:37:05Z"- content="""-I tend to be uncomfortable with wrapping many git commands into git-annex-commands with the same name. All the regular git commands can be used-in a git-annex repository, and I don't want to get users thinking they need-to look for git-annex commands instead when the git commands work perfectly-well.--`git annex copy` is fundamentally different than `git push`, so the user-needs to learn about the complication of needing to copy the contents-around separately. Perhaps even copying content to different (special)-remotes than where git pushes to. `git annex sync --content` is there for-users who want to keep two repos in sync and don't want to be concerned with the details.-`git annex push` would seem to be for users who want to know about the details,-but not all of them. Seems like a losing and/or confusing choice.-"""]]
+ doc/todo/make_addurl_respect_annex.largefiles_option.mdwn view
@@ -0,0 +1,3 @@+ATM git annex addurl ignores  annex.largefiles option so to automate annexification or direct add to git for a list of files I need manually to download each one of them into a FILE and then "git annex add -c annex.largefiles='exclude=*.txt'  FILE".  But it would have been convenient if I could "addurl" some files directly from urls directly into git, as per largefiles settings.++N.B. I do understand that use-case might be somewhat vague, let me know if I should expand reasoning
− doc/todo/openwrt_package/comment_1_100d76109e04bc43979775d71b4152ac._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="206.74.132.139"- subject="comment 1"- date="2014-02-06T17:26:58Z"- content="""-I would be quite happy if someone took care of adding git-annex to openwrt.--I don't have time to personally handle packaging for different linux distributions myself. What I could do is add mips builds of git-annex to the existing standalone linux builds. These would need to be built the same way the arm builds are done, using a Debian chroot and qemu to run tools from it. This is rather a lot of work for me to set up, and I don't know if I'd have to do it for both little and big endian mips.--Also, it seems that Debian does not currently have a working haskell toolchain for mips. Which may well mean that ghc is not in a working state on mips at all.-"""]]
− doc/todo/openwrt_package/comment_2_2cb7dd4c0cc4413a4588b13cf7700de2._comment
@@ -1,9 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkNE-H4vEcbcGndxq5daT8qUb7yIf7r1OE"- nickname="Łukasz"- subject="comment 2"- date="2014-02-11T21:05:00Z"- content="""-if debian does not have working toolchain for mips then there is no way to port it into mips machines.-am i correct ?-"""]]
− doc/todo/openwrt_package/comment_3_5ba8a325a683ff543d81a366c873070d._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="209.250.56.172"- subject="comment 3"- date="2014-02-11T21:39:34Z"- content="""-Actually, debian stable does still have ghc building for mips/mipsel. It's just newer versions that have failed to build and nobody has fixed it yet.-"""]]
− doc/todo/openwrt_package/comment_4_132e67b34f9c616217e037e4ecac70a4._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="joey"- subject="""comment 4"""- date="2015-01-13T20:39:53Z"- content="""-I checked, and the current status is that mips and mipsel in Debian have-up-to-date builds of ghc and git-annex.-"""]]
− doc/todo/union_mounting/comment_1_cb08435812dd7766de26199c73f38e8b._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawln3ckqKx0x_xDZMYwa9Q1bn4I06oWjkog"- nickname="Michael"- subject="comment 1"- date="2013-03-01T01:26:36Z"- content="""-This would indeed be very helpful when remotely mounting a photo/video collection over samba.-"""]]
− doc/todo/union_mounting/comment_2_240b1736f6bd4fbf87c372d3a46e661b._comment
@@ -1,9 +0,0 @@-[[!comment format=mdwn- username="http://edheil.wordpress.com/"- ip="173.162.44.162"- subject="comment 2"- date="2013-03-01T04:50:28Z"- content="""-+1 this would be sweet as hell--"""]]
− doc/todo/union_mounting/comment_3_cf0a0d4fbd929f24f7056115b2acb7de._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://ypid.wordpress.com/"- nickname="ypid"- subject="Please add this ;)"- date="2014-03-13T19:10:17Z"- content="""-+1 This would be so great. For me the only thing which is missing in this awesome project.-"""]]
− doc/todo/windows_support/comment_1_3cc26ad8101a22e95a8c60cf0c4dedcc._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkRITTYYsN0TFKN7G5sZ6BWGZOTQ88Pz4s"- nickname="Zoltán"- subject="cygwin"- date="2012-05-15T00:14:08Z"- content="""-What about [Cygwin](http://cygwin.com/)? It emulates POSIX fairly well under Windows (including signals, forking, fs (also things like /dev/null, /proc), unix file permissions), has all standard gnu utilities. It also emulates symlinks, but they are unfortunately incompatible with NTFS symlinks introduced in Vista [due to some stupid restrictions on Windows](http://cygwin.com/ml/cygwin/2009-10/msg00756.html).--If git-annex could be modified to not require symlinks to work, the it would be a pretty neat solution (and you get a real shell, not some command.com on drugs (aka cmd.exe))-"""]]
− doc/todo/windows_support/comment_2_8acae818ce468967499050bbe3c532ea._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawk5cj-itfFHq_yhJHdzk3QOPp-PNW_MjPU"- nickname="Michael"- subject="+1 Cygwin"- date="2012-05-23T19:30:21Z"- content="""-Windows support is a must. In my experience, binary file means proprietary editor, which means Windows.--Unfortunately, there's not much overlap between people who use graphical editors in Windows all day vs. people who are willing to tolerate Cygwin's setup.exe, compile a Haskell program, learn git and git-annex's 90-odd subcommands, and use a mintty terminal to manage their repository, especially now that there's a sexy GitHub app for Windows.--That aside, I think Windows-based content producers are still *the* audience for git-annex. First Windows support, then a GUI, then the world.-"""]]
− doc/todo/windows_support/comment_3_bd0a12f4c9b884ab8a06082842381a01._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://xolus.net/openid/max"- nickname="B0FH"- subject="What about NTFS support ?"- date="2012-08-02T17:45:10Z"- content="""-Has git-annex been tested with an NTFS-formatted disk under Linux ? NTFS is supposed to be case-sensitive and to allow symlinks, and these are supposed to work with ntfs3g.-"""]]
− doc/todo/windows_support/comment_4_ad06b98b2ddac866ffee334e41fee6a8._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlc1og3PqIGudOMkFNrCCNg66vB7s-jLpc"- nickname="Paul"- subject="Re: What about NTFS support?"- date="2012-08-16T19:30:38Z"- content="""-I successfully use git-annex on an NTFS formatted external USB drive, so yes, it is possible and works well.-"""]]
− doc/todo/windows_support/comment_5_444fc7251f57db241b6e80abae41851c._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://me.yahoo.com/a/dASECLNzvckz4VwqUGYsvthiplY.#d2c27"- nickname="A. D. Sicks"- subject="comment 5"- date="2012-09-09T23:48:21Z"- content="""-Haskell has C++ binding, so it should be possible to port it to .net/Mono with a VB GUI for Windows users.  Windows has a primitive form of symlinks called shortcuts.  Perhaps shortcut support in Windows could replace the use of symlinks.  I've used shortcuts since XP to put my home Windows directory on another partition and never had a hitch...--If anyone is interested in working on this, hit me up.  I would like to use this in my XP vbox to have access to files on my host OS...I have a student edition of Visual Studio 2005 to do an open source port...-"""]]
− doc/todo/windows_support/comment_6_34f1f60b570c389bb1e741b990064a7e._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnlwEMhiNYv__mEUABW4scn83yMraC3hqE"- nickname="Sean"- subject="NTFS symlinks"- date="2013-01-11T21:44:21Z"- content="""-It seems that NTFS (from Vista forward) has full POSIX support for symlinks. At least, Wikipedia [seems to think so.](http://en.wikipedia.org/wiki/NTFS_symbolic_link). What about doing like GitHub and using MinGW for compatibility? Cygwin absolutely blows in terms of installation size and compatability with the rest of Windows.-"""]]
− doc/todo/windows_support/comment_7_a5ca56c487257434650420acfa60e39f._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlpSOjMH7Iaz56v6Pr9KCFSpbvMXvg-y9o"- nickname="Dominik"- subject="So close :-)"- date="2013-06-30T12:46:40Z"- content="""-I was fighting my way forward until I read here that special remote with ssh+rsync and encryption doesn't work. Interestingly I got everything working so far, ssh login is keybased, gpg -k works and the remote setup also correctly cooperated with gpg... but it just didn't sync. Any ideas how complex it is to get this last missing piece moving?-"""]]
− doc/todo/windows_support/comment_8_61214de7d967740d42905f3823ce2f65._comment
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.4.193"- subject="comment 8"- date="2013-06-30T17:58:08Z"- content="""-It should be easy to fix whatever's wrong the the rsync special remote. Just a matter of debugging that.--Adding encryption support on Windows is stuck at a roadblock I don't know the way around. To drive gpg, git-annex uses the `--passphrase-fd` option, and sends the \"passphrase\" (really a big block of binary foo!) over a file descriptor of a pipe that it set up.--Windows, AFAIK, doesn't have file descriptors, or at least there is no equivilant to them that I have access to in the Haskell POSIX compatability layer for Windows. I am reluctant to fall back to using `--passphrase-file` on Windows, since that would be a massive security hole (as would passing the passphrase as a parameter via `--passphrase=`).-"""]]
− doc/todo/windows_support/comment_9_259a0b1a6f4d8d1944173380adc5e7c8._comment
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlpSOjMH7Iaz56v6Pr9KCFSpbvMXvg-y9o"- nickname="Dominik"- subject="comment 9"- date="2013-07-31T10:29:51Z"- content="""-The tradeoff for me is a \"local\" security hole (where I can secure my own laptop) vs. a remotely exploitable thing... If it needs to go through a file, so be it -- it would however be good if that file would be overwritten with garbage before being deleted :-)-"""]]
− doc/walkthrough/backups/comment_1_d0244791d2abbf29553546a6a6568a0f._comment
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="madduck"- ip="2001:a60:f0fb:0:224:d7ff:fe04:c82c"- subject="Warn while inconsistent"- date="2014-04-06T20:44:17Z"- content="""-Sure, git-annex prevents me from dropping files unless there are numcopies around elsewhere, but shouldn't it also ensure that numcopies cannot be set unless that requirement is already met?--Furthermore, shouldn't it ensure that when new files are added, they are automatically distributed to fulfill the requirement?-"""]]
git-annex.cabal view
@@ -1,5 +1,5 @@ Name: git-annex-Version: 5.20151102+Version: 5.20151102.1 Cabal-Version: >= 1.8 License: GPL-3 Maintainer: Joey Hess <id@joeyh.name>
@@ -1,25 +0,0 @@-From df0f41f92d003f7d59ef927737ffec3a9bd61827 Mon Sep 17 00:00:00 2001-From: Joey Hess <joey@kitenet.net>-Date: Tue, 7 May 2013 18:41:01 -0400-Subject: [PATCH] avoid cabal hell------ gsasl.cabal |    2 +-- 1 file changed, 1 insertion(+), 1 deletion(-)--diff --git a/gsasl.cabal b/gsasl.cabal-index d991873..c5c2b19 100644---- a/gsasl.cabal-+++ b/gsasl.cabal-@@ -31,7 +31,7 @@ library-   build-depends:-       base >= 4.0 && < 5.0-     , transformers >= 0.2--    , bytestring >= 0.9-+    , bytestring >= 0.10.3.0- -   pkgconfig-depends: libgsasl >= 1.1- --- -1.7.10.4-
− standalone/android/haskell-patches/socks_0.4.2_0001-remove-IPv6-stuff.patch
@@ -1,135 +0,0 @@-From e1a2f80f6bec25921ab645a0aaf1c6422a8917ab Mon Sep 17 00:00:00 2001-From: dummy <dummy@example.com>-Date: Mon, 11 Nov 2013 01:06:58 +0000-Subject: [PATCH] fix------ Network/Socks5/Command.hs  |    8 +-------- Network/Socks5/Conf.hs     |    1 -- Network/Socks5/Lowlevel.hs |    1 -- Network/Socks5/Types.hs    |   18 +------------------ Network/Socks5/Wire.hs     |    2 --- 5 files changed, 2 insertions(+), 28 deletions(-)--diff --git a/Network/Socks5/Command.hs b/Network/Socks5/Command.hs-index db95fbd..fdba5ec 100644---- a/Network/Socks5/Command.hs-+++ b/Network/Socks5/Command.hs-@@ -13,7 +13,6 @@ module Network.Socks5.Command-     , Connect(..)-     , Command(..)-     , connectIPV4--    , connectIPV6-     , connectDomainName-     -- * lowlevel interface-     , rpc-@@ -29,7 +28,7 @@ import qualified Data.ByteString as B- import qualified Data.ByteString.Char8 as BC- import Data.Serialize- --import Network.Socket (Socket, PortNumber, HostAddress, HostAddress6)-+import Network.Socket (Socket, PortNumber, HostAddress)- import Network.Socket.ByteString- - import Network.Socks5.Types-@@ -65,11 +64,6 @@ connectIPV4 socket hostaddr port = onReply <$> rpc_ socket (Connect $ SocksAddre-     where onReply (SocksAddrIPV4 h, p) = (h, p)-           onReply _                    = error "ipv4 requested, got something different"- --connectIPV6 :: Socket -> HostAddress6 -> PortNumber -> IO (HostAddress6, PortNumber)--connectIPV6 socket hostaddr6 port = onReply <$> rpc_ socket (Connect $ SocksAddress (SocksAddrIPV6 hostaddr6) port)--    where onReply (SocksAddrIPV6 h, p) = (h, p)--          onReply _                    = error "ipv6 requested, got something different"--- -- TODO: FQDN should only be ascii, maybe putting a "fqdn" data type- -- in front to make sure and make the BC.pack safe.- connectDomainName :: Socket -> String -> PortNumber -> IO (SocksHostAddress, PortNumber)-diff --git a/Network/Socks5/Conf.hs b/Network/Socks5/Conf.hs-index c29ff7b..007d382 100644---- a/Network/Socks5/Conf.hs-+++ b/Network/Socks5/Conf.hs-@@ -47,5 +47,4 @@ defaultSocksConfFromSockAddr sockaddr = SocksConf server SocksVer5-     where server       = SocksAddress haddr port-           (haddr,port) = case sockaddr of-                              SockAddrInet p h      -> (SocksAddrIPV4 h, p)--                             SockAddrInet6 p _ h _ -> (SocksAddrIPV6 h, p)-                              _                     -> error "unsupported unix sockaddr type"-diff --git a/Network/Socks5/Lowlevel.hs b/Network/Socks5/Lowlevel.hs-index c10d9b9..2c3d59c 100644---- a/Network/Socks5/Lowlevel.hs-+++ b/Network/Socks5/Lowlevel.hs-@@ -17,7 +17,6 @@ resolveToSockAddr :: SocksAddress -> IO SockAddr- resolveToSockAddr (SocksAddress sockHostAddr port) =-     case sockHostAddr of-         SocksAddrIPV4 ha       -> return $ SockAddrInet port ha--        SocksAddrIPV6 ha6      -> return $ SockAddrInet6 port 0 ha6 0-         SocksAddrDomainName bs -> do he <- getHostByName (BC.unpack bs)-                                      return $ SockAddrInet port (hostAddress he)- -diff --git a/Network/Socks5/Types.hs b/Network/Socks5/Types.hs-index 7fbec25..17c7c83 100644---- a/Network/Socks5/Types.hs-+++ b/Network/Socks5/Types.hs-@@ -19,7 +19,7 @@ module Network.Socks5.Types- import Data.ByteString (ByteString)- import Data.Word- import Data.Data--import Network.Socket (HostAddress, HostAddress6, PortNumber)-+import Network.Socket (HostAddress, PortNumber)- import Control.Exception- import qualified Data.ByteString.Char8 as BC- import Numeric (showHex)-@@ -53,12 +53,10 @@ data SocksMethod =- data SocksHostAddress =-       SocksAddrIPV4 !HostAddress-     | SocksAddrDomainName !ByteString--    | SocksAddrIPV6 !HostAddress6-     deriving (Eq,Ord)- - instance Show SocksHostAddress where-     show (SocksAddrIPV4 ha)       = "SocksAddrIPV4(" ++ showHostAddress ha ++ ")"--    show (SocksAddrIPV6 ha6)      = "SocksAddrIPV6(" ++ showHostAddress6 ha6 ++ ")"-     show (SocksAddrDomainName dn) = "SocksAddrDomainName(" ++ BC.unpack dn ++ ")"- - -- | Converts a HostAddress to a String in dot-decimal notation-@@ -69,20 +67,6 @@ showHostAddress num = concat [show q1, ".", show q2, ".", show q3, ".", show q4]-         (num''',q3) = num'' `quotRem` 256-         (_,q4)      = num''' `quotRem` 256- ---- | Converts a IPv6 HostAddress6 to standard hex notation--showHostAddress6 :: HostAddress6 -> String--showHostAddress6 (a,b,c,d) =--    (concat . intersperse ":" . map (flip showHex ""))--        [p1,p2,p3,p4,p5,p6,p7,p8]--    where (a',p2) = a `quotRem` 65536--          (_,p1)  = a' `quotRem` 65536--          (b',p4) = b `quotRem` 65536--          (_,p3)  = b' `quotRem` 65536--          (c',p6) = c `quotRem` 65536--          (_,p5)  = c' `quotRem` 65536--          (d',p8) = d `quotRem` 65536--          (_,p7)  = d' `quotRem` 65536--- -- | Describe a Socket address on the SOCKS protocol- data SocksAddress = SocksAddress !SocksHostAddress !PortNumber-     deriving (Show,Eq,Ord)-diff --git a/Network/Socks5/Wire.hs b/Network/Socks5/Wire.hs-index 10bd262..a30f32e 100644---- a/Network/Socks5/Wire.hs-+++ b/Network/Socks5/Wire.hs-@@ -46,12 +46,10 @@ data SocksResponse = SocksResponse- - getAddr 1 = SocksAddrIPV4 <$> getWord32host- getAddr 3 = SocksAddrDomainName <$> (getWord8 >>= getByteString . fromIntegral)--getAddr 4 = SocksAddrIPV6 <$> (liftM4 (,,,) getWord32host getWord32host getWord32host getWord32host)- getAddr n = error ("cannot get unknown socket address type: " ++ show n)- - putAddr (SocksAddrIPV4 h)         = putWord8 1 >> putWord32host h- putAddr (SocksAddrDomainName b)   = putWord8 3 >> putWord8 (fromIntegral $ B.length b) >> putByteString b--putAddr (SocksAddrIPV6 (a,b,c,d)) = putWord8 4 >> mapM_ putWord32host [a,b,c,d]- - getSocksRequest 5 = do-     cmd <- toEnum . fromIntegral <$> getWord8--- -1.7.10.4-
− standalone/android/icons/drawable-hdpi/ic_stat_service_notification_icon.png

binary file changed (1310 → absent bytes)

− standalone/android/icons/drawable-ldpi/ic_stat_service_notification_icon.png

binary file changed (682 → absent bytes)

− standalone/android/icons/drawable-mdpi/ic_stat_service_notification_icon.png

binary file changed (946 → absent bytes)

− standalone/android/tmp/network-2.4.1.2/LICENSE
@@ -1,29 +0,0 @@-Copyright (c) 2002-2010, The University Court of the University of Glasgow.-Copyright (c) 2007-2010, Johan Tibell--Redistribution and use in source and binary forms, with or without-modification, are permitted provided that the following conditions are met:--- Redistributions of source code must retain the above copyright notice,-this list of conditions and the following disclaimer.--- Redistributions in binary form must reproduce the above copyright notice,-this list of conditions and the following disclaimer in the documentation-and/or other materials provided with the distribution.--- Neither name of the University nor the names of its contributors may be-used to endorse or promote products derived from this software without-specific prior written permission.--THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF-GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE-UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH-DAMAGE.
− standalone/android/tmp/network-2.4.1.2/Network.hs
@@ -1,473 +0,0 @@-{-# LANGUAGE CPP #-}--------------------------------------------------------------------------------- |--- Module      :  Network--- Copyright   :  (c) The University of Glasgow 2001--- License     :  BSD-style (see the file libraries/network/LICENSE)--- --- Maintainer  :  libraries@haskell.org--- Stability   :  provisional--- Portability :  portable------ The "Network" interface is a \"higher-level\" interface to--- networking facilities, and it is recommended unless you need the--- lower-level interface in "Network.Socket".-----------------------------------------------------------------------------------#include "HsNetworkConfig.h"--#ifdef HAVE_GETADDRINFO--- Use IPv6-capable function definitions if the OS supports it.-#define IPV6_SOCKET_SUPPORT 1-#endif--module Network-    (-    -- * Basic data types-      Socket-    , PortID(..)-    , HostName-    , PortNumber--    -- * Initialisation-    , withSocketsDo-    -    -- * Server-side connections-    , listenOn-    , accept-    , sClose--    -- * Client-side connections-    , connectTo--    -- * Simple sending and receiving-    {-$sendrecv-}-    , sendTo-    , recvFrom--    -- * Miscellaneous-    , socketPort--    -- * Networking Issues-    -- ** Buffering-    {-$buffering-}--    -- ** Improving I\/O Performance over sockets-    {-$performance-}--    -- ** @SIGPIPE@-    {-$sigpipe-}-    ) where--import Control.Monad (liftM)-import Data.Maybe (fromJust)-import Network.BSD-import Network.Socket hiding (accept, socketPort, recvFrom, sendTo, PortNumber)-import qualified Network.Socket as Socket (accept)-import System.IO-import Prelude-import qualified Control.Exception as Exception---- ------------------------------------------------------------------------------ High Level ``Setup'' functions---- If the @PortID@ specifies a unix family socket and the @Hostname@--- differs from that returned by @getHostname@ then an error is--- raised. Alternatively an empty string may be given to @connectTo@--- signalling that the current hostname applies.--data PortID = -          Service String                -- Service Name eg "ftp"-        | PortNumber PortNumber         -- User defined Port Number-#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)-        | UnixSocket String             -- Unix family socket in file system-#endif-        deriving (Show, Eq)---- | Calling 'connectTo' creates a client side socket which is--- connected to the given host and port.  The Protocol and socket type is--- derived from the given port identifier.  If a port number is given--- then the result is always an internet family 'Stream' socket. --connectTo :: HostName           -- Hostname-          -> PortID             -- Port Identifier-          -> IO Handle          -- Connected Socket--#if defined(IPV6_SOCKET_SUPPORT)--- IPv6 and IPv4.--connectTo hostname (Service serv) = connect' hostname serv--connectTo hostname (PortNumber port) = connect' hostname (show port)-#else--- IPv4 only.--connectTo hostname (Service serv) = do-    proto <- getProtocolNumber "tcp"-    bracketOnError-        (socket AF_INET Stream proto)-        (sClose)  -- only done if there's an error-        (\sock -> do-          port  <- getServicePortNumber serv-          he    <- getHostByName hostname-          connect sock (SockAddrInet port (hostAddress he))-          socketToHandle sock ReadWriteMode-        )--connectTo hostname (PortNumber port) = do-    proto <- getProtocolNumber "tcp"-    bracketOnError-        (socket AF_INET Stream proto)-        (sClose)  -- only done if there's an error-        (\sock -> do-          he <- getHostByName hostname-          connect sock (SockAddrInet port (hostAddress he))-          socketToHandle sock ReadWriteMode-        )-#endif--#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)-connectTo _ (UnixSocket path) = do-    bracketOnError-        (socket AF_UNIX Stream 0)-        (sClose)-        (\sock -> do-          connect sock (SockAddrUnix path)-          socketToHandle sock ReadWriteMode-        )-#endif--#if defined(IPV6_SOCKET_SUPPORT)-connect' :: HostName -> ServiceName -> IO Handle--connect' host serv = do-    proto <- getProtocolNumber "tcp"-    let hints = defaultHints { addrFlags = [AI_ADDRCONFIG]-                             , addrProtocol = proto-                             , addrSocketType = Stream }-    addrs <- getAddrInfo (Just hints) (Just host) (Just serv)-    firstSuccessful $ map tryToConnect addrs-  where-  tryToConnect addr =-    bracketOnError-        (socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr))-        (sClose)  -- only done if there's an error-        (\sock -> do-          connect sock (addrAddress addr)-          socketToHandle sock ReadWriteMode-        )-#endif---- | Creates the server side socket which has been bound to the--- specified port.------ 'maxListenQueue' (typically 128) is specified to the listen queue.--- This is good enough for normal network servers but is too small--- for high performance servers.------ To avoid the \"Address already in use\" problems,--- the 'ReuseAddr' socket option is set on the listening socket.------ If available, the 'IPv6Only' socket option is set to 0--- so that both IPv4 and IPv6 can be accepted with this socket.------ If you don't like the behavior above, please use the lower level--- 'Network.Socket.listen' instead.--listenOn :: PortID      -- ^ Port Identifier-         -> IO Socket   -- ^ Listening Socket--#if defined(IPV6_SOCKET_SUPPORT)--- IPv6 and IPv4.--listenOn (Service serv) = listen' serv--listenOn (PortNumber port) = listen' (show port)-#else--- IPv4 only.--listenOn (Service serv) = do-    proto <- getProtocolNumber "tcp"-    bracketOnError-        (socket AF_INET Stream proto)-        (sClose)-        (\sock -> do-            port    <- getServicePortNumber serv-            setSocketOption sock ReuseAddr 1-            bindSocket sock (SockAddrInet port iNADDR_ANY)-            listen sock maxListenQueue-            return sock-        )--listenOn (PortNumber port) = do-    proto <- getProtocolNumber "tcp"-    bracketOnError-        (socket AF_INET Stream proto)-        (sClose)-        (\sock -> do-            setSocketOption sock ReuseAddr 1-            bindSocket sock (SockAddrInet port iNADDR_ANY)-            listen sock maxListenQueue-            return sock-        )-#endif--#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)-listenOn (UnixSocket path) =-    bracketOnError-        (socket AF_UNIX Stream 0)-        (sClose)-        (\sock -> do-            setSocketOption sock ReuseAddr 1-            bindSocket sock (SockAddrUnix path)-            listen sock maxListenQueue-            return sock-        )-#endif--#if defined(IPV6_SOCKET_SUPPORT)-listen' :: ServiceName -> IO Socket--listen' serv = do-    proto <- getProtocolNumber "tcp"-    -- We should probably specify addrFamily = AF_INET6 and the filter-    -- code below should be removed. AI_ADDRCONFIG is probably not-    -- necessary. But this code is well-tested. So, let's keep it.-    let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_PASSIVE]-                             , addrSocketType = Stream-                             , addrProtocol = proto }-    addrs <- getAddrInfo (Just hints) Nothing (Just serv)-    -- Choose an IPv6 socket if exists.  This ensures the socket can-    -- handle both IPv4 and IPv6 if v6only is false.-    let addrs' = filter (\x -> addrFamily x == AF_INET6) addrs-        addr = if null addrs' then head addrs else head addrs'-    bracketOnError-        (socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr))-        (sClose)-        (\sock -> do-            setSocketOption sock ReuseAddr 1-            bindSocket sock (addrAddress addr)-            listen sock maxListenQueue-            return sock-        )-#endif---- -------------------------------------------------------------------------------- accept---- | Accept a connection on a socket created by 'listenOn'.  Normal--- I\/O operations (see "System.IO") can be used on the 'Handle'--- returned to communicate with the client.--- Notice that although you can pass any Socket to Network.accept,--- only sockets of either AF_UNIX, AF_INET, or AF_INET6 will work--- (this shouldn't be a problem, though). When using AF_UNIX, HostName--- will be set to the path of the socket and PortNumber to -1.----accept :: Socket                -- ^ Listening Socket-       -> IO (Handle,-              HostName,-              PortNumber)       -- ^ Triple of: read\/write 'Handle' for -                                -- communicating with the client,-                                -- the 'HostName' of the peer socket, and-                                -- the 'PortNumber' of the remote connection.-accept sock@(MkSocket _ AF_INET _ _ _) = do- ~(sock', (SockAddrInet port haddr)) <- Socket.accept sock- peer <- catchIO-          (do   -             (HostEntry peer _ _ _) <- getHostByAddr AF_INET haddr-             return peer-          )-          (\_e -> inet_ntoa haddr)-                -- if getHostByName fails, we fall back to the IP address- handle <- socketToHandle sock' ReadWriteMode- return (handle, peer, port)-#if defined(IPV6_SOCKET_SUPPORT)-accept sock@(MkSocket _ AF_INET6 _ _ _) = do- (sock', addr) <- Socket.accept sock- peer <- catchIO ((fromJust . fst) `liftM` getNameInfo [] True False addr) $-         \_ -> case addr of-                 SockAddrInet  _   a   -> inet_ntoa a-                 SockAddrInet6 _ _ a _ -> return (show a)-# if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)-                 SockAddrUnix      a   -> return a-# endif- handle <- socketToHandle sock' ReadWriteMode- let port = case addr of-              SockAddrInet  p _     -> p-              SockAddrInet6 p _ _ _ -> p-              _                     -> -1- return (handle, peer, port)-#endif-#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)-accept sock@(MkSocket _ AF_UNIX _ _ _) = do- ~(sock', (SockAddrUnix path)) <- Socket.accept sock- handle <- socketToHandle sock' ReadWriteMode- return (handle, path, -1)-#endif-accept (MkSocket _ family _ _ _) =-  error $ "Sorry, address family " ++ (show family) ++ " is not supported!"---- -------------------------------------------------------------------------------- sendTo/recvFrom--{-$sendrecv-Send and receive data from\/to the given host and port number.  These-should normally only be used where the socket will not be required for-further calls. Also, note that due to the use of 'hGetContents' in 'recvFrom'-the socket will remain open (i.e. not available) even if the function already-returned. Their use is strongly discouraged except for small test-applications-or invocations from the command line.--}--sendTo :: HostName      -- Hostname-       -> PortID        -- Port Number-       -> String        -- Message to send-       -> IO ()-sendTo h p msg = do-  s <- connectTo h p-  hPutStr s msg-  hClose s--recvFrom :: HostName    -- Hostname-         -> PortID      -- Port Number-         -> IO String   -- Received Data--#if defined(IPV6_SOCKET_SUPPORT)-recvFrom host port = do-    proto <- getProtocolNumber "tcp"-    let hints = defaultHints { addrFlags = [AI_ADDRCONFIG]-                             , addrProtocol = proto-                             , addrSocketType = Stream }-    allowed <- map addrAddress `liftM` getAddrInfo (Just hints) (Just host)-                                                   Nothing-    s <- listenOn port-    let waiting = do-        (s', addr) <- Socket.accept s-        if not (addr `oneOf` allowed)-         then sClose s' >> waiting-         else socketToHandle s' ReadMode >>= hGetContents-    waiting-  where-    a@(SockAddrInet _ ha) `oneOf` ((SockAddrInet _ hb):bs)-        | ha == hb = True-        | otherwise = a `oneOf` bs-    a@(SockAddrInet6 _ _ ha _) `oneOf` ((SockAddrInet6 _ _ hb _):bs)-        | ha == hb = True-        | otherwise = a `oneOf` bs-    _ `oneOf` _ = False-#else-recvFrom host port = do- ip  <- getHostByName host- let ipHs = hostAddresses ip- s   <- listenOn port- let -  waiting = do-     ~(s', SockAddrInet _ haddr)  <-  Socket.accept s-     he <- getHostByAddr AF_INET haddr-     if not (any (`elem` ipHs) (hostAddresses he))-      then do-         sClose s'-         waiting-      else do-        h <- socketToHandle s' ReadMode-        msg <- hGetContents h-        return msg-- message <- waiting- return message-#endif---- ------------------------------------------------------------------------------ Access function returning the port type/id of socket.---- | Returns the 'PortID' associated with a given socket.-socketPort :: Socket -> IO PortID-socketPort s = do-    sockaddr <- getSocketName s-    return (portID sockaddr)-  where-   portID sa =-    case sa of-     SockAddrInet port _      -> PortNumber port-#if defined(IPV6_SOCKET_SUPPORT)-     SockAddrInet6 port _ _ _ -> PortNumber port-#endif-#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)-     SockAddrUnix path        -> UnixSocket path-#endif---- ------------------------------------------------------------------------------ Utils---- Like bracket, but only performs the final action if there was an --- exception raised by the middle bit.-bracketOnError-        :: IO a         -- ^ computation to run first (\"acquire resource\")-        -> (a -> IO b)  -- ^ computation to run last (\"release resource\")-        -> (a -> IO c)  -- ^ computation to run in-between-        -> IO c         -- returns the value from the in-between computation-#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 606-bracketOnError before after thing =-  Exception.block (do-    a <- before-    r <- Exception.catch-           (Exception.unblock (thing a))-           (\e -> do { after a; Exception.throw e })-    return r- )-#else-bracketOnError = Exception.bracketOnError-#endif---------------------------------------------------------------------------------- Extra documentation--{-$buffering--The 'Handle' returned by 'connectTo' and 'accept' is block-buffered by-default.  For an interactive application you may want to set the-buffering mode on the 'Handle' to-'LineBuffering' or 'NoBuffering', like so:--> h <- connectTo host port-> hSetBuffering h LineBuffering--}--{-$performance--For really fast I\/O, it might be worth looking at the 'hGetBuf' and-'hPutBuf' family of functions in "System.IO".--}--{-$sigpipe--On Unix, when writing to a socket and the reading end is-closed by the remote client, the program is normally sent a-@SIGPIPE@ signal by the operating system.  The-default behaviour when a @SIGPIPE@ is received is-to terminate the program silently, which can be somewhat confusing-if you haven't encountered this before.  The solution is to-specify that @SIGPIPE@ is to be ignored, using-the POSIX library:-->  import Posix->  main = do installHandler sigPIPE Ignore Nothing; ...--}--catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a-#if MIN_VERSION_base(4,0,0)-catchIO = Exception.catch-#else-catchIO = Exception.catchJust Exception.ioErrors-#endif---- Returns the first action from a list which does not throw an exception.--- If all the actions throw exceptions (and the list of actions is not empty),--- the last exception is thrown.-firstSuccessful :: [IO a] -> IO a-firstSuccessful [] = error "firstSuccessful: empty list"-firstSuccessful (p:ps) = catchIO p $ \e ->-    case ps of-        [] -> Exception.throwIO e-        _  -> firstSuccessful ps
− standalone/android/tmp/network-2.4.1.2/Network/BSD.hsc
@@ -1,489 +0,0 @@-{-# LANGUAGE CPP, ForeignFunctionInterface #-}--------------------------------------------------------------------------------- |--- Module      :  Network.BSD--- Copyright   :  (c) The University of Glasgow 2001--- License     :  BSD-style (see the file libraries/network/LICENSE)--- --- Maintainer  :  libraries@haskell.org--- Stability   :  experimental--- Portability :  non-portable------ The "Network.BSD" module defines Haskell bindings to network--- programming functionality provided by BSD Unix derivatives.-----------------------------------------------------------------------------------#include "HsNet.h"---- NOTE: ##, we want this interpreted when compiling the .hs, not by hsc2hs.-##include "Typeable.h"--module Network.BSD-    (-    -- * Host names-      HostName-    , getHostName--    , HostEntry(..)-    , getHostByName-    , getHostByAddr-    , hostAddress--    -- * Service names-    , ServiceEntry(..)-    , ServiceName-    , getServiceByName-    , getServiceByPort-    , getServicePortNumber--#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)-    , getServiceEntries--    -- ** Low level functionality-    , getServiceEntry-    , setServiceEntry-    , endServiceEntry-#endif--    -- * Protocol names-    , ProtocolName-    , ProtocolNumber-    , ProtocolEntry(..)-    , getProtocolByName-    , getProtocolByNumber-    , getProtocolNumber-    , defaultProtocol--    -- * Port numbers-    , PortNumber--    -- * Network names-    , NetworkName-    , NetworkAddr-    , NetworkEntry(..)--#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)-    , getNetworkByName-    , getNetworkByAddr-    -- ** Low level functionality-#endif-    ) where--import Network.Socket--import Control.Concurrent (MVar, newMVar, withMVar)-import qualified Control.Exception as E-import Foreign.C.String (CString, peekCString, withCString)-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)-import Foreign.C.Types ( CShort )-#endif-#if __GLASGOW_HASKELL__ >= 703-import Foreign.C.Types ( CInt(..), CULong(..), CSize(..) )-#else-import Foreign.C.Types ( CInt, CULong, CSize )-#endif-import Foreign.Ptr (Ptr, nullPtr)-import Foreign.Storable (Storable(..))-import Foreign.Marshal.Array (allocaArray0, peekArray0)-import Foreign.Marshal.Utils (with, fromBool)-import Data.Typeable-import System.IO.Error (ioeSetErrorString, mkIOError)-import System.IO.Unsafe (unsafePerformIO)--#if __GLASGOW_HASKELL__ >= 611-import GHC.IO.Exception-#else-import GHC.IOBase-#endif--import Control.Monad (liftM)--import Network.Socket.Internal (throwSocketErrorIfMinus1_)---- ------------------------------------------------------------------------------ Basic Types--type ProtocolName = String---- ------------------------------------------------------------------------------ Service Database Access---- Calling getServiceByName for a given service and protocol returns--- the systems service entry.  This should be used to find the port--- numbers for standard protocols such as SMTP and FTP.  The remaining--- three functions should be used for browsing the service database--- sequentially.---- Calling setServiceEntry with True indicates that the service--- database should be left open between calls to getServiceEntry.  To--- close the database a call to endServiceEntry is required.  This--- database file is usually stored in the file /etc/services.--data ServiceEntry  = -  ServiceEntry  {-     serviceName     :: ServiceName,    -- Official Name-     serviceAliases  :: [ServiceName],  -- aliases-     servicePort     :: PortNumber,     -- Port Number  ( network byte order )-     serviceProtocol :: ProtocolName    -- Protocol-  } deriving (Show, Typeable)--instance Storable ServiceEntry where-   sizeOf    _ = #const sizeof(struct servent)-   alignment _ = alignment (undefined :: CInt) -- ???--   peek p = do-        s_name    <- (#peek struct servent, s_name) p >>= peekCString-        s_aliases <- (#peek struct servent, s_aliases) p-                           >>= peekArray0 nullPtr-                           >>= mapM peekCString-        s_port    <- (#peek struct servent, s_port) p-        s_proto   <- (#peek struct servent, s_proto) p >>= peekCString-        return (ServiceEntry {-                        serviceName     = s_name,-                        serviceAliases  = s_aliases,-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)-                        servicePort     = PortNum (fromIntegral (s_port :: CShort)),-#else-                           -- s_port is already in network byte order, but it-                           -- might be the wrong size.-                        servicePort     = PortNum (fromIntegral (s_port :: CInt)),-#endif-                        serviceProtocol = s_proto-                })--   poke _p = error "Storable.poke(BSD.ServiceEntry) not implemented"----- | Get service by name.-getServiceByName :: ServiceName         -- Service Name-                 -> ProtocolName        -- Protocol Name-                 -> IO ServiceEntry     -- Service Entry-getServiceByName name proto = withLock $ do- withCString name  $ \ cstr_name  -> do- withCString proto $ \ cstr_proto -> do- throwNoSuchThingIfNull "getServiceByName" "no such service entry"-   $ (trySysCall (c_getservbyname cstr_name cstr_proto))- >>= peek--foreign import CALLCONV unsafe "getservbyname" -  c_getservbyname :: CString -> CString -> IO (Ptr ServiceEntry)---- | Get the service given a 'PortNumber' and 'ProtocolName'.-getServiceByPort :: PortNumber -> ProtocolName -> IO ServiceEntry-getServiceByPort (PortNum port) proto = withLock $ do- withCString proto $ \ cstr_proto -> do- throwNoSuchThingIfNull "getServiceByPort" "no such service entry"-   $ (trySysCall (c_getservbyport (fromIntegral port) cstr_proto))- >>= peek--foreign import CALLCONV unsafe "getservbyport" -  c_getservbyport :: CInt -> CString -> IO (Ptr ServiceEntry)---- | Get the 'PortNumber' corresponding to the 'ServiceName'.-getServicePortNumber :: ServiceName -> IO PortNumber-getServicePortNumber name = do-    (ServiceEntry _ _ port _) <- getServiceByName name "tcp"-    return port--#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)-getServiceEntry :: IO ServiceEntry-getServiceEntry = withLock $ do- throwNoSuchThingIfNull "getServiceEntry" "no such service entry"-   $ trySysCall c_getservent- >>= peek--foreign import ccall unsafe "getservent" c_getservent :: IO (Ptr ServiceEntry)--setServiceEntry :: Bool -> IO ()-setServiceEntry flg = withLock $ trySysCall $ c_setservent (fromBool flg)--foreign import ccall unsafe  "setservent" c_setservent :: CInt -> IO ()--endServiceEntry :: IO ()-endServiceEntry = withLock $ trySysCall $ c_endservent--foreign import ccall unsafe  "endservent" c_endservent :: IO ()--getServiceEntries :: Bool -> IO [ServiceEntry]-getServiceEntries stayOpen = do-  setServiceEntry stayOpen-  getEntries (getServiceEntry) (endServiceEntry)-#endif---- ------------------------------------------------------------------------------ Protocol Entries---- The following relate directly to the corresponding UNIX C--- calls for returning the protocol entries. The protocol entry is--- represented by the Haskell type ProtocolEntry.---- As for setServiceEntry above, calling setProtocolEntry.--- determines whether or not the protocol database file, usually--- @/etc/protocols@, is to be kept open between calls of--- getProtocolEntry. Similarly, --data ProtocolEntry = -  ProtocolEntry  {-     protoName    :: ProtocolName,      -- Official Name-     protoAliases :: [ProtocolName],    -- aliases-     protoNumber  :: ProtocolNumber     -- Protocol Number-  } deriving (Read, Show, Typeable)--instance Storable ProtocolEntry where-   sizeOf    _ = #const sizeof(struct protoent)-   alignment _ = alignment (undefined :: CInt) -- ???--   peek p = do-        p_name    <- (#peek struct protoent, p_name) p >>= peekCString-        p_aliases <- (#peek struct protoent, p_aliases) p-                           >>= peekArray0 nullPtr-                           >>= mapM peekCString-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)-         -- With WinSock, the protocol number is only a short;-         -- hoist it in as such, but represent it on the Haskell side-         -- as a CInt.-        p_proto_short  <- (#peek struct protoent, p_proto) p -        let p_proto = fromIntegral (p_proto_short :: CShort)-#else-        p_proto        <- (#peek struct protoent, p_proto) p -#endif-        return (ProtocolEntry { -                        protoName    = p_name,-                        protoAliases = p_aliases,-                        protoNumber  = p_proto-                })--   poke _p = error "Storable.poke(BSD.ProtocolEntry) not implemented"--getProtocolByName :: ProtocolName -> IO ProtocolEntry-getProtocolByName "tcp" = return $-	ProtocolEntry {protoName = "tcp", protoAliases = ["TCP"], protoNumber = 6}-getProtocolByName "udp" = return $-	ProtocolEntry {protoName = "udp", protoAliases = ["UDP"], protoNumber = 17}-getProtocolByName name = withLock $ do- withCString name $ \ name_cstr -> do- throwNoSuchThingIfNull "getProtocolByName" ("no such protocol name: " ++ name)-   $ (trySysCall.c_getprotobyname) name_cstr- >>= peek--foreign import  CALLCONV unsafe  "getprotobyname" -   c_getprotobyname :: CString -> IO (Ptr ProtocolEntry)---getProtocolByNumber :: ProtocolNumber -> IO ProtocolEntry-getProtocolByNumber num = withLock $ do- throwNoSuchThingIfNull "getProtocolByNumber" ("no such protocol number: " ++ show num)-   $ (trySysCall.c_getprotobynumber) (fromIntegral num)- >>= peek--foreign import CALLCONV unsafe  "getprotobynumber"-   c_getprotobynumber :: CInt -> IO (Ptr ProtocolEntry)---getProtocolNumber :: ProtocolName -> IO ProtocolNumber-getProtocolNumber proto = do- (ProtocolEntry _ _ num) <- getProtocolByName proto- return num---- ------------------------------------------------------------------------------ Host lookups--data HostEntry = -  HostEntry  {-     hostName      :: HostName,         -- Official Name-     hostAliases   :: [HostName],       -- aliases-     hostFamily    :: Family,           -- Host Type (currently AF_INET)-     hostAddresses :: [HostAddress]     -- Set of Network Addresses  (in network byte order)-  } deriving (Read, Show, Typeable)--instance Storable HostEntry where-   sizeOf    _ = #const sizeof(struct hostent)-   alignment _ = alignment (undefined :: CInt) -- ???--   peek p = do-        h_name       <- (#peek struct hostent, h_name) p >>= peekCString-        h_aliases    <- (#peek struct hostent, h_aliases) p-                                >>= peekArray0 nullPtr-                                >>= mapM peekCString-        h_addrtype   <- (#peek struct hostent, h_addrtype) p-        -- h_length       <- (#peek struct hostent, h_length) p-        h_addr_list  <- (#peek struct hostent, h_addr_list) p-                                >>= peekArray0 nullPtr-                                >>= mapM peek-        return (HostEntry {-                        hostName       = h_name,-                        hostAliases    = h_aliases,-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)-                        hostFamily     = unpackFamily (fromIntegral (h_addrtype :: CShort)),-#else-                        hostFamily     = unpackFamily h_addrtype,-#endif-                        hostAddresses  = h_addr_list-                })--   poke _p = error "Storable.poke(BSD.ServiceEntry) not implemented"----- convenience function:-hostAddress :: HostEntry -> HostAddress-hostAddress (HostEntry nm _ _ ls) =- case ls of-   []    -> error ("BSD.hostAddress: empty network address list for " ++ nm)-   (x:_) -> x---- getHostByName must use the same lock as the *hostent functions--- may cause problems if called concurrently.---- | Resolve a 'HostName' to IPv4 address.-getHostByName :: HostName -> IO HostEntry-getHostByName name = withLock $ do-  withCString name $ \ name_cstr -> do-   ent <- throwNoSuchThingIfNull "getHostByName" "no such host entry"-                $ trySysCall $ c_gethostbyname name_cstr-   peek ent--foreign import CALLCONV safe "gethostbyname" -   c_gethostbyname :: CString -> IO (Ptr HostEntry)----- The locking of gethostbyaddr is similar to gethostbyname.--- | Get a 'HostEntry' corresponding to the given address and family.--- Note that only IPv4 is currently supported.-getHostByAddr :: Family -> HostAddress -> IO HostEntry-getHostByAddr family addr = do- with addr $ \ ptr_addr -> withLock $ do- throwNoSuchThingIfNull         "getHostByAddr" "no such host entry"-   $ trySysCall $ c_gethostbyaddr ptr_addr (fromIntegral (sizeOf addr)) (packFamily family)- >>= peek--foreign import CALLCONV safe "gethostbyaddr"-   c_gethostbyaddr :: Ptr HostAddress -> CInt -> CInt -> IO (Ptr HostEntry)---- ------------------------------------------------------------------------------ Accessing network information---- Same set of access functions as for accessing host,protocol and--- service system info, this time for the types of networks supported.---- network addresses are represented in host byte order.-type NetworkAddr = CULong--type NetworkName = String--data NetworkEntry =-  NetworkEntry {-     networkName        :: NetworkName,   -- official name-     networkAliases     :: [NetworkName], -- aliases-     networkFamily      :: Family,         -- type-     networkAddress     :: NetworkAddr-   } deriving (Read, Show, Typeable)--instance Storable NetworkEntry where-   sizeOf    _ = #const sizeof(struct hostent)-   alignment _ = alignment (undefined :: CInt) -- ???--   peek p = do-        n_name         <- (#peek struct netent, n_name) p >>= peekCString-        n_aliases      <- (#peek struct netent, n_aliases) p-                                >>= peekArray0 nullPtr-                                >>= mapM peekCString-        n_addrtype     <- (#peek struct netent, n_addrtype) p-        n_net          <- (#peek struct netent, n_net) p-        return (NetworkEntry {-                        networkName      = n_name,-                        networkAliases   = n_aliases,-                        networkFamily    = unpackFamily (fromIntegral -                                                        (n_addrtype :: CInt)),-                        networkAddress   = n_net-                })--   poke _p = error "Storable.poke(BSD.NetEntry) not implemented"---#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)-getNetworkByName :: NetworkName -> IO NetworkEntry-getNetworkByName name = withLock $ do- withCString name $ \ name_cstr -> do-  throwNoSuchThingIfNull "getNetworkByName" "no such network entry"-    $ trySysCall $ c_getnetbyname name_cstr-  >>= peek--foreign import ccall unsafe "getnetbyname" -   c_getnetbyname  :: CString -> IO (Ptr NetworkEntry)--getNetworkByAddr :: NetworkAddr -> Family -> IO NetworkEntry-getNetworkByAddr addr family = withLock $ do- throwNoSuchThingIfNull "getNetworkByAddr" "no such network entry"-   $ trySysCall $ c_getnetbyaddr addr (packFamily family)- >>= peek--foreign import ccall unsafe "getnetbyaddr" -   c_getnetbyaddr  :: NetworkAddr -> CInt -> IO (Ptr NetworkEntry)--#endif---- Mutex for name service lockdown--{-# NOINLINE lock #-}-lock :: MVar ()-lock = unsafePerformIO $ newMVar ()--withLock :: IO a -> IO a-withLock act = withMVar lock (\_ -> act)---- ------------------------------------------------------------------------------ Miscellaneous Functions---- | Calling getHostName returns the standard host name for the current--- processor, as set at boot time.--getHostName :: IO HostName-getHostName = do-  let size = 256-  allocaArray0 size $ \ cstr -> do-    throwSocketErrorIfMinus1_ "getHostName" $ c_gethostname cstr (fromIntegral size)-    peekCString cstr--foreign import CALLCONV unsafe "gethostname" -   c_gethostname :: CString -> CSize -> IO CInt---- Helper function used by the exported functions that provides a--- Haskellised view of the enumerator functions:--getEntries :: IO a  -- read-           -> IO () -- at end-           -> IO [a]-getEntries getOne atEnd = loop-  where-    loop = do-      vv <- E.catch (liftM Just getOne)-            (\ e -> let _types = e :: IOException in return Nothing)-      case vv of-        Nothing -> return []-        Just v  -> loop >>= \ vs -> atEnd >> return (v:vs)----- ------------------------------------------------------------------------------ Winsock only:---   The BSD API networking calls made locally return NULL upon failure.---   That failure may very well be due to WinSock not being initialised,---   so if NULL is seen try init'ing and repeat the call.-#if !defined(mingw32_HOST_OS) && !defined(_WIN32)-trySysCall :: IO a -> IO a-trySysCall act = act-#else-trySysCall :: IO (Ptr a) -> IO (Ptr a)-trySysCall act = do-  ptr <- act-  if (ptr == nullPtr)-   then withSocketsDo act-   else return ptr-#endif--throwNoSuchThingIfNull :: String -> String -> IO (Ptr a) -> IO (Ptr a)-throwNoSuchThingIfNull loc desc act = do-  ptr <- act-  if (ptr == nullPtr)-   then ioError (ioeSetErrorString (mkIOError NoSuchThing loc Nothing Nothing) desc)-   else return ptr
− standalone/android/tmp/network-2.4.1.2/Network/Socket.hsc
@@ -1,1663 +0,0 @@-{-# LANGUAGE CPP, ScopedTypeVariables #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}--------------------------------------------------------------------------------- |--- Module      :  Network.Socket--- Copyright   :  (c) The University of Glasgow 2001--- License     :  BSD-style (see the file libraries/network/LICENSE)------ Maintainer  :  libraries@haskell.org--- Stability   :  provisional--- Portability :  portable------ The "Network.Socket" module is for when you want full control over--- sockets.  Essentially the entire C socket API is exposed through--- this module; in general the operations follow the behaviour of the C--- functions of the same name (consult your favourite Unix networking book).------ A higher level interface to networking operations is provided--- through the module "Network".-----------------------------------------------------------------------------------#include "HsNet.h"---- NOTE: ##, we want this interpreted when compiling the .hs, not by hsc2hs.-##include "Typeable.h"---- In order to process this file, you need to have CALLCONV defined.--module Network.Socket-    (-    -- * Types-      Socket(..)-    , Family(..)-    , isSupportedFamily-    , SocketType(..)-    , isSupportedSocketType-    , SockAddr(..)-    , SocketStatus(..)-    , HostAddress-#if defined(IPV6_SOCKET_SUPPORTNO)-    , HostAddress6-    , FlowInfo-    , ScopeID-#endif-    , ShutdownCmd(..)-    , ProtocolNumber-    , defaultProtocol-    , PortNumber(..)-    -- PortNumber is used non-abstractly in Network.BSD.  ToDo: remove-    -- this use and make the type abstract.--    -- * Address operations--    , HostName-    , ServiceName--#if defined(IPV6_SOCKET_SUPPORT) || 1-    , AddrInfo(..)--    , AddrInfoFlag(..)-    , addrInfoFlagImplemented--    , defaultHints--    , getAddrInfo--    , NameInfoFlag(..)--    , getNameInfo-#endif--    -- * Socket operations-    , socket-#if defined(DOMAIN_SOCKET_SUPPORT)-    , socketPair-#endif-    , connect-    , bind-    , listen-    , accept-    , getPeerName-    , getSocketName--#ifdef HAVE_STRUCT_UCRED-    -- get the credentials of our domain socket peer.-    , getPeerCred-#endif--    , socketPort--    , socketToHandle--    -- ** Sending and receiving data-    -- $sendrecv-    , sendTo-    , sendBufTo--    , recvFrom-    , recvBufFrom--    , send-    , recv-    , recvLen-    , sendBuf-    , recvBuf--    , inet_addr-    , inet_ntoa--    , shutdown-    , close--    -- ** Predicates on sockets-    , isConnected-    , isBound-    , isListening-    , isReadable-    , isWritable--    -- * Socket options-    , SocketOption(..)-    , isSupportedSocketOption-    , getSocketOption-    , setSocketOption--    -- * File descriptor transmission-#ifdef DOMAIN_SOCKET_SUPPORT-    , sendFd-    , recvFd--#endif--    -- * Special constants-    , aNY_PORT-    , iNADDR_ANY-#if defined(IPV6_SOCKET_SUPPORTNO)-    , iN6ADDR_ANY-#endif-    , sOMAXCONN-    , sOL_SOCKET-#ifdef SCM_RIGHTS-    , sCM_RIGHTS-#endif-    , maxListenQueue--    -- * Initialisation-    , withSocketsDo--    -- * Very low level operations-    -- in case you ever want to get at the underlying file descriptor..-    , fdSocket-    , mkSocket--    -- * Deprecated aliases-    -- $deprecated-aliases-    , bindSocket-    , sClose-    , sIsConnected-    , sIsBound-    , sIsListening-    , sIsReadable-    , sIsWritable--    -- * Internal--    -- | The following are exported ONLY for use in the BSD module and-    -- should not be used anywhere else.--    , packFamily-    , unpackFamily-    , packSocketType-    ) where--import Data.Bits-import Data.List (delete, foldl')-import Data.Maybe (fromMaybe, isJust)-import Data.Word (Word8, Word16, Word32)-import Foreign.Ptr (Ptr, castPtr, nullPtr)-import Foreign.Storable (Storable(..))-import Foreign.C.Error-import Foreign.C.String (CString, withCString, peekCString, peekCStringLen)-import Foreign.C.Types (CUInt, CChar)-#if __GLASGOW_HASKELL__ >= 703-import Foreign.C.Types (CInt(..), CSize(..))-#else-import Foreign.C.Types (CInt, CSize)-#endif-import Foreign.Marshal.Alloc ( alloca, allocaBytes )-import Foreign.Marshal.Array ( peekArray )-import Foreign.Marshal.Utils ( maybeWith, with )--import System.IO-import Control.Monad (liftM, when)-import Data.Ratio ((%))--import qualified Control.Exception as E-import Control.Concurrent.MVar-import Data.Typeable-import System.IO.Error--import GHC.Conc (threadWaitRead, threadWaitWrite)-##if MIN_VERSION_base(4,3,1)-import GHC.Conc (closeFdWith)-##endif-# if defined(mingw32_HOST_OS)-import GHC.Conc (asyncDoProc)-import Foreign (FunPtr)-# endif-# if __GLASGOW_HASKELL__ >= 611-import qualified GHC.IO.Device-import GHC.IO.Handle.FD-import GHC.IO.Exception-import GHC.IO-# else-import GHC.IOBase-import GHC.Handle-# endif-import qualified System.Posix.Internals--# if __GLASGOW_HASKELL__ >= 611-import GHC.IO.FD-#endif--import Network.Socket.Internal-import Network.Socket.Types---- | Either a host name e.g., @\"haskell.org\"@ or a numeric host--- address string consisting of a dotted decimal IPv4 address or an--- IPv6 address e.g., @\"192.168.0.1\"@.-type HostName       = String-type ServiceName    = String---- ------------------------------------------------------------------------------- On Windows, our sockets are not put in non-blocking mode (non-blocking--- is not supported for regular file descriptors on Windows, and it would--- be a pain to support it only for sockets).  So there are two cases:------  - the threaded RTS uses safe calls for socket operations to get---    non-blocking I/O, just like the rest of the I/O library------  - with the non-threaded RTS, only some operations on sockets will be---    non-blocking.  Reads and writes go through the normal async I/O---    system.  accept() uses asyncDoProc so is non-blocking.  A handful---    of others (recvFrom, sendFd, recvFd) will block all threads - if this---    is a problem, -threaded is the workaround.----##if defined(mingw32_HOST_OS)-##define SAFE_ON_WIN safe-##else-##define SAFE_ON_WIN unsafe-##endif---------------------------------------------------------------------------------- Socket types--#if __GLASGOW_HASKELL__ >= 611 && defined(mingw32_HOST_OS)-socket2FD  (MkSocket fd _ _ _ _) =-  -- HACK, 1 means True-  FD{fdFD = fd,fdIsSocket_ = 1}-#endif--mkSocket :: CInt-         -> Family-         -> SocketType-         -> ProtocolNumber-         -> SocketStatus-         -> IO Socket-mkSocket fd fam sType pNum stat = do-   mStat <- newMVar stat-   return (MkSocket fd fam sType pNum mStat)---fdSocket :: Socket -> CInt-fdSocket (MkSocket fd _ _ _ _) = fd---- | This is the default protocol for a given service.-defaultProtocol :: ProtocolNumber-defaultProtocol = 0---------------------------------------------------------------------------------- SockAddr--instance Show SockAddr where-#if defined(DOMAIN_SOCKET_SUPPORT)-  showsPrec _ (SockAddrUnix str) = showString str-#endif-  showsPrec _ (SockAddrInet port ha)-   = showString (unsafePerformIO (inet_ntoa ha))-   . showString ":"-   . shows port-#if defined(IPV6_SOCKET_SUPPORT)-  showsPrec _ addr@(SockAddrInet6 port _ _ _)-   = showChar '['-   . showString (unsafePerformIO $-                 fst `liftM` getNameInfo [NI_NUMERICHOST] True False addr >>=-                 maybe (fail "showsPrec: impossible internal error") return)-   . showString "]:"-   . shows port-#endif---------------------------------------------------------------------------------- Connection Functions---- In the following connection and binding primitives.  The names of--- the equivalent C functions have been preserved where possible. It--- should be noted that some of these names used in the C library,--- \tr{bind} in particular, have a different meaning to many Haskell--- programmers and have thus been renamed by appending the prefix--- Socket.---- | Create a new socket using the given address family, socket type--- and protocol number.  The address family is usually 'AF_INET',--- 'AF_INET6', or 'AF_UNIX'.  The socket type is usually 'Stream' or--- 'Datagram'.  The protocol number is usually 'defaultProtocol'.--- If 'AF_INET6' is used, the 'IPv6Only' socket option is set to 0--- so that both IPv4 and IPv6 can be handled with one socket.-socket :: Family         -- Family Name (usually AF_INET)-       -> SocketType     -- Socket Type (usually Stream)-       -> ProtocolNumber -- Protocol Number (getProtocolByName to find value)-       -> IO Socket      -- Unconnected Socket-socket family stype protocol = do-    c_stype <- packSocketTypeOrThrow "socket" stype-    fd <- throwSocketErrorIfMinus1Retry "socket" $-                c_socket (packFamily family) c_stype protocol-    setNonBlockIfNeeded fd-    socket_status <- newMVar NotConnected-    let sock = MkSocket fd family stype protocol socket_status-    return sock---- | Build a pair of connected socket objects using the given address--- family, socket type, and protocol number.  Address family, socket--- type, and protocol number are as for the 'socket' function above.--- Availability: Unix.-#if defined(DOMAIN_SOCKET_SUPPORT)-socketPair :: Family              -- Family Name (usually AF_INET or AF_INET6)-           -> SocketType          -- Socket Type (usually Stream)-           -> ProtocolNumber      -- Protocol Number-           -> IO (Socket, Socket) -- unnamed and connected.-socketPair family stype protocol = do-    allocaBytes (2 * sizeOf (1 :: CInt)) $ \ fdArr -> do-    c_stype <- packSocketTypeOrThrow "socketPair" stype-    _rc <- throwSocketErrorIfMinus1Retry "socketpair" $-                c_socketpair (packFamily family) c_stype protocol fdArr-    [fd1,fd2] <- peekArray 2 fdArr-    s1 <- mkNonBlockingSocket fd1-    s2 <- mkNonBlockingSocket fd2-    return (s1,s2)-  where-    mkNonBlockingSocket fd = do-       setNonBlockIfNeeded fd-       stat <- newMVar Connected-       return (MkSocket fd family stype protocol stat)--foreign import ccall unsafe "socketpair"-  c_socketpair :: CInt -> CInt -> CInt -> Ptr CInt -> IO CInt-#endif---- | Set the socket to nonblocking, if applicable to this platform.-setNonBlockIfNeeded :: CInt -> IO ()-setNonBlockIfNeeded fd =-#if __GLASGOW_HASKELL__ < 611-    System.Posix.Internals.setNonBlockingFD fd-#else-    System.Posix.Internals.setNonBlockingFD fd True-#endif---------------------------------------------------------------------------------- Binding a socket---- | Bind the socket to an address. The socket must not already be--- bound.  The 'Family' passed to @bind@ must be the--- same as that passed to 'socket'.  If the special port number--- 'aNY_PORT' is passed then the system assigns the next available--- use port.-bind :: Socket    -- Unconnected Socket-           -> SockAddr  -- Address to Bind to-           -> IO ()-bind (MkSocket s _family _stype _protocol socketStatus) addr = do- modifyMVar_ socketStatus $ \ status -> do- if status /= NotConnected-  then-   ioError (userError ("bind: can't peform bind on socket in status " ++-         show status))-  else do-   withSockAddr addr $ \p_addr sz -> do-   _status <- throwSocketErrorIfMinus1Retry "bind" $ c_bind s p_addr (fromIntegral sz)-   return Bound---------------------------------------------------------------------------------- Connecting a socket---- | Connect to a remote socket at address.-connect :: Socket    -- Unconnected Socket-        -> SockAddr  -- Socket address stuff-        -> IO ()-connect sock@(MkSocket s _family _stype _protocol socketStatus) addr = do- modifyMVar_ socketStatus $ \currentStatus -> do- if currentStatus /= NotConnected && currentStatus /= Bound-  then-    ioError (userError ("connect: can't peform connect on socket in status " ++-        show currentStatus))-  else do-    withSockAddr addr $ \p_addr sz -> do--    let connectLoop = do-           r <- c_connect s p_addr (fromIntegral sz)-           if r == -1-               then do-#if !(defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS))-                   err <- getErrno-                   case () of-                     _ | err == eINTR       -> connectLoop-                     _ | err == eINPROGRESS -> connectBlocked---                   _ | err == eAGAIN      -> connectBlocked-                     _otherwise             -> throwSocketError "connect"-#else-                   rc <- c_getLastError-                   case rc of-                     #{const WSANOTINITIALISED} -> do-                       withSocketsDo (return ())-                       r <- c_connect s p_addr (fromIntegral sz)-                       if r == -1-                         then throwSocketError "connect"-                         else return r-                     _ -> throwSocketError "connect"-#endif-               else return r--        connectBlocked = do-           threadWaitWrite (fromIntegral s)-           err <- getSocketOption sock SoError-           if (err == 0)-                then return 0-                else throwSocketErrorCode "connect" (fromIntegral err)--    connectLoop-    return Connected---------------------------------------------------------------------------------- Listen---- | Listen for connections made to the socket.  The second argument--- specifies the maximum number of queued connections and should be at--- least 1; the maximum value is system-dependent (usually 5).-listen :: Socket  -- Connected & Bound Socket-       -> Int     -- Queue Length-       -> IO ()-listen (MkSocket s _family _stype _protocol socketStatus) backlog = do- modifyMVar_ socketStatus $ \ status -> do- if status /= Bound-   then-     ioError (userError ("listen: can't peform listen on socket in status " ++-         show status))-   else do-     throwSocketErrorIfMinus1Retry "listen" (c_listen s (fromIntegral backlog))-     return Listening---------------------------------------------------------------------------------- Accept------ A call to `accept' only returns when data is available on the given--- socket, unless the socket has been set to non-blocking.  It will--- return a new socket which should be used to read the incoming data and--- should then be closed. Using the socket returned by `accept' allows--- incoming requests to be queued on the original socket.---- | Accept a connection.  The socket must be bound to an address and--- listening for connections.  The return value is a pair @(conn,--- address)@ where @conn@ is a new socket object usable to send and--- receive data on the connection, and @address@ is the address bound--- to the socket on the other end of the connection.-accept :: Socket                        -- Queue Socket-       -> IO (Socket,                   -- Readable Socket-              SockAddr)                 -- Peer details--accept sock@(MkSocket s family stype protocol status) = do- currentStatus <- readMVar status- okay <- isAcceptable sock- if not okay-   then-     ioError (userError ("accept: can't perform accept on socket (" ++ (show (family,stype,protocol)) ++") in status " ++-         show currentStatus))-   else do-     let sz = sizeOfSockAddrByFamily family-     allocaBytes sz $ \ sockaddr -> do-#if defined(mingw32_HOST_OS)-     new_sock <--        if threaded-           then with (fromIntegral sz) $ \ ptr_len ->-                  throwSocketErrorIfMinus1Retry "Network.Socket.accept" $-                    c_accept_safe s sockaddr ptr_len-           else do-                paramData <- c_newAcceptParams s (fromIntegral sz) sockaddr-                rc        <- asyncDoProc c_acceptDoProc paramData-                new_sock  <- c_acceptNewSock    paramData-                c_free paramData-                when (rc /= 0) $-                     throwSocketErrorCode "Network.Socket.accept" (fromIntegral rc)-                return new_sock-#else-     with (fromIntegral sz) $ \ ptr_len -> do-     new_sock <--#if 0-                 throwSocketErrorIfMinus1RetryMayBlock "accept"-                        (threadWaitRead (fromIntegral s))-                        (c_accept4 s sockaddr ptr_len (#const SOCK_NONBLOCK))-# else-                 throwSocketErrorWaitRead sock "accept"-                        (c_accept s sockaddr ptr_len)-# endif /* HAVE_ACCEPT4 */-#endif-     setNonBlockIfNeeded new_sock-     addr <- peekSockAddr sockaddr-     new_status <- newMVar Connected-     return ((MkSocket new_sock family stype protocol new_status), addr)--#if defined(mingw32_HOST_OS)-foreign import ccall unsafe "HsNet.h acceptNewSock"-  c_acceptNewSock :: Ptr () -> IO CInt-foreign import ccall unsafe "HsNet.h newAcceptParams"-  c_newAcceptParams :: CInt -> CInt -> Ptr a -> IO (Ptr ())-foreign import ccall unsafe "HsNet.h &acceptDoProc"-  c_acceptDoProc :: FunPtr (Ptr () -> IO Int)-foreign import ccall unsafe "free"-  c_free:: Ptr a -> IO ()-#endif---------------------------------------------------------------------------------- ** Sending and reciving data---- $sendrecv------ Do not use the @send@ and @recv@ functions defined in this module--- in new code, as they incorrectly represent binary data as a Unicode--- string.  As a result, these functions are inefficient and may lead--- to bugs in the program.  Instead use the @send@ and @recv@--- functions defined in the 'Network.Socket.ByteString' module.---------------------------------------------------------------------------------- sendTo & recvFrom---- | Send data to the socket.  The recipient can be specified--- explicitly, so the socket need not be in a connected state.--- Returns the number of bytes sent.  Applications are responsible for--- ensuring that all data has been sent.------ NOTE: blocking on Windows unless you compile with -threaded (see--- GHC ticket #1129)-sendTo :: Socket        -- (possibly) bound/connected Socket-       -> String        -- Data to send-       -> SockAddr-       -> IO Int        -- Number of Bytes sent-sendTo sock xs addr = do- withCString xs $ \str -> do-   sendBufTo sock str (length xs) addr---- | Send data to the socket.  The recipient can be specified--- explicitly, so the socket need not be in a connected state.--- Returns the number of bytes sent.  Applications are responsible for--- ensuring that all data has been sent.-sendBufTo :: Socket            -- (possibly) bound/connected Socket-          -> Ptr a -> Int  -- Data to send-          -> SockAddr-          -> IO Int            -- Number of Bytes sent-sendBufTo sock@(MkSocket s _family _stype _protocol _status) ptr nbytes addr = do- withSockAddr addr $ \p_addr sz -> do-   liftM fromIntegral $-     throwSocketErrorWaitWrite sock "sendTo" $-        c_sendto s ptr (fromIntegral $ nbytes) 0{-flags-}-                        p_addr (fromIntegral sz)---- | Receive data from the socket. The socket need not be in a--- connected state. Returns @(bytes, nbytes, address)@ where @bytes@--- is a @String@ of length @nbytes@ representing the data received and--- @address@ is a 'SockAddr' representing the address of the sending--- socket.------ NOTE: blocking on Windows unless you compile with -threaded (see--- GHC ticket #1129)-recvFrom :: Socket -> Int -> IO (String, Int, SockAddr)-recvFrom sock nbytes =-  allocaBytes nbytes $ \ptr -> do-    (len, sockaddr) <- recvBufFrom sock ptr nbytes-    str <- peekCStringLen (ptr, len)-    return (str, len, sockaddr)---- | Receive data from the socket, writing it into buffer instead of--- creating a new string.  The socket need not be in a connected--- state. Returns @(nbytes, address)@ where @nbytes@ is the number of--- bytes received and @address@ is a 'SockAddr' representing the--- address of the sending socket.------ NOTE: blocking on Windows unless you compile with -threaded (see--- GHC ticket #1129)-recvBufFrom :: Socket -> Ptr a -> Int -> IO (Int, SockAddr)-recvBufFrom sock@(MkSocket s family _stype _protocol _status) ptr nbytes- | nbytes <= 0 = ioError (mkInvalidRecvArgError "Network.Socket.recvFrom")- | otherwise   =-    withNewSockAddr family $ \ptr_addr sz -> do-      alloca $ \ptr_len -> do-        poke ptr_len (fromIntegral sz)-        len <- throwSocketErrorWaitRead sock "recvFrom" $-                   c_recvfrom s ptr (fromIntegral nbytes) 0{-flags-}-                                ptr_addr ptr_len-        let len' = fromIntegral len-        if len' == 0-         then ioError (mkEOFError "Network.Socket.recvFrom")-         else do-           flg <- isConnected sock-             -- For at least one implementation (WinSock 2), recvfrom() ignores-             -- filling in the sockaddr for connected TCP sockets. Cope with-             -- this by using getPeerName instead.-           sockaddr <--                if flg then-                   getPeerName sock-                else-                   peekSockAddr ptr_addr-           return (len', sockaddr)---------------------------------------------------------------------------------- send & recv---- | Send data to the socket. The socket must be connected to a remote--- socket. Returns the number of bytes sent.  Applications are--- responsible for ensuring that all data has been sent.-send :: Socket  -- Bound/Connected Socket-     -> String  -- Data to send-     -> IO Int  -- Number of Bytes sent-send sock@(MkSocket s _family _stype _protocol _status) xs = do- let len = length xs- withCString xs $ \str -> do-   liftM fromIntegral $-#if defined(mingw32_HOST_OS)-# if __GLASGOW_HASKELL__ >= 611-    writeRawBufferPtr-      "Network.Socket.send"-      (socket2FD sock)-      (castPtr str)-      0-      (fromIntegral len)-#else-      writeRawBufferPtr-        "Network.Socket.send"-        (fromIntegral s)-        True-        str-        0-       (fromIntegral len)-#endif--#else-     throwSocketErrorWaitWrite sock "send" $-        c_send s str (fromIntegral len) 0{-flags-}-#endif---- | Send data to the socket. The socket must be connected to a remote--- socket. Returns the number of bytes sent.  Applications are--- responsible for ensuring that all data has been sent.-sendBuf :: Socket     -- Bound/Connected Socket-        -> Ptr Word8  -- Pointer to the data to send-        -> Int        -- Length of the buffer-        -> IO Int     -- Number of Bytes sent-sendBuf sock@(MkSocket s _family _stype _protocol _status) str len = do-   liftM fromIntegral $-#if defined(mingw32_HOST_OS)-# if __GLASGOW_HASKELL__ >= 611-    writeRawBufferPtr-      "Network.Socket.sendBuf"-      (socket2FD sock)-      (castPtr str)-      0-      (fromIntegral len)-# else-      writeRawBufferPtr-        "Network.Socket.sendBuf"-        (fromIntegral s)-        True-        str-        0-       (fromIntegral len)-# endif-#else-     throwSocketErrorWaitWrite sock "sendBuf" $-        c_send s str (fromIntegral len) 0{-flags-}-#endif----- | Receive data from the socket.  The socket must be in a connected--- state. This function may return fewer bytes than specified.  If the--- message is longer than the specified length, it may be discarded--- depending on the type of socket.  This function may block until a--- message arrives.------ Considering hardware and network realities, the maximum number of--- bytes to receive should be a small power of 2, e.g., 4096.------ For TCP sockets, a zero length return value means the peer has--- closed its half side of the connection.-recv :: Socket -> Int -> IO String-recv sock l = recvLen sock l >>= \ (s,_) -> return s--recvLen :: Socket -> Int -> IO (String, Int)-recvLen sock@(MkSocket s _family _stype _protocol _status) nbytes- | nbytes <= 0 = ioError (mkInvalidRecvArgError "Network.Socket.recv")- | otherwise   = do-     allocaBytes nbytes $ \ptr -> do-        len <--#if defined(mingw32_HOST_OS)-# if __GLASGOW_HASKELL__ >= 611-          readRawBufferPtr "Network.Socket.recvLen" (socket2FD sock) ptr 0-                 (fromIntegral nbytes)-#else-          readRawBufferPtr "Network.Socket.recvLen" (fromIntegral s) True ptr 0-                 (fromIntegral nbytes)-#endif-#else-               throwSocketErrorWaitRead sock "recv" $-                   c_recv s ptr (fromIntegral nbytes) 0{-flags-}-#endif-        let len' = fromIntegral len-        if len' == 0-         then ioError (mkEOFError "Network.Socket.recv")-         else do-           s' <- peekCStringLen (castPtr ptr,len')-           return (s', len')---- | Receive data from the socket.  The socket must be in a connected--- state. This function may return fewer bytes than specified.  If the--- message is longer than the specified length, it may be discarded--- depending on the type of socket.  This function may block until a--- message arrives.------ Considering hardware and network realities, the maximum number of--- bytes to receive should be a small power of 2, e.g., 4096.------ For TCP sockets, a zero length return value means the peer has--- closed its half side of the connection.-recvBuf :: Socket -> Ptr Word8 -> Int -> IO Int-recvBuf sock p l = recvLenBuf sock p l--recvLenBuf :: Socket -> Ptr Word8 -> Int -> IO Int-recvLenBuf sock@(MkSocket s _family _stype _protocol _status) ptr nbytes- | nbytes <= 0 = ioError (mkInvalidRecvArgError "Network.Socket.recvBuf")- | otherwise   = do-        len <--#if defined(mingw32_HOST_OS)-# if __GLASGOW_HASKELL__ >= 611-          readRawBufferPtr "Network.Socket.recvLenBuf" (socket2FD sock) ptr 0-                 (fromIntegral nbytes)-#else-          readRawBufferPtr "Network.Socket.recvLenBuf" (fromIntegral s) True ptr 0-                 (fromIntegral nbytes)-#endif-#else-               throwSocketErrorWaitRead sock "recvBuf" $-                   c_recv s (castPtr ptr) (fromIntegral nbytes) 0{-flags-}-#endif-        let len' = fromIntegral len-        if len' == 0-         then ioError (mkEOFError "Network.Socket.recvBuf")-         else return len'----- ------------------------------------------------------------------------------ socketPort------ The port number the given socket is currently connected to can be--- determined by calling $port$, is generally only useful when bind--- was given $aNY\_PORT$.--socketPort :: Socket            -- Connected & Bound Socket-           -> IO PortNumber     -- Port Number of Socket-socketPort sock@(MkSocket _ AF_INET _ _ _) = do-    (SockAddrInet port _) <- getSocketName sock-    return port-#if defined(IPV6_SOCKET_SUPPORT)-socketPort sock@(MkSocket _ AF_INET6 _ _ _) = do-    (SockAddrInet6 port _ _ _) <- getSocketName sock-    return port-#endif-socketPort (MkSocket _ family _ _ _) =-    ioError (userError ("socketPort: not supported for Family " ++ show family))----- ------------------------------------------------------------------------------ getPeerName---- Calling $getPeerName$ returns the address details of the machine,--- other than the local one, which is connected to the socket. This is--- used in programs such as FTP to determine where to send the--- returning data.  The corresponding call to get the details of the--- local machine is $getSocketName$.--getPeerName   :: Socket -> IO SockAddr-getPeerName (MkSocket s family _ _ _) = do- withNewSockAddr family $ \ptr sz -> do-   with (fromIntegral sz) $ \int_star -> do-   throwSocketErrorIfMinus1Retry "getPeerName" $ c_getpeername s ptr int_star-   _sz <- peek int_star-   peekSockAddr ptr--getSocketName :: Socket -> IO SockAddr-getSocketName (MkSocket s family _ _ _) = do- withNewSockAddr family $ \ptr sz -> do-   with (fromIntegral sz) $ \int_star -> do-   throwSocketErrorIfMinus1Retry "getSocketName" $ c_getsockname s ptr int_star-   peekSockAddr ptr---------------------------------------------------------------------------------- Socket Properties---- | Socket options for use with 'setSocketOption' and 'getSocketOption'.------ The existence of a constructor does not imply that the relevant option--- is supported on your system: see 'isSupportedSocketOption'-data SocketOption-    = Debug         -- ^ SO_DEBUG-    | ReuseAddr     -- ^ SO_REUSEADDR-    | Type          -- ^ SO_TYPE-    | SoError       -- ^ SO_ERROR-    | DontRoute     -- ^ SO_DONTROUTE-    | Broadcast     -- ^ SO_BROADCAST-    | SendBuffer    -- ^ SO_SNDBUF-    | RecvBuffer    -- ^ SO_RCVBUF-    | KeepAlive     -- ^ SO_KEEPALIVE-    | OOBInline     -- ^ SO_OOBINLINE-    | TimeToLive    -- ^ IP_TTL-    | MaxSegment    -- ^ TCP_MAXSEG-    | NoDelay       -- ^ TCP_NODELAY-    | Cork          -- ^ TCP_CORK-    | Linger        -- ^ SO_LINGER-    | ReusePort     -- ^ SO_REUSEPORT-    | RecvLowWater  -- ^ SO_RCVLOWAT-    | SendLowWater  -- ^ SO_SNDLOWAT-    | RecvTimeOut   -- ^ SO_RCVTIMEO-    | SendTimeOut   -- ^ SO_SNDTIMEO-    | UseLoopBack   -- ^ SO_USELOOPBACK-    | IPv6Only      -- ^ IPV6_V6ONLY-    deriving (Show, Typeable)---- | Does the 'SocketOption' exist on this system?-isSupportedSocketOption :: SocketOption -> Bool-isSupportedSocketOption = isJust . packSocketOption---- | For a socket option, return Just (level, value) where level is the--- corresponding C option level constant (e.g. SOL_SOCKET) and value is--- the option constant itself (e.g. SO_DEBUG)--- If either constant does not exist, return Nothing.-packSocketOption :: SocketOption -> Maybe (CInt, CInt)-packSocketOption so =-  -- The Just here is a hack to disable GHC's overlapping pattern detection:-  -- the problem is if all constants are present, the fallback pattern is-  -- redundant, but if they aren't then it isn't. Hence we introduce an-  -- extra pattern (Nothing) that can't possibly happen, so that the-  -- fallback is always (in principle) necessary.-  -- I feel a little bad for including this, but such are the sacrifices we-  -- make while working with CPP - excluding the fallback pattern correctly-  -- would be a serious nuisance.-  -- (NB: comments elsewhere in this file refer to this one)-  case Just so of-#ifdef SOL_SOCKET-#ifdef SO_DEBUG-    Just Debug         -> Just ((#const SOL_SOCKET), (#const SO_DEBUG))-#endif-#ifdef SO_REUSEADDR-    Just ReuseAddr     -> Just ((#const SOL_SOCKET), (#const SO_REUSEADDR))-#endif-#ifdef SO_TYPE-    Just Type          -> Just ((#const SOL_SOCKET), (#const SO_TYPE))-#endif-#ifdef SO_ERROR-    Just SoError       -> Just ((#const SOL_SOCKET), (#const SO_ERROR))-#endif-#ifdef SO_DONTROUTE-    Just DontRoute     -> Just ((#const SOL_SOCKET), (#const SO_DONTROUTE))-#endif-#ifdef SO_BROADCAST-    Just Broadcast     -> Just ((#const SOL_SOCKET), (#const SO_BROADCAST))-#endif-#ifdef SO_SNDBUF-    Just SendBuffer    -> Just ((#const SOL_SOCKET), (#const SO_SNDBUF))-#endif-#ifdef SO_RCVBUF-    Just RecvBuffer    -> Just ((#const SOL_SOCKET), (#const SO_RCVBUF))-#endif-#ifdef SO_KEEPALIVE-    Just KeepAlive     -> Just ((#const SOL_SOCKET), (#const SO_KEEPALIVE))-#endif-#ifdef SO_OOBINLINE-    Just OOBInline     -> Just ((#const SOL_SOCKET), (#const SO_OOBINLINE))-#endif-#ifdef SO_LINGER-    Just Linger        -> Just ((#const SOL_SOCKET), (#const SO_LINGER))-#endif-#ifdef SO_REUSEPORT-    Just ReusePort     -> Just ((#const SOL_SOCKET), (#const SO_REUSEPORT))-#endif-#ifdef SO_RCVLOWAT-    Just RecvLowWater  -> Just ((#const SOL_SOCKET), (#const SO_RCVLOWAT))-#endif-#ifdef SO_SNDLOWAT-    Just SendLowWater  -> Just ((#const SOL_SOCKET), (#const SO_SNDLOWAT))-#endif-#ifdef SO_RCVTIMEO-    Just RecvTimeOut   -> Just ((#const SOL_SOCKET), (#const SO_RCVTIMEO))-#endif-#ifdef SO_SNDTIMEO-    Just SendTimeOut   -> Just ((#const SOL_SOCKET), (#const SO_SNDTIMEO))-#endif-#ifdef SO_USELOOPBACK-    Just UseLoopBack   -> Just ((#const SOL_SOCKET), (#const SO_USELOOPBACK))-#endif-#endif // SOL_SOCKET-#ifdef IPPROTO_IP-#ifdef IP_TTL-    Just TimeToLive    -> Just ((#const IPPROTO_IP), (#const IP_TTL))-#endif-#endif // IPPROTO_IP-#ifdef IPPROTO_TCP-#ifdef TCP_MAXSEG-    Just MaxSegment    -> Just ((#const IPPROTO_TCP), (#const TCP_MAXSEG))-#endif-#ifdef TCP_NODELAY-    Just NoDelay       -> Nothing -- Just ((#const IPPROTO_TCP), (#const TCP_NODELAY))-#endif-#ifdef TCP_CORK-    Just Cork          -> Just ((#const IPPROTO_TCP), (#const TCP_CORK))-#endif-#endif // IPPROTO_TCP-#ifdef IPPROTO_IPV6-#if HAVE_DECL_IPV6_V6ONLY-    Just IPv6Only      -> Just ((#const IPPROTO_IPV6), (#const IPV6_V6ONLY))-#endif-#endif // IPPROTO_IPV6-    _             -> Nothing---- | Return the option level and option value if they exist,--- otherwise throw an error that begins "Network.Socket." ++ the String--- parameter-packSocketOption' :: String -> SocketOption -> IO (CInt, CInt)-packSocketOption' caller so = maybe err return (packSocketOption so)- where-  err = ioError . userError . concat $ ["Network.Socket.", caller,-    ": socket option ", show so, " unsupported on this system"]---- | Set a socket option that expects an Int value.--- There is currently no API to set e.g. the timeval socket options-setSocketOption :: Socket-                -> SocketOption -- Option Name-                -> Int          -- Option Value-                -> IO ()-setSocketOption (MkSocket s _ _ _ _) so v = do-   (level, opt) <- packSocketOption' "setSocketOption" so-   with (fromIntegral v) $ \ptr_v -> do-   throwSocketErrorIfMinus1_ "setSocketOption" $-       c_setsockopt s level opt ptr_v-          (fromIntegral (sizeOf (undefined :: CInt)))-   return ()----- | Get a socket option that gives an Int value.--- There is currently no API to get e.g. the timeval socket options-getSocketOption :: Socket-                -> SocketOption  -- Option Name-                -> IO Int        -- Option Value-getSocketOption (MkSocket s _ _ _ _) so = do-   (level, opt) <- packSocketOption' "getSocketOption" so-   alloca $ \ptr_v ->-     with (fromIntegral (sizeOf (undefined :: CInt))) $ \ptr_sz -> do-       throwSocketErrorIfMinus1Retry "getSocketOption" $-         c_getsockopt s level opt ptr_v ptr_sz-       fromIntegral `liftM` peek ptr_v---#ifdef HAVE_STRUCT_UCRED--- | Returns the processID, userID and groupID of the socket's peer.------ Only available on platforms that support SO_PEERCRED on domain sockets.-getPeerCred :: Socket -> IO (CUInt, CUInt, CUInt)-getPeerCred sock = do-  let fd = fdSocket sock-  let sz = (fromIntegral (#const sizeof(struct ucred)))-  with sz $ \ ptr_cr ->-   alloca       $ \ ptr_sz -> do-     poke ptr_sz sz-     throwSocketErrorIfMinus1Retry "getPeerCred" $-       c_getsockopt fd (#const SOL_SOCKET) (#const SO_PEERCRED) ptr_cr ptr_sz-     pid <- (#peek struct ucred, pid) ptr_cr-     uid <- (#peek struct ucred, uid) ptr_cr-     gid <- (#peek struct ucred, gid) ptr_cr-     return (pid, uid, gid)-#endif--##if !(MIN_VERSION_base(4,3,1))-closeFdWith closer fd = closer fd-##endif--#if defined(DOMAIN_SOCKET_SUPPORT)--- sending/receiving ancillary socket data; low-level mechanism--- for transmitting file descriptors, mainly.-sendFd :: Socket -> CInt -> IO ()-sendFd sock outfd = do-  throwSocketErrorWaitWrite sock "sendFd" $-     c_sendFd (fdSocket sock) outfd-   -- Note: If Winsock supported FD-passing, thi would have been-   -- incorrect (since socket FDs need to be closed via closesocket().)-  closeFd outfd--recvFd :: Socket -> IO CInt-recvFd sock = do-  theFd <- throwSocketErrorWaitRead sock "recvFd" $-               c_recvFd (fdSocket sock)-  return theFd--foreign import ccall SAFE_ON_WIN "sendFd" c_sendFd :: CInt -> CInt -> IO CInt-foreign import ccall SAFE_ON_WIN "recvFd" c_recvFd :: CInt -> IO CInt--#endif---- ------------------------------------------------------------------------------ Utility Functions--aNY_PORT :: PortNumber-aNY_PORT = 0---- | The IPv4 wild card address.--iNADDR_ANY :: HostAddress-iNADDR_ANY = htonl (#const INADDR_ANY)--foreign import CALLCONV unsafe "my_htonl" htonl :: Word32 -> Word32--#if defined(IPV6_SOCKET_SUPPORTNO)--- | The IPv6 wild card address.--iN6ADDR_ANY :: HostAddress6-iN6ADDR_ANY = (0, 0, 0, 0)-#endif--sOMAXCONN :: Int-sOMAXCONN = #const SOMAXCONN--sOL_SOCKET :: Int-sOL_SOCKET = #const SOL_SOCKET--#ifdef SCM_RIGHTS-sCM_RIGHTS :: Int-sCM_RIGHTS = #const SCM_RIGHTS-#endif---- | This is the value of SOMAXCONN, typically 128.--- 128 is good enough for normal network servers but--- is too small for high performance servers.-maxListenQueue :: Int-maxListenQueue = sOMAXCONN---- -------------------------------------------------------------------------------data ShutdownCmd- = ShutdownReceive- | ShutdownSend- | ShutdownBoth- deriving Typeable--sdownCmdToInt :: ShutdownCmd -> CInt-sdownCmdToInt ShutdownReceive = 0-sdownCmdToInt ShutdownSend    = 1-sdownCmdToInt ShutdownBoth    = 2---- | Shut down one or both halves of the connection, depending on the--- second argument to the function.  If the second argument is--- 'ShutdownReceive', further receives are disallowed.  If it is--- 'ShutdownSend', further sends are disallowed.  If it is--- 'ShutdownBoth', further sends and receives are disallowed.-shutdown :: Socket -> ShutdownCmd -> IO ()-shutdown (MkSocket s _ _ _ _) stype = do-  throwSocketErrorIfMinus1Retry "shutdown" (c_shutdown s (sdownCmdToInt stype))-  return ()---- --------------------------------------------------------------------------------- | Close the socket.  All future operations on the socket object--- will fail.  The remote end will receive no more data (after queued--- data is flushed).-close :: Socket -> IO ()-close (MkSocket s _ _ _ socketStatus) = do- modifyMVar_ socketStatus $ \ status ->-   case status of-     ConvertedToHandle ->-         ioError (userError ("close: converted to a Handle, use hClose instead"))-     Closed ->-         return status-     _ -> closeFdWith (closeFd . fromIntegral) (fromIntegral s) >> return Closed---- -------------------------------------------------------------------------------isConnected :: Socket -> IO Bool-isConnected (MkSocket _ _ _ _ status) = do-    value <- readMVar status-    return (value == Connected)---- -------------------------------------------------------------------------------- Socket Predicates--isBound :: Socket -> IO Bool-isBound (MkSocket _ _ _ _ status) = do-    value <- readMVar status-    return (value == Bound)--isListening :: Socket -> IO Bool-isListening (MkSocket _ _ _  _ status) = do-    value <- readMVar status-    return (value == Listening)--isReadable  :: Socket -> IO Bool-isReadable (MkSocket _ _ _ _ status) = do-    value <- readMVar status-    return (value == Listening || value == Connected)--isWritable  :: Socket -> IO Bool-isWritable = isReadable -- sort of.--isAcceptable :: Socket -> IO Bool-#if defined(DOMAIN_SOCKET_SUPPORT)-isAcceptable (MkSocket _ AF_UNIX x _ status)-    | x == Stream || x == SeqPacket = do-        value <- readMVar status-        return (value == Connected || value == Bound || value == Listening)-isAcceptable (MkSocket _ AF_UNIX _ _ _) = return False-#endif-isAcceptable (MkSocket _ _ _ _ status) = do-    value <- readMVar status-    return (value == Connected || value == Listening)---- -------------------------------------------------------------------------------- Internet address manipulation routines:--inet_addr :: String -> IO HostAddress-inet_addr ipstr = do-   withCString ipstr $ \str -> do-   had <- c_inet_addr str-   if had == -1-    then ioError (userError ("inet_addr: Malformed address: " ++ ipstr))-    else return had  -- network byte order--inet_ntoa :: HostAddress -> IO String-inet_ntoa haddr = do-  pstr <- c_inet_ntoa haddr-  peekCString pstr---- | Turns a Socket into an 'Handle'. By default, the new handle is--- unbuffered. Use 'System.IO.hSetBuffering' to change the buffering.------ Note that since a 'Handle' is automatically closed by a finalizer--- when it is no longer referenced, you should avoid doing any more--- operations on the 'Socket' after calling 'socketToHandle'.  To--- close the 'Socket' after 'socketToHandle', call 'System.IO.hClose'--- on the 'Handle'.--#ifndef __PARALLEL_HASKELL__-socketToHandle :: Socket -> IOMode -> IO Handle-socketToHandle s@(MkSocket fd _ _ _ socketStatus) mode = do- modifyMVar socketStatus $ \ status ->-    if status == ConvertedToHandle-        then ioError (userError ("socketToHandle: already a Handle"))-        else do-# if __GLASGOW_HASKELL__ >= 611-    h <- fdToHandle' (fromIntegral fd) (Just GHC.IO.Device.Stream) True (show s) mode True{-bin-}-# elif __GLASGOW_HASKELL__ >= 608-    h <- fdToHandle' (fromIntegral fd) (Just System.Posix.Internals.Stream) True (show s) mode True{-bin-}-# elif __GLASGOW_HASKELL__ < 608-    h <- openFd (fromIntegral fd) (Just System.Posix.Internals.Stream) True (show s) mode True{-bin-}-# endif-    hSetBuffering h NoBuffering-    return (ConvertedToHandle, h)-#else-socketToHandle (MkSocket s family stype protocol status) m =-  error "socketToHandle not implemented in a parallel setup"-#endif---- | Pack a list of values into a bitmask.  The possible mappings from--- value to bit-to-set are given as the first argument.  We assume--- that each value can cause exactly one bit to be set; unpackBits will--- break if this property is not true.--packBits :: (Eq a, Num b, Bits b) => [(a, b)] -> [a] -> b--packBits mapping xs = foldl' pack 0 mapping-    where pack acc (k, v) | k `elem` xs = acc .|. v-                          | otherwise   = acc---- | Unpack a bitmask into a list of values.--unpackBits :: (Num b, Bits b) => [(a, b)] -> b -> [a]---- Be permissive and ignore unknown bit values. At least on OS X,--- getaddrinfo returns an ai_flags field with bits set that have no--- entry in <netdb.h>.-unpackBits [] _    = []-unpackBits ((k,v):xs) r-    | r .&. v /= 0 = k : unpackBits xs (r .&. complement v)-    | otherwise    = unpackBits xs r---------------------------------------------------------------------------------- Address and service lookups--#if defined(IPV6_SOCKET_SUPPORT) || 1---- | Flags that control the querying behaviour of 'getAddrInfo'.-data AddrInfoFlag-    = AI_ADDRCONFIG-    | AI_ALL-    | AI_CANONNAME-    | AI_NUMERICHOST-    | AI_NUMERICSERV-    | AI_PASSIVE-    | AI_V4MAPPED-    deriving (Eq, Read, Show, Typeable)--aiFlagMapping :: [(AddrInfoFlag, CInt)]--aiFlagMapping =-    [-#if HAVE_DECL_AI_ADDRCONFIG-     (AI_ADDRCONFIG, #const AI_ADDRCONFIG),-#else-     (AI_ADDRCONFIG, 0),-#endif-#if HAVE_DECL_AI_ALL-     (AI_ALL, #const AI_ALL),-#else-     (AI_ALL, 0),-#endif-     (AI_CANONNAME, #const AI_CANONNAME),-     (AI_NUMERICHOST, #const AI_NUMERICHOST),-#if HAVE_DECL_AI_NUMERICSERV-     (AI_NUMERICSERV, #const AI_NUMERICSERV),-#else-     (AI_NUMERICSERV, 0),-#endif-     (AI_PASSIVE, #const AI_PASSIVE),-#if HAVE_DECL_AI_V4MAPPED-     (AI_V4MAPPED, #const AI_V4MAPPED)-#else-     (AI_V4MAPPED, 0)-#endif-    ]---- | Indicate whether the given 'AddrInfoFlag' will have any effect on--- this system.-addrInfoFlagImplemented :: AddrInfoFlag -> Bool-addrInfoFlagImplemented f = packBits aiFlagMapping [f] /= 0--data AddrInfo =-    AddrInfo {-        addrFlags :: [AddrInfoFlag],-        addrFamily :: Family,-        addrSocketType :: SocketType,-        addrProtocol :: ProtocolNumber,-        addrAddress :: SockAddr,-        addrCanonName :: Maybe String-        }-    deriving (Eq, Show, Typeable)--instance Storable AddrInfo where-    sizeOf    _ = #const sizeof(struct addrinfo)-    alignment _ = alignment (undefined :: CInt)--    peek p = do-        ai_flags <- (#peek struct addrinfo, ai_flags) p-        ai_family <- (#peek struct addrinfo, ai_family) p-        ai_socktype <- (#peek struct addrinfo, ai_socktype) p-        ai_protocol <- (#peek struct addrinfo, ai_protocol) p-        ai_addr <- (#peek struct addrinfo, ai_addr) p >>= peekSockAddr-        ai_canonname_ptr <- (#peek struct addrinfo, ai_canonname) p--        ai_canonname <- if ai_canonname_ptr == nullPtr-                        then return Nothing-                        else liftM Just $ peekCString ai_canonname_ptr--        socktype <- unpackSocketType' "AddrInfo.peek" ai_socktype-        return (AddrInfo-                {-                 addrFlags = unpackBits aiFlagMapping ai_flags,-                 addrFamily = unpackFamily ai_family,-                 addrSocketType = socktype,-                 addrProtocol = ai_protocol,-                 addrAddress = ai_addr,-                 addrCanonName = ai_canonname-                })--    poke p (AddrInfo flags family socketType protocol _ _) = do-        c_stype <- packSocketTypeOrThrow "AddrInfo.poke" socketType--        (#poke struct addrinfo, ai_flags) p (packBits aiFlagMapping flags)-        (#poke struct addrinfo, ai_family) p (packFamily family)-        (#poke struct addrinfo, ai_socktype) p c_stype-        (#poke struct addrinfo, ai_protocol) p protocol--        -- stuff below is probably not needed, but let's zero it for safety--        (#poke struct addrinfo, ai_addrlen) p (0::CSize)-        (#poke struct addrinfo, ai_addr) p nullPtr-        (#poke struct addrinfo, ai_canonname) p nullPtr-        (#poke struct addrinfo, ai_next) p nullPtr--data NameInfoFlag-    = NI_DGRAM-    | NI_NAMEREQD-    | NI_NOFQDN-    | NI_NUMERICHOST-    | NI_NUMERICSERV-    deriving (Eq, Read, Show, Typeable)--niFlagMapping :: [(NameInfoFlag, CInt)]--niFlagMapping = [(NI_DGRAM, #const NI_DGRAM),-                 (NI_NAMEREQD, #const NI_NAMEREQD),-                 (NI_NOFQDN, #const NI_NOFQDN),-                 (NI_NUMERICHOST, #const NI_NUMERICHOST),-                 (NI_NUMERICSERV, #const NI_NUMERICSERV)]---- | Default hints for address lookup with 'getAddrInfo'.  The values--- of the 'addrAddress' and 'addrCanonName' fields are 'undefined',--- and are never inspected by 'getAddrInfo'.--defaultHints :: AddrInfo--defaultHints = AddrInfo {-                         addrFlags = [],-                         addrFamily = AF_UNSPEC,-                         addrSocketType = NoSocketType,-                         addrProtocol = defaultProtocol,-                         addrAddress = undefined,-                         addrCanonName = undefined-                        }---- | Resolve a host or service name to one or more addresses.--- The 'AddrInfo' values that this function returns contain 'SockAddr'--- values that you can pass directly to 'connect' or--- 'bind'.------ This function is protocol independent.  It can return both IPv4 and--- IPv6 address information.------ The 'AddrInfo' argument specifies the preferred query behaviour,--- socket options, or protocol.  You can override these conveniently--- using Haskell's record update syntax on 'defaultHints', for example--- as follows:------ @---   myHints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }--- @------ Values for 'addrFlags' control query behaviour.  The supported--- flags are as follows:------   [@AI_PASSIVE@] If no 'HostName' value is provided, the network---     address in each 'SockAddr'---     will be left as a "wild card", i.e. as either 'iNADDR_ANY'---     or 'iN6ADDR_ANY'.  This is useful for server applications that---     will accept connections from any client.------   [@AI_CANONNAME@] The 'addrCanonName' field of the first returned---     'AddrInfo' will contain the "canonical name" of the host.------   [@AI_NUMERICHOST@] The 'HostName' argument /must/ be a numeric---     address in string form, and network name lookups will not be---     attempted.------ /Note/: Although the following flags are required by RFC 3493, they--- may not have an effect on all platforms, because the underlying--- network stack may not support them.  To see whether a flag from the--- list below will have any effect, call 'addrInfoFlagImplemented'.------   [@AI_NUMERICSERV@] The 'ServiceName' argument /must/ be a port---     number in string form, and service name lookups will not be---     attempted.------   [@AI_ADDRCONFIG@] The list of returned 'AddrInfo' values will---     only contain IPv4 addresses if the local system has at least---     one IPv4 interface configured, and likewise for IPv6.------   [@AI_V4MAPPED@] If an IPv6 lookup is performed, and no IPv6---     addresses are found, IPv6-mapped IPv4 addresses will be---     returned.------   [@AI_ALL@] If 'AI_ALL' is specified, return all matching IPv6 and---     IPv4 addresses.  Otherwise, this flag has no effect.------ You must provide a 'Just' value for at least one of the 'HostName'--- or 'ServiceName' arguments.  'HostName' can be either a numeric--- network address (dotted quad for IPv4, colon-separated hex for--- IPv6) or a hostname.  In the latter case, its addresses will be--- looked up unless 'AI_NUMERICHOST' is specified as a hint.  If you--- do not provide a 'HostName' value /and/ do not set 'AI_PASSIVE' as--- a hint, network addresses in the result will contain the address of--- the loopback interface.------ If the query fails, this function throws an IO exception instead of--- returning an empty list.  Otherwise, it returns a non-empty list--- of 'AddrInfo' values.------ There are several reasons why a query might result in several--- values.  For example, the queried-for host could be multihomed, or--- the service might be available via several protocols.------ Note: the order of arguments is slightly different to that defined--- for @getaddrinfo@ in RFC 2553.  The 'AddrInfo' parameter comes first--- to make partial application easier.------ Example:--- @---   let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }---   addrs <- getAddrInfo (Just hints) (Just "www.haskell.org") (Just "http")---   let addr = head addrs---   sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)---   connect sock (addrAddress addr)--- @--getAddrInfo :: Maybe AddrInfo -- ^ preferred socket type or protocol-            -> Maybe HostName -- ^ host name to look up-            -> Maybe ServiceName -- ^ service name to look up-            -> IO [AddrInfo] -- ^ resolved addresses, with "best" first--getAddrInfo hints node service =-  maybeWith withCString node $ \c_node ->-    maybeWith withCString service $ \c_service ->-      maybeWith with filteredHints $ \c_hints ->-        alloca $ \ptr_ptr_addrs -> do-          ret <- c_getaddrinfo c_node c_service c_hints ptr_ptr_addrs-          case ret of-            0 -> do ptr_addrs <- peek ptr_ptr_addrs-                    ais <- followAddrInfo ptr_addrs-                    c_freeaddrinfo ptr_addrs-                    return ais-            _ -> do err <- gai_strerror ret-                    ioError (ioeSetErrorString-                             (mkIOError NoSuchThing "getAddrInfo" Nothing-                              Nothing) err)-    -- Leaving out the service and using AI_NUMERICSERV causes a-    -- segfault on OS X 10.8.2. This code removes AI_NUMERICSERV-    -- (which has no effect) in that case.-  where-#if defined(darwin_HOST_OS)-    filteredHints = case service of-        Nothing -> fmap (\ h -> h { addrFlags = delete AI_NUMERICSERV (addrFlags h) }) hints-        _       -> hints-#else-    filteredHints = hints-#endif--followAddrInfo :: Ptr AddrInfo -> IO [AddrInfo]--followAddrInfo ptr_ai | ptr_ai == nullPtr = return []-                      | otherwise = do-    a <- peek ptr_ai-    as <- (#peek struct addrinfo, ai_next) ptr_ai >>= followAddrInfo-    return (a:as)--foreign import ccall safe "hsnet_getaddrinfo"-    c_getaddrinfo :: CString -> CString -> Ptr AddrInfo -> Ptr (Ptr AddrInfo)-                  -> IO CInt--foreign import ccall safe "hsnet_freeaddrinfo"-    c_freeaddrinfo :: Ptr AddrInfo -> IO ()--gai_strerror :: CInt -> IO String--#ifdef HAVE_GAI_STRERROR-gai_strerror n = c_gai_strerror n >>= peekCString--foreign import ccall safe "gai_strerror"-    c_gai_strerror :: CInt -> IO CString-#else-gai_strerror n = return ("error " ++ show n)-#endif--withCStringIf :: Bool -> Int -> (CSize -> CString -> IO a) -> IO a-withCStringIf False _ f = f 0 nullPtr-withCStringIf True n f = allocaBytes n (f (fromIntegral n))---- | Resolve an address to a host or service name.--- This function is protocol independent.------ The list of 'NameInfoFlag' values controls query behaviour.  The--- supported flags are as follows:------   [@NI_NOFQDN@] If a host is local, return only the---     hostname part of the FQDN.------   [@NI_NUMERICHOST@] The name of the host is not---     looked up.  Instead, a numeric representation of the host's---     address is returned.  For an IPv4 address, this will be a---     dotted-quad string.  For IPv6, it will be colon-separated---     hexadecimal.------   [@NI_NUMERICSERV@] The name of the service is not---     looked up.  Instead, a numeric representation of the---     service is returned.------   [@NI_NAMEREQD@] If the hostname cannot be looked up, an IO error---     is thrown.------   [@NI_DGRAM@] Resolve a datagram-based service name.  This is---     required only for the few protocols that have different port---     numbers for their datagram-based versions than for their---     stream-based versions.------ Hostname and service name lookups can be expensive.  You can--- specify which lookups to perform via the two 'Bool' arguments.  If--- one of these is 'False', the corresponding value in the returned--- tuple will be 'Nothing', and no lookup will be performed.------ If a host or service's name cannot be looked up, then the numeric--- form of the address or service will be returned.------ If the query fails, this function throws an IO exception.------ Example:--- @---   (hostName, _) <- getNameInfo [] True False myAddress--- @--getNameInfo :: [NameInfoFlag] -- ^ flags to control lookup behaviour-            -> Bool -- ^ whether to look up a hostname-            -> Bool -- ^ whether to look up a service name-            -> SockAddr -- ^ the address to look up-            -> IO (Maybe HostName, Maybe ServiceName)--getNameInfo flags doHost doService addr =-  withCStringIf doHost (#const NI_MAXHOST) $ \c_hostlen c_host ->-    withCStringIf doService (#const NI_MAXSERV) $ \c_servlen c_serv -> do-      withSockAddr addr $ \ptr_addr sz -> do-        ret <- c_getnameinfo ptr_addr (fromIntegral sz) c_host c_hostlen-                             c_serv c_servlen (packBits niFlagMapping flags)-        case ret of-          0 -> do-            let peekIf doIf c_val = if doIf-                                     then liftM Just $ peekCString c_val-                                     else return Nothing-            host <- peekIf doHost c_host-            serv <- peekIf doService c_serv-            return (host, serv)-          _ -> do err <- gai_strerror ret-                  ioError (ioeSetErrorString-                           (mkIOError NoSuchThing "getNameInfo" Nothing-                            Nothing) err)--foreign import ccall safe "hsnet_getnameinfo"-    c_getnameinfo :: Ptr SockAddr -> CInt{-CSockLen???-} -> CString -> CSize -> CString-                  -> CSize -> CInt -> IO CInt-#endif--mkInvalidRecvArgError :: String -> IOError-mkInvalidRecvArgError loc = ioeSetErrorString (mkIOError-                                    InvalidArgument-                                    loc Nothing Nothing) "non-positive length"--mkEOFError :: String -> IOError-mkEOFError loc = ioeSetErrorString (mkIOError EOF loc Nothing Nothing) "end of file"---- ------------------------------------------------------------------------------ foreign imports from the C library--foreign import ccall unsafe "my_inet_ntoa"-  c_inet_ntoa :: HostAddress -> IO (Ptr CChar)--foreign import CALLCONV unsafe "inet_addr"-  c_inet_addr :: Ptr CChar -> IO HostAddress--foreign import CALLCONV unsafe "shutdown"-  c_shutdown :: CInt -> CInt -> IO CInt--closeFd :: CInt -> IO ()-closeFd fd = throwSocketErrorIfMinus1_ "Network.Socket.close" $ c_close fd--#if !defined(WITH_WINSOCK)-foreign import ccall unsafe "close"-  c_close :: CInt -> IO CInt-#else-foreign import stdcall unsafe "closesocket"-  c_close :: CInt -> IO CInt-#endif--foreign import CALLCONV unsafe "socket"-  c_socket :: CInt -> CInt -> CInt -> IO CInt-foreign import CALLCONV unsafe "bind"-  c_bind :: CInt -> Ptr SockAddr -> CInt{-CSockLen???-} -> IO CInt-foreign import CALLCONV SAFE_ON_WIN "connect"-  c_connect :: CInt -> Ptr SockAddr -> CInt{-CSockLen???-} -> IO CInt-foreign import CALLCONV unsafe "accept"-  c_accept :: CInt -> Ptr SockAddr -> Ptr CInt{-CSockLen???-} -> IO CInt-#if 0-foreign import CALLCONV unsafe "accept4"-  c_accept4 :: CInt -> Ptr SockAddr -> Ptr CInt{-CSockLen???-} -> CInt -> IO CInt-#endif-foreign import CALLCONV unsafe "listen"-  c_listen :: CInt -> CInt -> IO CInt--#if defined(mingw32_HOST_OS)-foreign import CALLCONV safe "accept"-  c_accept_safe :: CInt -> Ptr SockAddr -> Ptr CInt{-CSockLen???-} -> IO CInt--foreign import ccall unsafe "rtsSupportsBoundThreads" threaded :: Bool-#endif--foreign import CALLCONV unsafe "send"-  c_send :: CInt -> Ptr a -> CSize -> CInt -> IO CInt-foreign import CALLCONV SAFE_ON_WIN "sendto"-  c_sendto :: CInt -> Ptr a -> CSize -> CInt -> Ptr SockAddr -> CInt -> IO CInt-foreign import CALLCONV unsafe "recv"-  c_recv :: CInt -> Ptr CChar -> CSize -> CInt -> IO CInt-foreign import CALLCONV SAFE_ON_WIN "recvfrom"-  c_recvfrom :: CInt -> Ptr a -> CSize -> CInt -> Ptr SockAddr -> Ptr CInt -> IO CInt-foreign import CALLCONV unsafe "getpeername"-  c_getpeername :: CInt -> Ptr SockAddr -> Ptr CInt -> IO CInt-foreign import CALLCONV unsafe "getsockname"-  c_getsockname :: CInt -> Ptr SockAddr -> Ptr CInt -> IO CInt--foreign import CALLCONV unsafe "getsockopt"-  c_getsockopt :: CInt -> CInt -> CInt -> Ptr CInt -> Ptr CInt -> IO CInt-foreign import CALLCONV unsafe "setsockopt"-  c_setsockopt :: CInt -> CInt -> CInt -> Ptr CInt -> CInt -> IO CInt---- ------------------------------------------------------------------------------ * Deprecated aliases---- $deprecated-aliases------ These aliases are deprecated and should not be used in new code.--- They will be removed in some future version of the package.---- | Deprecated alias for 'bind'.-bindSocket :: Socket    -- Unconnected Socket-           -> SockAddr  -- Address to Bind to-           -> IO ()-bindSocket = bind---- | Deprecated alias for 'close'.-sClose :: Socket -> IO ()-sClose = close---- | Deprecated alias for 'isConnected'.-sIsConnected :: Socket -> IO Bool-sIsConnected = isConnected---- | Deprecated alias for 'isBound'.-sIsBound :: Socket -> IO Bool-sIsBound = isBound---- | Deprecated alias for 'isListening'.-sIsListening :: Socket -> IO Bool-sIsListening = isListening---- | Deprecated alias for 'isReadable'.-sIsReadable  :: Socket -> IO Bool-sIsReadable = isReadable---- | Deprecated alias for 'isWritable'.-sIsWritable  :: Socket -> IO Bool-sIsWritable = isWritable
− standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString.hsc
@@ -1,374 +0,0 @@-{-# LANGUAGE CPP, ForeignFunctionInterface #-}--#include "HsNet.h"---- |--- Module      : Network.Socket.ByteString--- Copyright   : (c) Johan Tibell 2007-2010--- License     : BSD-style------ Maintainer  : johan.tibell@gmail.com--- Stability   : stable--- Portability : portable------ This module provides access to the BSD /socket/ interface.  This--- module is generally more efficient than the 'String' based network--- functions in 'Network.Socket'.  For detailed documentation, consult--- your favorite POSIX socket reference. All functions communicate--- failures by converting the error number to 'System.IO.IOError'.------ This module is made to be imported with 'Network.Socket' like so:------ > import Network.Socket hiding (send, sendTo, recv, recvFrom)--- > import Network.Socket.ByteString----module Network.Socket.ByteString-    ( -    -- * Send data to a socket-      send-    , sendAll-    , sendTo-    , sendAllTo--    -- ** Vectored I/O-    -- $vectored-    , sendMany-    , sendManyTo--    -- * Receive data from a socket-    , recv-    , recvFrom--    -- * Example-    -- $example-    ) where--import Control.Monad (liftM, when)-import Data.ByteString (ByteString)-import Data.ByteString.Internal (createAndTrim)-import Data.ByteString.Unsafe (unsafeUseAsCStringLen)-import Data.Word (Word8)-#if __GLASGOW_HASKELL__ >= 703-import Foreign.C.Types (CInt(..))-#else-import Foreign.C.Types (CInt)-#endif-import Foreign.Marshal.Alloc (allocaBytes)-import Foreign.Ptr (Ptr, castPtr)-import Network.Socket (SockAddr, Socket(..), sendBufTo, recvBufFrom)--import qualified Data.ByteString as B--import Network.Socket.ByteString.Internal-import Network.Socket.Internal-import Network.Socket.Types--#if !defined(mingw32_HOST_OS)-import Control.Monad (zipWithM_)-import Foreign.C.Types (CChar)-# if __GLASGOW_HASKELL__ >= 703-import Foreign.C.Types (CSize(..))-# else-import Foreign.C.Types (CSize)-# endif-import Foreign.Marshal.Array (allocaArray)-import Foreign.Marshal.Utils (with)-import Foreign.Ptr (plusPtr)-import Foreign.Storable (Storable(..))--import Network.Socket.ByteString.IOVec (IOVec(..))-import Network.Socket.ByteString.MsgHdr (MsgHdr(..))--import GHC.Conc (threadWaitRead, threadWaitWrite)-#else-#  if __GLASGOW_HASKELL__ >= 611-import GHC.IO.FD-#  else-import GHC.Handle (readRawBufferPtr, writeRawBufferPtr)-#  endif-#endif--#if !defined(mingw32_HOST_OS)-foreign import CALLCONV unsafe "send"-  c_send :: CInt -> Ptr a -> CSize -> CInt -> IO CInt-foreign import CALLCONV unsafe "recv"-  c_recv :: CInt -> Ptr CChar -> CSize -> CInt -> IO CInt-#endif---- ------------------------------------------------------------------------------- Sending---- | Send data to the socket.  The socket must be connected to a--- remote socket.  Returns the number of bytes sent. Applications are--- responsible for ensuring that all data has been sent.-send :: Socket      -- ^ Connected socket-     -> ByteString  -- ^ Data to send-     -> IO Int      -- ^ Number of bytes sent-send sock@(MkSocket s _ _ _ _) xs =-    unsafeUseAsCStringLen xs $ \(str, len) ->-    liftM fromIntegral $-#if defined(mingw32_HOST_OS)-#  if __GLASGOW_HASKELL__ >= 611-        writeRawBufferPtr "Network.Socket.ByteString.send"-        (FD s 1) (castPtr str) 0 (fromIntegral len)-#  else-        writeRawBufferPtr "Network.Socket.ByteString.send"-        (fromIntegral s) True str 0 (fromIntegral len)-#  endif-#else-        throwSocketErrorWaitWrite sock "send" $-        c_send s str (fromIntegral len) 0-#endif---- | Send data to the socket.  The socket must be connected to a--- remote socket.  Unlike 'send', this function continues to send data--- until either all data has been sent or an error occurs.  On error,--- an exception is raised, and there is no way to determine how much--- data, if any, was successfully sent.-sendAll :: Socket      -- ^ Connected socket-        -> ByteString  -- ^ Data to send-        -> IO ()-sendAll sock bs = do-    sent <- send sock bs-    when (sent < B.length bs) $ sendAll sock (B.drop sent bs)---- | Send data to the socket.  The recipient can be specified--- explicitly, so the socket need not be in a connected state.--- Returns the number of bytes sent. Applications are responsible for--- ensuring that all data has been sent.-sendTo :: Socket      -- ^ Socket-       -> ByteString  -- ^ Data to send-       -> SockAddr    -- ^ Recipient address-       -> IO Int      -- ^ Number of bytes sent-sendTo sock xs addr =-    unsafeUseAsCStringLen xs $ \(str, len) -> sendBufTo sock str len addr---- | Send data to the socket. The recipient can be specified--- explicitly, so the socket need not be in a connected state.  Unlike--- 'sendTo', this function continues to send data until either all--- data has been sent or an error occurs.  On error, an exception is--- raised, and there is no way to determine how much data, if any, was--- successfully sent.-sendAllTo :: Socket      -- ^ Socket-          -> ByteString  -- ^ Data to send-          -> SockAddr    -- ^ Recipient address-          -> IO ()-sendAllTo sock xs addr = do-    sent <- sendTo sock xs addr-    when (sent < B.length xs) $ sendAllTo sock (B.drop sent xs) addr---- ------------------------------------------------------------------------------- ** Vectored I/O---- $vectored------ Vectored I\/O, also known as scatter\/gather I\/O, allows multiple--- data segments to be sent using a single system call, without first--- concatenating the segments.  For example, given a list of--- @ByteString@s, @xs@,------ > sendMany sock xs------ is equivalent to------ > sendAll sock (concat xs)------ but potentially more efficient.------ Vectored I\/O are often useful when implementing network protocols--- that, for example, group data into segments consisting of one or--- more fixed-length headers followed by a variable-length body.---- | Send data to the socket.  The socket must be in a connected--- state.  The data is sent as if the parts have been concatenated.--- This function continues to send data until either all data has been--- sent or an error occurs.  On error, an exception is raised, and--- there is no way to determine how much data, if any, was--- successfully sent.-sendMany :: Socket        -- ^ Connected socket-         -> [ByteString]  -- ^ Data to send-         -> IO ()-#if !defined(mingw32_HOST_OS)-sendMany sock@(MkSocket fd _ _ _ _) cs = do-    sent <- sendManyInner-    when (sent < totalLength cs) $ sendMany sock (remainingChunks sent cs)-  where-    sendManyInner =-      liftM fromIntegral . withIOVec cs $ \(iovsPtr, iovsLen) ->-          throwSocketErrorWaitWrite sock "writev" $-              c_writev (fromIntegral fd) iovsPtr-              (fromIntegral (min iovsLen (0x0026)))-#else-sendMany sock = sendAll sock . B.concat-#endif---- | Send data to the socket.  The recipient can be specified--- explicitly, so the socket need not be in a connected state.  The--- data is sent as if the parts have been concatenated.  This function--- continues to send data until either all data has been sent or an--- error occurs.  On error, an exception is raised, and there is no--- way to determine how much data, if any, was successfully sent.-sendManyTo :: Socket        -- ^ Socket-           -> [ByteString]  -- ^ Data to send-           -> SockAddr      -- ^ Recipient address-           -> IO ()-#if !defined(mingw32_HOST_OS)-sendManyTo sock@(MkSocket fd _ _ _ _) cs addr = do-    sent <- liftM fromIntegral sendManyToInner-    when (sent < totalLength cs) $ sendManyTo sock (remainingChunks sent cs) addr-  where-    sendManyToInner =-      withSockAddr addr $ \addrPtr addrSize ->-        withIOVec cs $ \(iovsPtr, iovsLen) -> do-          let msgHdr = MsgHdr-                addrPtr (fromIntegral addrSize)-                iovsPtr (fromIntegral iovsLen)-          with msgHdr $ \msgHdrPtr ->-            throwSocketErrorWaitWrite sock "sendmsg" $-              c_sendmsg (fromIntegral fd) msgHdrPtr 0-#else-sendManyTo sock cs = sendAllTo sock (B.concat cs)-#endif---- ------------------------------------------------------------------------------- Receiving---- | Receive data from the socket.  The socket must be in a connected--- state.  This function may return fewer bytes than specified.  If--- the message is longer than the specified length, it may be--- discarded depending on the type of socket.  This function may block--- until a message arrives.------ Considering hardware and network realities, the maximum number of bytes to--- receive should be a small power of 2, e.g., 4096.------ For TCP sockets, a zero length return value means the peer has--- closed its half side of the connection.-recv :: Socket         -- ^ Connected socket-     -> Int            -- ^ Maximum number of bytes to receive-     -> IO ByteString  -- ^ Data received-recv sock nbytes-    | nbytes < 0 = ioError (mkInvalidRecvArgError "Network.Socket.ByteString.recv")-    | otherwise  = createAndTrim nbytes $ recvInner sock nbytes--recvInner :: Socket -> Int -> Ptr Word8 -> IO Int-recvInner sock nbytes ptr =-    fmap fromIntegral $-#if defined(mingw32_HOST_OS)-#  if __GLASGOW_HASKELL__ >= 611-        readRawBufferPtr "Network.Socket.ByteString.recv" (FD s 1) ptr 0 (fromIntegral nbytes)-#  else-        readRawBufferPtr "Network.Socket.ByteString.recv" (fromIntegral s)-        True (castPtr ptr) 0 (fromIntegral nbytes)-#  endif-#else-        throwSocketErrorWaitRead sock "recv" $-        c_recv s (castPtr ptr) (fromIntegral nbytes) 0-#endif-  where-    s = sockFd sock---- | Receive data from the socket.  The socket need not be in a--- connected state.  Returns @(bytes, address)@ where @bytes@ is a--- 'ByteString' representing the data received and @address@ is a--- 'SockAddr' representing the address of the sending socket.-recvFrom :: Socket                     -- ^ Socket-         -> Int                        -- ^ Maximum number of bytes to receive-         -> IO (ByteString, SockAddr)  -- ^ Data received and sender address-recvFrom sock nbytes =-    allocaBytes nbytes $ \ptr -> do-        (len, sockaddr) <- recvBufFrom sock ptr nbytes-        str <- B.packCStringLen (ptr, len)-        return (str, sockaddr)---- ------------------------------------------------------------------------------- Not exported--#if !defined(mingw32_HOST_OS)--- | Suppose we try to transmit a list of chunks @cs@ via a gathering write--- operation and find that @n@ bytes were sent. Then @remainingChunks n cs@ is--- list of chunks remaining to be sent.-remainingChunks :: Int -> [ByteString] -> [ByteString]-remainingChunks _ [] = []-remainingChunks i (x:xs)-    | i < len        = B.drop i x : xs-    | otherwise      = let i' = i - len in i' `seq` remainingChunks i' xs-  where-    len = B.length x---- | @totalLength cs@ is the sum of the lengths of the chunks in the list @cs@.-totalLength :: [ByteString] -> Int-totalLength = sum . map B.length---- | @withIOVec cs f@ executes the computation @f@, passing as argument a pair--- consisting of a pointer to a temporarily allocated array of pointers to--- 'IOVec' made from @cs@ and the number of pointers (@length cs@).--- /Unix only/.-withIOVec :: [ByteString] -> ((Ptr IOVec, Int) -> IO a) -> IO a-withIOVec cs f =-    allocaArray csLen $ \aPtr -> do-        zipWithM_ pokeIov (ptrs aPtr) cs-        f (aPtr, csLen)-  where-    csLen = length cs-    ptrs = iterate (`plusPtr` sizeOf (undefined :: IOVec))-    pokeIov ptr s =-        unsafeUseAsCStringLen s $ \(sPtr, sLen) ->-        poke ptr $ IOVec sPtr (fromIntegral sLen)-#endif---- ------------------------------------------------------------------------ Example---- $example------ Here are two minimal example programs using the TCP/IP protocol: a--- server that echoes all data that it receives back (servicing only--- one client) and a client using it.------ > -- Echo server program--- > module Main where--- >--- > import Control.Monad (unless)--- > import Network.Socket hiding (recv)--- > import qualified Data.ByteString as S--- > import Network.Socket.ByteString (recv, sendAll)--- >--- > main :: IO ()--- > main = withSocketsDo $--- >     do addrinfos <- getAddrInfo--- >                     (Just (defaultHints {addrFlags = [AI_PASSIVE]}))--- >                     Nothing (Just "3000")--- >        let serveraddr = head addrinfos--- >        sock <- socket (addrFamily serveraddr) Stream defaultProtocol--- >        bindSocket sock (addrAddress serveraddr)--- >        listen sock 1--- >        (conn, _) <- accept sock--- >        talk conn--- >        sClose conn--- >        sClose sock--- >--- >     where--- >       talk :: Socket -> IO ()--- >       talk conn =--- >           do msg <- recv conn 1024--- >              unless (S.null msg) $ sendAll conn msg >> talk conn------ > -- Echo client program--- > module Main where--- >--- > import Network.Socket hiding (recv)--- > import Network.Socket.ByteString (recv, sendAll)--- > import qualified Data.ByteString.Char8 as C--- >--- > main :: IO ()--- > main = withSocketsDo $--- >     do addrinfos <- getAddrInfo Nothing (Just "") (Just "3000")--- >        let serveraddr = head addrinfos--- >        sock <- socket (addrFamily serveraddr) Stream defaultProtocol--- >        connect sock (addrAddress serveraddr)--- >        sendAll sock $ C.pack "Hello, world!"--- >        msg <- recv sock 1024--- >        sClose sock--- >        putStr "Received "--- >        C.putStrLn msg
− standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/IOVec.hsc
@@ -1,30 +0,0 @@-{-# OPTIONS_GHC -funbox-strict-fields #-}---- | Support module for the POSIX writev system call.-module Network.Socket.ByteString.IOVec-    ( IOVec(..)-    ) where--import Foreign.C.Types (CChar, CInt, CSize)-import Foreign.Ptr (Ptr)-import Foreign.Storable (Storable(..))--#include <sys/uio.h>--data IOVec = IOVec-    { iovBase :: !(Ptr CChar)-    , iovLen  :: !CSize-    }--instance Storable IOVec where-  sizeOf _    = (#const sizeof(struct iovec))-  alignment _ = alignment (undefined :: CInt)--  peek p = do-    base <- (#peek struct iovec, iov_base) p-    len  <- (#peek struct iovec, iov_len)  p-    return $ IOVec base len--  poke p iov = do-    (#poke struct iovec, iov_base) p (iovBase iov)-    (#poke struct iovec, iov_len)  p (iovLen  iov)
− standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/Internal.hs
@@ -1,54 +0,0 @@-{-# LANGUAGE CPP, ForeignFunctionInterface #-}---- |--- Module      : Network.Socket.ByteString.Internal--- Copyright   : (c) Johan Tibell 2007-2010--- License     : BSD-style------ Maintainer  : johan.tibell@gmail.com--- Stability   : stable--- Portability : portable----module Network.Socket.ByteString.Internal-    (-      mkInvalidRecvArgError-#if !defined(mingw32_HOST_OS)-    , c_writev-    , c_sendmsg-#endif-    ) where--import System.IO.Error (ioeSetErrorString, mkIOError)--#if !defined(mingw32_HOST_OS)-# if __GLASGOW_HASKELL__ >= 703-import Foreign.C.Types (CInt(..))-import System.Posix.Types (CSsize(..))-# else-import Foreign.C.Types (CInt)-import System.Posix.Types (CSsize)-# endif-import Foreign.Ptr (Ptr)--import Network.Socket.ByteString.IOVec (IOVec)-import Network.Socket.ByteString.MsgHdr (MsgHdr)-#endif--#if __GLASGOW_HASKELL__ < 611-import GHC.IOBase (IOErrorType(..))-#else-import GHC.IO.Exception (IOErrorType(..))-#endif--mkInvalidRecvArgError :: String -> IOError-mkInvalidRecvArgError loc = ioeSetErrorString (mkIOError-                                    InvalidArgument-                                    loc Nothing Nothing) "non-positive length"--#if !defined(mingw32_HOST_OS)-foreign import ccall unsafe "writev"-  c_writev :: CInt -> Ptr IOVec -> CInt -> IO CSsize--foreign import ccall unsafe "sendmsg"-  c_sendmsg :: CInt -> Ptr MsgHdr -> CInt -> IO CSsize-#endif
− standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/Lazy.hsc
@@ -1,149 +0,0 @@-{-# LANGUAGE BangPatterns, CPP, ForeignFunctionInterface #-}---- |--- Module      : Network.Socket.ByteString.Lazy--- Copyright   : (c) Bryan O'Sullivan 2009--- License     : BSD-style------ Maintainer  : bos@serpentine.com--- Stability   : experimental--- Portability : POSIX, GHC------ This module provides access to the BSD /socket/ interface.  This--- module is generally more efficient than the 'String' based network--- functions in 'Network.Socket'.  For detailed documentation, consult--- your favorite POSIX socket reference. All functions communicate--- failures by converting the error number to 'System.IO.IOError'.------ This module is made to be imported with 'Network.Socket' like so:------ > import Network.Socket hiding (send, sendTo, recv, recvFrom)--- > import Network.Socket.ByteString.Lazy--- > import Prelude hiding (getContents)----module Network.Socket.ByteString.Lazy-    (-#if !defined(mingw32_HOST_OS)-    -- * Send data to a socket-      send-    , sendAll-    ,-#endif--    -- * Receive data from a socket-      getContents-    , recv-    ) where--import Control.Monad (liftM)-import Data.ByteString.Lazy.Internal (ByteString(..), defaultChunkSize)-import Data.Int (Int64)-import Network.Socket (Socket(..), ShutdownCmd(..), shutdown)-import Prelude hiding (getContents)-import System.IO.Unsafe (unsafeInterleaveIO)--import qualified Data.ByteString as S-import qualified Network.Socket.ByteString as N--#if !defined(mingw32_HOST_OS)-import Control.Monad (unless)-import Data.ByteString.Unsafe (unsafeUseAsCStringLen)-import Foreign.Marshal.Array (allocaArray)-import Foreign.Ptr (plusPtr)-import Foreign.Storable (Storable(..))-import Network.Socket.ByteString.IOVec (IOVec(IOVec))-import Network.Socket.ByteString.Internal (c_writev)-import Network.Socket.Internal--import qualified Data.ByteString.Lazy as L--import GHC.Conc (threadWaitWrite)-#endif--#if !defined(mingw32_HOST_OS)--- -------------------------------------------------------------------------------- Sending---- | Send data to the socket. The socket must be in a connected state.--- Returns the number of bytes sent. Applications are responsible for--- ensuring that all data has been sent.------ Because a lazily generated 'ByteString' may be arbitrarily long,--- this function caps the amount it will attempt to send at 4MB.  This--- number is large (so it should not penalize performance on fast--- networks), but not outrageously so (to avoid demanding lazily--- computed data unnecessarily early).  Before being sent, the lazy--- 'ByteString' will be converted to a list of strict 'ByteString's--- with 'L.toChunks'; at most 1024 chunks will be sent.  /Unix only/.-send :: Socket      -- ^ Connected socket-     -> ByteString  -- ^ Data to send-     -> IO Int64    -- ^ Number of bytes sent-send sock@(MkSocket fd _ _ _ _) s = do-  let cs  = take maxNumChunks (L.toChunks s)-      len = length cs-  liftM fromIntegral . allocaArray len $ \ptr ->-    withPokes cs ptr $ \niovs ->-      throwSocketErrorWaitWrite sock "writev" $-        c_writev (fromIntegral fd) ptr niovs-  where-    withPokes ss p f = loop ss p 0 0-      where loop (c:cs) q k !niovs-                | k < maxNumBytes =-                    unsafeUseAsCStringLen c $ \(ptr,len) -> do-                      poke q $ IOVec ptr (fromIntegral len)-                      loop cs (q `plusPtr` sizeOf (undefined :: IOVec))-                              (k + fromIntegral len) (niovs + 1)-                | otherwise = f niovs-            loop _ _ _ niovs = f niovs-    maxNumBytes  = 4194304 :: Int  -- maximum number of bytes to transmit in one system call-    maxNumChunks = 1024    :: Int  -- maximum number of chunks to transmit in one system call---- | Send data to the socket.  The socket must be in a connected--- state. This function continues to send data until either all data--- has been sent or an error occurs.  If there is an error, an--- exception is raised, and there is no way to determine how much data--- was sent.  /Unix only/.-sendAll :: Socket      -- ^ Connected socket-        -> ByteString  -- ^ Data to send-        -> IO ()-sendAll sock bs = do-  sent <- send sock bs-  let bs' = L.drop sent bs-  unless (L.null bs') $ sendAll sock bs'-#endif---- -------------------------------------------------------------------------------- Receiving---- | Receive data from the socket.  The socket must be in a connected--- state.  Data is received on demand, in chunks; each chunk will be--- sized to reflect the amount of data received by individual 'recv'--- calls.------ All remaining data from the socket is consumed.  When there is no--- more data to be received, the receiving side of the socket is shut--- down.  If there is an error and an exception is thrown, the socket--- is not shut down.-getContents :: Socket         -- ^ Connected socket-            -> IO ByteString  -- ^ Data received-getContents sock = loop where-  loop = unsafeInterleaveIO $ do-    s <- N.recv sock defaultChunkSize-    if S.null s-      then shutdown sock ShutdownReceive >> return Empty-      else Chunk s `liftM` loop---- | Receive data from the socket.  The socket must be in a connected--- state.  This function may return fewer bytes than specified.  If--- the received data is longer than the specified length, it may be--- discarded depending on the type of socket.  This function may block--- until a message arrives.------ If there is no more data to be received, returns an empty 'ByteString'.-recv :: Socket         -- ^ Connected socket-     -> Int64          -- ^ Maximum number of bytes to receive-     -> IO ByteString  -- ^ Data received-recv sock nbytes = chunk `liftM` N.recv sock (fromIntegral nbytes) where-  chunk k-    | S.null k  = Empty-    | otherwise = Chunk k Empty
− standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/MsgHdr.hsc
@@ -1,48 +0,0 @@-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -funbox-strict-fields #-}---- | Support module for the POSIX 'sendmsg' system call.-module Network.Socket.ByteString.MsgHdr-    ( MsgHdr(..)-    ) where--#include <sys/types.h>-#include <sys/socket.h>--import Foreign.C.Types (CInt, CSize, CUInt)-import Foreign.Ptr (Ptr)-import Foreign.Storable (Storable(..))-import Network.Socket (SockAddr)-import Network.Socket.Internal (zeroMemory)--import Network.Socket.ByteString.IOVec (IOVec)---- We don't use msg_control, msg_controllen, and msg_flags as these--- don't exist on OpenSolaris.-data MsgHdr = MsgHdr-    { msgName    :: !(Ptr SockAddr)-    , msgNameLen :: !CUInt-    , msgIov     :: !(Ptr IOVec)-    , msgIovLen  :: !CSize-    }--instance Storable MsgHdr where-  sizeOf _    = (#const sizeof(struct msghdr))-  alignment _ = alignment (undefined :: CInt)--  peek p = do-    name       <- (#peek struct msghdr, msg_name)       p-    nameLen    <- (#peek struct msghdr, msg_namelen)    p-    iov        <- (#peek struct msghdr, msg_iov)        p-    iovLen     <- (#peek struct msghdr, msg_iovlen)     p-    return $ MsgHdr name nameLen iov iovLen--  poke p mh = do-    -- We need to zero the msg_control, msg_controllen, and msg_flags-    -- fields, but they only exist on some platforms (e.g. not on-    -- Solaris).  Instead of using CPP, we zero the entire struct.-    zeroMemory p (#const sizeof(struct msghdr))-    (#poke struct msghdr, msg_name)       p (msgName       mh)-    (#poke struct msghdr, msg_namelen)    p (msgNameLen    mh)-    (#poke struct msghdr, msg_iov)        p (msgIov        mh)-    (#poke struct msghdr, msg_iovlen)     p (msgIovLen     mh)
− standalone/android/tmp/network-2.4.1.2/Network/Socket/Internal.hsc
@@ -1,257 +0,0 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE ForeignFunctionInterface #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}--------------------------------------------------------------------------------- |--- Module      :  Network.Socket.Internal--- Copyright   :  (c) The University of Glasgow 2001--- License     :  BSD-style (see the file libraries/network/LICENSE)------ Maintainer  :  libraries@haskell.org--- Stability   :  provisional--- Portability :  portable------ A module containing semi-public 'Network.Socket' internals.--- Modules which extend the 'Network.Socket' module will need to use--- this module while ideally most users will be able to make do with--- the public interface.-----------------------------------------------------------------------------------#include "HsNet.h"--module Network.Socket.Internal-    (-    -- * Socket addresses-      HostAddress-#if defined(IPV6_SOCKET_SUPPORTNO)-    , HostAddress6-    , FlowInfo-    , ScopeID-#endif-    , PortNumber(..)-    , SockAddr(..)--    , peekSockAddr-    , pokeSockAddr-    , sizeOfSockAddr-    , sizeOfSockAddrByFamily-    , withSockAddr-    , withNewSockAddr--    -- * Protocol families-    , Family(..)--    -- * Socket error functions-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)-    , c_getLastError-#endif-    , throwSocketError-    , throwSocketErrorCode--    -- * Guards for socket operations that may fail-    , throwSocketErrorIfMinus1_-    , throwSocketErrorIfMinus1Retry-    , throwSocketErrorIfMinus1RetryMayBlock--    -- ** Guards that wait and retry if the operation would block-    -- | These guards are based on 'throwSocketErrorIfMinus1RetryMayBlock'.-    -- They wait for socket readiness if the action fails with @EWOULDBLOCK@-    -- or similar.-    , throwSocketErrorWaitRead-    , throwSocketErrorWaitWrite--    -- * Initialization-    , withSocketsDo--    -- * Low-level helpers-    , zeroMemory-    ) where--import Data.Bits ( (.|.), shiftL, shiftR )-import Data.Word ( Word8, Word16, Word32 )-import Data.Typeable (Typeable)-import Foreign.C.Error (throwErrno, throwErrnoIfMinus1Retry,-                        throwErrnoIfMinus1RetryMayBlock, throwErrnoIfMinus1_,-                        Errno(..), errnoToIOError)-import Foreign.C.String ( castCharToCChar, peekCString )-#if __GLASGOW_HASKELL__ >= 703-import Foreign.C.Types ( CInt(..), CSize(..) )-#else-import Foreign.C.Types ( CInt, CSize )-#endif-import Foreign.Marshal.Alloc ( allocaBytes )-import Foreign.Marshal.Array ( pokeArray, pokeArray0 )-import Foreign.Ptr ( Ptr, castPtr, plusPtr )-import Foreign.Storable ( Storable(..) )-import GHC.Conc (threadWaitRead, threadWaitWrite)--#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)-import Control.Exception ( finally )-#  if __GLASGOW_HASKELL__ >= 707-import GHC.IO.Exception ( IOErrorType(..) )-#  else-import GHC.IOBase ( IOErrorType(..) )-#  endif-import Foreign.C.Types ( CChar )-import System.IO.Error ( ioeSetErrorString, mkIOError )-#endif--import Network.Socket.Types---- ------------------------------------------------------------------------ Guards for socket operations that may fail---- | Throw an 'IOError' corresponding to the current socket error.-throwSocketError :: String  -- ^ textual description of the error location-                 -> IO a---- | Like 'throwSocketError', but the error code is supplied as an argument.------ On Windows, do not use errno.  Use a system error code instead.-throwSocketErrorCode :: String -> CInt -> IO a---- | Throw an 'IOError' corresponding to the current socket error if--- the IO action returns a result of @-1@.  Discards the result of the--- IO action after error handling.-throwSocketErrorIfMinus1_-    :: (Eq a, Num a)-    => String  -- ^ textual description of the location-    -> IO a    -- ^ the 'IO' operation to be executed-    -> IO ()--{-# SPECIALIZE throwSocketErrorIfMinus1_ :: String -> IO CInt -> IO () #-}---- | Throw an 'IOError' corresponding to the current socket error if--- the IO action returns a result of @-1@, but retries in case of an--- interrupted operation.-throwSocketErrorIfMinus1Retry-    :: (Eq a, Num a)-    => String  -- ^ textual description of the location-    -> IO a    -- ^ the 'IO' operation to be executed-    -> IO a--{-# SPECIALIZE throwSocketErrorIfMinus1Retry :: String -> IO CInt -> IO CInt #-}---- | Throw an 'IOError' corresponding to the current socket error if--- the IO action returns a result of @-1@, but retries in case of an--- interrupted operation.  Checks for operations that would block and--- executes an alternative action before retrying in that case.-throwSocketErrorIfMinus1RetryMayBlock-    :: (Eq a, Num a)-    => String  -- ^ textual description of the location-    -> IO b    -- ^ action to execute before retrying if an-               --   immediate retry would block-    -> IO a    -- ^ the 'IO' operation to be executed-    -> IO a--{-# SPECIALIZE throwSocketErrorIfMinus1RetryMayBlock-        :: String -> IO b -> IO CInt -> IO CInt #-}--#if (!defined(HAVE_WINSOCK2_H) || defined(cygwin32_HOST_OS))--throwSocketErrorIfMinus1RetryMayBlock name on_block act =-    throwErrnoIfMinus1RetryMayBlock name act on_block--throwSocketErrorIfMinus1Retry = throwErrnoIfMinus1Retry--throwSocketErrorIfMinus1_ = throwErrnoIfMinus1_--throwSocketError = throwErrno--throwSocketErrorCode loc errno =-    ioError (errnoToIOError loc (Errno errno) Nothing Nothing)--#else--throwSocketErrorIfMinus1RetryMayBlock name _ act-  = throwSocketErrorIfMinus1Retry name act--throwSocketErrorIfMinus1_ name act = do-  throwSocketErrorIfMinus1Retry name act-  return ()--# if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)-throwSocketErrorIfMinus1Retry name act = do-  r <- act-  if (r == -1)-   then do-    rc   <- c_getLastError-    case rc of-      #{const WSANOTINITIALISED} -> do-        withSocketsDo (return ())-        r <- act-        if (r == -1)-           then throwSocketError name-           else return r-      _ -> throwSocketError name-   else return r--throwSocketErrorCode name rc = do-    pstr <- c_getWSError rc-    str  <- peekCString pstr-    ioError (ioeSetErrorString (mkIOError OtherError name Nothing Nothing) str)--throwSocketError name =-    c_getLastError >>= throwSocketErrorCode name--foreign import CALLCONV unsafe "WSAGetLastError"-  c_getLastError :: IO CInt--foreign import ccall unsafe "getWSErrorDescr"-  c_getWSError :: CInt -> IO (Ptr CChar)---# else-throwSocketErrorIfMinus1Retry = throwErrnoIfMinus1Retry-throwSocketError = throwErrno-throwSocketErrorCode loc errno =-    ioError (errnoToIOError loc (Errno errno) Nothing Nothing)-# endif-#endif---- | Like 'throwSocketErrorIfMinus1Retry', but if the action fails with--- @EWOULDBLOCK@ or similar, wait for the socket to be read-ready,--- and try again.-throwSocketErrorWaitRead :: (Eq a, Num a) => Socket -> String -> IO a -> IO a-throwSocketErrorWaitRead sock name io =-    throwSocketErrorIfMinus1RetryMayBlock name-        (threadWaitRead $ fromIntegral $ sockFd sock)-        io---- | Like 'throwSocketErrorIfMinus1Retry', but if the action fails with--- @EWOULDBLOCK@ or similar, wait for the socket to be write-ready,--- and try again.-throwSocketErrorWaitWrite :: (Eq a, Num a) => Socket -> String -> IO a -> IO a-throwSocketErrorWaitWrite sock name io =-    throwSocketErrorIfMinus1RetryMayBlock name-        (threadWaitWrite $ fromIntegral $ sockFd sock)-        io---- ------------------------------------------------------------------------------ WinSock support--{-| On Windows operating systems, the networking subsystem has to be-initialised using 'withSocketsDo' before any networking operations can-be used.  eg.--> main = withSocketsDo $ do {...}--Although this is only strictly necessary on Windows platforms, it is-harmless on other platforms, so for portability it is good practice to-use it all the time.--}-withSocketsDo :: IO a -> IO a-#if !defined(WITH_WINSOCK)-withSocketsDo x = x-#else-withSocketsDo act = do-    x <- initWinSock-    if x /= 0-       then ioError (userError "Failed to initialise WinSock")-       else act `finally` shutdownWinSock--foreign import ccall unsafe "initWinSock" initWinSock :: IO Int-foreign import ccall unsafe "shutdownWinSock" shutdownWinSock :: IO ()--#endif
− standalone/android/tmp/network-2.4.1.2/Network/Socket/Types.hsc
@@ -1,962 +0,0 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE ForeignFunctionInterface #-}-module Network.Socket.Types-    (-    -- * Socket-      Socket(..)-    , sockFd-    , sockFamily-    , sockType-    , sockProtocol-    , sockStatus-    , SocketStatus(..)--    -- * Socket types-    , SocketType(..)-    , isSupportedSocketType-    , packSocketType-    , packSocketType'-    , packSocketTypeOrThrow-    , unpackSocketType-    , unpackSocketType'--    -- * Family-    , Family(..)-    , isSupportedFamily-    , packFamily-    , unpackFamily--    -- * Socket addresses-    , SockAddr(..)-    , HostAddress-#if defined(IPV6_SOCKET_SUPPORT)-    , HostAddress6-    , FlowInfo-    , ScopeID-#endif-    , peekSockAddr-    , pokeSockAddr-    , sizeOfSockAddr-    , sizeOfSockAddrByFamily-    , withSockAddr-    , withNewSockAddr--    -- * Unsorted-    , ProtocolNumber-    , PortNumber(..)--    -- * Low-level helpers-    , zeroMemory-    ) where--#include "HsNet.h"--import Control.Concurrent.MVar-import Control.Monad-import Data.Bits-import Data.Maybe-import Data.Ratio-import Data.Typeable-import Data.Word-import Foreign.C-import Foreign.Marshal.Alloc-import Foreign.Marshal.Array-import Foreign.Ptr-import Foreign.Storable--data Socket-  = MkSocket-            CInt                 -- File Descriptor-            Family-            SocketType-            ProtocolNumber       -- Protocol Number-            (MVar SocketStatus)  -- Status Flag-  deriving Typeable--sockFd       (MkSocket n _ _ _ _) = n-sockFamily   (MkSocket _ f _ _ _) = f-sockType     (MkSocket _ _ t _ _) = t-sockProtocol (MkSocket _ _ _ p _) = p-sockStatus   (MkSocket _ _ _ _ s) = s--instance Eq Socket where-  (MkSocket _ _ _ _ m1) == (MkSocket _ _ _ _ m2) = m1 == m2--instance Show Socket where-  showsPrec _n (MkSocket fd _ _ _ _) =-        showString "<socket: " . shows fd . showString ">"--type ProtocolNumber = CInt--data SocketStatus-  -- Returned Status    Function called-  = NotConnected        -- socket-  | Bound               -- bind-  | Listening           -- listen-  | Connected           -- connect/accept-  | ConvertedToHandle   -- is now a Handle, don't touch-  | Closed              -- close-    deriving (Eq, Show, Typeable)---------------------------------------------------------------------------------- Socket types---- There are a few possible ways to do this.  The first is convert the--- structs used in the C library into an equivalent Haskell type. An--- other possible implementation is to keep all the internals in the C--- code and use an Int## and a status flag. The second method is used--- here since a lot of the C structures are not required to be--- manipulated.---- Originally the status was non-mutable so we had to return a new--- socket each time we changed the status.  This version now uses--- mutable variables to avoid the need to do this.  The result is a--- cleaner interface and better security since the application--- programmer now can't circumvent the status information to perform--- invalid operations on sockets.---- | Socket Types.------ The existence of a constructor does not necessarily imply that that--- socket type is supported on your system: see 'isSupportedSocketType'.-data SocketType-        = NoSocketType -- ^ 0, used in getAddrInfo hints, for example-        | Stream -- ^ SOCK_STREAM-        | Datagram -- ^ SOCK_DGRAM-        | Raw -- ^ SOCK_RAW-        | RDM -- ^ SOCK_RDM-        | SeqPacket -- ^ SOCK_SEQPACKET-        deriving (Eq, Ord, Read, Show, Typeable)---- | Does the SOCK_ constant corresponding to the given SocketType exist on--- this system?-isSupportedSocketType :: SocketType -> Bool-isSupportedSocketType = isJust . packSocketType'---- | Find the SOCK_ constant corresponding to the SocketType value.-packSocketType' :: SocketType -> Maybe CInt-packSocketType' stype = case Just stype of-    -- the Just above is to disable GHC's overlapping pattern-    -- detection: see comments for packSocketOption-    Just NoSocketType -> Just 0-#ifdef SOCK_STREAM-    Just Stream -> Just #const SOCK_STREAM-#endif-#ifdef SOCK_DGRAM-    Just Datagram -> Just #const SOCK_DGRAM-#endif-#ifdef SOCK_RAW-    Just Raw -> Just #const SOCK_RAW-#endif-#ifdef SOCK_RDM-    Just RDM -> Just #const SOCK_RDM-#endif-#ifdef SOCK_SEQPACKET-    Just SeqPacket -> Just #const SOCK_SEQPACKET-#endif-    _ -> Nothing--packSocketType :: SocketType -> CInt-packSocketType stype = fromMaybe (error errMsg) (packSocketType' stype)-  where-    errMsg = concat ["Network.Socket.packSocketType: ",-                     "socket type ", show stype, " unsupported on this system"]---- | Try packSocketType' on the SocketType, if it fails throw an error with--- message starting "Network.Socket." ++ the String parameter-packSocketTypeOrThrow :: String -> SocketType -> IO CInt-packSocketTypeOrThrow caller stype = maybe err return (packSocketType' stype)- where-  err = ioError . userError . concat $ ["Network.Socket.", caller, ": ",-    "socket type ", show stype, " unsupported on this system"]---unpackSocketType:: CInt -> Maybe SocketType-unpackSocketType t = case t of-        0 -> Just NoSocketType-#ifdef SOCK_STREAM-        (#const SOCK_STREAM) -> Just Stream-#endif-#ifdef SOCK_DGRAM-        (#const SOCK_DGRAM) -> Just Datagram-#endif-#ifdef SOCK_RAW-        (#const SOCK_RAW) -> Just Raw-#endif-#ifdef SOCK_RDM-        (#const SOCK_RDM) -> Just RDM-#endif-#ifdef SOCK_SEQPACKET-        (#const SOCK_SEQPACKET) -> Just SeqPacket-#endif-        _ -> Nothing---- | Try unpackSocketType on the CInt, if it fails throw an error with--- message starting "Network.Socket." ++ the String parameter-unpackSocketType' :: String -> CInt -> IO SocketType-unpackSocketType' caller ty = maybe err return (unpackSocketType ty)- where-  err = ioError . userError . concat $ ["Network.Socket.", caller, ": ",-    "socket type ", show ty, " unsupported on this system"]----------------------------------------------------------------------------- Protocol Families.---- | Address families.------ A constructor being present here does not mean it is supported by the--- operating system: see 'isSupportedFamily'.-data Family-    = AF_UNSPEC           -- unspecified-    | AF_UNIX             -- local to host (pipes, portals-    | AF_INET             -- internetwork: UDP, TCP, etc-    | AF_INET6            -- Internet Protocol version 6-    | AF_IMPLINK          -- arpanet imp addresses-    | AF_PUP              -- pup protocols: e.g. BSP-    | AF_CHAOS            -- mit CHAOS protocols-    | AF_NS               -- XEROX NS protocols-    | AF_NBS              -- nbs protocols-    | AF_ECMA             -- european computer manufacturers-    | AF_DATAKIT          -- datakit protocols-    | AF_CCITT            -- CCITT protocols, X.25 etc-    | AF_SNA              -- IBM SNA-    | AF_DECnet           -- DECnet-    | AF_DLI              -- Direct data link interface-    | AF_LAT              -- LAT-    | AF_HYLINK           -- NSC Hyperchannel-    | AF_APPLETALK        -- Apple Talk-    | AF_ROUTE            -- Internal Routing Protocol-    | AF_NETBIOS          -- NetBios-style addresses-    | AF_NIT              -- Network Interface Tap-    | AF_802              -- IEEE 802.2, also ISO 8802-    | AF_ISO              -- ISO protocols-    | AF_OSI              -- umbrella of all families used by OSI-    | AF_NETMAN           -- DNA Network Management-    | AF_X25              -- CCITT X.25-    | AF_AX25-    | AF_OSINET           -- AFI-    | AF_GOSSIP           -- US Government OSI-    | AF_IPX              -- Novell Internet Protocol-    | Pseudo_AF_XTP       -- eXpress Transfer Protocol (no AF)-    | AF_CTF              -- Common Trace Facility-    | AF_WAN              -- Wide Area Network protocols-    | AF_SDL              -- SGI Data Link for DLPI-    | AF_NETWARE-    | AF_NDD-    | AF_INTF             -- Debugging use only-    | AF_COIP             -- connection-oriented IP, aka ST II-    | AF_CNT              -- Computer Network Technology-    | Pseudo_AF_RTIP      -- Help Identify RTIP packets-    | Pseudo_AF_PIP       -- Help Identify PIP packets-    | AF_SIP              -- Simple Internet Protocol-    | AF_ISDN             -- Integrated Services Digital Network-    | Pseudo_AF_KEY       -- Internal key-management function-    | AF_NATM             -- native ATM access-    | AF_ARP              -- (rev.) addr. res. prot. (RFC 826)-    | Pseudo_AF_HDRCMPLT  -- Used by BPF to not rewrite hdrs in iface output-    | AF_ENCAP-    | AF_LINK             -- Link layer interface-    | AF_RAW              -- Link layer interface-    | AF_RIF              -- raw interface-    | AF_NETROM           -- Amateur radio NetROM-    | AF_BRIDGE           -- multiprotocol bridge-    | AF_ATMPVC           -- ATM PVCs-    | AF_ROSE             -- Amateur Radio X.25 PLP-    | AF_NETBEUI          -- 802.2LLC-    | AF_SECURITY         -- Security callback pseudo AF-    | AF_PACKET           -- Packet family-    | AF_ASH              -- Ash-    | AF_ECONET           -- Acorn Econet-    | AF_ATMSVC           -- ATM SVCs-    | AF_IRDA             -- IRDA sockets-    | AF_PPPOX            -- PPPoX sockets-    | AF_WANPIPE          -- Wanpipe API sockets-    | AF_BLUETOOTH        -- bluetooth sockets-      deriving (Eq, Ord, Read, Show)--packFamily :: Family -> CInt-packFamily f = case packFamily' f of-    Just fam -> fam-    Nothing -> error $-               "Network.Socket.packFamily: unsupported address family: " ++-               show f---- | Does the AF_ constant corresponding to the given family exist on this--- system?-isSupportedFamily :: Family -> Bool-isSupportedFamily = isJust . packFamily'--packFamily' :: Family -> Maybe CInt-packFamily' f = case Just f of-    -- the Just above is to disable GHC's overlapping pattern-    -- detection: see comments for packSocketOption-    Just AF_UNSPEC -> Just #const AF_UNSPEC-#ifdef AF_UNIX-    Just AF_UNIX -> Just #const AF_UNIX-#endif-#ifdef AF_INET-    Just AF_INET -> Just #const AF_INET-#endif-#ifdef AF_INET6-    Just AF_INET6 -> Just #const AF_INET6-#endif-#ifdef AF_IMPLINK-    Just AF_IMPLINK -> Just #const AF_IMPLINK-#endif-#ifdef AF_PUP-    Just AF_PUP -> Just #const AF_PUP-#endif-#ifdef AF_CHAOS-    Just AF_CHAOS -> Just #const AF_CHAOS-#endif-#ifdef AF_NS-    Just AF_NS -> Just #const AF_NS-#endif-#ifdef AF_NBS-    Just AF_NBS -> Just #const AF_NBS-#endif-#ifdef AF_ECMA-    Just AF_ECMA -> Just #const AF_ECMA-#endif-#ifdef AF_DATAKIT-    Just AF_DATAKIT -> Just #const AF_DATAKIT-#endif-#ifdef AF_CCITT-    Just AF_CCITT -> Just #const AF_CCITT-#endif-#ifdef AF_SNA-    Just AF_SNA -> Just #const AF_SNA-#endif-#ifdef AF_DECnet-    Just AF_DECnet -> Just #const AF_DECnet-#endif-#ifdef AF_DLI-    Just AF_DLI -> Just #const AF_DLI-#endif-#ifdef AF_LAT-    Just AF_LAT -> Just #const AF_LAT-#endif-#ifdef AF_HYLINK-    Just AF_HYLINK -> Just #const AF_HYLINK-#endif-#ifdef AF_APPLETALK-    Just AF_APPLETALK -> Just #const AF_APPLETALK-#endif-#ifdef AF_ROUTE-    Just AF_ROUTE -> Just #const AF_ROUTE-#endif-#ifdef AF_NETBIOS-    Just AF_NETBIOS -> Just #const AF_NETBIOS-#endif-#ifdef AF_NIT-    Just AF_NIT -> Just #const AF_NIT-#endif-#ifdef AF_802-    Just AF_802 -> Just #const AF_802-#endif-#ifdef AF_ISO-    Just AF_ISO -> Just #const AF_ISO-#endif-#ifdef AF_OSI-    Just AF_OSI -> Just #const AF_OSI-#endif-#ifdef AF_NETMAN-    Just AF_NETMAN -> Just #const AF_NETMAN-#endif-#ifdef AF_X25-    Just AF_X25 -> Just #const AF_X25-#endif-#ifdef AF_AX25-    Just AF_AX25 -> Just #const AF_AX25-#endif-#ifdef AF_OSINET-    Just AF_OSINET -> Just #const AF_OSINET-#endif-#ifdef AF_GOSSIP-    Just AF_GOSSIP -> Just #const AF_GOSSIP-#endif-#ifdef AF_IPX-    Just AF_IPX -> Just #const AF_IPX-#endif-#ifdef Pseudo_AF_XTP-    Just Pseudo_AF_XTP -> Just #const Pseudo_AF_XTP-#endif-#ifdef AF_CTF-    Just AF_CTF -> Just #const AF_CTF-#endif-#ifdef AF_WAN-    Just AF_WAN -> Just #const AF_WAN-#endif-#ifdef AF_SDL-    Just AF_SDL -> Just #const AF_SDL-#endif-#ifdef AF_NETWARE-    Just AF_NETWARE -> Just #const AF_NETWARE-#endif-#ifdef AF_NDD-    Just AF_NDD -> Just #const AF_NDD-#endif-#ifdef AF_INTF-    Just AF_INTF -> Just #const AF_INTF-#endif-#ifdef AF_COIP-    Just AF_COIP -> Just #const AF_COIP-#endif-#ifdef AF_CNT-    Just AF_CNT -> Just #const AF_CNT-#endif-#ifdef Pseudo_AF_RTIP-    Just Pseudo_AF_RTIP -> Just #const Pseudo_AF_RTIP-#endif-#ifdef Pseudo_AF_PIP-    Just Pseudo_AF_PIP -> Just #const Pseudo_AF_PIP-#endif-#ifdef AF_SIP-    Just AF_SIP -> Just #const AF_SIP-#endif-#ifdef AF_ISDN-    Just AF_ISDN -> Just #const AF_ISDN-#endif-#ifdef Pseudo_AF_KEY-    Just Pseudo_AF_KEY -> Just #const Pseudo_AF_KEY-#endif-#ifdef AF_NATM-    Just AF_NATM -> Just #const AF_NATM-#endif-#ifdef AF_ARP-    Just AF_ARP -> Just #const AF_ARP-#endif-#ifdef Pseudo_AF_HDRCMPLT-    Just Pseudo_AF_HDRCMPLT -> Just #const Pseudo_AF_HDRCMPLT-#endif-#ifdef AF_ENCAP-    Just AF_ENCAP -> Just #const AF_ENCAP-#endif-#ifdef AF_LINK-    Just AF_LINK -> Just #const AF_LINK-#endif-#ifdef AF_RAW-    Just AF_RAW -> Just #const AF_RAW-#endif-#ifdef AF_RIF-    Just AF_RIF -> Just #const AF_RIF-#endif-#ifdef AF_NETROM-    Just AF_NETROM -> Just #const AF_NETROM-#endif-#ifdef AF_BRIDGE-    Just AF_BRIDGE -> Just #const AF_BRIDGE-#endif-#ifdef AF_ATMPVC-    Just AF_ATMPVC -> Just #const AF_ATMPVC-#endif-#ifdef AF_ROSE-    Just AF_ROSE -> Just #const AF_ROSE-#endif-#ifdef AF_NETBEUI-    Just AF_NETBEUI -> Just #const AF_NETBEUI-#endif-#ifdef AF_SECURITY-    Just AF_SECURITY -> Just #const AF_SECURITY-#endif-#ifdef AF_PACKET-    Just AF_PACKET -> Just #const AF_PACKET-#endif-#ifdef AF_ASH-    Just AF_ASH -> Just #const AF_ASH-#endif-#ifdef AF_ECONET-    Just AF_ECONET -> Just #const AF_ECONET-#endif-#ifdef AF_ATMSVC-    Just AF_ATMSVC -> Just #const AF_ATMSVC-#endif-#ifdef AF_IRDA-    Just AF_IRDA -> Just #const AF_IRDA-#endif-#ifdef AF_PPPOX-    Just AF_PPPOX -> Just #const AF_PPPOX-#endif-#ifdef AF_WANPIPE-    Just AF_WANPIPE -> Just #const AF_WANPIPE-#endif-#ifdef AF_BLUETOOTH-    Just AF_BLUETOOTH -> Just #const AF_BLUETOOTH-#endif-    _ -> Nothing----------- ------------unpackFamily :: CInt -> Family-unpackFamily f = case f of-        (#const AF_UNSPEC) -> AF_UNSPEC-#ifdef AF_UNIX-        (#const AF_UNIX) -> AF_UNIX-#endif-#ifdef AF_INET-        (#const AF_INET) -> AF_INET-#endif-#ifdef AF_INET6-        (#const AF_INET6) -> AF_INET6-#endif-#ifdef AF_IMPLINK-        (#const AF_IMPLINK) -> AF_IMPLINK-#endif-#ifdef AF_PUP-        (#const AF_PUP) -> AF_PUP-#endif-#ifdef AF_CHAOS-        (#const AF_CHAOS) -> AF_CHAOS-#endif-#ifdef AF_NS-        (#const AF_NS) -> AF_NS-#endif-#ifdef AF_NBS-        (#const AF_NBS) -> AF_NBS-#endif-#ifdef AF_ECMA-        (#const AF_ECMA) -> AF_ECMA-#endif-#ifdef AF_DATAKIT-        (#const AF_DATAKIT) -> AF_DATAKIT-#endif-#ifdef AF_CCITT-        (#const AF_CCITT) -> AF_CCITT-#endif-#ifdef AF_SNA-        (#const AF_SNA) -> AF_SNA-#endif-#ifdef AF_DECnet-        (#const AF_DECnet) -> AF_DECnet-#endif-#ifdef AF_DLI-        (#const AF_DLI) -> AF_DLI-#endif-#ifdef AF_LAT-        (#const AF_LAT) -> AF_LAT-#endif-#ifdef AF_HYLINK-        (#const AF_HYLINK) -> AF_HYLINK-#endif-#ifdef AF_APPLETALK-        (#const AF_APPLETALK) -> AF_APPLETALK-#endif-#ifdef AF_ROUTE-        (#const AF_ROUTE) -> AF_ROUTE-#endif-#ifdef AF_NETBIOS-        (#const AF_NETBIOS) -> AF_NETBIOS-#endif-#ifdef AF_NIT-        (#const AF_NIT) -> AF_NIT-#endif-#ifdef AF_802-        (#const AF_802) -> AF_802-#endif-#ifdef AF_ISO-        (#const AF_ISO) -> AF_ISO-#endif-#ifdef AF_OSI-# if (!defined(AF_ISO)) || (defined(AF_ISO) && (AF_ISO != AF_OSI))-        (#const AF_OSI) -> AF_OSI-# endif-#endif-#ifdef AF_NETMAN-        (#const AF_NETMAN) -> AF_NETMAN-#endif-#ifdef AF_X25-        (#const AF_X25) -> AF_X25-#endif-#ifdef AF_AX25-        (#const AF_AX25) -> AF_AX25-#endif-#ifdef AF_OSINET-        (#const AF_OSINET) -> AF_OSINET-#endif-#ifdef AF_GOSSIP-        (#const AF_GOSSIP) -> AF_GOSSIP-#endif-#if defined(AF_IPX) && (!defined(AF_NS) || AF_NS != AF_IPX)-        (#const AF_IPX) -> AF_IPX-#endif-#ifdef Pseudo_AF_XTP-        (#const Pseudo_AF_XTP) -> Pseudo_AF_XTP-#endif-#ifdef AF_CTF-        (#const AF_CTF) -> AF_CTF-#endif-#ifdef AF_WAN-        (#const AF_WAN) -> AF_WAN-#endif-#ifdef AF_SDL-        (#const AF_SDL) -> AF_SDL-#endif-#ifdef AF_NETWARE-        (#const AF_NETWARE) -> AF_NETWARE-#endif-#ifdef AF_NDD-        (#const AF_NDD) -> AF_NDD-#endif-#ifdef AF_INTF-        (#const AF_INTF) -> AF_INTF-#endif-#ifdef AF_COIP-        (#const AF_COIP) -> AF_COIP-#endif-#ifdef AF_CNT-        (#const AF_CNT) -> AF_CNT-#endif-#ifdef Pseudo_AF_RTIP-        (#const Pseudo_AF_RTIP) -> Pseudo_AF_RTIP-#endif-#ifdef Pseudo_AF_PIP-        (#const Pseudo_AF_PIP) -> Pseudo_AF_PIP-#endif-#ifdef AF_SIP-        (#const AF_SIP) -> AF_SIP-#endif-#ifdef AF_ISDN-        (#const AF_ISDN) -> AF_ISDN-#endif-#ifdef Pseudo_AF_KEY-        (#const Pseudo_AF_KEY) -> Pseudo_AF_KEY-#endif-#ifdef AF_NATM-        (#const AF_NATM) -> AF_NATM-#endif-#ifdef AF_ARP-        (#const AF_ARP) -> AF_ARP-#endif-#ifdef Pseudo_AF_HDRCMPLT-        (#const Pseudo_AF_HDRCMPLT) -> Pseudo_AF_HDRCMPLT-#endif-#ifdef AF_ENCAP-        (#const AF_ENCAP) -> AF_ENCAP-#endif-#ifdef AF_LINK-        (#const AF_LINK) -> AF_LINK-#endif-#ifdef AF_RAW-        (#const AF_RAW) -> AF_RAW-#endif-#ifdef AF_RIF-        (#const AF_RIF) -> AF_RIF-#endif-#ifdef AF_NETROM-        (#const AF_NETROM) -> AF_NETROM-#endif-#ifdef AF_BRIDGE-        (#const AF_BRIDGE) -> AF_BRIDGE-#endif-#ifdef AF_ATMPVC-        (#const AF_ATMPVC) -> AF_ATMPVC-#endif-#ifdef AF_ROSE-        (#const AF_ROSE) -> AF_ROSE-#endif-#ifdef AF_NETBEUI-        (#const AF_NETBEUI) -> AF_NETBEUI-#endif-#ifdef AF_SECURITY-        (#const AF_SECURITY) -> AF_SECURITY-#endif-#ifdef AF_PACKET-        (#const AF_PACKET) -> AF_PACKET-#endif-#ifdef AF_ASH-        (#const AF_ASH) -> AF_ASH-#endif-#ifdef AF_ECONET-        (#const AF_ECONET) -> AF_ECONET-#endif-#ifdef AF_ATMSVC-        (#const AF_ATMSVC) -> AF_ATMSVC-#endif-#ifdef AF_IRDA-        (#const AF_IRDA) -> AF_IRDA-#endif-#ifdef AF_PPPOX-        (#const AF_PPPOX) -> AF_PPPOX-#endif-#ifdef AF_WANPIPE-        (#const AF_WANPIPE) -> AF_WANPIPE-#endif-#ifdef AF_BLUETOOTH-        (#const AF_BLUETOOTH) -> AF_BLUETOOTH-#endif-        unknown -> error ("Network.Socket.unpackFamily: unknown address " ++-                          "family " ++ show unknown)----------------------------------------------------------------------------- Port Numbers--newtype PortNumber = PortNum Word16 deriving (Eq, Ord, Typeable)--- newtyped to prevent accidental use of sane-looking--- port numbers that haven't actually been converted to--- network-byte-order first.--instance Show PortNumber where-  showsPrec p pn = showsPrec p (portNumberToInt pn)--intToPortNumber :: Int -> PortNumber-intToPortNumber v = PortNum (htons (fromIntegral v))--portNumberToInt :: PortNumber -> Int-portNumberToInt (PortNum po) = fromIntegral (ntohs po)--foreign import CALLCONV unsafe "my_ntohs" ntohs :: Word16 -> Word16-foreign import CALLCONV unsafe "my_htons" htons :: Word16 -> Word16---foreign import CALLCONV unsafe "ntohl" ntohl :: Word32 -> Word32--instance Enum PortNumber where-    toEnum   = intToPortNumber-    fromEnum = portNumberToInt--instance Num PortNumber where-   fromInteger i = intToPortNumber (fromInteger i)-    -- for completeness.-   (+) x y   = intToPortNumber (portNumberToInt x + portNumberToInt y)-   (-) x y   = intToPortNumber (portNumberToInt x - portNumberToInt y)-   negate x  = intToPortNumber (-portNumberToInt x)-   (*) x y   = intToPortNumber (portNumberToInt x * portNumberToInt y)-   abs n     = intToPortNumber (abs (portNumberToInt n))-   signum n  = intToPortNumber (signum (portNumberToInt n))--instance Real PortNumber where-    toRational x = toInteger x % 1--instance Integral PortNumber where-    quotRem a b = let (c,d) = quotRem (portNumberToInt a) (portNumberToInt b) in-                  (intToPortNumber c, intToPortNumber d)-    toInteger a = toInteger (portNumberToInt a)--instance Storable PortNumber where-   sizeOf    _ = sizeOf    (undefined :: Word16)-   alignment _ = alignment (undefined :: Word16)-   poke p (PortNum po) = poke (castPtr p) po-   peek p = PortNum `liftM` peek (castPtr p)----------------------------------------------------------------------------- Socket addresses---- The scheme used for addressing sockets is somewhat quirky. The--- calls in the BSD socket API that need to know the socket address--- all operate in terms of struct sockaddr, a `virtual' type of--- socket address.---- The Internet family of sockets are addressed as struct sockaddr_in,--- so when calling functions that operate on struct sockaddr, we have--- to type cast the Internet socket address into a struct sockaddr.--- Instances of the structure for different families might *not* be--- the same size. Same casting is required of other families of--- sockets such as Xerox NS. Similarly for Unix domain sockets.---- To represent these socket addresses in Haskell-land, we do what BSD--- didn't do, and use a union/algebraic type for the different--- families. Currently only Unix domain sockets and the Internet--- families are supported.--#if defined(IPV6_SOCKET_SUPPORT)-type FlowInfo = Word32-type ScopeID = Word32-#endif--data SockAddr       -- C Names-  = SockAddrInet-    PortNumber  -- sin_port  (network byte order)-    HostAddress -- sin_addr  (ditto)-#if defined(IPV6_SOCKET_SUPPORT)-  | SockAddrInet6-        PortNumber      -- sin6_port (network byte order)-        FlowInfo        -- sin6_flowinfo (ditto)-        HostAddress6    -- sin6_addr (ditto)-        ScopeID         -- sin6_scope_id (ditto)-#endif-#if defined(DOMAIN_SOCKET_SUPPORT)-  | SockAddrUnix-        String          -- sun_path-#endif-  deriving (Eq, Ord, Typeable)--#if defined(WITH_WINSOCK) || defined(cygwin32_HOST_OS)-type CSaFamily = (#type unsigned short)-#elif defined(darwin_HOST_OS)-type CSaFamily = (#type u_char)-#else-type CSaFamily = (#type sa_family_t)-#endif---- | Computes the storage requirements (in bytes) of the given--- 'SockAddr'.  This function differs from 'Foreign.Storable.sizeOf'--- in that the value of the argument /is/ used.-sizeOfSockAddr :: SockAddr -> Int-#if defined(DOMAIN_SOCKET_SUPPORT)-sizeOfSockAddr (SockAddrUnix path) =-    case path of-        '\0':_ -> (#const sizeof(sa_family_t)) + length path-        _      -> #const sizeof(struct sockaddr_un)-#endif-sizeOfSockAddr (SockAddrInet _ _) = #const sizeof(struct sockaddr_in)-#if defined(IPV6_SOCKET_SUPPORT)-sizeOfSockAddr (SockAddrInet6 _ _ _ _) = #const sizeof(struct sockaddr_in6)-#endif---- | Computes the storage requirements (in bytes) required for a--- 'SockAddr' with the given 'Family'.-sizeOfSockAddrByFamily :: Family -> Int-#if defined(DOMAIN_SOCKET_SUPPORT)-sizeOfSockAddrByFamily AF_UNIX  = #const sizeof(struct sockaddr_un)-#endif-#if defined(IPV6_SOCKET_SUPPORT)-sizeOfSockAddrByFamily AF_INET6 = #const sizeof(struct sockaddr_in6)-#endif-sizeOfSockAddrByFamily AF_INET  = #const sizeof(struct sockaddr_in)---- | Use a 'SockAddr' with a function requiring a pointer to a--- 'SockAddr' and the length of that 'SockAddr'.-withSockAddr :: SockAddr -> (Ptr SockAddr -> Int -> IO a) -> IO a-withSockAddr addr f = do-    let sz = sizeOfSockAddr addr-    allocaBytes sz $ \p -> pokeSockAddr p addr >> f (castPtr p) sz---- | Create a new 'SockAddr' for use with a function requiring a--- pointer to a 'SockAddr' and the length of that 'SockAddr'.-withNewSockAddr :: Family -> (Ptr SockAddr -> Int -> IO a) -> IO a-withNewSockAddr family f = do-    let sz = sizeOfSockAddrByFamily family-    allocaBytes sz $ \ptr -> f ptr sz---- We can't write an instance of 'Storable' for 'SockAddr' because--- @sockaddr@ is a sum type of variable size but--- 'Foreign.Storable.sizeOf' is required to be constant.---- Note that on Darwin, the sockaddr structure must be zeroed before--- use.---- | Write the given 'SockAddr' to the given memory location.-pokeSockAddr :: Ptr a -> SockAddr -> IO ()-#if defined(DOMAIN_SOCKET_SUPPORT)-pokeSockAddr p (SockAddrUnix path) = do-#if defined(darwin_HOST_OS)-    zeroMemory p (#const sizeof(struct sockaddr_un))-#endif-#if defined(HAVE_STRUCT_SOCKADDR_SA_LEN)-    (#poke struct sockaddr_un, sun_len) p ((#const sizeof(struct sockaddr_un)) :: Word8)-#endif-    (#poke struct sockaddr_un, sun_family) p ((#const AF_UNIX) :: CSaFamily)-    let pathC = map castCharToCChar path-        poker = case path of ('\0':_) -> pokeArray; _ -> pokeArray0 0-    poker ((#ptr struct sockaddr_un, sun_path) p) pathC-#endif-pokeSockAddr p (SockAddrInet (PortNum port) addr) = do-#if defined(darwin_HOST_OS)-    zeroMemory p (#const sizeof(struct sockaddr_in))-#endif-#if defined(HAVE_STRUCT_SOCKADDR_SA_LEN)-    (#poke struct sockaddr_in, sin_len) p ((#const sizeof(struct sockaddr_in)) :: Word8)-#endif-    (#poke struct sockaddr_in, sin_family) p ((#const AF_INET) :: CSaFamily)-    (#poke struct sockaddr_in, sin_port) p port-    (#poke struct sockaddr_in, sin_addr) p addr-#if defined(IPV6_SOCKET_SUPPORT)-pokeSockAddr p (SockAddrInet6 (PortNum port) flow addr scope) = do-#if defined(darwin_HOST_OS)-    zeroMemory p (#const sizeof(struct sockaddr_in6))-#endif-#if defined(HAVE_STRUCT_SOCKADDR_SA_LEN)-    (#poke struct sockaddr_in6, sin6_len) p ((#const sizeof(struct sockaddr_in6)) :: Word8)-#endif-    (#poke struct sockaddr_in6, sin6_family) p ((#const AF_INET6) :: CSaFamily)-    (#poke struct sockaddr_in6, sin6_port) p port-    (#poke struct sockaddr_in6, sin6_flowinfo) p flow-    (#poke struct sockaddr_in6, sin6_addr) p addr-    (#poke struct sockaddr_in6, sin6_scope_id) p scope-#endif---- | Read a 'SockAddr' from the given memory location.-peekSockAddr :: Ptr SockAddr -> IO SockAddr-peekSockAddr p = do-  family <- (#peek struct sockaddr, sa_family) p-  case family :: CSaFamily of-#if defined(DOMAIN_SOCKET_SUPPORT)-    (#const AF_UNIX) -> do-        str <- peekCString ((#ptr struct sockaddr_un, sun_path) p)-        return (SockAddrUnix str)-#endif-    (#const AF_INET) -> do-        addr <- (#peek struct sockaddr_in, sin_addr) p-        port <- (#peek struct sockaddr_in, sin_port) p-        return (SockAddrInet (PortNum port) addr)-#if defined(IPV6_SOCKET_SUPPORT)-    (#const AF_INET6) -> do-        port <- (#peek struct sockaddr_in6, sin6_port) p-        flow <- (#peek struct sockaddr_in6, sin6_flowinfo) p-        addr <- (#peek struct sockaddr_in6, sin6_addr) p-        scope <- (#peek struct sockaddr_in6, sin6_scope_id) p-        return (SockAddrInet6 (PortNum port) flow addr scope)-#endif------------------------------------------------------------------------------ | Network byte order.-type HostAddress = Word32--#if defined(IPV6_SOCKET_SUPPORT)--- | Host byte order.-type HostAddress6 = (Word32, Word32, Word32, Word32)---- The peek32 and poke32 functions work around the fact that the RFCs--- don't require 32-bit-wide address fields to be present.  We can--- only portably rely on an 8-bit field, s6_addr.--s6_addr_offset :: Int-s6_addr_offset = (#offset struct in6_addr, s6_addr)--peek32 :: Ptr a -> Int -> IO Word32-peek32 p i0 = do-    let i' = i0 * 4-        peekByte n = peekByteOff p (s6_addr_offset + i' + n) :: IO Word8-        a `sl` i = fromIntegral a `shiftL` i-    a0 <- peekByte 0-    a1 <- peekByte 1-    a2 <- peekByte 2-    a3 <- peekByte 3-    return ((a0 `sl` 24) .|. (a1 `sl` 16) .|. (a2 `sl` 8) .|. (a3 `sl` 0))--poke32 :: Ptr a -> Int -> Word32 -> IO ()-poke32 p i0 a = do-    let i' = i0 * 4-        pokeByte n = pokeByteOff p (s6_addr_offset + i' + n)-        x `sr` i = fromIntegral (x `shiftR` i) :: Word8-    pokeByte 0 (a `sr` 24)-    pokeByte 1 (a `sr` 16)-    pokeByte 2 (a `sr`  8)-    pokeByte 3 (a `sr`  0)--instance Storable HostAddress6 where-    sizeOf _    = (#const sizeof(struct in6_addr))-    alignment _ = alignment (undefined :: CInt)--    peek p = do-        a <- peek32 p 0-        b <- peek32 p 1-        c <- peek32 p 2-        d <- peek32 p 3-        return (a, b, c, d)--    poke p (a, b, c, d) = do-        poke32 p 0 a-        poke32 p 1 b-        poke32 p 2 c-        poke32 p 3 d-#endif----------------------------------------------------------------------------- Helper functions--foreign import ccall unsafe "string.h" memset :: Ptr a -> CInt -> CSize -> IO ()---- | Zero a structure.-zeroMemory :: Ptr a -> CSize -> IO ()-zeroMemory dest nbytes = memset dest 0 (fromIntegral nbytes)
− standalone/android/tmp/network-2.4.1.2/Network/URI.hs
@@ -1,1349 +0,0 @@-{-# LANGUAGE CPP #-}------------------------------------------------------------------------------------ |---  Module      :  Network.URI---  Copyright   :  (c) 2004, Graham Klyne---  License     :  BSD-style (see end of this file)------  Maintainer  :  Graham Klyne <gk@ninebynine.org>---  Stability   :  provisional---  Portability :  portable------  This module defines functions for handling URIs.  It presents substantially the---  same interface as the older GHC Network.URI module, but is implemented using---  Parsec rather than a Regex library that is not available with Hugs.  The internal---  representation of URI has been changed so that URI strings are more---  completely preserved when round-tripping to a URI value and back.------  In addition, four methods are provided for parsing different---  kinds of URI string (as noted in RFC3986):---      'parseURI',---      'parseURIReference',---      'parseRelativeReference' and---      'parseAbsoluteURI'.------  Further, four methods are provided for classifying different---  kinds of URI string (as noted in RFC3986):---      'isURI',---      'isURIReference',---      'isRelativeReference' and---      'isAbsoluteURI'.------  The long-standing official reference for URI handling was RFC2396 [1],---  as updated by RFC 2732 [2], but this was replaced by a new specification,---  RFC3986 [3] in January 2005.  This latter specification has been used---  as the primary reference for constructing the URI parser implemented---  here, and it is intended that there is a direct relationship between---  the syntax definition in that document and this parser implementation.------  RFC 1808 [4] contains a number of test cases for relative URI handling.---  Dan Connolly's Python module @uripath.py@ [5] also contains useful details---  and test cases.------  Some of the code has been copied from the previous GHC implementation,---  but the parser is replaced with one that performs more complete---  syntax checking of the URI itself, according to RFC3986 [3].------  References------  (1) <http://www.ietf.org/rfc/rfc2396.txt>------  (2) <http://www.ietf.org/rfc/rfc2732.txt>------  (3) <http://www.ietf.org/rfc/rfc3986.txt>------  (4) <http://www.ietf.org/rfc/rfc1808.txt>------  (5) <http://www.w3.org/2000/10/swap/uripath.py>--------------------------------------------------------------------------------------module Network.URI-    (-    -- * The URI type-      URI(..)-    , URIAuth(..)-    , nullURI-      -    -- * Parsing-    , parseURI-    , parseURIReference-    , parseRelativeReference-    , parseAbsoluteURI-      -    -- * Test for strings containing various kinds of URI-    , isURI-    , isURIReference-    , isRelativeReference-    , isAbsoluteURI-    , isIPv6address-    , isIPv4address-      -    -- * Predicates-    , uriIsAbsolute-    , uriIsRelative-      -    -- * Relative URIs-    , relativeTo-    , nonStrictRelativeTo-    , relativeFrom-      -    -- * Operations on URI strings-    -- | Support for putting strings into URI-friendly-    --   escaped format and getting them back again.-    --   This can't be done transparently in all cases, because certain-    --   characters have different meanings in different kinds of URI.-    --   The URI spec [3], section 2.4, indicates that all URI components-    --   should be escaped before they are assembled as a URI:-    --   \"Once produced, a URI is always in its percent-encoded form\"-    , uriToString-    , isReserved, isUnreserved-    , isAllowedInURI, isUnescapedInURI-    , isUnescapedInURIComponent-    , escapeURIChar-    , escapeURIString-    , unEscapeString-      -    -- * URI Normalization functions-    , normalizeCase-    , normalizeEscape-    , normalizePathSegments-      -    -- * Deprecated functions-    , parseabsoluteURI-    , escapeString-    , reserved, unreserved-    , scheme, authority, path, query, fragment-    ) where--import Text.ParserCombinators.Parsec-    ( GenParser, ParseError-    , parse, (<|>), (<?>), try-    , option, many, many1, count, notFollowedBy-    , char, satisfy, oneOf, string, eof-    , unexpected-    )--import Control.Monad (MonadPlus(..))-import Data.Char (ord, chr, isHexDigit, toLower, toUpper, digitToInt)-import Data.Bits ((.|.),(.&.),shiftL,shiftR)-import Debug.Trace (trace)-import Numeric (showIntAtBase)--import Data.Typeable (Typeable)-#if MIN_VERSION_base(4,0,0)-import Data.Data (Data)-#else-import Data.Generics (Data)-#endif-----------------------------------------------------------------  The URI datatype----------------------------------------------------------------- |Represents a general universal resource identifier using---  its component parts.------  For example, for the URI------  >   foo://anonymous@www.haskell.org:42/ghc?query#frag------  the components are:----data URI = URI-    { uriScheme     :: String           -- ^ @foo:@-    , uriAuthority  :: Maybe URIAuth    -- ^ @\/\/anonymous\@www.haskell.org:42@-    , uriPath       :: String           -- ^ @\/ghc@-    , uriQuery      :: String           -- ^ @?query@-    , uriFragment   :: String           -- ^ @#frag@-    } deriving (Eq, Ord, Typeable, Data)---- |Type for authority value within a URI-data URIAuth = URIAuth-    { uriUserInfo   :: String           -- ^ @anonymous\@@-    , uriRegName    :: String           -- ^ @www.haskell.org@-    , uriPort       :: String           -- ^ @:42@-    } deriving (Eq, Ord, Show, Typeable, Data)---- |Blank URI-nullURI :: URI-nullURI = URI-    { uriScheme     = ""-    , uriAuthority  = Nothing-    , uriPath       = ""-    , uriQuery      = ""-    , uriFragment   = ""-    }----  URI as instance of Show.  Note that for security reasons, the default---  behaviour is to suppress any userinfo field (see RFC3986, section 7.5).---  This can be overridden by using uriToString directly with first---  argument @id@ (noting that this returns a ShowS value rather than a string).------  [[[Another design would be to embed the userinfo mapping function in---  the URIAuth value, with the default value suppressing userinfo formatting,---  but providing a function to return a new URI value with userinfo---  data exposed by show.]]]----instance Show URI where-    showsPrec _ = uriToString defaultUserInfoMap--defaultUserInfoMap :: String -> String-defaultUserInfoMap uinf = user++newpass-    where-        (user,pass) = break (==':') uinf-        newpass     = if null pass || (pass == "@")-                                   || (pass == ":@")-                        then pass-                        else ":...@"--testDefaultUserInfoMap :: [Bool]-testDefaultUserInfoMap =-     [ defaultUserInfoMap ""                == ""-     , defaultUserInfoMap "@"               == "@"-     , defaultUserInfoMap "user@"           == "user@"-     , defaultUserInfoMap "user:@"          == "user:@"-     , defaultUserInfoMap "user:anonymous@" == "user:...@"-     , defaultUserInfoMap "user:pass@"      == "user:...@"-     , defaultUserInfoMap "user:pass"       == "user:...@"-     , defaultUserInfoMap "user:anonymous"  == "user:...@"-     ]-----------------------------------------------------------------  Parse a URI----------------------------------------------------------------- |Turn a string containing a URI into a 'URI'.---  Returns 'Nothing' if the string is not a valid URI;---  (an absolute URI with optional fragment identifier).------  NOTE: this is different from the previous network.URI,---  whose @parseURI@ function works like 'parseURIReference'---  in this module.----parseURI :: String -> Maybe URI-parseURI = parseURIAny uri---- |Parse a URI reference to a 'URI' value.---  Returns 'Nothing' if the string is not a valid URI reference.---  (an absolute or relative URI with optional fragment identifier).----parseURIReference :: String -> Maybe URI-parseURIReference = parseURIAny uriReference---- |Parse a relative URI to a 'URI' value.---  Returns 'Nothing' if the string is not a valid relative URI.---  (a relative URI with optional fragment identifier).----parseRelativeReference :: String -> Maybe URI-parseRelativeReference = parseURIAny relativeRef---- |Parse an absolute URI to a 'URI' value.---  Returns 'Nothing' if the string is not a valid absolute URI.---  (an absolute URI without a fragment identifier).----parseAbsoluteURI :: String -> Maybe URI-parseAbsoluteURI = parseURIAny absoluteURI---- |Test if string contains a valid URI---  (an absolute URI with optional fragment identifier).----isURI :: String -> Bool-isURI = isValidParse uri---- |Test if string contains a valid URI reference---  (an absolute or relative URI with optional fragment identifier).----isURIReference :: String -> Bool-isURIReference = isValidParse uriReference---- |Test if string contains a valid relative URI---  (a relative URI with optional fragment identifier).----isRelativeReference :: String -> Bool-isRelativeReference = isValidParse relativeRef---- |Test if string contains a valid absolute URI---  (an absolute URI without a fragment identifier).----isAbsoluteURI :: String -> Bool-isAbsoluteURI = isValidParse absoluteURI---- |Test if string contains a valid IPv6 address----isIPv6address :: String -> Bool-isIPv6address = isValidParse ipv6address---- |Test if string contains a valid IPv4 address----isIPv4address :: String -> Bool-isIPv4address = isValidParse ipv4address---- |Test function: parse and reconstruct a URI reference----testURIReference :: String -> String-testURIReference uristr = show (parseAll uriReference "" uristr)----  Helper function for turning a string into a URI----parseURIAny :: URIParser URI -> String -> Maybe URI-parseURIAny parser uristr = case parseAll parser "" uristr of-        Left  _ -> Nothing-        Right u -> Just u----  Helper function to test a string match to a parser----isValidParse :: URIParser a -> String -> Bool-isValidParse parser uristr = case parseAll parser "" uristr of-        -- Left  e -> error (show e)-        Left  _ -> False-        Right _ -> True--parseAll :: URIParser a -> String -> String -> Either ParseError a-parseAll parser filename uristr = parse newparser filename uristr-    where-        newparser =-            do  { res <- parser-                ; eof-                ; return res-                }-----------------------------------------------------------------  Predicates---------------------------------------------------------------uriIsAbsolute :: URI -> Bool-uriIsAbsolute (URI {uriScheme = scheme}) = scheme /= ""--uriIsRelative :: URI -> Bool-uriIsRelative = not . uriIsAbsolute-----------------------------------------------------------------  URI parser body based on Parsec elements and combinators-----------------------------------------------------------------  Parser parser type.---  Currently-type URIParser a = GenParser Char () a----  RFC3986, section 2.1------  Parse and return a 'pct-encoded' sequence----escaped :: URIParser String-escaped =-    do  { char '%'-        ; h1 <- hexDigitChar-        ; h2 <- hexDigitChar-        ; return $ ['%',h1,h2]-        }----  RFC3986, section 2.2------ |Returns 'True' if the character is a \"reserved\" character in a---  URI.  To include a literal instance of one of these characters in a---  component of a URI, it must be escaped.----isReserved :: Char -> Bool-isReserved c = isGenDelims c || isSubDelims c--isGenDelims :: Char -> Bool-isGenDelims c = c `elem` ":/?#[]@"--isSubDelims :: Char -> Bool-isSubDelims c = c `elem` "!$&'()*+,;="--genDelims :: URIParser String-genDelims = do { c <- satisfy isGenDelims ; return [c] }--subDelims :: URIParser String-subDelims = do { c <- satisfy isSubDelims ; return [c] }----  RFC3986, section 2.3------ |Returns 'True' if the character is an \"unreserved\" character in---  a URI.  These characters do not need to be escaped in a URI.  The---  only characters allowed in a URI are either \"reserved\",---  \"unreserved\", or an escape sequence (@%@ followed by two hex digits).----isUnreserved :: Char -> Bool-isUnreserved c = isAlphaNumChar c || (c `elem` "-_.~")--unreservedChar :: URIParser String-unreservedChar = do { c <- satisfy isUnreserved ; return [c] }----  RFC3986, section 3------   URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]------   hier-part   = "//" authority path-abempty---               / path-abs---               / path-rootless---               / path-empty--uri :: URIParser URI-uri =-    do  { us <- try uscheme-        -- ; ua <- option Nothing ( do { try (string "//") ; uauthority } )-        -- ; up <- upath-        ; (ua,up) <- hierPart-        ; uq <- option "" ( do { char '?' ; uquery    } )-        ; uf <- option "" ( do { char '#' ; ufragment } )-        ; return $ URI-            { uriScheme    = us-            , uriAuthority = ua-            , uriPath      = up-            , uriQuery     = uq-            , uriFragment  = uf-            }-        }--hierPart :: URIParser ((Maybe URIAuth),String)-hierPart =-        do  { try (string "//")-            ; ua <- uauthority-            ; up <- pathAbEmpty-            ; return (ua,up)-            }-    <|> do  { up <- pathAbs-            ; return (Nothing,up)-            }-    <|> do  { up <- pathRootLess-            ; return (Nothing,up)-            }-    <|> do  { return (Nothing,"")-            }----  RFC3986, section 3.1--uscheme :: URIParser String-uscheme =-    do  { s <- oneThenMany alphaChar (satisfy isSchemeChar)-        ; char ':'-        ; return $ s++":"-        }----  RFC3986, section 3.2--uauthority :: URIParser (Maybe URIAuth)-uauthority =-    do  { uu <- option "" (try userinfo)-        ; uh <- host-        ; up <- option "" port-        ; return $ Just $ URIAuth-            { uriUserInfo = uu-            , uriRegName  = uh-            , uriPort     = up-            }-        }----  RFC3986, section 3.2.1--userinfo :: URIParser String-userinfo =-    do  { uu <- many (uchar ";:&=+$,")-        ; char '@'-        ; return (concat uu ++"@")-        }----  RFC3986, section 3.2.2--host :: URIParser String-host = ipLiteral <|> try ipv4address <|> regName--ipLiteral :: URIParser String-ipLiteral =-    do  { char '['-        ; ua <- ( ipv6address <|> ipvFuture )-        ; char ']'-        ; return $ "[" ++ ua ++ "]"-        }-    <?> "IP address literal"--ipvFuture :: URIParser String-ipvFuture =-    do  { char 'v'-        ; h <- hexDigitChar-        ; char '.'-        ; a <- many1 (satisfy isIpvFutureChar)-        ; return $ 'v':h:'.':a-        }--isIpvFutureChar :: Char -> Bool-isIpvFutureChar c = isUnreserved c || isSubDelims c || (c==';')--ipv6address :: URIParser String-ipv6address =-        try ( do-                { a2 <- count 6 h4c-                ; a3 <- ls32-                ; return $ concat a2 ++ a3-                } )-    <|> try ( do-                { string "::"-                ; a2 <- count 5 h4c-                ; a3 <- ls32-                ; return $ "::" ++ concat a2 ++ a3-                } )-    <|> try ( do-                { a1 <- opt_n_h4c_h4 0-                ; string "::"-                ; a2 <- count 4 h4c-                ; a3 <- ls32-                ; return $ a1 ++ "::" ++ concat a2 ++ a3-                } )-    <|> try ( do-                { a1 <- opt_n_h4c_h4 1-                ; string "::"-                ; a2 <- count 3 h4c-                ; a3 <- ls32-                ; return $ a1 ++ "::" ++ concat a2 ++ a3-                } )-    <|> try ( do-                { a1 <- opt_n_h4c_h4 2-                ; string "::"-                ; a2 <- count 2 h4c-                ; a3 <- ls32-                ; return $ a1 ++ "::" ++ concat a2 ++ a3-                } )-    <|> try ( do-                { a1 <- opt_n_h4c_h4 3-                ; string "::"-                ; a2 <- h4c-                ; a3 <- ls32-                ; return $ a1 ++ "::" ++ a2 ++ a3-                } )-    <|> try ( do-                { a1 <- opt_n_h4c_h4 4-                ; string "::"-                ; a3 <- ls32-                ; return $ a1 ++ "::" ++ a3-                } )-    <|> try ( do-                { a1 <- opt_n_h4c_h4 5-                ; string "::"-                ; a3 <- h4-                ; return $ a1 ++ "::" ++ a3-                } )-    <|> try ( do-                { a1 <- opt_n_h4c_h4 6-                ; string "::"-                ; return $ a1 ++ "::"-                } )-    <?> "IPv6 address"--opt_n_h4c_h4 :: Int -> URIParser String-opt_n_h4c_h4 n = option "" $-    do  { a1 <- countMinMax 0 n h4c-        ; a2 <- h4-        ; return $ concat a1 ++ a2-        }--ls32 :: URIParser String-ls32 =  try ( do-                { a1 <- h4c-                ; a2 <- h4-                ; return (a1++a2)-                } )-    <|> ipv4address--h4c :: URIParser String-h4c = try $-    do  { a1 <- h4-        ; char ':'-        ; notFollowedBy (char ':')-        ; return $ a1 ++ ":"-        }--h4 :: URIParser String-h4 = countMinMax 1 4 hexDigitChar--ipv4address :: URIParser String-ipv4address =-    do  { a1 <- decOctet ; char '.'-        ; a2 <- decOctet ; char '.'-        ; a3 <- decOctet ; char '.'-        ; a4 <- decOctet-        ; notFollowedBy regName-        ; return $ a1++"."++a2++"."++a3++"."++a4-        }-    <?> "IPv4 Address"--decOctet :: URIParser String-decOctet =-    do  { a1 <- countMinMax 1 3 digitChar-        ; if (read a1 :: Integer) > 255 then-            fail "Decimal octet value too large"-          else-            return a1-        }--regName :: URIParser String-regName =-    do  { ss <- countMinMax 0 255 ( unreservedChar <|> escaped <|> subDelims )-        ; return $ concat ss-        }-    <?> "Registered name"----  RFC3986, section 3.2.3--port :: URIParser String-port =-    do  { char ':'-        ; p <- many digitChar-        ; return (':':p)-        }-------  RFC3986, section 3.3------   path          = path-abempty    ; begins with "/" or is empty---                 / path-abs        ; begins with "/" but not "//"---                 / path-noscheme   ; begins with a non-colon segment---                 / path-rootless   ; begins with a segment---                 / path-empty      ; zero characters------   path-abempty  = *( "/" segment )---   path-abs      = "/" [ segment-nz *( "/" segment ) ]---   path-noscheme = segment-nzc *( "/" segment )---   path-rootless = segment-nz *( "/" segment )---   path-empty    = 0<pchar>------   segment       = *pchar---   segment-nz    = 1*pchar---   segment-nzc   = 1*( unreserved / pct-encoded / sub-delims / "@" )------   pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"--{--upath :: URIParser String-upath = pathAbEmpty-    <|> pathAbs-    <|> pathNoScheme-    <|> pathRootLess-    <|> pathEmpty--}--pathAbEmpty :: URIParser String-pathAbEmpty =-    do  { ss <- many slashSegment-        ; return $ concat ss-        }--pathAbs :: URIParser String-pathAbs =-    do  { char '/'-        ; ss <- option "" pathRootLess-        ; return $ '/':ss-        }--pathNoScheme :: URIParser String-pathNoScheme =-    do  { s1 <- segmentNzc-        ; ss <- many slashSegment-        ; return $ concat (s1:ss)-        }--pathRootLess :: URIParser String-pathRootLess =-    do  { s1 <- segmentNz-        ; ss <- many slashSegment-        ; return $ concat (s1:ss)-        }--slashSegment :: URIParser String-slashSegment =-    do  { char '/'-        ; s <- segment-        ; return ('/':s)-        }--segment :: URIParser String-segment =-    do  { ps <- many pchar-        ; return $ concat ps-        }--segmentNz :: URIParser String-segmentNz =-    do  { ps <- many1 pchar-        ; return $ concat ps-        }--segmentNzc :: URIParser String-segmentNzc =-    do  { ps <- many1 (uchar "@")-        ; return $ concat ps-        }--pchar :: URIParser String-pchar = uchar ":@"---- helper function for pchar and friends-uchar :: String -> URIParser String-uchar extras =-        unreservedChar-    <|> escaped-    <|> subDelims-    <|> do { c <- oneOf extras ; return [c] }----  RFC3986, section 3.4--uquery :: URIParser String-uquery =-    do  { ss <- many $ uchar (":@"++"/?")-        ; return $ '?':concat ss-        }----  RFC3986, section 3.5--ufragment :: URIParser String-ufragment =-    do  { ss <- many $ uchar (":@"++"/?")-        ; return $ '#':concat ss-        }----  Reference, Relative and Absolute URI forms------  RFC3986, section 4.1--uriReference :: URIParser URI-uriReference = uri <|> relativeRef----  RFC3986, section 4.2------   relative-URI  = relative-part [ "?" query ] [ "#" fragment ]------   relative-part = "//" authority path-abempty---                 / path-abs---                 / path-noscheme---                 / path-empty--relativeRef :: URIParser URI-relativeRef =-    do  { notMatching uscheme-        -- ; ua <- option Nothing ( do { try (string "//") ; uauthority } )-        -- ; up <- upath-        ; (ua,up) <- relativePart-        ; uq <- option "" ( do { char '?' ; uquery    } )-        ; uf <- option "" ( do { char '#' ; ufragment } )-        ; return $ URI-            { uriScheme    = ""-            , uriAuthority = ua-            , uriPath      = up-            , uriQuery     = uq-            , uriFragment  = uf-            }-        }--relativePart :: URIParser ((Maybe URIAuth),String)-relativePart =-        do  { try (string "//")-            ; ua <- uauthority-            ; up <- pathAbEmpty-            ; return (ua,up)-            }-    <|> do  { up <- pathAbs-            ; return (Nothing,up)-            }-    <|> do  { up <- pathNoScheme-            ; return (Nothing,up)-            }-    <|> do  { return (Nothing,"")-            }----  RFC3986, section 4.3--absoluteURI :: URIParser URI-absoluteURI =-    do  { us <- uscheme-        -- ; ua <- option Nothing ( do { try (string "//") ; uauthority } )-        -- ; up <- upath-        ; (ua,up) <- hierPart-        ; uq <- option "" ( do { char '?' ; uquery    } )-        ; return $ URI-            { uriScheme    = us-            , uriAuthority = ua-            , uriPath      = up-            , uriQuery     = uq-            , uriFragment  = ""-            }-        }----  Imports from RFC 2234--    -- NOTE: can't use isAlphaNum etc. because these deal with ISO 8859-    -- (and possibly Unicode!) chars.-    -- [[[Above was a comment originally in GHC Network/URI.hs:-    --    when IRIs are introduced then most codepoints above 128(?) should-    --    be treated as unreserved, and higher codepoints for letters should-    --    certainly be allowed.-    -- ]]]--isAlphaChar :: Char -> Bool-isAlphaChar c    = (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')--isDigitChar :: Char -> Bool-isDigitChar c    = (c >= '0' && c <= '9')--isAlphaNumChar :: Char -> Bool-isAlphaNumChar c = isAlphaChar c || isDigitChar c--isHexDigitChar :: Char -> Bool-isHexDigitChar c = isHexDigit c--isSchemeChar :: Char -> Bool-isSchemeChar c   = (isAlphaNumChar c) || (c `elem` "+-.")--alphaChar :: URIParser Char-alphaChar = satisfy isAlphaChar         -- or: Parsec.letter ?--digitChar :: URIParser Char-digitChar = satisfy isDigitChar         -- or: Parsec.digit ?--alphaNumChar :: URIParser Char-alphaNumChar = satisfy isAlphaNumChar--hexDigitChar :: URIParser Char-hexDigitChar = satisfy isHexDigitChar   -- or: Parsec.hexDigit ?----  Additional parser combinators for common patterns--oneThenMany :: GenParser t s a -> GenParser t s a -> GenParser t s [a]-oneThenMany p1 pr =-    do  { a1 <- p1-        ; ar <- many pr-        ; return (a1:ar)-        }--countMinMax :: Int -> Int -> GenParser t s a -> GenParser t s [a]-countMinMax m n p | m > 0 =-    do  { a1 <- p-        ; ar <- countMinMax (m-1) (n-1) p-        ; return (a1:ar)-        }-countMinMax _ n _ | n <= 0 = return []-countMinMax _ n p = option [] $-    do  { a1 <- p-        ; ar <- countMinMax 0 (n-1) p-        ; return (a1:ar)-        }--notMatching :: Show a => GenParser tok st a -> GenParser tok st ()-notMatching p = do { a <- try p ; unexpected (show a) } <|> return ()-----------------------------------------------------------------  Reconstruct a URI string------------------------------------------------------------------- |Turn a 'URI' into a string.------  Uses a supplied function to map the userinfo part of the URI.------  The Show instance for URI uses a mapping that hides any password---  that may be present in the URI.  Use this function with argument @id@---  to preserve the password in the formatted output.----uriToString :: (String->String) -> URI -> ShowS-uriToString userinfomap URI { uriScheme=myscheme-                            , uriAuthority=myauthority-                            , uriPath=mypath-                            , uriQuery=myquery-                            , uriFragment=myfragment-                            } =-    (myscheme++) . (uriAuthToString userinfomap myauthority)-               . (mypath++) . (myquery++) . (myfragment++)--uriAuthToString :: (String->String) -> (Maybe URIAuth) -> ShowS-uriAuthToString _           Nothing   = id          -- shows ""-uriAuthToString userinfomap-        (Just URIAuth { uriUserInfo = myuinfo-                      , uriRegName  = myregname-                      , uriPort     = myport-                      } ) =-    ("//"++) . (if null myuinfo then id else ((userinfomap myuinfo)++))-             . (myregname++)-             . (myport++)-----------------------------------------------------------------  Character classes----------------------------------------------------------------- | Returns 'True' if the character is allowed in a URI.----isAllowedInURI :: Char -> Bool-isAllowedInURI c = isReserved c || isUnreserved c || c == '%' -- escape char---- | Returns 'True' if the character is allowed unescaped in a URI.----isUnescapedInURI :: Char -> Bool-isUnescapedInURI c = isReserved c || isUnreserved c---- | Returns 'True' if the character is allowed unescaped in a URI component.----isUnescapedInURIComponent :: Char -> Bool-isUnescapedInURIComponent c = not (isReserved c || not (isUnescapedInURI c))-----------------------------------------------------------------  Escape sequence handling----------------------------------------------------------------- |Escape character if supplied predicate is not satisfied,---  otherwise return character as singleton string.----escapeURIChar :: (Char->Bool) -> Char -> String-escapeURIChar p c-    | p c       = [c]-    | otherwise = concatMap (\i -> '%' : myShowHex i "") (utf8EncodeChar c)-    where-        myShowHex :: Int -> ShowS-        myShowHex n r =  case showIntAtBase 16 (toChrHex) n r of-            []  -> "00"-            [x] -> ['0',x]-            cs  -> cs-        toChrHex d-            | d < 10    = chr (ord '0' + fromIntegral d)-            | otherwise = chr (ord 'A' + fromIntegral (d - 10))---- From http://hackage.haskell.org/package/utf8-string--- by Eric Mertens, BSD3--- Returns [Int] for use with showIntAtBase-utf8EncodeChar :: Char -> [Int]-utf8EncodeChar = map fromIntegral . go . ord- where-  go oc-   | oc <= 0x7f       = [oc]--   | oc <= 0x7ff      = [ 0xc0 + (oc `shiftR` 6)-                        , 0x80 + oc .&. 0x3f-                        ]--   | oc <= 0xffff     = [ 0xe0 + (oc `shiftR` 12)-                        , 0x80 + ((oc `shiftR` 6) .&. 0x3f)-                        , 0x80 + oc .&. 0x3f-                        ]-   | otherwise        = [ 0xf0 + (oc `shiftR` 18)-                        , 0x80 + ((oc `shiftR` 12) .&. 0x3f)-                        , 0x80 + ((oc `shiftR` 6) .&. 0x3f)-                        , 0x80 + oc .&. 0x3f-                        ]---- |Can be used to make a string valid for use in a URI.----escapeURIString-    :: (Char->Bool)     -- ^ a predicate which returns 'False'-                        --   if the character should be escaped-    -> String           -- ^ the string to process-    -> String           -- ^ the resulting URI string-escapeURIString p s = concatMap (escapeURIChar p) s---- |Turns all instances of escaped characters in the string back---  into literal characters.----unEscapeString :: String -> String-unEscapeString [] = ""-unEscapeString s@(c:cs) = case unEscapeByte s of-    Just (byte, rest) -> unEscapeUtf8 byte rest-    Nothing -> c : unEscapeString cs--unEscapeByte :: String -> Maybe (Int, String)-unEscapeByte ('%':x1:x2:s) | isHexDigit x1 && isHexDigit x2 =-    Just (digitToInt x1 * 16 + digitToInt x2, s)-unEscapeByte _ = Nothing---- Adapted from http://hackage.haskell.org/package/utf8-string--- by Eric Mertens, BSD3-unEscapeUtf8 :: Int -> String -> String-unEscapeUtf8 c rest-    | c < 0x80 = chr c : unEscapeString rest-    | c < 0xc0 = replacement_character : unEscapeString rest-    | c < 0xe0 = multi1-    | c < 0xf0 = multi_byte 2 0xf 0x800-    | c < 0xf8 = multi_byte 3 0x7 0x10000-    | c < 0xfc = multi_byte 4 0x3 0x200000-    | c < 0xfe = multi_byte 5 0x1 0x4000000-    | otherwise    = replacement_character : unEscapeString rest-    where-    replacement_character = '\xfffd'-    multi1 = case unEscapeByte rest of-      Just (c1, ds) | c1 .&. 0xc0 == 0x80 ->-        let d = ((fromEnum c .&. 0x1f) `shiftL` 6) .|.  fromEnum (c1 .&. 0x3f)-        in if d >= 0x000080 then toEnum d : unEscapeString ds-                            else replacement_character : unEscapeString ds-      _ -> replacement_character : unEscapeString rest--    multi_byte i mask overlong =-      aux i rest (unEscapeByte rest) (c .&. mask)-      where-        aux 0 rs _ acc-          | overlong <= acc && acc <= 0x10ffff &&-            (acc < 0xd800 || 0xdfff < acc)     &&-            (acc < 0xfffe || 0xffff < acc)      = chr acc : unEscapeString rs-          | otherwise = replacement_character : unEscapeString rs--        aux n _ (Just (r, rs)) acc-          | r .&. 0xc0 == 0x80 = aux (n-1) rs (unEscapeByte rs)-                               $! shiftL acc 6 .|. (r .&. 0x3f)--        aux _ rs _ _ = replacement_character : unEscapeString rs----------------------------------------------------------------- Resolving a relative URI relative to a base URI----------------------------------------------------------------- |Returns a new 'URI' which represents the value of the---  first 'URI' interpreted as relative to the second 'URI'.---  For example:------  > "foo" `relativeTo` "http://bar.org/" = "http://bar.org/foo"---  > "http:foo" `nonStrictRelativeTo` "http://bar.org/" = "http://bar.org/foo"------  Algorithm from RFC3986 [3], section 5.2.2-----nonStrictRelativeTo :: URI -> URI -> URI-nonStrictRelativeTo ref base = relativeTo ref' base-    where-        ref' = if uriScheme ref == uriScheme base-               then ref { uriScheme="" }-               else ref--isDefined :: ( MonadPlus m, Eq (m a) ) => m a -> Bool-isDefined a = a /= mzero---- | Returns a new 'URI' which represents the value of the first 'URI'--- interpreted as relative to the second 'URI'.------ Algorithm from RFC3986 [3], section 5.2-relativeTo :: URI -> URI -> URI-relativeTo ref base-    | isDefined ( uriScheme ref ) =-        just_segments ref-    | isDefined ( uriAuthority ref ) =-        just_segments ref { uriScheme = uriScheme base }-    | isDefined ( uriPath ref ) =-        if (head (uriPath ref) == '/') then-            just_segments ref-                { uriScheme    = uriScheme base-                , uriAuthority = uriAuthority base-                }-        else-            just_segments ref-                { uriScheme    = uriScheme base-                , uriAuthority = uriAuthority base-                , uriPath      = mergePaths base ref-                }-    | isDefined ( uriQuery ref ) =-        just_segments ref-            { uriScheme    = uriScheme base-            , uriAuthority = uriAuthority base-            , uriPath      = uriPath base-            }-    | otherwise =-        just_segments ref-            { uriScheme    = uriScheme base-            , uriAuthority = uriAuthority base-            , uriPath      = uriPath base-            , uriQuery     = uriQuery base-            }-    where-        just_segments u =-            u { uriPath = removeDotSegments (uriPath u) }-        mergePaths b r-            | isDefined (uriAuthority b) && null pb = '/':pr-            | otherwise                             = dropLast pb ++ pr-            where-                pb = uriPath b-                pr = uriPath r-        dropLast = fst . splitLast -- reverse . dropWhile (/='/') . reverse----  Remove dot segments, but protect leading '/' character-removeDotSegments :: String -> String-removeDotSegments ('/':ps) = '/':elimDots ps []-removeDotSegments ps       = elimDots ps []----  Second arg accumulates segments processed so far in reverse order-elimDots :: String -> [String] -> String--- elimDots ps rs | traceVal "\nps " ps $ traceVal "rs " rs $ False = error ""-elimDots [] [] = ""-elimDots [] rs = concat (reverse rs)-elimDots (    '.':'/':ps)     rs = elimDots ps rs-elimDots (    '.':[]    )     rs = elimDots [] rs-elimDots (    '.':'.':'/':ps) rs = elimDots ps (drop 1 rs)-elimDots (    '.':'.':[]    ) rs = elimDots [] (drop 1 rs)-elimDots ps rs = elimDots ps1 (r:rs)-    where-        (r,ps1) = nextSegment ps----  Returns the next segment and the rest of the path from a path string.---  Each segment ends with the next '/' or the end of string.----nextSegment :: String -> (String,String)-nextSegment ps =-    case break (=='/') ps of-        (r,'/':ps1) -> (r++"/",ps1)-        (r,_)       -> (r,[])----  Split last (name) segment from path, returning (path,name)-splitLast :: String -> (String,String)-splitLast p = (reverse revpath,reverse revname)-    where-        (revname,revpath) = break (=='/') $ reverse p----------------------------------------------------------------- Finding a URI relative to a base URI----------------------------------------------------------------- |Returns a new 'URI' which represents the relative location of---  the first 'URI' with respect to the second 'URI'.  Thus, the---  values supplied are expected to be absolute URIs, and the result---  returned may be a relative URI.------  Example:------  > "http://example.com/Root/sub1/name2#frag"---  >   `relativeFrom` "http://example.com/Root/sub2/name2#frag"---  >   == "../sub1/name2#frag"------  There is no single correct implementation of this function,---  but any acceptable implementation must satisfy the following:------  > (uabs `relativeFrom` ubase) `relativeTo` ubase == uabs------  For any valid absolute URI.---  (cf. <http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html>---       <http://lists.w3.org/Archives/Public/uri/2003Jan/0005.html>)----relativeFrom :: URI -> URI -> URI-relativeFrom uabs base-    | diff uriScheme    uabs base = uabs-    | diff uriAuthority uabs base = uabs { uriScheme = "" }-    | diff uriPath      uabs base = uabs-        { uriScheme    = ""-        , uriAuthority = Nothing-        , uriPath      = relPathFrom (removeBodyDotSegments $ uriPath uabs)-                                     (removeBodyDotSegments $ uriPath base)-        }-    | diff uriQuery     uabs base = uabs-        { uriScheme    = ""-        , uriAuthority = Nothing-        , uriPath      = ""-        }-    | otherwise = uabs          -- Always carry fragment from uabs-        { uriScheme    = ""-        , uriAuthority = Nothing-        , uriPath      = ""-        , uriQuery     = ""-        }-    where-        diff :: Eq b => (a -> b) -> a -> a -> Bool-        diff sel u1 u2 = sel u1 /= sel u2-        -- Remove dot segments except the final segment-        removeBodyDotSegments p = removeDotSegments p1 ++ p2-            where-                (p1,p2) = splitLast p--relPathFrom :: String -> String -> String-relPathFrom []   _    = "/"-relPathFrom pabs []   = pabs-relPathFrom pabs base =                 -- Construct a relative path segments-    if sa1 == sb1                       -- if the paths share a leading segment-        then if (sa1 == "/")            -- other than a leading '/'-            then if (sa2 == sb2)-                then relPathFrom1 ra2 rb2-                else pabs-            else relPathFrom1 ra1 rb1-        else pabs-    where-        (sa1,ra1) = nextSegment pabs-        (sb1,rb1) = nextSegment base-        (sa2,ra2) = nextSegment ra1-        (sb2,rb2) = nextSegment rb1----  relPathFrom1 strips off trailing names from the supplied paths,---  and calls difPathFrom to find the relative path from base to---  target-relPathFrom1 :: String -> String -> String-relPathFrom1 pabs base = relName-    where-        (sa,na) = splitLast pabs-        (sb,nb) = splitLast base-        rp      = relSegsFrom sa sb-        relName = if null rp then-                      if (na == nb) then ""-                      else if protect na then "./"++na-                      else na-                  else-                      rp++na-        -- Precede name with some path if it is null or contains a ':'-        protect s = null s || ':' `elem` s----  relSegsFrom discards any common leading segments from both paths,---  then invokes difSegsFrom to calculate a relative path from the end---  of the base path to the end of the target path.---  The final name is handled separately, so this deals only with---  "directory" segtments.----relSegsFrom :: String -> String -> String-{--relSegsFrom sabs base-    | traceVal "\nrelSegsFrom\nsabs " sabs $ traceVal "base " base $-      False = error ""--}-relSegsFrom []   []   = ""      -- paths are identical-relSegsFrom sabs base =-    if sa1 == sb1-        then relSegsFrom ra1 rb1-        else difSegsFrom sabs base-    where-        (sa1,ra1) = nextSegment sabs-        (sb1,rb1) = nextSegment base----  difSegsFrom calculates a path difference from base to target,---  not including the final name at the end of the path---  (i.e. results always ends with '/')------  This function operates under the invariant that the supplied---  value of sabs is the desired path relative to the beginning of---  base.  Thus, when base is empty, the desired path has been found.----difSegsFrom :: String -> String -> String-{--difSegsFrom sabs base-    | traceVal "\ndifSegsFrom\nsabs " sabs $ traceVal "base " base $-      False = error ""--}-difSegsFrom sabs ""   = sabs-difSegsFrom sabs base = difSegsFrom ("../"++sabs) (snd $ nextSegment base)-----------------------------------------------------------------  Other normalization functions----------------------------------------------------------------- |Case normalization; cf. RFC3986 section 6.2.2.1---  NOTE:  authority case normalization is not performed----normalizeCase :: String -> String-normalizeCase uristr = ncScheme uristr-    where-        ncScheme (':':cs)                = ':':ncEscape cs-        ncScheme (c:cs) | isSchemeChar c = toLower c:ncScheme cs-        ncScheme _                       = ncEscape uristr -- no scheme present-        ncEscape ('%':h1:h2:cs) = '%':toUpper h1:toUpper h2:ncEscape cs-        ncEscape (c:cs)         = c:ncEscape cs-        ncEscape []             = []---- |Encoding normalization; cf. RFC3986 section 6.2.2.2----normalizeEscape :: String -> String-normalizeEscape ('%':h1:h2:cs)-    | isHexDigit h1 && isHexDigit h2 && isUnreserved escval =-        escval:normalizeEscape cs-    where-        escval = chr (digitToInt h1*16+digitToInt h2)-normalizeEscape (c:cs)         = c:normalizeEscape cs-normalizeEscape []             = []---- |Path segment normalization; cf. RFC3986 section 6.2.2.4----normalizePathSegments :: String -> String-normalizePathSegments uristr = normstr juri-    where-        juri = parseURI uristr-        normstr Nothing  = uristr-        normstr (Just u) = show (normuri u)-        normuri u = u { uriPath = removeDotSegments (uriPath u) }-----------------------------------------------------------------  Local trace helper functions---------------------------------------------------------------traceShow :: Show a => String -> a -> a-traceShow msg x = trace (msg ++ show x) x--traceVal :: Show a => String -> a -> b -> b-traceVal msg x y = trace (msg ++ show x) y-----------------------------------------------------------------  Deprecated functions---------------------------------------------------------------{-# DEPRECATED parseabsoluteURI "use parseAbsoluteURI" #-}-parseabsoluteURI :: String -> Maybe URI-parseabsoluteURI = parseAbsoluteURI--{-# DEPRECATED escapeString "use escapeURIString, and note the flipped arguments" #-}-escapeString :: String -> (Char->Bool) -> String-escapeString = flip escapeURIString--{-# DEPRECATED reserved "use isReserved" #-}-reserved :: Char -> Bool-reserved = isReserved--{-# DEPRECATED unreserved "use isUnreserved" #-}-unreserved :: Char -> Bool-unreserved = isUnreserved----  Additional component access functions for backward compatibility--{-# DEPRECATED scheme "use uriScheme" #-}-scheme :: URI -> String-scheme = orNull init . uriScheme--{-# DEPRECATED authority "use uriAuthority, and note changed functionality" #-}-authority :: URI -> String-authority = dropss . ($"") . uriAuthToString id . uriAuthority-    where-        -- Old-style authority component does not include leading '//'-        dropss ('/':'/':s) = s-        dropss s           = s--{-# DEPRECATED path "use uriPath" #-}-path :: URI -> String-path = uriPath--{-# DEPRECATED query "use uriQuery, and note changed functionality" #-}-query :: URI -> String-query = orNull tail . uriQuery--{-# DEPRECATED fragment "use uriFragment, and note changed functionality" #-}-fragment :: URI -> String-fragment = orNull tail . uriFragment--orNull :: ([a]->[a]) -> [a] -> [a]-orNull _ [] = []-orNull f as = f as----------------------------------------------------------------------------------------  Copyright (c) 2004, G. KLYNE.  All rights reserved.---  Distributed as free software under the following license.------  Redistribution and use in source and binary forms, with or without---  modification, are permitted provided that the following conditions---  are met:------  - Redistributions of source code must retain the above copyright notice,---  this list of conditions and the following disclaimer.------  - Redistributions in binary form must reproduce the above copyright---  notice, this list of conditions and the following disclaimer in the---  documentation and/or other materials provided with the distribution.------  - Neither name of the copyright holders nor the names of its---  contributors may be used to endorse or promote products derived from---  this software without specific prior written permission.------  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND THE CONTRIBUTORS---  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT---  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR---  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT---  HOLDERS OR THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,---  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,---  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS---  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND---  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR---  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE---  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.------------------------------------------------------------------------------------
− standalone/android/tmp/network-2.4.1.2/README
@@ -1,4 +0,0 @@-To build this package using Cabal directly from git, you must run-"autoreconf" before the usual Cabal build steps (configure/build/install).-autoreconf is included in the GNU autoconf tools.  There is no need to run-the "configure" script: the "setup configure" step will do this for you.
− standalone/android/tmp/network-2.4.1.2/Setup.hs
@@ -1,6 +0,0 @@-module Main (main) where--import Distribution.Simple--main :: IO ()-main = defaultMainWithHooks autoconfUserHooks
− standalone/android/tmp/network-2.4.1.2/cabal.config
@@ -1,199 +0,0 @@-constraints: Crypto ==4.2.5.1,-             binary ==0.7.6.1,-             DAV ==1.0.3,-             HTTP ==4000.2.17,-             HUnit ==1.2.5.2,-             IfElse ==0.85,-             MissingH ==1.2.1.0,-             MonadRandom ==0.1.13,-             QuickCheck ==2.7.6,-             SafeSemaphore ==0.10.1,-             aeson ==0.7.0.6,-             ansi-wl-pprint ==0.6.7.1,-             appar ==0.1.4,-             asn1-encoding ==0.8.1.3,-             asn1-parse ==0.8.1,-             asn1-types ==0.2.3,-             async ==2.0.1.5,-             attoparsec ==0.11.3.4,-             attoparsec-conduit ==1.1.0,-             authenticate ==1.3.2.10,-             base-unicode-symbols ==0.2.2.4,-             base16-bytestring ==0.1.1.6,-             base64-bytestring ==1.0.0.1,-             bifunctors ==4.1.1.1,-             bloomfilter ==2.0.0.0,-             byteable ==0.1.1,-             byteorder ==1.0.4,-             case-insensitive ==1.2.0.1,-             cereal ==0.4.0.1,-             cipher-aes ==0.2.8,-             cipher-des ==0.0.6,-             cipher-rc4 ==0.1.4,-             clientsession ==0.9.0.3,-             comonad ==4.2,-             conduit ==1.1.6,-             conduit-extra ==1.1.3,-             connection ==0.2.3,-             contravariant ==0.6.1.1,-             cookie ==0.4.1.2,-             cprng-aes ==0.5.2,-             crypto-api ==0.13.2,-             crypto-cipher-types ==0.0.9,-             crypto-numbers ==0.2.3,-             crypto-pubkey ==0.2.4,-             crypto-pubkey-types ==0.4.2.2,-             crypto-random ==0.0.7,-             cryptohash ==0.11.6,-             cryptohash-conduit ==0.1.1,-             css-text ==0.1.2.1,-             data-default ==0.5.3,-             data-default-class ==0.0.1,-             data-default-instances-base ==0.0.1,-             data-default-instances-containers ==0.0.1,-             data-default-instances-dlist ==0.0.1,-             data-default-instances-old-locale ==0.0.1,-             sandi ==0.3.0.1,-             dbus ==0.10.8,-             distributive ==0.4.4,-             dlist ==0.7.0.1,-             dns ==1.3.0,-             edit-distance ==0.2.1.2,-             either ==4.3,-             email-validate ==1.0.0,-             entropy ==0.2.1,-             errors ==1.4.7,-             exceptions ==0.6.1,-             failure ==0.2.0.3,-             fast-logger ==2.1.5,-             fdo-notify ==0.3.1,-             feed ==0.3.9.2,-             file-embed ==0.0.6,-             fingertree ==0.1.0.0,-             free ==4.9,-             gnuidn ==0.2,-             gnutls ==0.1.4,-             gsasl ==0.3.5,-             hS3 ==0.5.7,-             hashable ==1.2.1.0,-             hinotify ==0.3.5,-             hjsmin ==0.1.4.7,-             hslogger ==1.2.1,-             http-client ==0.4.11.1,-             http-client-tls ==0.2.2,-             http-conduit ==2.1.5,-             http-date ==0.0.2,-             http-types ==0.8.5,-             hxt ==9.3.1.4,-             hxt-charproperties ==9.1.1.1,-             hxt-regex-xmlschema ==9.0.4,-             hxt-unicode ==9.0.2.2,-             idna ==0.2,-             iproute ==1.2.11,-             json ==0.5,-             keys ==3.10.1,-             language-javascript ==0.5.13,-             lens ==4.4.0.2,-             libxml-sax ==0.7.5,-             mime-mail ==0.4.1.2,-             mime-types ==0.1.0.4,-             mmorph ==1.0.3,-             monad-control ==0.3.2.2,-             monad-logger ==0.3.6.1,-             monad-loops ==0.4.2.1,-             monads-tf ==0.1.0.2,-             mtl ==2.1.2,-             nats ==0.1.2,-             network ==2.4.1.2,-             network-conduit ==1.1.0,-             network-info ==0.2.0.5,-             network-multicast ==0.0.10,-             network-protocol-xmpp ==0.4.6,-             network-uri ==2.6.0.1,-             optparse-applicative ==0.11.0.2,-             parallel ==3.2.0.4,-             path-pieces ==0.1.4,-             pem ==0.2.2,-             persistent ==1.3.3,-             persistent-template ==1.3.2.2,-             pointed ==4.0,-             prelude-extras ==0.4,-             profunctors ==4.0.4,-             publicsuffixlist ==0.1,-             punycode ==2.0,-             random ==1.0.1.1,-             ranges ==0.2.4,-             reducers ==3.10.2.1,-             reflection ==1.2.0.1,-             regex-base ==0.93.2,-             regex-compat ==0.95.1,-             regex-posix ==0.95.2,-             regex-tdfa ==1.2.0,-             resource-pool ==0.2.1.1,-             resourcet ==1.1.2.3,-             safe ==0.3.8,-             securemem ==0.1.3,-             semigroupoids ==4.2,-             semigroups ==0.15.3,-             shakespeare ==2.0.5,-             silently ==1.2.4.1,-             simple-sendfile ==0.2.14,-             skein ==1.0.9,-             socks ==0.5.4,-             split ==0.2.2,-             stm ==2.4.2,-             stm-chans ==3.0.0.2,-             streaming-commons ==0.1.4.1,-             stringprep ==0.1.5,-             stringsearch ==0.3.6.5,-             syb ==0.4.0,-             system-fileio ==0.3.14,-             system-filepath ==0.4.12,-             tagged ==0.7.2,-             tagsoup ==0.13.1,-             tagstream-conduit ==0.5.5.1,-             text ==1.1.1.0,-             text-icu ==0.6.3.7,-             tf-random ==0.5,-             tls ==1.2.9,-             transformers ==0.3.0.0,-             transformers-base ==0.4.1,-             transformers-compat ==0.3.3.3,-             unbounded-delays ==0.1.0.8,-             unix-compat ==0.4.1.3,-             unix-time ==0.2.2,-             unordered-containers ==0.2.5.0,-             utf8-string ==0.3.7,-             uuid ==1.3.3,-             vault ==0.3.0.3,-             vector ==0.10.0.1,-             void ==0.6.1,-             wai ==3.0.1.1,-             wai-app-static ==3.0.0.1,-             wai-extra ==3.0.1.2,-             wai-logger ==2.1.1,-             warp ==3.0.0.5,-             warp-tls ==3.0.0,-             word8 ==0.1.1,-             x509 ==1.4.11,-             x509-store ==1.4.4,-             x509-system ==1.4.5,-             x509-validation ==1.5.0,-             xml ==1.3.13,-             xml-conduit ==1.2.1,-             xml-hamlet ==0.4.0.9,-             xml-types ==0.3.4,-             xss-sanitize ==0.3.5.2,-             yaml ==0.8.9.3,-             yesod ==1.2.6.1,-             yesod-auth ==1.3.4.6,-             yesod-core ==1.2.20.1,-             yesod-default ==1.2.0,-             yesod-form ==1.3.16,-             yesod-persistent ==1.2.3.1,-             yesod-routes ==1.2.0.7,-             yesod-static ==1.2.4,-             zlib ==0.5.4.1,-             bytestring ==0.10.4.0,-             scientific ==0.3.3.1,-             clock ==0.4.6.0
− standalone/android/tmp/network-2.4.1.2/cbits/HsNet.c
@@ -1,22 +0,0 @@-/* ------------------------------------------------------------------------------ * (c) The University of Glasgow 2002- *- * static versions of the inline functions from HsNet.h- * -------------------------------------------------------------------------- */--#define INLINE-#include "HsNet.h"--#include <sys/endian.h>-uint16_t my_htons(uint16_t v)-{-	htons(v);-}-uint32_t my_htonl(uint32_t v)-{-	htonl(v);-}-uint16_t my_ntohs(uint16_t v)-{-	ntohs(v);-}
− standalone/android/tmp/network-2.4.1.2/cbits/ancilData.c
@@ -1,123 +0,0 @@-/*- *  Copyright(c), 2002 The GHC Team.- */--#ifdef aix_HOST_OS-#define _LINUX_SOURCE_COMPAT -// Required to get CMSG_SPACE/CMSG_LEN macros.  See #265.-// Alternative is to #define COMPAT_43 and use the -// HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS code instead, but that means-// fiddling with the configure script too.-#endif--#include "HsNet.h"-#include <string.h>--#if HAVE_STRUCT_MSGHDR_MSG_CONTROL || HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS /* until end */--/* - *  Support for transmitting file descriptors.- *- *  - */- --/*- * sendmsg() and recvmsg() wrappers for transmitting- * ancillary socket data.- *- * Doesn't provide the full generality of either, specifically:- *- *  - no support for scattered read/writes.- *  - only possible to send one ancillary chunk of data at a time.- */--int-sendFd(int sock,-       int outfd)-{-  struct msghdr msg = {0};-  struct iovec iov[1];-  char  buf[2];-#if HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS-  msg.msg_accrights = (void*)&outfd;-  msg.msg_accrightslen = sizeof(int);-#else-  struct cmsghdr *cmsg;-  char ancBuffer[CMSG_SPACE(sizeof(int))];-  char* dPtr;-  -  msg.msg_control = ancBuffer;-  msg.msg_controllen = sizeof(ancBuffer);--  cmsg = CMSG_FIRSTHDR(&msg);-  cmsg->cmsg_level = SOL_SOCKET;-  cmsg->cmsg_type = SCM_RIGHTS;-  cmsg->cmsg_len = CMSG_LEN(sizeof(int));-  dPtr = (char*)CMSG_DATA(cmsg);-  -  *(int*)dPtr = outfd;-  msg.msg_controllen = cmsg->cmsg_len;-#endif--  buf[0] = 0; buf[1] = '\0';-  iov[0].iov_base = buf;-  iov[0].iov_len  = 2;--  msg.msg_iov = iov;-  msg.msg_iovlen = 1;-  -  return sendmsg(sock,&msg,0);-}--int-recvFd(int sock)-{-  struct msghdr msg = {0};-  char  duffBuf[10];-  int rc;-  int len = sizeof(int);-  struct iovec iov[1];-#if HAVE_STRUCT_MSGHDR_MSG_CONTROL-  struct cmsghdr *cmsg = NULL;-  struct cmsghdr *cptr;-#else-  int* fdBuffer;-#endif--  iov[0].iov_base = duffBuf;-  iov[0].iov_len  = sizeof(duffBuf);-  msg.msg_iov = iov;-  msg.msg_iovlen = 1;--#if HAVE_STRUCT_MSGHDR_MSG_CONTROL-  cmsg = (struct cmsghdr*)malloc(CMSG_SPACE(len));-  if (cmsg==NULL) {-    return -1;-  }-  -  msg.msg_control = (void *)cmsg;-  msg.msg_controllen = CMSG_LEN(len);-#else-  fdBuffer = (int*)malloc(len);-  if (fdBuffer) {-    msg.msg_accrights    = (void *)fdBuffer;-  } else {-    return -1;-  }-  msg.msg_accrightslen = len;-#endif--  if ((rc = recvmsg(sock,&msg,0)) < 0) {-    return rc;-  }-  -#if HAVE_STRUCT_MSGHDR_MSG_CONTROL-  cptr = (struct cmsghdr*)CMSG_FIRSTHDR(&msg);-  return *(int*)CMSG_DATA(cptr);-#else-  return *(int*)fdBuffer;-#endif-}--#endif
− standalone/android/tmp/network-2.4.1.2/cbits/asyncAccept.c
@@ -1,72 +0,0 @@-/*- * (c) sof, 2003.- */--#include "HsNet.h"-#include "HsFFI.h"--#if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)--/* all the way to the end */--/*- * To support non-blocking accept()s with WinSock, we use the asyncDoProc#- * primop, which lets a Haskell thread call an external routine without- * blocking the progress of other threads. - *- * As can readily be seen, this is a low-level mechanism.- *- */--typedef struct AcceptData {-    int   fdSock;-    int   newSock;-    void* sockAddr;-    int   size;-} AcceptData;--/*- * Fill in parameter block that's passed along when the RTS invokes the - * accept()-calling proc below (acceptDoProc())- */-void*-newAcceptParams(int sock,-		int sz,-		void* sockaddr)-{-    AcceptData* data = (AcceptData*)malloc(sizeof(AcceptData));-    if (!data) return NULL;-    data->fdSock   = sock;-    data->newSock  = 0;-    data->sockAddr = sockaddr;-    data->size     = sz;-    -    return data;-}--/* Accessors for return code and accept()'s socket result. */--int-acceptNewSock(void* d)-{-    return (((AcceptData*)d)->newSock);-}--/* Routine invoked by an RTS worker thread */-int-acceptDoProc(void* param)-{-    SOCKET s;--    AcceptData* data = (AcceptData*)param;-    s = accept( data->fdSock,-		data->sockAddr,-		&data->size);-    data->newSock = s;-    if ( s == INVALID_SOCKET ) {-	return GetLastError();-    } else {-	return 0;-    }-}-#endif
− standalone/android/tmp/network-2.4.1.2/cbits/initWinSock.c
@@ -1,52 +0,0 @@-#include "HsNet.h"-#include "HsFFI.h"--#if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)--static int winsock_inited = 0;-static int winsock_uninited = 0;--/* Initialising WinSock... */-int-initWinSock ()-{-  WORD wVersionRequested;-  WSADATA wsaData;  -  int err;--  if (!winsock_inited) {-    wVersionRequested = MAKEWORD( 2, 2 );--    err = WSAStartup ( wVersionRequested, &wsaData );-    -    if ( err != 0 ) {-       return err;-    }--    if ( LOBYTE( wsaData.wVersion ) != 2 ||-       HIBYTE( wsaData.wVersion ) != 2 ) {-      WSACleanup();-      return (-1);-    }--    winsock_inited = 1;-  }-  return 0;-}--static void-shutdownHandler(void)-{-  WSACleanup();-}--void-shutdownWinSock()-{-    if (!winsock_uninited) {-	atexit(shutdownHandler);-	winsock_uninited = 1;-    }-}--#endif
− standalone/android/tmp/network-2.4.1.2/cbits/winSockErr.c
@@ -1,76 +0,0 @@-#include "HsNet.h"-#include "HsFFI.h"--#if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)-#include <stdio.h>--/* to the end */--const char*-getWSErrorDescr(int err)-{-  static char  otherErrMsg[256];--  switch (err) {-  case WSAEINTR:  return "Interrupted function call (WSAEINTR)";-  case WSAEBADF:  return "bad socket descriptor (WSAEBADF)";-  case WSAEACCES: return "Permission denied (WSAEACCESS)";-  case WSAEFAULT: return "Bad address (WSAEFAULT)";-  case WSAEINVAL: return "Invalid argument (WSAEINVAL)";-  case WSAEMFILE: return "Too many open files (WSAEMFILE)";-  case WSAEWOULDBLOCK:  return "Resource temporarily unavailable (WSAEWOULDBLOCK)";-  case WSAEINPROGRESS:  return "Operation now in progress (WSAEINPROGRESS)";-  case WSAEALREADY:     return "Operation already in progress (WSAEALREADY)";-  case WSAENOTSOCK:     return "Socket operation on non-socket (WSAENOTSOCK)";-  case WSAEDESTADDRREQ: return "Destination address required (WSAEDESTADDRREQ)";-  case WSAEMSGSIZE:    	return "Message too long (WSAEMSGSIZE)";-  case WSAEPROTOTYPE:   return "Protocol wrong type for socket (WSAEPROTOTYPE)";-  case WSAENOPROTOOPT:  return "Bad protocol option (WSAENOPROTOOPT)";-  case WSAEPROTONOSUPPORT: return "Protocol not supported (WSAEPROTONOSUPPORT)";-  case WSAESOCKTNOSUPPORT: return "Socket type not supported (WSAESOCKTNOSUPPORT)";-  case WSAEOPNOTSUPP:      return "Operation not supported (WSAEOPNOTSUPP)";-  case WSAEPFNOSUPPORT:    return "Protocol family not supported (WSAEPFNOSUPPORT)";-  case WSAEAFNOSUPPORT:    return "Address family not supported by protocol family (WSAEAFNOSUPPORT)";-  case WSAEADDRINUSE:      return "Address already in use (WSAEADDRINUSE)";-  case WSAEADDRNOTAVAIL:   return "Cannot assign requested address (WSAEADDRNOTAVAIL)";-  case WSAENETDOWN:        return "Network is down (WSAENETDOWN)";-  case WSAENETUNREACH:     return "Network is unreachable (WSAENETUNREACH)";-  case WSAENETRESET:       return "Network dropped connection on reset (WSAENETRESET)";-  case WSAECONNABORTED:    return "Software caused connection abort (WSAECONNABORTED)";-  case WSAECONNRESET:      return "Connection reset by peer (WSAECONNRESET)";-  case WSAENOBUFS:         return "No buffer space available (WSAENOBUFS)";-  case WSAEISCONN:         return "Socket is already connected (WSAEISCONN)";-  case WSAENOTCONN:        return "Socket is not connected (WSAENOTCONN)";-  case WSAESHUTDOWN:       return "Cannot send after socket shutdown (WSAESHUTDOWN)";-  case WSAETOOMANYREFS:    return "Too many references (WSAETOOMANYREFS)";-  case WSAETIMEDOUT:       return "Connection timed out (WSAETIMEDOUT)";-  case WSAECONNREFUSED:    return "Connection refused (WSAECONNREFUSED)";-  case WSAELOOP:           return "Too many levels of symbolic links (WSAELOOP)";-  case WSAENAMETOOLONG:    return "Filename too long (WSAENAMETOOLONG)";-  case WSAEHOSTDOWN:       return "Host is down (WSAEHOSTDOWN)";-  case WSAEHOSTUNREACH:    return "Host is unreachable (WSAEHOSTUNREACH)";-  case WSAENOTEMPTY:       return "Resource not empty (WSAENOTEMPTY)";-  case WSAEPROCLIM:        return "Too many processes (WSAEPROCLIM)";-  case WSAEUSERS:          return "Too many users (WSAEUSERS)";-  case WSAEDQUOT:          return "Disk quota exceeded (WSAEDQUOT)";-  case WSAESTALE:          return "Stale NFS file handle (WSAESTALE)";-  case WSAEREMOTE:         return "Too many levels of remote in path (WSAEREMOTE)";-  case WSAEDISCON:         return "Graceful shutdown in progress (WSAEDISCON)";-  case WSASYSNOTREADY:     return "Network subsystem is unavailable (WSASYSNOTREADY)";-  case WSAVERNOTSUPPORTED: return "Winsock.dll version out of range (WSAVERNOTSUPPORTED)";-  case WSANOTINITIALISED:  return "Successful WSAStartup not yet performed (WSANOTINITIALISED)";-#ifdef WSATYPE_NOT_FOUND-  case WSATYPE_NOT_FOUND:  return "Class type not found (WSATYPE_NOT_FOUND)";-#endif-  case WSAHOST_NOT_FOUND:  return "Host not found (WSAHOST_NOT_FOUND)";-  case WSATRY_AGAIN:       return "Nonauthoritative host not found (WSATRY_AGAIN)";-  case WSANO_RECOVERY:     return "This is a nonrecoverable error (WSANO_RECOVERY)";-  case WSANO_DATA:         return "Valid name, no data record of requested type (WSANO_DATA)";-  default:-    sprintf(otherErrMsg, "Unknown WinSock error: %u", err);-    return otherErrMsg;-  }-}--#endif-
− standalone/android/tmp/network-2.4.1.2/config.guess
@@ -1,1420 +0,0 @@-#! /bin/sh-# Attempt to guess a canonical system name.-#   Copyright 1992-2014 Free Software Foundation, Inc.--timestamp='2014-03-23'--# This file is free software; you can redistribute it and/or modify it-# under the terms of the GNU General Public License as published by-# the Free Software Foundation; either version 3 of the License, or-# (at your option) any later version.-#-# This program 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-# General Public License for more details.-#-# You should have received a copy of the GNU General Public License-# along with this program; if not, see <http://www.gnu.org/licenses/>.-#-# As a special exception to the GNU General Public License, if you-# distribute this file as part of a program that contains a-# configuration script generated by Autoconf, you may include it under-# the same distribution terms that you use for the rest of that-# program.  This Exception is an additional permission under section 7-# of the GNU General Public License, version 3 ("GPLv3").-#-# Originally written by Per Bothner.-#-# You can get the latest version of this script from:-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD-#-# Please send patches with a ChangeLog entry to config-patches@gnu.org.---me=`echo "$0" | sed -e 's,.*/,,'`--usage="\-Usage: $0 [OPTION]--Output the configuration name of the system \`$me' is run on.--Operation modes:-  -h, --help         print this help, then exit-  -t, --time-stamp   print date of last modification, then exit-  -v, --version      print version number, then exit--Report bugs and patches to <config-patches@gnu.org>."--version="\-GNU config.guess ($timestamp)--Originally written by Per Bothner.-Copyright 1992-2014 Free Software Foundation, Inc.--This is free software; see the source for copying conditions.  There is NO-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."--help="-Try \`$me --help' for more information."--# Parse command line-while test $# -gt 0 ; do-  case $1 in-    --time-stamp | --time* | -t )-       echo "$timestamp" ; exit ;;-    --version | -v )-       echo "$version" ; exit ;;-    --help | --h* | -h )-       echo "$usage"; exit ;;-    -- )     # Stop option processing-       shift; break ;;-    - )	# Use stdin as input.-       break ;;-    -* )-       echo "$me: invalid option $1$help" >&2-       exit 1 ;;-    * )-       break ;;-  esac-done--if test $# != 0; then-  echo "$me: too many arguments$help" >&2-  exit 1-fi--trap 'exit 1' 1 2 15--# CC_FOR_BUILD -- compiler used by this script. Note that the use of a-# compiler to aid in system detection is discouraged as it requires-# temporary files to be created and, as you can see below, it is a-# headache to deal with in a portable fashion.--# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still-# use `HOST_CC' if defined, but it is deprecated.--# Portable tmp directory creation inspired by the Autoconf team.--set_cc_for_build='-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;-: ${TMPDIR=/tmp} ;- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;-dummy=$tmp/dummy ;-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;-case $CC_FOR_BUILD,$HOST_CC,$CC in- ,,)    echo "int x;" > $dummy.c ;-	for c in cc gcc c89 c99 ; do-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then-	     CC_FOR_BUILD="$c"; break ;-	  fi ;-	done ;-	if test x"$CC_FOR_BUILD" = x ; then-	  CC_FOR_BUILD=no_compiler_found ;-	fi-	;;- ,,*)   CC_FOR_BUILD=$CC ;;- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;-esac ; set_cc_for_build= ;'--# This is needed to find uname on a Pyramid OSx when run in the BSD universe.-# (ghazi@noc.rutgers.edu 1994-08-24)-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then-	PATH=$PATH:/.attbin ; export PATH-fi--UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown--case "${UNAME_SYSTEM}" in-Linux|GNU|GNU/*)-	# If the system lacks a compiler, then just pick glibc.-	# We could probably try harder.-	LIBC=gnu--	eval $set_cc_for_build-	cat <<-EOF > $dummy.c-	#include <features.h>-	#if defined(__UCLIBC__)-	LIBC=uclibc-	#elif defined(__dietlibc__)-	LIBC=dietlibc-	#else-	LIBC=gnu-	#endif-	EOF-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`-	;;-esac--# Note: order is significant - the case branches are not exclusive.--case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in-    *:NetBSD:*:*)-	# NetBSD (nbsd) targets should (where applicable) match one or-	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently-	# switched to ELF, *-*-netbsd* would select the old-	# object file format.  This provides both forward-	# compatibility and a consistent mechanism for selecting the-	# object file format.-	#-	# Note: NetBSD doesn't particularly care about the vendor-	# portion of the name.  We always set it to "unknown".-	sysctl="sysctl -n hw.machine_arch"-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`-	case "${UNAME_MACHINE_ARCH}" in-	    armeb) machine=armeb-unknown ;;-	    arm*) machine=arm-unknown ;;-	    sh3el) machine=shl-unknown ;;-	    sh3eb) machine=sh-unknown ;;-	    sh5el) machine=sh5le-unknown ;;-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;-	esac-	# The Operating System including object format, if it has switched-	# to ELF recently, or will in the future.-	case "${UNAME_MACHINE_ARCH}" in-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)-		eval $set_cc_for_build-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \-			| grep -q __ELF__-		then-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).-		    # Return netbsd for either.  FIX?-		    os=netbsd-		else-		    os=netbsdelf-		fi-		;;-	    *)-		os=netbsd-		;;-	esac-	# The OS release-	# Debian GNU/NetBSD machines have a different userland, and-	# thus, need a distinct triplet. However, they do not need-	# kernel version information, so it can be replaced with a-	# suitable tag, in the style of linux-gnu.-	case "${UNAME_VERSION}" in-	    Debian*)-		release='-gnu'-		;;-	    *)-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`-		;;-	esac-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:-	# contains redundant information, the shorter form:-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.-	echo "${machine}-${os}${release}"-	exit ;;-    *:Bitrig:*:*)-	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`-	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}-	exit ;;-    *:OpenBSD:*:*)-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}-	exit ;;-    *:ekkoBSD:*:*)-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}-	exit ;;-    *:SolidBSD:*:*)-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}-	exit ;;-    macppc:MirBSD:*:*)-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}-	exit ;;-    *:MirBSD:*:*)-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}-	exit ;;-    alpha:OSF1:*:*)-	case $UNAME_RELEASE in-	*4.0)-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`-		;;-	*5.*)-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`-		;;-	esac-	# According to Compaq, /usr/sbin/psrinfo has been available on-	# OSF/1 and Tru64 systems produced since 1995.  I hope that-	# covers most systems running today.  This code pipes the CPU-	# types through head -n 1, so we only detect the type of CPU 0.-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`-	case "$ALPHA_CPU_TYPE" in-	    "EV4 (21064)")-		UNAME_MACHINE="alpha" ;;-	    "EV4.5 (21064)")-		UNAME_MACHINE="alpha" ;;-	    "LCA4 (21066/21068)")-		UNAME_MACHINE="alpha" ;;-	    "EV5 (21164)")-		UNAME_MACHINE="alphaev5" ;;-	    "EV5.6 (21164A)")-		UNAME_MACHINE="alphaev56" ;;-	    "EV5.6 (21164PC)")-		UNAME_MACHINE="alphapca56" ;;-	    "EV5.7 (21164PC)")-		UNAME_MACHINE="alphapca57" ;;-	    "EV6 (21264)")-		UNAME_MACHINE="alphaev6" ;;-	    "EV6.7 (21264A)")-		UNAME_MACHINE="alphaev67" ;;-	    "EV6.8CB (21264C)")-		UNAME_MACHINE="alphaev68" ;;-	    "EV6.8AL (21264B)")-		UNAME_MACHINE="alphaev68" ;;-	    "EV6.8CX (21264D)")-		UNAME_MACHINE="alphaev68" ;;-	    "EV6.9A (21264/EV69A)")-		UNAME_MACHINE="alphaev69" ;;-	    "EV7 (21364)")-		UNAME_MACHINE="alphaev7" ;;-	    "EV7.9 (21364A)")-		UNAME_MACHINE="alphaev79" ;;-	esac-	# A Pn.n version is a patched version.-	# A Vn.n version is a released version.-	# A Tn.n version is a released field test version.-	# A Xn.n version is an unreleased experimental baselevel.-	# 1.2 uses "1.2" for uname -r.-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.-	exitcode=$?-	trap '' 0-	exit $exitcode ;;-    Alpha\ *:Windows_NT*:*)-	# How do we know it's Interix rather than the generic POSIX subsystem?-	# Should we change UNAME_MACHINE based on the output of uname instead-	# of the specific Alpha model?-	echo alpha-pc-interix-	exit ;;-    21064:Windows_NT:50:3)-	echo alpha-dec-winnt3.5-	exit ;;-    Amiga*:UNIX_System_V:4.0:*)-	echo m68k-unknown-sysv4-	exit ;;-    *:[Aa]miga[Oo][Ss]:*:*)-	echo ${UNAME_MACHINE}-unknown-amigaos-	exit ;;-    *:[Mm]orph[Oo][Ss]:*:*)-	echo ${UNAME_MACHINE}-unknown-morphos-	exit ;;-    *:OS/390:*:*)-	echo i370-ibm-openedition-	exit ;;-    *:z/VM:*:*)-	echo s390-ibm-zvmoe-	exit ;;-    *:OS400:*:*)-	echo powerpc-ibm-os400-	exit ;;-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)-	echo arm-acorn-riscix${UNAME_RELEASE}-	exit ;;-    arm*:riscos:*:*|arm*:RISCOS:*:*)-	echo arm-unknown-riscos-	exit ;;-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)-	echo hppa1.1-hitachi-hiuxmpp-	exit ;;-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)-	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.-	if test "`(/bin/universe) 2>/dev/null`" = att ; then-		echo pyramid-pyramid-sysv3-	else-		echo pyramid-pyramid-bsd-	fi-	exit ;;-    NILE*:*:*:dcosx)-	echo pyramid-pyramid-svr4-	exit ;;-    DRS?6000:unix:4.0:6*)-	echo sparc-icl-nx6-	exit ;;-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)-	case `/usr/bin/uname -p` in-	    sparc) echo sparc-icl-nx7; exit ;;-	esac ;;-    s390x:SunOS:*:*)-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`-	exit ;;-    sun4H:SunOS:5.*:*)-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`-	exit ;;-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`-	exit ;;-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)-	echo i386-pc-auroraux${UNAME_RELEASE}-	exit ;;-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)-	eval $set_cc_for_build-	SUN_ARCH="i386"-	# If there is a compiler, see if it is configured for 64-bit objects.-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.-	# This test works for both compilers.-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \-		grep IS_64BIT_ARCH >/dev/null-	    then-		SUN_ARCH="x86_64"-	    fi-	fi-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`-	exit ;;-    sun4*:SunOS:6*:*)-	# According to config.sub, this is the proper way to canonicalize-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but-	# it's likely to be more like Solaris than SunOS4.-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`-	exit ;;-    sun4*:SunOS:*:*)-	case "`/usr/bin/arch -k`" in-	    Series*|S4*)-		UNAME_RELEASE=`uname -v`-		;;-	esac-	# Japanese Language versions have a version number like `4.1.3-JL'.-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`-	exit ;;-    sun3*:SunOS:*:*)-	echo m68k-sun-sunos${UNAME_RELEASE}-	exit ;;-    sun*:*:4.2BSD:*)-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3-	case "`/bin/arch`" in-	    sun3)-		echo m68k-sun-sunos${UNAME_RELEASE}-		;;-	    sun4)-		echo sparc-sun-sunos${UNAME_RELEASE}-		;;-	esac-	exit ;;-    aushp:SunOS:*:*)-	echo sparc-auspex-sunos${UNAME_RELEASE}-	exit ;;-    # The situation for MiNT is a little confusing.  The machine name-    # can be virtually everything (everything which is not-    # "atarist" or "atariste" at least should have a processor-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"-    # to the lowercase version "mint" (or "freemint").  Finally-    # the system name "TOS" denotes a system which is actually not-    # MiNT.  But MiNT is downward compatible to TOS, so this should-    # be no problem.-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)-	echo m68k-atari-mint${UNAME_RELEASE}-	exit ;;-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)-	echo m68k-atari-mint${UNAME_RELEASE}-	exit ;;-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)-	echo m68k-atari-mint${UNAME_RELEASE}-	exit ;;-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)-	echo m68k-milan-mint${UNAME_RELEASE}-	exit ;;-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)-	echo m68k-hades-mint${UNAME_RELEASE}-	exit ;;-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)-	echo m68k-unknown-mint${UNAME_RELEASE}-	exit ;;-    m68k:machten:*:*)-	echo m68k-apple-machten${UNAME_RELEASE}-	exit ;;-    powerpc:machten:*:*)-	echo powerpc-apple-machten${UNAME_RELEASE}-	exit ;;-    RISC*:Mach:*:*)-	echo mips-dec-mach_bsd4.3-	exit ;;-    RISC*:ULTRIX:*:*)-	echo mips-dec-ultrix${UNAME_RELEASE}-	exit ;;-    VAX*:ULTRIX*:*:*)-	echo vax-dec-ultrix${UNAME_RELEASE}-	exit ;;-    2020:CLIX:*:* | 2430:CLIX:*:*)-	echo clipper-intergraph-clix${UNAME_RELEASE}-	exit ;;-    mips:*:*:UMIPS | mips:*:*:RISCos)-	eval $set_cc_for_build-	sed 's/^	//' << EOF >$dummy.c-#ifdef __cplusplus-#include <stdio.h>  /* for printf() prototype */-	int main (int argc, char *argv[]) {-#else-	int main (argc, argv) int argc; char *argv[]; {-#endif-	#if defined (host_mips) && defined (MIPSEB)-	#if defined (SYSTYPE_SYSV)-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);-	#endif-	#if defined (SYSTYPE_SVR4)-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);-	#endif-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);-	#endif-	#endif-	  exit (-1);-	}-EOF-	$CC_FOR_BUILD -o $dummy $dummy.c &&-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&-	  SYSTEM_NAME=`$dummy $dummyarg` &&-	    { echo "$SYSTEM_NAME"; exit; }-	echo mips-mips-riscos${UNAME_RELEASE}-	exit ;;-    Motorola:PowerMAX_OS:*:*)-	echo powerpc-motorola-powermax-	exit ;;-    Motorola:*:4.3:PL8-*)-	echo powerpc-harris-powermax-	exit ;;-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)-	echo powerpc-harris-powermax-	exit ;;-    Night_Hawk:Power_UNIX:*:*)-	echo powerpc-harris-powerunix-	exit ;;-    m88k:CX/UX:7*:*)-	echo m88k-harris-cxux7-	exit ;;-    m88k:*:4*:R4*)-	echo m88k-motorola-sysv4-	exit ;;-    m88k:*:3*:R3*)-	echo m88k-motorola-sysv3-	exit ;;-    AViiON:dgux:*:*)-	# DG/UX returns AViiON for all architectures-	UNAME_PROCESSOR=`/usr/bin/uname -p`-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]-	then-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \-	       [ ${TARGET_BINARY_INTERFACE}x = x ]-	    then-		echo m88k-dg-dgux${UNAME_RELEASE}-	    else-		echo m88k-dg-dguxbcs${UNAME_RELEASE}-	    fi-	else-	    echo i586-dg-dgux${UNAME_RELEASE}-	fi-	exit ;;-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)-	echo m88k-dolphin-sysv3-	exit ;;-    M88*:*:R3*:*)-	# Delta 88k system running SVR3-	echo m88k-motorola-sysv3-	exit ;;-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)-	echo m88k-tektronix-sysv3-	exit ;;-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)-	echo m68k-tektronix-bsd-	exit ;;-    *:IRIX*:*:*)-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`-	exit ;;-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '-    i*86:AIX:*:*)-	echo i386-ibm-aix-	exit ;;-    ia64:AIX:*:*)-	if [ -x /usr/bin/oslevel ] ; then-		IBM_REV=`/usr/bin/oslevel`-	else-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}-	fi-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}-	exit ;;-    *:AIX:2:3)-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then-		eval $set_cc_for_build-		sed 's/^		//' << EOF >$dummy.c-		#include <sys/systemcfg.h>--		main()-			{-			if (!__power_pc())-				exit(1);-			puts("powerpc-ibm-aix3.2.5");-			exit(0);-			}-EOF-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`-		then-			echo "$SYSTEM_NAME"-		else-			echo rs6000-ibm-aix3.2.5-		fi-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then-		echo rs6000-ibm-aix3.2.4-	else-		echo rs6000-ibm-aix3.2-	fi-	exit ;;-    *:AIX:*:[4567])-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then-		IBM_ARCH=rs6000-	else-		IBM_ARCH=powerpc-	fi-	if [ -x /usr/bin/oslevel ] ; then-		IBM_REV=`/usr/bin/oslevel`-	else-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}-	fi-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}-	exit ;;-    *:AIX:*:*)-	echo rs6000-ibm-aix-	exit ;;-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)-	echo romp-ibm-bsd4.4-	exit ;;-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to-	exit ;;                             # report: romp-ibm BSD 4.3-    *:BOSX:*:*)-	echo rs6000-bull-bosx-	exit ;;-    DPX/2?00:B.O.S.:*:*)-	echo m68k-bull-sysv3-	exit ;;-    9000/[34]??:4.3bsd:1.*:*)-	echo m68k-hp-bsd-	exit ;;-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)-	echo m68k-hp-bsd4.4-	exit ;;-    9000/[34678]??:HP-UX:*:*)-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`-	case "${UNAME_MACHINE}" in-	    9000/31? )            HP_ARCH=m68000 ;;-	    9000/[34]?? )         HP_ARCH=m68k ;;-	    9000/[678][0-9][0-9])-		if [ -x /usr/bin/getconf ]; then-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`-		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`-		    case "${sc_cpu_version}" in-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1-		      532)                      # CPU_PA_RISC2_0-			case "${sc_kernel_bits}" in-			  32) HP_ARCH="hppa2.0n" ;;-			  64) HP_ARCH="hppa2.0w" ;;-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20-			esac ;;-		    esac-		fi-		if [ "${HP_ARCH}" = "" ]; then-		    eval $set_cc_for_build-		    sed 's/^		//' << EOF >$dummy.c--		#define _HPUX_SOURCE-		#include <stdlib.h>-		#include <unistd.h>--		int main ()-		{-		#if defined(_SC_KERNEL_BITS)-		    long bits = sysconf(_SC_KERNEL_BITS);-		#endif-		    long cpu  = sysconf (_SC_CPU_VERSION);--		    switch (cpu)-			{-			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;-			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;-			case CPU_PA_RISC2_0:-		#if defined(_SC_KERNEL_BITS)-			    switch (bits)-				{-				case 64: puts ("hppa2.0w"); break;-				case 32: puts ("hppa2.0n"); break;-				default: puts ("hppa2.0"); break;-				} break;-		#else  /* !defined(_SC_KERNEL_BITS) */-			    puts ("hppa2.0"); break;-		#endif-			default: puts ("hppa1.0"); break;-			}-		    exit (0);-		}-EOF-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`-		    test -z "$HP_ARCH" && HP_ARCH=hppa-		fi ;;-	esac-	if [ ${HP_ARCH} = "hppa2.0w" ]-	then-	    eval $set_cc_for_build--	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler-	    # generating 64-bit code.  GNU and HP use different nomenclature:-	    #-	    # $ CC_FOR_BUILD=cc ./config.guess-	    # => hppa2.0w-hp-hpux11.23-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess-	    # => hppa64-hp-hpux11.23--	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |-		grep -q __LP64__-	    then-		HP_ARCH="hppa2.0w"-	    else-		HP_ARCH="hppa64"-	    fi-	fi-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}-	exit ;;-    ia64:HP-UX:*:*)-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`-	echo ia64-hp-hpux${HPUX_REV}-	exit ;;-    3050*:HI-UX:*:*)-	eval $set_cc_for_build-	sed 's/^	//' << EOF >$dummy.c-	#include <unistd.h>-	int-	main ()-	{-	  long cpu = sysconf (_SC_CPU_VERSION);-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct-	     results, however.  */-	  if (CPU_IS_PA_RISC (cpu))-	    {-	      switch (cpu)-		{-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;-		  default: puts ("hppa-hitachi-hiuxwe2"); break;-		}-	    }-	  else if (CPU_IS_HP_MC68K (cpu))-	    puts ("m68k-hitachi-hiuxwe2");-	  else puts ("unknown-hitachi-hiuxwe2");-	  exit (0);-	}-EOF-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&-		{ echo "$SYSTEM_NAME"; exit; }-	echo unknown-hitachi-hiuxwe2-	exit ;;-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )-	echo hppa1.1-hp-bsd-	exit ;;-    9000/8??:4.3bsd:*:*)-	echo hppa1.0-hp-bsd-	exit ;;-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)-	echo hppa1.0-hp-mpeix-	exit ;;-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )-	echo hppa1.1-hp-osf-	exit ;;-    hp8??:OSF1:*:*)-	echo hppa1.0-hp-osf-	exit ;;-    i*86:OSF1:*:*)-	if [ -x /usr/sbin/sysversion ] ; then-	    echo ${UNAME_MACHINE}-unknown-osf1mk-	else-	    echo ${UNAME_MACHINE}-unknown-osf1-	fi-	exit ;;-    parisc*:Lites*:*:*)-	echo hppa1.1-hp-lites-	exit ;;-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)-	echo c1-convex-bsd-	exit ;;-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)-	if getsysinfo -f scalar_acc-	then echo c32-convex-bsd-	else echo c2-convex-bsd-	fi-	exit ;;-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)-	echo c34-convex-bsd-	exit ;;-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)-	echo c38-convex-bsd-	exit ;;-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)-	echo c4-convex-bsd-	exit ;;-    CRAY*Y-MP:*:*:*)-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    CRAY*[A-Z]90:*:*:*)-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \-	      -e 's/\.[^.]*$/.X/'-	exit ;;-    CRAY*TS:*:*:*)-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    CRAY*T3E:*:*:*)-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    CRAY*SV1:*:*:*)-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    *:UNICOS/mp:*:*)-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'-	exit ;;-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`-	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"-	exit ;;-    5000:UNIX_System_V:4.*:*)-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"-	exit ;;-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}-	exit ;;-    sparc*:BSD/OS:*:*)-	echo sparc-unknown-bsdi${UNAME_RELEASE}-	exit ;;-    *:BSD/OS:*:*)-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}-	exit ;;-    *:FreeBSD:*:*)-	UNAME_PROCESSOR=`/usr/bin/uname -p`-	case ${UNAME_PROCESSOR} in-	    amd64)-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;-	    *)-		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;-	esac-	exit ;;-    i*:CYGWIN*:*)-	echo ${UNAME_MACHINE}-pc-cygwin-	exit ;;-    *:MINGW64*:*)-	echo ${UNAME_MACHINE}-pc-mingw64-	exit ;;-    *:MINGW*:*)-	echo ${UNAME_MACHINE}-pc-mingw32-	exit ;;-    *:MSYS*:*)-	echo ${UNAME_MACHINE}-pc-msys-	exit ;;-    i*:windows32*:*)-	# uname -m includes "-pc" on this system.-	echo ${UNAME_MACHINE}-mingw32-	exit ;;-    i*:PW*:*)-	echo ${UNAME_MACHINE}-pc-pw32-	exit ;;-    *:Interix*:*)-	case ${UNAME_MACHINE} in-	    x86)-		echo i586-pc-interix${UNAME_RELEASE}-		exit ;;-	    authenticamd | genuineintel | EM64T)-		echo x86_64-unknown-interix${UNAME_RELEASE}-		exit ;;-	    IA64)-		echo ia64-unknown-interix${UNAME_RELEASE}-		exit ;;-	esac ;;-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)-	echo i${UNAME_MACHINE}-pc-mks-	exit ;;-    8664:Windows_NT:*)-	echo x86_64-pc-mks-	exit ;;-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)-	# How do we know it's Interix rather than the generic POSIX subsystem?-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we-	# UNAME_MACHINE based on the output of uname instead of i386?-	echo i586-pc-interix-	exit ;;-    i*:UWIN*:*)-	echo ${UNAME_MACHINE}-pc-uwin-	exit ;;-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)-	echo x86_64-unknown-cygwin-	exit ;;-    p*:CYGWIN*:*)-	echo powerpcle-unknown-cygwin-	exit ;;-    prep*:SunOS:5.*:*)-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`-	exit ;;-    *:GNU:*:*)-	# the GNU system-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`-	exit ;;-    *:GNU/*:*:*)-	# other systems with GNU libc and userland-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}-	exit ;;-    i*86:Minix:*:*)-	echo ${UNAME_MACHINE}-pc-minix-	exit ;;-    aarch64:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    aarch64_be:Linux:*:*)-	UNAME_MACHINE=aarch64_be-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    alpha:Linux:*:*)-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in-	  EV5)   UNAME_MACHINE=alphaev5 ;;-	  EV56)  UNAME_MACHINE=alphaev56 ;;-	  PCA56) UNAME_MACHINE=alphapca56 ;;-	  PCA57) UNAME_MACHINE=alphapca56 ;;-	  EV6)   UNAME_MACHINE=alphaev6 ;;-	  EV67)  UNAME_MACHINE=alphaev67 ;;-	  EV68*) UNAME_MACHINE=alphaev68 ;;-	esac-	objdump --private-headers /bin/sh | grep -q ld.so.1-	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    arc:Linux:*:* | arceb:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    arm*:Linux:*:*)-	eval $set_cc_for_build-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \-	    | grep -q __ARM_EABI__-	then-	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	else-	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \-		| grep -q __ARM_PCS_VFP-	    then-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi-	    else-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf-	    fi-	fi-	exit ;;-    avr32*:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    cris:Linux:*:*)-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}-	exit ;;-    crisv32:Linux:*:*)-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}-	exit ;;-    frv:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    hexagon:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    i*86:Linux:*:*)-	echo ${UNAME_MACHINE}-pc-linux-${LIBC}-	exit ;;-    ia64:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    m32r*:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    m68*:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    mips:Linux:*:* | mips64:Linux:*:*)-	eval $set_cc_for_build-	sed 's/^	//' << EOF >$dummy.c-	#undef CPU-	#undef ${UNAME_MACHINE}-	#undef ${UNAME_MACHINE}el-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)-	CPU=${UNAME_MACHINE}el-	#else-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)-	CPU=${UNAME_MACHINE}-	#else-	CPU=-	#endif-	#endif-EOF-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }-	;;-    openrisc*:Linux:*:*)-	echo or1k-unknown-linux-${LIBC}-	exit ;;-    or32:Linux:*:* | or1k*:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    padre:Linux:*:*)-	echo sparc-unknown-linux-${LIBC}-	exit ;;-    parisc64:Linux:*:* | hppa64:Linux:*:*)-	echo hppa64-unknown-linux-${LIBC}-	exit ;;-    parisc:Linux:*:* | hppa:Linux:*:*)-	# Look for CPU level-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in-	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;-	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;-	  *)    echo hppa-unknown-linux-${LIBC} ;;-	esac-	exit ;;-    ppc64:Linux:*:*)-	echo powerpc64-unknown-linux-${LIBC}-	exit ;;-    ppc:Linux:*:*)-	echo powerpc-unknown-linux-${LIBC}-	exit ;;-    ppc64le:Linux:*:*)-	echo powerpc64le-unknown-linux-${LIBC}-	exit ;;-    ppcle:Linux:*:*)-	echo powerpcle-unknown-linux-${LIBC}-	exit ;;-    s390:Linux:*:* | s390x:Linux:*:*)-	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}-	exit ;;-    sh64*:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    sh*:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    sparc:Linux:*:* | sparc64:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    tile*:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    vax:Linux:*:*)-	echo ${UNAME_MACHINE}-dec-linux-${LIBC}-	exit ;;-    x86_64:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    xtensa*:Linux:*:*)-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}-	exit ;;-    i*86:DYNIX/ptx:4*:*)-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.-	# earlier versions are messed up and put the nodename in both-	# sysname and nodename.-	echo i386-sequent-sysv4-	exit ;;-    i*86:UNIX_SV:4.2MP:2.*)-	# Unixware is an offshoot of SVR4, but it has its own version-	# number series starting with 2...-	# I am not positive that other SVR4 systems won't match this,-	# I just have to hope.  -- rms.-	# Use sysv4.2uw... so that sysv4* matches it.-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}-	exit ;;-    i*86:OS/2:*:*)-	# If we were able to find `uname', then EMX Unix compatibility-	# is probably installed.-	echo ${UNAME_MACHINE}-pc-os2-emx-	exit ;;-    i*86:XTS-300:*:STOP)-	echo ${UNAME_MACHINE}-unknown-stop-	exit ;;-    i*86:atheos:*:*)-	echo ${UNAME_MACHINE}-unknown-atheos-	exit ;;-    i*86:syllable:*:*)-	echo ${UNAME_MACHINE}-pc-syllable-	exit ;;-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)-	echo i386-unknown-lynxos${UNAME_RELEASE}-	exit ;;-    i*86:*DOS:*:*)-	echo ${UNAME_MACHINE}-pc-msdosdjgpp-	exit ;;-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}-	else-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}-	fi-	exit ;;-    i*86:*:5:[678]*)-	# UnixWare 7.x, OpenUNIX and OpenServer 6.-	case `/bin/uname -X | grep "^Machine"` in-	    *486*)	     UNAME_MACHINE=i486 ;;-	    *Pentium)	     UNAME_MACHINE=i586 ;;-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;-	esac-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}-	exit ;;-    i*86:*:3.2:*)-	if test -f /usr/options/cb.name; then-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL-	elif /bin/uname -X 2>/dev/null >/dev/null ; then-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \-			&& UNAME_MACHINE=i586-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \-			&& UNAME_MACHINE=i686-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \-			&& UNAME_MACHINE=i686-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL-	else-		echo ${UNAME_MACHINE}-pc-sysv32-	fi-	exit ;;-    pc:*:*:*)-	# Left here for compatibility:-	# uname -m prints for DJGPP always 'pc', but it prints nothing about-	# the processor, so we play safe by assuming i586.-	# Note: whatever this is, it MUST be the same as what config.sub-	# prints for the "djgpp" host, or else GDB configury will decide that-	# this is a cross-build.-	echo i586-pc-msdosdjgpp-	exit ;;-    Intel:Mach:3*:*)-	echo i386-pc-mach3-	exit ;;-    paragon:*:*:*)-	echo i860-intel-osf1-	exit ;;-    i860:*:4.*:*) # i860-SVR4-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4-	else # Add other i860-SVR4 vendors below as they are discovered.-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4-	fi-	exit ;;-    mini*:CTIX:SYS*5:*)-	# "miniframe"-	echo m68010-convergent-sysv-	exit ;;-    mc68k:UNIX:SYSTEM5:3.51m)-	echo m68k-convergent-sysv-	exit ;;-    M680?0:D-NIX:5.3:*)-	echo m68k-diab-dnix-	exit ;;-    M68*:*:R3V[5678]*:*)-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)-	OS_REL=''-	test -r /etc/.relid \-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \-	  && { echo i486-ncr-sysv4; exit; } ;;-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)-	OS_REL='.3'-	test -r /etc/.relid \-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)-	echo m68k-unknown-lynxos${UNAME_RELEASE}-	exit ;;-    mc68030:UNIX_System_V:4.*:*)-	echo m68k-atari-sysv4-	exit ;;-    TSUNAMI:LynxOS:2.*:*)-	echo sparc-unknown-lynxos${UNAME_RELEASE}-	exit ;;-    rs6000:LynxOS:2.*:*)-	echo rs6000-unknown-lynxos${UNAME_RELEASE}-	exit ;;-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)-	echo powerpc-unknown-lynxos${UNAME_RELEASE}-	exit ;;-    SM[BE]S:UNIX_SV:*:*)-	echo mips-dde-sysv${UNAME_RELEASE}-	exit ;;-    RM*:ReliantUNIX-*:*:*)-	echo mips-sni-sysv4-	exit ;;-    RM*:SINIX-*:*:*)-	echo mips-sni-sysv4-	exit ;;-    *:SINIX-*:*:*)-	if uname -p 2>/dev/null >/dev/null ; then-		UNAME_MACHINE=`(uname -p) 2>/dev/null`-		echo ${UNAME_MACHINE}-sni-sysv4-	else-		echo ns32k-sni-sysv-	fi-	exit ;;-    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort-			# says <Richard.M.Bartel@ccMail.Census.GOV>-	echo i586-unisys-sysv4-	exit ;;-    *:UNIX_System_V:4*:FTX*)-	# From Gerald Hewes <hewes@openmarket.com>.-	# How about differentiating between stratus architectures? -djm-	echo hppa1.1-stratus-sysv4-	exit ;;-    *:*:*:FTX*)-	# From seanf@swdc.stratus.com.-	echo i860-stratus-sysv4-	exit ;;-    i*86:VOS:*:*)-	# From Paul.Green@stratus.com.-	echo ${UNAME_MACHINE}-stratus-vos-	exit ;;-    *:VOS:*:*)-	# From Paul.Green@stratus.com.-	echo hppa1.1-stratus-vos-	exit ;;-    mc68*:A/UX:*:*)-	echo m68k-apple-aux${UNAME_RELEASE}-	exit ;;-    news*:NEWS-OS:6*:*)-	echo mips-sony-newsos6-	exit ;;-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)-	if [ -d /usr/nec ]; then-		echo mips-nec-sysv${UNAME_RELEASE}-	else-		echo mips-unknown-sysv${UNAME_RELEASE}-	fi-	exit ;;-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.-	echo powerpc-be-beos-	exit ;;-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.-	echo powerpc-apple-beos-	exit ;;-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.-	echo i586-pc-beos-	exit ;;-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.-	echo i586-pc-haiku-	exit ;;-    x86_64:Haiku:*:*)-	echo x86_64-unknown-haiku-	exit ;;-    SX-4:SUPER-UX:*:*)-	echo sx4-nec-superux${UNAME_RELEASE}-	exit ;;-    SX-5:SUPER-UX:*:*)-	echo sx5-nec-superux${UNAME_RELEASE}-	exit ;;-    SX-6:SUPER-UX:*:*)-	echo sx6-nec-superux${UNAME_RELEASE}-	exit ;;-    SX-7:SUPER-UX:*:*)-	echo sx7-nec-superux${UNAME_RELEASE}-	exit ;;-    SX-8:SUPER-UX:*:*)-	echo sx8-nec-superux${UNAME_RELEASE}-	exit ;;-    SX-8R:SUPER-UX:*:*)-	echo sx8r-nec-superux${UNAME_RELEASE}-	exit ;;-    Power*:Rhapsody:*:*)-	echo powerpc-apple-rhapsody${UNAME_RELEASE}-	exit ;;-    *:Rhapsody:*:*)-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}-	exit ;;-    *:Darwin:*:*)-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown-	eval $set_cc_for_build-	if test "$UNAME_PROCESSOR" = unknown ; then-	    UNAME_PROCESSOR=powerpc-	fi-	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then-	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then-		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \-		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \-		    grep IS_64BIT_ARCH >/dev/null-		then-		    case $UNAME_PROCESSOR in-			i386) UNAME_PROCESSOR=x86_64 ;;-			powerpc) UNAME_PROCESSOR=powerpc64 ;;-		    esac-		fi-	    fi-	elif test "$UNAME_PROCESSOR" = i386 ; then-	    # Avoid executing cc on OS X 10.9, as it ships with a stub-	    # that puts up a graphical alert prompting to install-	    # developer tools.  Any system running Mac OS X 10.7 or-	    # later (Darwin 11 and later) is required to have a 64-bit-	    # processor. This is not true of the ARM version of Darwin-	    # that Apple uses in portable devices.-	    UNAME_PROCESSOR=x86_64-	fi-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}-	exit ;;-    *:procnto*:*:* | *:QNX:[0123456789]*:*)-	UNAME_PROCESSOR=`uname -p`-	if test "$UNAME_PROCESSOR" = "x86"; then-		UNAME_PROCESSOR=i386-		UNAME_MACHINE=pc-	fi-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}-	exit ;;-    *:QNX:*:4*)-	echo i386-pc-qnx-	exit ;;-    NEO-?:NONSTOP_KERNEL:*:*)-	echo neo-tandem-nsk${UNAME_RELEASE}-	exit ;;-    NSE-*:NONSTOP_KERNEL:*:*)-	echo nse-tandem-nsk${UNAME_RELEASE}-	exit ;;-    NSR-?:NONSTOP_KERNEL:*:*)-	echo nsr-tandem-nsk${UNAME_RELEASE}-	exit ;;-    *:NonStop-UX:*:*)-	echo mips-compaq-nonstopux-	exit ;;-    BS2000:POSIX*:*:*)-	echo bs2000-siemens-sysv-	exit ;;-    DS/*:UNIX_System_V:*:*)-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}-	exit ;;-    *:Plan9:*:*)-	# "uname -m" is not consistent, so use $cputype instead. 386-	# is converted to i386 for consistency with other x86-	# operating systems.-	if test "$cputype" = "386"; then-	    UNAME_MACHINE=i386-	else-	    UNAME_MACHINE="$cputype"-	fi-	echo ${UNAME_MACHINE}-unknown-plan9-	exit ;;-    *:TOPS-10:*:*)-	echo pdp10-unknown-tops10-	exit ;;-    *:TENEX:*:*)-	echo pdp10-unknown-tenex-	exit ;;-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)-	echo pdp10-dec-tops20-	exit ;;-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)-	echo pdp10-xkl-tops20-	exit ;;-    *:TOPS-20:*:*)-	echo pdp10-unknown-tops20-	exit ;;-    *:ITS:*:*)-	echo pdp10-unknown-its-	exit ;;-    SEI:*:*:SEIUX)-	echo mips-sei-seiux${UNAME_RELEASE}-	exit ;;-    *:DragonFly:*:*)-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-	exit ;;-    *:*VMS:*:*)-	UNAME_MACHINE=`(uname -p) 2>/dev/null`-	case "${UNAME_MACHINE}" in-	    A*) echo alpha-dec-vms ; exit ;;-	    I*) echo ia64-dec-vms ; exit ;;-	    V*) echo vax-dec-vms ; exit ;;-	esac ;;-    *:XENIX:*:SysV)-	echo i386-pc-xenix-	exit ;;-    i*86:skyos:*:*)-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'-	exit ;;-    i*86:rdos:*:*)-	echo ${UNAME_MACHINE}-pc-rdos-	exit ;;-    i*86:AROS:*:*)-	echo ${UNAME_MACHINE}-pc-aros-	exit ;;-    x86_64:VMkernel:*:*)-	echo ${UNAME_MACHINE}-unknown-esx-	exit ;;-esac--cat >&2 <<EOF-$0: unable to guess system type--This script, last modified $timestamp, has failed to recognize-the operating system you are using. It is advised that you-download the most up to date version of the config scripts from--  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD-and-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD--If the version you run ($0) is already up to date, please-send the following data and any information you think might be-pertinent to <config-patches@gnu.org> in order to provide the needed-information to handle your system.--config.guess timestamp = $timestamp--uname -m = `(uname -m) 2>/dev/null || echo unknown`-uname -r = `(uname -r) 2>/dev/null || echo unknown`-uname -s = `(uname -s) 2>/dev/null || echo unknown`-uname -v = `(uname -v) 2>/dev/null || echo unknown`--/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`--hostinfo               = `(hostinfo) 2>/dev/null`-/bin/universe          = `(/bin/universe) 2>/dev/null`-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`-/bin/arch              = `(/bin/arch) 2>/dev/null`-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`--UNAME_MACHINE = ${UNAME_MACHINE}-UNAME_RELEASE = ${UNAME_RELEASE}-UNAME_SYSTEM  = ${UNAME_SYSTEM}-UNAME_VERSION = ${UNAME_VERSION}-EOF--exit 1--# Local variables:-# eval: (add-hook 'write-file-hooks 'time-stamp)-# time-stamp-start: "timestamp='"-# time-stamp-format: "%:y-%02m-%02d"-# time-stamp-end: "'"-# End:
− standalone/android/tmp/network-2.4.1.2/config.sub
@@ -1,1799 +0,0 @@-#! /bin/sh-# Configuration validation subroutine script.-#   Copyright 1992-2014 Free Software Foundation, Inc.--timestamp='2014-09-11'--# This file is free software; you can redistribute it and/or modify it-# under the terms of the GNU General Public License as published by-# the Free Software Foundation; either version 3 of the License, or-# (at your option) any later version.-#-# This program 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-# General Public License for more details.-#-# You should have received a copy of the GNU General Public License-# along with this program; if not, see <http://www.gnu.org/licenses/>.-#-# As a special exception to the GNU General Public License, if you-# distribute this file as part of a program that contains a-# configuration script generated by Autoconf, you may include it under-# the same distribution terms that you use for the rest of that-# program.  This Exception is an additional permission under section 7-# of the GNU General Public License, version 3 ("GPLv3").---# Please send patches with a ChangeLog entry to config-patches@gnu.org.-#-# Configuration subroutine to validate and canonicalize a configuration type.-# Supply the specified configuration type as an argument.-# If it is invalid, we print an error message on stderr and exit with code 1.-# Otherwise, we print the canonical config type on stdout and succeed.--# You can get the latest version of this script from:-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD--# This file is supposed to be the same for all GNU packages-# and recognize all the CPU types, system types and aliases-# that are meaningful with *any* GNU software.-# Each package is responsible for reporting which valid configurations-# it does not support.  The user should be able to distinguish-# a failure to support a valid configuration from a meaningless-# configuration.--# The goal of this file is to map all the various variations of a given-# machine specification into a single specification in the form:-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM-# or in some cases, the newer four-part form:-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM-# It is wrong to echo any other type of specification.--me=`echo "$0" | sed -e 's,.*/,,'`--usage="\-Usage: $0 [OPTION] CPU-MFR-OPSYS-       $0 [OPTION] ALIAS--Canonicalize a configuration name.--Operation modes:-  -h, --help         print this help, then exit-  -t, --time-stamp   print date of last modification, then exit-  -v, --version      print version number, then exit--Report bugs and patches to <config-patches@gnu.org>."--version="\-GNU config.sub ($timestamp)--Copyright 1992-2014 Free Software Foundation, Inc.--This is free software; see the source for copying conditions.  There is NO-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."--help="-Try \`$me --help' for more information."--# Parse command line-while test $# -gt 0 ; do-  case $1 in-    --time-stamp | --time* | -t )-       echo "$timestamp" ; exit ;;-    --version | -v )-       echo "$version" ; exit ;;-    --help | --h* | -h )-       echo "$usage"; exit ;;-    -- )     # Stop option processing-       shift; break ;;-    - )	# Use stdin as input.-       break ;;-    -* )-       echo "$me: invalid option $1$help"-       exit 1 ;;--    *local*)-       # First pass through any local machine types.-       echo $1-       exit ;;--    * )-       break ;;-  esac-done--case $# in- 0) echo "$me: missing argument$help" >&2-    exit 1;;- 1) ;;- *) echo "$me: too many arguments$help" >&2-    exit 1;;-esac--# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).-# Here we must recognize all the valid KERNEL-OS combinations.-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`-case $maybe_os in-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \-  knetbsd*-gnu* | netbsd*-gnu* | \-  kopensolaris*-gnu* | \-  storm-chaos* | os2-emx* | rtmk-nova*)-    os=-$maybe_os-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-    ;;-  android-linux)-    os=-linux-android-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown-    ;;-  *)-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`-    if [ $basic_machine != $1 ]-    then os=`echo $1 | sed 's/.*-/-/'`-    else os=; fi-    ;;-esac--### Let's recognize common machines as not being operating systems so-### that things like config.sub decstation-3100 work.  We also-### recognize some manufacturers as not being operating systems, so we-### can provide default operating systems below.-case $os in-	-sun*os*)-		# Prevent following clause from handling this invalid input.-		;;-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \-	-apple | -axis | -knuth | -cray | -microblaze*)-		os=-		basic_machine=$1-		;;-	-bluegene*)-		os=-cnk-		;;-	-sim | -cisco | -oki | -wec | -winbond)-		os=-		basic_machine=$1-		;;-	-scout)-		;;-	-wrs)-		os=-vxworks-		basic_machine=$1-		;;-	-chorusos*)-		os=-chorusos-		basic_machine=$1-		;;-	-chorusrdb)-		os=-chorusrdb-		basic_machine=$1-		;;-	-hiux*)-		os=-hiuxwe2-		;;-	-sco6)-		os=-sco5v6-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-sco5)-		os=-sco3.2v5-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-sco4)-		os=-sco3.2v4-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-sco3.2.[4-9]*)-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-sco3.2v[4-9]*)-		# Don't forget version if it is 3.2v4 or newer.-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-sco5v6*)-		# Don't forget version if it is 3.2v4 or newer.-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-sco*)-		os=-sco3.2v2-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-udk*)-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-isc)-		os=-isc2.2-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-clix*)-		basic_machine=clipper-intergraph-		;;-	-isc*)-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`-		;;-	-lynx*178)-		os=-lynxos178-		;;-	-lynx*5)-		os=-lynxos5-		;;-	-lynx*)-		os=-lynxos-		;;-	-ptx*)-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`-		;;-	-windowsnt*)-		os=`echo $os | sed -e 's/windowsnt/winnt/'`-		;;-	-psos*)-		os=-psos-		;;-	-mint | -mint[0-9]*)-		basic_machine=m68k-atari-		os=-mint-		;;-esac--# Decode aliases for certain CPU-COMPANY combinations.-case $basic_machine in-	# Recognize the basic CPU types without company name.-	# Some are omitted here because they have special meanings below.-	1750a | 580 \-	| a29k \-	| aarch64 | aarch64_be \-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \-	| am33_2.0 \-	| arc | arceb \-	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \-	| avr | avr32 \-	| be32 | be64 \-	| bfin \-	| c4x | c8051 | clipper \-	| d10v | d30v | dlx | dsp16xx \-	| epiphany \-	| fido | fr30 | frv \-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \-	| hexagon \-	| i370 | i860 | i960 | ia64 \-	| ip2k | iq2000 \-	| k1om \-	| le32 | le64 \-	| lm32 \-	| m32c | m32r | m32rle | m68000 | m68k | m88k \-	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \-	| mips | mipsbe | mipseb | mipsel | mipsle \-	| mips16 \-	| mips64 | mips64el \-	| mips64octeon | mips64octeonel \-	| mips64orion | mips64orionel \-	| mips64r5900 | mips64r5900el \-	| mips64vr | mips64vrel \-	| mips64vr4100 | mips64vr4100el \-	| mips64vr4300 | mips64vr4300el \-	| mips64vr5000 | mips64vr5000el \-	| mips64vr5900 | mips64vr5900el \-	| mipsisa32 | mipsisa32el \-	| mipsisa32r2 | mipsisa32r2el \-	| mipsisa32r6 | mipsisa32r6el \-	| mipsisa64 | mipsisa64el \-	| mipsisa64r2 | mipsisa64r2el \-	| mipsisa64r6 | mipsisa64r6el \-	| mipsisa64sb1 | mipsisa64sb1el \-	| mipsisa64sr71k | mipsisa64sr71kel \-	| mipsr5900 | mipsr5900el \-	| mipstx39 | mipstx39el \-	| mn10200 | mn10300 \-	| moxie \-	| mt \-	| msp430 \-	| nds32 | nds32le | nds32be \-	| nios | nios2 | nios2eb | nios2el \-	| ns16k | ns32k \-	| open8 | or1k | or1knd | or32 \-	| pdp10 | pdp11 | pj | pjl \-	| powerpc | powerpc64 | powerpc64le | powerpcle \-	| pyramid \-	| riscv32 | riscv64 \-	| rl78 | rx \-	| score \-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \-	| sh64 | sh64le \-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \-	| spu \-	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \-	| ubicom32 \-	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \-	| we32k \-	| x86 | xc16x | xstormy16 | xtensa \-	| z8k | z80)-		basic_machine=$basic_machine-unknown-		;;-	c54x)-		basic_machine=tic54x-unknown-		;;-	c55x)-		basic_machine=tic55x-unknown-		;;-	c6x)-		basic_machine=tic6x-unknown-		;;-	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)-		basic_machine=$basic_machine-unknown-		os=-none-		;;-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)-		;;-	ms1)-		basic_machine=mt-unknown-		;;--	strongarm | thumb | xscale)-		basic_machine=arm-unknown-		;;-	xgate)-		basic_machine=$basic_machine-unknown-		os=-none-		;;-	xscaleeb)-		basic_machine=armeb-unknown-		;;--	xscaleel)-		basic_machine=armel-unknown-		;;--	# We use `pc' rather than `unknown'-	# because (1) that's what they normally are, and-	# (2) the word "unknown" tends to confuse beginning users.-	i*86 | x86_64)-	  basic_machine=$basic_machine-pc-	  ;;-	# Object if more than one company name word.-	*-*-*)-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2-		exit 1-		;;-	# Recognize the basic CPU types with company name.-	580-* \-	| a29k-* \-	| aarch64-* | aarch64_be-* \-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \-	| avr-* | avr32-* \-	| be32-* | be64-* \-	| bfin-* | bs2000-* \-	| c[123]* | c30-* | [cjt]90-* | c4x-* \-	| c8051-* | clipper-* | craynv-* | cydra-* \-	| d10v-* | d30v-* | dlx-* \-	| elxsi-* \-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \-	| h8300-* | h8500-* \-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \-	| hexagon-* \-	| i*86-* | i860-* | i960-* | ia64-* \-	| ip2k-* | iq2000-* \-	| k1om-* \-	| le32-* | le64-* \-	| lm32-* \-	| m32c-* | m32r-* | m32rle-* \-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \-	| microblaze-* | microblazeel-* \-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \-	| mips16-* \-	| mips64-* | mips64el-* \-	| mips64octeon-* | mips64octeonel-* \-	| mips64orion-* | mips64orionel-* \-	| mips64r5900-* | mips64r5900el-* \-	| mips64vr-* | mips64vrel-* \-	| mips64vr4100-* | mips64vr4100el-* \-	| mips64vr4300-* | mips64vr4300el-* \-	| mips64vr5000-* | mips64vr5000el-* \-	| mips64vr5900-* | mips64vr5900el-* \-	| mipsisa32-* | mipsisa32el-* \-	| mipsisa32r2-* | mipsisa32r2el-* \-	| mipsisa32r6-* | mipsisa32r6el-* \-	| mipsisa64-* | mipsisa64el-* \-	| mipsisa64r2-* | mipsisa64r2el-* \-	| mipsisa64r6-* | mipsisa64r6el-* \-	| mipsisa64sb1-* | mipsisa64sb1el-* \-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \-	| mipsr5900-* | mipsr5900el-* \-	| mipstx39-* | mipstx39el-* \-	| mmix-* \-	| mt-* \-	| msp430-* \-	| nds32-* | nds32le-* | nds32be-* \-	| nios-* | nios2-* | nios2eb-* | nios2el-* \-	| none-* | np1-* | ns16k-* | ns32k-* \-	| open8-* \-	| or1k*-* \-	| orion-* \-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \-	| pyramid-* \-	| rl78-* | romp-* | rs6000-* | rx-* \-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \-	| sparclite-* \-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \-	| tahoe-* \-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \-	| tile*-* \-	| tron-* \-	| ubicom32-* \-	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \-	| vax-* \-	| we32k-* \-	| x86-* | x86_64-* | xc16x-* | xps100-* \-	| xstormy16-* | xtensa*-* \-	| ymp-* \-	| z8k-* | z80-*)-		;;-	# Recognize the basic CPU types without company name, with glob match.-	xtensa*)-		basic_machine=$basic_machine-unknown-		;;-	# Recognize the various machine names and aliases which stand-	# for a CPU type and a company and sometimes even an OS.-	386bsd)-		basic_machine=i386-unknown-		os=-bsd-		;;-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)-		basic_machine=m68000-att-		;;-	3b*)-		basic_machine=we32k-att-		;;-	a29khif)-		basic_machine=a29k-amd-		os=-udi-		;;-	abacus)-		basic_machine=abacus-unknown-		;;-	adobe68k)-		basic_machine=m68010-adobe-		os=-scout-		;;-	alliant | fx80)-		basic_machine=fx80-alliant-		;;-	altos | altos3068)-		basic_machine=m68k-altos-		;;-	am29k)-		basic_machine=a29k-none-		os=-bsd-		;;-	amd64)-		basic_machine=x86_64-pc-		;;-	amd64-*)-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	amdahl)-		basic_machine=580-amdahl-		os=-sysv-		;;-	amiga | amiga-*)-		basic_machine=m68k-unknown-		;;-	amigaos | amigados)-		basic_machine=m68k-unknown-		os=-amigaos-		;;-	amigaunix | amix)-		basic_machine=m68k-unknown-		os=-sysv4-		;;-	apollo68)-		basic_machine=m68k-apollo-		os=-sysv-		;;-	apollo68bsd)-		basic_machine=m68k-apollo-		os=-bsd-		;;-	aros)-		basic_machine=i386-pc-		os=-aros-		;;-	aux)-		basic_machine=m68k-apple-		os=-aux-		;;-	balance)-		basic_machine=ns32k-sequent-		os=-dynix-		;;-	blackfin)-		basic_machine=bfin-unknown-		os=-linux-		;;-	blackfin-*)-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`-		os=-linux-		;;-	bluegene*)-		basic_machine=powerpc-ibm-		os=-cnk-		;;-	c54x-*)-		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	c55x-*)-		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	c6x-*)-		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	c90)-		basic_machine=c90-cray-		os=-unicos-		;;-	cegcc)-		basic_machine=arm-unknown-		os=-cegcc-		;;-	convex-c1)-		basic_machine=c1-convex-		os=-bsd-		;;-	convex-c2)-		basic_machine=c2-convex-		os=-bsd-		;;-	convex-c32)-		basic_machine=c32-convex-		os=-bsd-		;;-	convex-c34)-		basic_machine=c34-convex-		os=-bsd-		;;-	convex-c38)-		basic_machine=c38-convex-		os=-bsd-		;;-	cray | j90)-		basic_machine=j90-cray-		os=-unicos-		;;-	craynv)-		basic_machine=craynv-cray-		os=-unicosmp-		;;-	cr16 | cr16-*)-		basic_machine=cr16-unknown-		os=-elf-		;;-	crds | unos)-		basic_machine=m68k-crds-		;;-	crisv32 | crisv32-* | etraxfs*)-		basic_machine=crisv32-axis-		;;-	cris | cris-* | etrax*)-		basic_machine=cris-axis-		;;-	crx)-		basic_machine=crx-unknown-		os=-elf-		;;-	da30 | da30-*)-		basic_machine=m68k-da30-		;;-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)-		basic_machine=mips-dec-		;;-	decsystem10* | dec10*)-		basic_machine=pdp10-dec-		os=-tops10-		;;-	decsystem20* | dec20*)-		basic_machine=pdp10-dec-		os=-tops20-		;;-	delta | 3300 | motorola-3300 | motorola-delta \-	      | 3300-motorola | delta-motorola)-		basic_machine=m68k-motorola-		;;-	delta88)-		basic_machine=m88k-motorola-		os=-sysv3-		;;-	dicos)-		basic_machine=i686-pc-		os=-dicos-		;;-	djgpp)-		basic_machine=i586-pc-		os=-msdosdjgpp-		;;-	dpx20 | dpx20-*)-		basic_machine=rs6000-bull-		os=-bosx-		;;-	dpx2* | dpx2*-bull)-		basic_machine=m68k-bull-		os=-sysv3-		;;-	ebmon29k)-		basic_machine=a29k-amd-		os=-ebmon-		;;-	elxsi)-		basic_machine=elxsi-elxsi-		os=-bsd-		;;-	encore | umax | mmax)-		basic_machine=ns32k-encore-		;;-	es1800 | OSE68k | ose68k | ose | OSE)-		basic_machine=m68k-ericsson-		os=-ose-		;;-	fx2800)-		basic_machine=i860-alliant-		;;-	genix)-		basic_machine=ns32k-ns-		;;-	gmicro)-		basic_machine=tron-gmicro-		os=-sysv-		;;-	go32)-		basic_machine=i386-pc-		os=-go32-		;;-	h3050r* | hiux*)-		basic_machine=hppa1.1-hitachi-		os=-hiuxwe2-		;;-	h8300hms)-		basic_machine=h8300-hitachi-		os=-hms-		;;-	h8300xray)-		basic_machine=h8300-hitachi-		os=-xray-		;;-	h8500hms)-		basic_machine=h8500-hitachi-		os=-hms-		;;-	harris)-		basic_machine=m88k-harris-		os=-sysv3-		;;-	hp300-*)-		basic_machine=m68k-hp-		;;-	hp300bsd)-		basic_machine=m68k-hp-		os=-bsd-		;;-	hp300hpux)-		basic_machine=m68k-hp-		os=-hpux-		;;-	hp3k9[0-9][0-9] | hp9[0-9][0-9])-		basic_machine=hppa1.0-hp-		;;-	hp9k2[0-9][0-9] | hp9k31[0-9])-		basic_machine=m68000-hp-		;;-	hp9k3[2-9][0-9])-		basic_machine=m68k-hp-		;;-	hp9k6[0-9][0-9] | hp6[0-9][0-9])-		basic_machine=hppa1.0-hp-		;;-	hp9k7[0-79][0-9] | hp7[0-79][0-9])-		basic_machine=hppa1.1-hp-		;;-	hp9k78[0-9] | hp78[0-9])-		# FIXME: really hppa2.0-hp-		basic_machine=hppa1.1-hp-		;;-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)-		# FIXME: really hppa2.0-hp-		basic_machine=hppa1.1-hp-		;;-	hp9k8[0-9][13679] | hp8[0-9][13679])-		basic_machine=hppa1.1-hp-		;;-	hp9k8[0-9][0-9] | hp8[0-9][0-9])-		basic_machine=hppa1.0-hp-		;;-	hppa-next)-		os=-nextstep3-		;;-	hppaosf)-		basic_machine=hppa1.1-hp-		os=-osf-		;;-	hppro)-		basic_machine=hppa1.1-hp-		os=-proelf-		;;-	i370-ibm* | ibm*)-		basic_machine=i370-ibm-		;;-	i*86v32)-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`-		os=-sysv32-		;;-	i*86v4*)-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`-		os=-sysv4-		;;-	i*86v)-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`-		os=-sysv-		;;-	i*86sol2)-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`-		os=-solaris2-		;;-	i386mach)-		basic_machine=i386-mach-		os=-mach-		;;-	i386-vsta | vsta)-		basic_machine=i386-unknown-		os=-vsta-		;;-	iris | iris4d)-		basic_machine=mips-sgi-		case $os in-		    -irix*)-			;;-		    *)-			os=-irix4-			;;-		esac-		;;-	isi68 | isi)-		basic_machine=m68k-isi-		os=-sysv-		;;-	m68knommu)-		basic_machine=m68k-unknown-		os=-linux-		;;-	m68knommu-*)-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`-		os=-linux-		;;-	m88k-omron*)-		basic_machine=m88k-omron-		;;-	magnum | m3230)-		basic_machine=mips-mips-		os=-sysv-		;;-	merlin)-		basic_machine=ns32k-utek-		os=-sysv-		;;-	microblaze*)-		basic_machine=microblaze-xilinx-		;;-	mingw64)-		basic_machine=x86_64-pc-		os=-mingw64-		;;-	mingw32)-		basic_machine=i686-pc-		os=-mingw32-		;;-	mingw32ce)-		basic_machine=arm-unknown-		os=-mingw32ce-		;;-	miniframe)-		basic_machine=m68000-convergent-		;;-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)-		basic_machine=m68k-atari-		os=-mint-		;;-	mips3*-*)-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-		;;-	mips3*)-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown-		;;-	monitor)-		basic_machine=m68k-rom68k-		os=-coff-		;;-	morphos)-		basic_machine=powerpc-unknown-		os=-morphos-		;;-	moxiebox)-		basic_machine=moxie-unknown-		os=-moxiebox-		;;-	msdos)-		basic_machine=i386-pc-		os=-msdos-		;;-	ms1-*)-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`-		;;-	msys)-		basic_machine=i686-pc-		os=-msys-		;;-	mvs)-		basic_machine=i370-ibm-		os=-mvs-		;;-	nacl)-		basic_machine=le32-unknown-		os=-nacl-		;;-	ncr3000)-		basic_machine=i486-ncr-		os=-sysv4-		;;-	netbsd386)-		basic_machine=i386-unknown-		os=-netbsd-		;;-	netwinder)-		basic_machine=armv4l-rebel-		os=-linux-		;;-	news | news700 | news800 | news900)-		basic_machine=m68k-sony-		os=-newsos-		;;-	news1000)-		basic_machine=m68030-sony-		os=-newsos-		;;-	news-3600 | risc-news)-		basic_machine=mips-sony-		os=-newsos-		;;-	necv70)-		basic_machine=v70-nec-		os=-sysv-		;;-	next | m*-next )-		basic_machine=m68k-next-		case $os in-		    -nextstep* )-			;;-		    -ns2*)-		      os=-nextstep2-			;;-		    *)-		      os=-nextstep3-			;;-		esac-		;;-	nh3000)-		basic_machine=m68k-harris-		os=-cxux-		;;-	nh[45]000)-		basic_machine=m88k-harris-		os=-cxux-		;;-	nindy960)-		basic_machine=i960-intel-		os=-nindy-		;;-	mon960)-		basic_machine=i960-intel-		os=-mon960-		;;-	nonstopux)-		basic_machine=mips-compaq-		os=-nonstopux-		;;-	np1)-		basic_machine=np1-gould-		;;-	neo-tandem)-		basic_machine=neo-tandem-		;;-	nse-tandem)-		basic_machine=nse-tandem-		;;-	nsr-tandem)-		basic_machine=nsr-tandem-		;;-	op50n-* | op60c-*)-		basic_machine=hppa1.1-oki-		os=-proelf-		;;-	openrisc | openrisc-*)-		basic_machine=or32-unknown-		;;-	os400)-		basic_machine=powerpc-ibm-		os=-os400-		;;-	OSE68000 | ose68000)-		basic_machine=m68000-ericsson-		os=-ose-		;;-	os68k)-		basic_machine=m68k-none-		os=-os68k-		;;-	pa-hitachi)-		basic_machine=hppa1.1-hitachi-		os=-hiuxwe2-		;;-	paragon)-		basic_machine=i860-intel-		os=-osf-		;;-	parisc)-		basic_machine=hppa-unknown-		os=-linux-		;;-	parisc-*)-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`-		os=-linux-		;;-	pbd)-		basic_machine=sparc-tti-		;;-	pbb)-		basic_machine=m68k-tti-		;;-	pc532 | pc532-*)-		basic_machine=ns32k-pc532-		;;-	pc98)-		basic_machine=i386-pc-		;;-	pc98-*)-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	pentium | p5 | k5 | k6 | nexgen | viac3)-		basic_machine=i586-pc-		;;-	pentiumpro | p6 | 6x86 | athlon | athlon_*)-		basic_machine=i686-pc-		;;-	pentiumii | pentium2 | pentiumiii | pentium3)-		basic_machine=i686-pc-		;;-	pentium4)-		basic_machine=i786-pc-		;;-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	pentiumpro-* | p6-* | 6x86-* | athlon-*)-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	pentium4-*)-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	pn)-		basic_machine=pn-gould-		;;-	power)	basic_machine=power-ibm-		;;-	ppc | ppcbe)	basic_machine=powerpc-unknown-		;;-	ppc-* | ppcbe-*)-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	ppcle | powerpclittle | ppc-le | powerpc-little)-		basic_machine=powerpcle-unknown-		;;-	ppcle-* | powerpclittle-*)-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	ppc64)	basic_machine=powerpc64-unknown-		;;-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)-		basic_machine=powerpc64le-unknown-		;;-	ppc64le-* | powerpc64little-*)-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	ps2)-		basic_machine=i386-ibm-		;;-	pw32)-		basic_machine=i586-unknown-		os=-pw32-		;;-	rdos | rdos64)-		basic_machine=x86_64-pc-		os=-rdos-		;;-	rdos32)-		basic_machine=i386-pc-		os=-rdos-		;;-	rom68k)-		basic_machine=m68k-rom68k-		os=-coff-		;;-	rm[46]00)-		basic_machine=mips-siemens-		;;-	rtpc | rtpc-*)-		basic_machine=romp-ibm-		;;-	s390 | s390-*)-		basic_machine=s390-ibm-		;;-	s390x | s390x-*)-		basic_machine=s390x-ibm-		;;-	sa29200)-		basic_machine=a29k-amd-		os=-udi-		;;-	sb1)-		basic_machine=mipsisa64sb1-unknown-		;;-	sb1el)-		basic_machine=mipsisa64sb1el-unknown-		;;-	sde)-		basic_machine=mipsisa32-sde-		os=-elf-		;;-	sei)-		basic_machine=mips-sei-		os=-seiux-		;;-	sequent)-		basic_machine=i386-sequent-		;;-	sh)-		basic_machine=sh-hitachi-		os=-hms-		;;-	sh5el)-		basic_machine=sh5le-unknown-		;;-	sh64)-		basic_machine=sh64-unknown-		;;-	sparclite-wrs | simso-wrs)-		basic_machine=sparclite-wrs-		os=-vxworks-		;;-	sps7)-		basic_machine=m68k-bull-		os=-sysv2-		;;-	spur)-		basic_machine=spur-unknown-		;;-	st2000)-		basic_machine=m68k-tandem-		;;-	stratus)-		basic_machine=i860-stratus-		os=-sysv4-		;;-	strongarm-* | thumb-*)-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`-		;;-	sun2)-		basic_machine=m68000-sun-		;;-	sun2os3)-		basic_machine=m68000-sun-		os=-sunos3-		;;-	sun2os4)-		basic_machine=m68000-sun-		os=-sunos4-		;;-	sun3os3)-		basic_machine=m68k-sun-		os=-sunos3-		;;-	sun3os4)-		basic_machine=m68k-sun-		os=-sunos4-		;;-	sun4os3)-		basic_machine=sparc-sun-		os=-sunos3-		;;-	sun4os4)-		basic_machine=sparc-sun-		os=-sunos4-		;;-	sun4sol2)-		basic_machine=sparc-sun-		os=-solaris2-		;;-	sun3 | sun3-*)-		basic_machine=m68k-sun-		;;-	sun4)-		basic_machine=sparc-sun-		;;-	sun386 | sun386i | roadrunner)-		basic_machine=i386-sun-		;;-	sv1)-		basic_machine=sv1-cray-		os=-unicos-		;;-	symmetry)-		basic_machine=i386-sequent-		os=-dynix-		;;-	t3e)-		basic_machine=alphaev5-cray-		os=-unicos-		;;-	t90)-		basic_machine=t90-cray-		os=-unicos-		;;-	tile*)-		basic_machine=$basic_machine-unknown-		os=-linux-gnu-		;;-	tx39)-		basic_machine=mipstx39-unknown-		;;-	tx39el)-		basic_machine=mipstx39el-unknown-		;;-	toad1)-		basic_machine=pdp10-xkl-		os=-tops20-		;;-	tower | tower-32)-		basic_machine=m68k-ncr-		;;-	tpf)-		basic_machine=s390x-ibm-		os=-tpf-		;;-	udi29k)-		basic_machine=a29k-amd-		os=-udi-		;;-	ultra3)-		basic_machine=a29k-nyu-		os=-sym1-		;;-	v810 | necv810)-		basic_machine=v810-nec-		os=-none-		;;-	vaxv)-		basic_machine=vax-dec-		os=-sysv-		;;-	vms)-		basic_machine=vax-dec-		os=-vms-		;;-	vpp*|vx|vx-*)-		basic_machine=f301-fujitsu-		;;-	vxworks960)-		basic_machine=i960-wrs-		os=-vxworks-		;;-	vxworks68)-		basic_machine=m68k-wrs-		os=-vxworks-		;;-	vxworks29k)-		basic_machine=a29k-wrs-		os=-vxworks-		;;-	w65*)-		basic_machine=w65-wdc-		os=-none-		;;-	w89k-*)-		basic_machine=hppa1.1-winbond-		os=-proelf-		;;-	xbox)-		basic_machine=i686-pc-		os=-mingw32-		;;-	xps | xps100)-		basic_machine=xps100-honeywell-		;;-	xscale-* | xscalee[bl]-*)-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`-		;;-	ymp)-		basic_machine=ymp-cray-		os=-unicos-		;;-	z8k-*-coff)-		basic_machine=z8k-unknown-		os=-sim-		;;-	z80-*-coff)-		basic_machine=z80-unknown-		os=-sim-		;;-	none)-		basic_machine=none-none-		os=-none-		;;--# Here we handle the default manufacturer of certain CPU types.  It is in-# some cases the only manufacturer, in others, it is the most popular.-	w89k)-		basic_machine=hppa1.1-winbond-		;;-	op50n)-		basic_machine=hppa1.1-oki-		;;-	op60c)-		basic_machine=hppa1.1-oki-		;;-	romp)-		basic_machine=romp-ibm-		;;-	mmix)-		basic_machine=mmix-knuth-		;;-	rs6000)-		basic_machine=rs6000-ibm-		;;-	vax)-		basic_machine=vax-dec-		;;-	pdp10)-		# there are many clones, so DEC is not a safe bet-		basic_machine=pdp10-unknown-		;;-	pdp11)-		basic_machine=pdp11-dec-		;;-	we32k)-		basic_machine=we32k-att-		;;-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)-		basic_machine=sh-unknown-		;;-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)-		basic_machine=sparc-sun-		;;-	cydra)-		basic_machine=cydra-cydrome-		;;-	orion)-		basic_machine=orion-highlevel-		;;-	orion105)-		basic_machine=clipper-highlevel-		;;-	mac | mpw | mac-mpw)-		basic_machine=m68k-apple-		;;-	pmac | pmac-mpw)-		basic_machine=powerpc-apple-		;;-	*-unknown)-		# Make sure to match an already-canonicalized machine name.-		;;-	*)-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2-		exit 1-		;;-esac--# Here we canonicalize certain aliases for manufacturers.-case $basic_machine in-	*-digital*)-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`-		;;-	*-commodore*)-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`-		;;-	*)-		;;-esac--# Decode manufacturer-specific aliases for certain operating systems.--if [ x"$os" != x"" ]-then-case $os in-	# First match some system type aliases-	# that might get confused with valid system types.-	# -solaris* is a basic system type, with this one exception.-	-auroraux)-		os=-auroraux-		;;-	-solaris1 | -solaris1.*)-		os=`echo $os | sed -e 's|solaris1|sunos4|'`-		;;-	-solaris)-		os=-solaris2-		;;-	-svr4*)-		os=-sysv4-		;;-	-unixware*)-		os=-sysv4.2uw-		;;-	-gnu/linux*)-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`-		;;-	# First accept the basic system types.-	# The portable systems comes first.-	# Each alternative MUST END IN A *, to match a version number.-	# -sysv* is not here because it comes later, after sysvr4.-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \-	      | -sym* | -kopensolaris* | -plan9* \-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \-	      | -aos* | -aros* \-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \-	      | -bitrig* | -openbsd* | -solidbsd* \-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \-	      | -chorusos* | -chorusrdb* | -cegcc* \-	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \-	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \-	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)-	# Remember, each alternative MUST END IN *, to match a version number.-		;;-	-qnx*)-		case $basic_machine in-		    x86-* | i*86-*)-			;;-		    *)-			os=-nto$os-			;;-		esac-		;;-	-nto-qnx*)-		;;-	-nto*)-		os=`echo $os | sed -e 's|nto|nto-qnx|'`-		;;-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)-		;;-	-mac*)-		os=`echo $os | sed -e 's|mac|macos|'`-		;;-	-linux-dietlibc)-		os=-linux-dietlibc-		;;-	-linux*)-		os=`echo $os | sed -e 's|linux|linux-gnu|'`-		;;-	-sunos5*)-		os=`echo $os | sed -e 's|sunos5|solaris2|'`-		;;-	-sunos6*)-		os=`echo $os | sed -e 's|sunos6|solaris3|'`-		;;-	-opened*)-		os=-openedition-		;;-	-os400*)-		os=-os400-		;;-	-wince*)-		os=-wince-		;;-	-osfrose*)-		os=-osfrose-		;;-	-osf*)-		os=-osf-		;;-	-utek*)-		os=-bsd-		;;-	-dynix*)-		os=-bsd-		;;-	-acis*)-		os=-aos-		;;-	-atheos*)-		os=-atheos-		;;-	-syllable*)-		os=-syllable-		;;-	-386bsd)-		os=-bsd-		;;-	-ctix* | -uts*)-		os=-sysv-		;;-	-nova*)-		os=-rtmk-nova-		;;-	-ns2 )-		os=-nextstep2-		;;-	-nsk*)-		os=-nsk-		;;-	# Preserve the version number of sinix5.-	-sinix5.*)-		os=`echo $os | sed -e 's|sinix|sysv|'`-		;;-	-sinix*)-		os=-sysv4-		;;-	-tpf*)-		os=-tpf-		;;-	-triton*)-		os=-sysv3-		;;-	-oss*)-		os=-sysv3-		;;-	-svr4)-		os=-sysv4-		;;-	-svr3)-		os=-sysv3-		;;-	-sysvr4)-		os=-sysv4-		;;-	# This must come after -sysvr4.-	-sysv*)-		;;-	-ose*)-		os=-ose-		;;-	-es1800*)-		os=-ose-		;;-	-xenix)-		os=-xenix-		;;-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)-		os=-mint-		;;-	-aros*)-		os=-aros-		;;-	-zvmoe)-		os=-zvmoe-		;;-	-dicos*)-		os=-dicos-		;;-	-nacl*)-		;;-	-none)-		;;-	*)-		# Get rid of the `-' at the beginning of $os.-		os=`echo $os | sed 's/[^-]*-//'`-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2-		exit 1-		;;-esac-else--# Here we handle the default operating systems that come with various machines.-# The value should be what the vendor currently ships out the door with their-# machine or put another way, the most popular os provided with the machine.--# Note that if you're going to try to match "-MANUFACTURER" here (say,-# "-sun"), then you have to tell the case statement up towards the top-# that MANUFACTURER isn't an operating system.  Otherwise, code above-# will signal an error saying that MANUFACTURER isn't an operating-# system, and we'll never get to this point.--case $basic_machine in-	score-*)-		os=-elf-		;;-	spu-*)-		os=-elf-		;;-	*-acorn)-		os=-riscix1.2-		;;-	arm*-rebel)-		os=-linux-		;;-	arm*-semi)-		os=-aout-		;;-	c4x-* | tic4x-*)-		os=-coff-		;;-	c8051-*)-		os=-elf-		;;-	hexagon-*)-		os=-elf-		;;-	tic54x-*)-		os=-coff-		;;-	tic55x-*)-		os=-coff-		;;-	tic6x-*)-		os=-coff-		;;-	# This must come before the *-dec entry.-	pdp10-*)-		os=-tops20-		;;-	pdp11-*)-		os=-none-		;;-	*-dec | vax-*)-		os=-ultrix4.2-		;;-	m68*-apollo)-		os=-domain-		;;-	i386-sun)-		os=-sunos4.0.2-		;;-	m68000-sun)-		os=-sunos3-		;;-	m68*-cisco)-		os=-aout-		;;-	mep-*)-		os=-elf-		;;-	mips*-cisco)-		os=-elf-		;;-	mips*-*)-		os=-elf-		;;-	or32-*)-		os=-coff-		;;-	*-tti)	# must be before sparc entry or we get the wrong os.-		os=-sysv3-		;;-	sparc-* | *-sun)-		os=-sunos4.1.1-		;;-	*-be)-		os=-beos-		;;-	*-haiku)-		os=-haiku-		;;-	*-ibm)-		os=-aix-		;;-	*-knuth)-		os=-mmixware-		;;-	*-wec)-		os=-proelf-		;;-	*-winbond)-		os=-proelf-		;;-	*-oki)-		os=-proelf-		;;-	*-hp)-		os=-hpux-		;;-	*-hitachi)-		os=-hiux-		;;-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)-		os=-sysv-		;;-	*-cbm)-		os=-amigaos-		;;-	*-dg)-		os=-dgux-		;;-	*-dolphin)-		os=-sysv3-		;;-	m68k-ccur)-		os=-rtu-		;;-	m88k-omron*)-		os=-luna-		;;-	*-next )-		os=-nextstep-		;;-	*-sequent)-		os=-ptx-		;;-	*-crds)-		os=-unos-		;;-	*-ns)-		os=-genix-		;;-	i370-*)-		os=-mvs-		;;-	*-next)-		os=-nextstep3-		;;-	*-gould)-		os=-sysv-		;;-	*-highlevel)-		os=-bsd-		;;-	*-encore)-		os=-bsd-		;;-	*-sgi)-		os=-irix-		;;-	*-siemens)-		os=-sysv4-		;;-	*-masscomp)-		os=-rtu-		;;-	f30[01]-fujitsu | f700-fujitsu)-		os=-uxpv-		;;-	*-rom68k)-		os=-coff-		;;-	*-*bug)-		os=-coff-		;;-	*-apple)-		os=-macos-		;;-	*-atari*)-		os=-mint-		;;-	*)-		os=-none-		;;-esac-fi--# Here we handle the case where we know the os, and the CPU type, but not the-# manufacturer.  We pick the logical manufacturer.-vendor=unknown-case $basic_machine in-	*-unknown)-		case $os in-			-riscix*)-				vendor=acorn-				;;-			-sunos*)-				vendor=sun-				;;-			-cnk*|-aix*)-				vendor=ibm-				;;-			-beos*)-				vendor=be-				;;-			-hpux*)-				vendor=hp-				;;-			-mpeix*)-				vendor=hp-				;;-			-hiux*)-				vendor=hitachi-				;;-			-unos*)-				vendor=crds-				;;-			-dgux*)-				vendor=dg-				;;-			-luna*)-				vendor=omron-				;;-			-genix*)-				vendor=ns-				;;-			-mvs* | -opened*)-				vendor=ibm-				;;-			-os400*)-				vendor=ibm-				;;-			-ptx*)-				vendor=sequent-				;;-			-tpf*)-				vendor=ibm-				;;-			-vxsim* | -vxworks* | -windiss*)-				vendor=wrs-				;;-			-aux*)-				vendor=apple-				;;-			-hms*)-				vendor=hitachi-				;;-			-mpw* | -macos*)-				vendor=apple-				;;-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)-				vendor=atari-				;;-			-vos*)-				vendor=stratus-				;;-		esac-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`-		;;-esac--echo $basic_machine$os-exit--# Local variables:-# eval: (add-hook 'write-file-hooks 'time-stamp)-# time-stamp-start: "timestamp='"-# time-stamp-format: "%:y-%02m-%02d"-# time-stamp-end: "'"-# End:
− standalone/android/tmp/network-2.4.1.2/configure
@@ -1,5327 +0,0 @@-#! /bin/sh-set -- --host=arm-linux-androideabi-# Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.69 for Haskell network package 2.3.0.14.-#-# Report bugs to <libraries@haskell.org>.-#-#-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.-#-#-# This configure script is free software; the Free Software Foundation-# gives unlimited permission to copy, distribute and modify it.-## -------------------- ##-## M4sh Initialization. ##-## -------------------- ##--# Be more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :-  emulate sh-  NULLCMD=:-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '${1+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in #(-  *posix*) :-    set -o posix ;; #(-  *) :-     ;;-esac-fi---as_nl='-'-export as_nl-# Printing a long string crashes Solaris 7 /usr/bin/printf.-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo-# Prefer a ksh shell builtin over an external printf program on Solaris,-# but without wasting forks for bash or zsh.-if test -z "$BASH_VERSION$ZSH_VERSION" \-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='print -r --'-  as_echo_n='print -rn --'-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='printf %s\n'-  as_echo_n='printf %s'-else-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'-    as_echo_n='/usr/ucb/echo -n'-  else-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'-    as_echo_n_body='eval-      arg=$1;-      case $arg in #(-      *"$as_nl"*)-	expr "X$arg" : "X\\(.*\\)$as_nl";-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;-      esac;-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"-    '-    export as_echo_n_body-    as_echo_n='sh -c $as_echo_n_body as_echo'-  fi-  export as_echo_body-  as_echo='sh -c $as_echo_body as_echo'-fi--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then-  PATH_SEPARATOR=:-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||-      PATH_SEPARATOR=';'-  }-fi---# IFS-# We need space, tab and new line, in precisely that order.  Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-IFS=" ""	$as_nl"--# Find who we are.  Look in the path if we contain no directory separator.-as_myself=-case $0 in #((-  *[\\/]* ) as_myself=$0 ;;-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-  done-IFS=$as_save_IFS--     ;;-esac-# We did not find ourselves, most probably we were run as `sh COMMAND'-# in which case we are not to be found in the path.-if test "x$as_myself" = x; then-  as_myself=$0-fi-if test ! -f "$as_myself"; then-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2-  exit 1-fi--# Unset variables that we do not need and which cause bugs (e.g. in-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"-# suppresses any "Segmentation fault" message there.  '((' could-# trigger a bug in pdksh 5.2.14.-for as_var in BASH_ENV ENV MAIL MAILPATH-do eval test x\${$as_var+set} = xset \-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :-done-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-LC_ALL=C-export LC_ALL-LANGUAGE=C-export LANGUAGE--# CDPATH.-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH--# Use a proper internal environment variable to ensure we don't fall-  # into an infinite loop, continuously re-executing ourselves.-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then-    _as_can_reexec=no; export _as_can_reexec;-    # We cannot yet assume a decent shell, so we have to provide a-# neutralization value for shells without unset; and this also-# works around shells that cannot unset nonexistent variables.-# Preserve -v and -x to the replacement shell.-BASH_ENV=/dev/null-ENV=/dev/null-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV-case $- in # ((((-  *v*x* | *x*v* ) as_opts=-vx ;;-  *v* ) as_opts=-v ;;-  *x* ) as_opts=-x ;;-  * ) as_opts= ;;-esac-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}-# Admittedly, this is quite paranoid, since all the known shells bail-# out after a failed `exec'.-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2-as_fn_exit 255-  fi-  # We don't want this to propagate to other subprocesses.-          { _as_can_reexec=; unset _as_can_reexec;}-if test "x$CONFIG_SHELL" = x; then-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :-  emulate sh-  NULLCMD=:-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '\${1+\"\$@\"}'='\"\$@\"'-  setopt NO_GLOB_SUBST-else-  case \`(set -o) 2>/dev/null\` in #(-  *posix*) :-    set -o posix ;; #(-  *) :-     ;;-esac-fi-"-  as_required="as_fn_return () { (exit \$1); }-as_fn_success () { as_fn_return 0; }-as_fn_failure () { as_fn_return 1; }-as_fn_ret_success () { return 0; }-as_fn_ret_failure () { return 1; }--exitcode=0-as_fn_success || { exitcode=1; echo as_fn_success failed.; }-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :--else-  exitcode=1; echo positional parameters were not saved.-fi-test x\$exitcode = x0 || exit 1-test -x / || exit 1"-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1-test \$(( 1 + 1 )) = 2 || exit 1"-  if (eval "$as_required") 2>/dev/null; then :-  as_have_required=yes-else-  as_have_required=no-fi-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :--else-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-as_found=false-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  as_found=:-  case $as_dir in #(-	 /*)-	   for as_base in sh bash ksh sh5; do-	     # Try only shells that exist, to save several forks.-	     as_shell=$as_dir/$as_base-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :-  CONFIG_SHELL=$as_shell as_have_required=yes-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :-  break 2-fi-fi-	   done;;-       esac-  as_found=false-done-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :-  CONFIG_SHELL=$SHELL as_have_required=yes-fi; }-IFS=$as_save_IFS---      if test "x$CONFIG_SHELL" != x; then :-  export CONFIG_SHELL-             # We cannot yet assume a decent shell, so we have to provide a-# neutralization value for shells without unset; and this also-# works around shells that cannot unset nonexistent variables.-# Preserve -v and -x to the replacement shell.-BASH_ENV=/dev/null-ENV=/dev/null-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV-case $- in # ((((-  *v*x* | *x*v* ) as_opts=-vx ;;-  *v* ) as_opts=-v ;;-  *x* ) as_opts=-x ;;-  * ) as_opts= ;;-esac-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}-# Admittedly, this is quite paranoid, since all the known shells bail-# out after a failed `exec'.-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2-exit 255-fi--    if test x$as_have_required = xno; then :-  $as_echo "$0: This script requires a shell more modern than all"-  $as_echo "$0: the shells that I found on your system."-  if test x${ZSH_VERSION+set} = xset ; then-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."-  else-    $as_echo "$0: Please tell bug-autoconf@gnu.org and-$0: libraries@haskell.org about your system, including any-$0: error possibly output before this message. Then install-$0: a modern shell, or manually run the script under such a-$0: shell if you do have one."-  fi-  exit 1-fi-fi-fi-SHELL=${CONFIG_SHELL-/bin/sh}-export SHELL-# Unset more variables known to interfere with behavior of common tools.-CLICOLOR_FORCE= GREP_OPTIONS=-unset CLICOLOR_FORCE GREP_OPTIONS--## --------------------- ##-## M4sh Shell Functions. ##-## --------------------- ##-# as_fn_unset VAR-# ----------------# Portably unset VAR.-as_fn_unset ()-{-  { eval $1=; unset $1;}-}-as_unset=as_fn_unset--# as_fn_set_status STATUS-# ------------------------# Set $? to STATUS, without forking.-as_fn_set_status ()-{-  return $1-} # as_fn_set_status--# as_fn_exit STATUS-# ------------------# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.-as_fn_exit ()-{-  set +e-  as_fn_set_status $1-  exit $1-} # as_fn_exit--# as_fn_mkdir_p-# --------------# Create "$as_dir" as a directory, including parents if necessary.-as_fn_mkdir_p ()-{--  case $as_dir in #(-  -*) as_dir=./$as_dir;;-  esac-  test -d "$as_dir" || eval $as_mkdir_p || {-    as_dirs=-    while :; do-      case $as_dir in #(-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(-      *) as_qdir=$as_dir;;-      esac-      as_dirs="'$as_qdir' $as_dirs"-      as_dir=`$as_dirname -- "$as_dir" ||-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_dir" : 'X\(//\)[^/]' \| \-	 X"$as_dir" : 'X\(//\)$' \| \-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$as_dir" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-      test -d "$as_dir" && break-    done-    test -z "$as_dirs" || eval "mkdir $as_dirs"-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"---} # as_fn_mkdir_p--# as_fn_executable_p FILE-# ------------------------# Test if FILE is an executable regular file.-as_fn_executable_p ()-{-  test -f "$1" && test -x "$1"-} # as_fn_executable_p-# as_fn_append VAR VALUE-# -----------------------# Append the text in VALUE to the end of the definition contained in VAR. Take-# advantage of any shell optimizations that allow amortized linear growth over-# repeated appends, instead of the typical quadratic growth present in naive-# implementations.-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :-  eval 'as_fn_append ()-  {-    eval $1+=\$2-  }'-else-  as_fn_append ()-  {-    eval $1=\$$1\$2-  }-fi # as_fn_append--# as_fn_arith ARG...-# -------------------# Perform arithmetic evaluation on the ARGs, and store the result in the-# global $as_val. Take advantage of shells that can avoid forks. The arguments-# must be portable across $(()) and expr.-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :-  eval 'as_fn_arith ()-  {-    as_val=$(( $* ))-  }'-else-  as_fn_arith ()-  {-    as_val=`expr "$@" || test $? -eq 1`-  }-fi # as_fn_arith---# as_fn_error STATUS ERROR [LINENO LOG_FD]-# -----------------------------------------# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the-# script with STATUS, using 1 if that was 0.-as_fn_error ()-{-  as_status=$1; test $as_status -eq 0 && as_status=1-  if test "$4"; then-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4-  fi-  $as_echo "$as_me: error: $2" >&2-  as_fn_exit $as_status-} # as_fn_error--if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; then-  as_expr=expr-else-  as_expr=false-fi--if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then-  as_basename=basename-else-  as_basename=false-fi--if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then-  as_dirname=dirname-else-  as_dirname=false-fi--as_me=`$as_basename -- "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \-	 X"$0" : 'X\(//\)$' \| \-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X/"$0" |-    sed '/^.*\/\([^/][^/]*\)\/*$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`--# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits---  as_lineno_1=$LINENO as_lineno_1a=$LINENO-  as_lineno_2=$LINENO as_lineno_2a=$LINENO-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)-  sed -n '-    p-    /[$]LINENO/=-  ' <$as_myself |-    sed '-      s/[$]LINENO.*/&-/-      t lineno-      b-      :lineno-      N-      :loop-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/-      t loop-      s/-\n.*//-    ' >$as_me.lineno &&-  chmod +x "$as_me.lineno" ||-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }--  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have-  # already done that, so ensure we don't try to do so again and fall-  # in an infinite loop.  This has already happened in practice.-  _as_can_reexec=no; export _as_can_reexec-  # Don't try to exec as it changes $[0], causing all sort of problems-  # (the dirname of $[0] is not the place where we might find the-  # original and so on.  Autoconf is especially sensitive to this).-  . "./$as_me.lineno"-  # Exit status is that of the last command.-  exit-}--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in #(((((--n*)-  case `echo 'xy\c'` in-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.-  xy)  ECHO_C='\c';;-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null-       ECHO_T='	';;-  esac;;-*)-  ECHO_N='-n';;-esac--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then-  rm -f conf$$.dir/conf$$.file-else-  rm -f conf$$.dir-  mkdir conf$$.dir 2>/dev/null-fi-if (echo >conf$$.file) 2>/dev/null; then-  if ln -s conf$$.file conf$$ 2>/dev/null; then-    as_ln_s='ln -s'-    # ... but there are two gotchas:-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.-    # In both cases, we have to default to `cp -pR'.-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||-      as_ln_s='cp -pR'-  elif ln conf$$.file conf$$ 2>/dev/null; then-    as_ln_s=ln-  else-    as_ln_s='cp -pR'-  fi-else-  as_ln_s='cp -pR'-fi-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null--if mkdir -p . 2>/dev/null; then-  as_mkdir_p='mkdir -p "$as_dir"'-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi--as_test_x='test -x'-as_executable_p=as_fn_executable_p--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"---test -n "$DJDIR" || exec 7<&0 </dev/null-exec 6>&1--# Name of the host.-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,-# so uname gets run too.-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`--#-# Initializations.-#-ac_default_prefix=/usr/local-ac_clean_files=-ac_config_libobj_dir=.-LIBOBJS=-cross_compiling=no-subdirs=-MFLAGS=-MAKEFLAGS=--# Identity of this package.-PACKAGE_NAME='Haskell network package'-PACKAGE_TARNAME='network'-PACKAGE_VERSION='2.3.0.14'-PACKAGE_STRING='Haskell network package 2.3.0.14'-PACKAGE_BUGREPORT='libraries@haskell.org'-PACKAGE_URL=''--ac_unique_file="include/HsNet.h"-# Factoring default headers for most tests.-ac_includes_default="\-#include <stdio.h>-#ifdef HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#ifdef HAVE_SYS_STAT_H-# include <sys/stat.h>-#endif-#ifdef STDC_HEADERS-# include <stdlib.h>-# include <stddef.h>-#else-# ifdef HAVE_STDLIB_H-#  include <stdlib.h>-# endif-#endif-#ifdef HAVE_STRING_H-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H-#  include <memory.h>-# endif-# include <string.h>-#endif-#ifdef HAVE_STRINGS_H-# include <strings.h>-#endif-#ifdef HAVE_INTTYPES_H-# include <inttypes.h>-#endif-#ifdef HAVE_STDINT_H-# include <stdint.h>-#endif-#ifdef HAVE_UNISTD_H-# include <unistd.h>-#endif"--ac_subst_vars='LTLIBOBJS-LIBOBJS-EXTRA_SRCS-EXTRA_LIBS-EXTRA_CPPFLAGS-CALLCONV-EGREP-GREP-CPP-OBJEXT-EXEEXT-ac_ct_CC-CPPFLAGS-LDFLAGS-CFLAGS-CC-host_os-host_vendor-host_cpu-host-build_os-build_vendor-build_cpu-build-target_alias-host_alias-build_alias-LIBS-ECHO_T-ECHO_N-ECHO_C-DEFS-mandir-localedir-libdir-psdir-pdfdir-dvidir-htmldir-infodir-docdir-oldincludedir-includedir-localstatedir-sharedstatedir-sysconfdir-datadir-datarootdir-libexecdir-sbindir-bindir-program_transform_name-prefix-exec_prefix-PACKAGE_URL-PACKAGE_BUGREPORT-PACKAGE_STRING-PACKAGE_VERSION-PACKAGE_TARNAME-PACKAGE_NAME-PATH_SEPARATOR-SHELL'-ac_subst_files=''-ac_user_opts='-enable_option_checking-with_cc-'-      ac_precious_vars='build_alias-host_alias-target_alias-CC-CFLAGS-LDFLAGS-LIBS-CPPFLAGS-CPP'---# Initialize some variables set by options.-ac_init_help=-ac_init_version=false-ac_unrecognized_opts=-ac_unrecognized_sep=-# The variables have the same names as the options, with-# dashes changed to underlines.-cache_file=/dev/null-exec_prefix=NONE-no_create=-no_recursion=-prefix=NONE-program_prefix=NONE-program_suffix=NONE-program_transform_name=s,x,x,-silent=-site=-srcdir=-verbose=-x_includes=NONE-x_libraries=NONE--# Installation directory options.-# These are left unexpanded so users can "make install exec_prefix=/foo"-# and all the variables that are supposed to be based on exec_prefix-# by default will actually change.-# Use braces instead of parens because sh, perl, etc. also accept them.-# (The list follows the same order as the GNU Coding Standards.)-bindir='${exec_prefix}/bin'-sbindir='${exec_prefix}/sbin'-libexecdir='${exec_prefix}/libexec'-datarootdir='${prefix}/share'-datadir='${datarootdir}'-sysconfdir='${prefix}/etc'-sharedstatedir='${prefix}/com'-localstatedir='${prefix}/var'-includedir='${prefix}/include'-oldincludedir='/usr/include'-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'-infodir='${datarootdir}/info'-htmldir='${docdir}'-dvidir='${docdir}'-pdfdir='${docdir}'-psdir='${docdir}'-libdir='${exec_prefix}/lib'-localedir='${datarootdir}/locale'-mandir='${datarootdir}/man'--ac_prev=-ac_dashdash=-for ac_option-do-  # If the previous option needs an argument, assign it.-  if test -n "$ac_prev"; then-    eval $ac_prev=\$ac_option-    ac_prev=-    continue-  fi--  case $ac_option in-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;-  *=)   ac_optarg= ;;-  *)    ac_optarg=yes ;;-  esac--  # Accept the important Cygnus configure options, so we can diagnose typos.--  case $ac_dashdash$ac_option in-  --)-    ac_dashdash=yes ;;--  -bindir | --bindir | --bindi | --bind | --bin | --bi)-    ac_prev=bindir ;;-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)-    bindir=$ac_optarg ;;--  -build | --build | --buil | --bui | --bu)-    ac_prev=build_alias ;;-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)-    build_alias=$ac_optarg ;;--  -cache-file | --cache-file | --cache-fil | --cache-fi \-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)-    ac_prev=cache_file ;;-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)-    cache_file=$ac_optarg ;;--  --config-cache | -C)-    cache_file=config.cache ;;--  -datadir | --datadir | --datadi | --datad)-    ac_prev=datadir ;;-  -datadir=* | --datadir=* | --datadi=* | --datad=*)-    datadir=$ac_optarg ;;--  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \-  | --dataroo | --dataro | --datar)-    ac_prev=datarootdir ;;-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)-    datarootdir=$ac_optarg ;;--  -disable-* | --disable-*)-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid feature name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"enable_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval enable_$ac_useropt=no ;;--  -docdir | --docdir | --docdi | --doc | --do)-    ac_prev=docdir ;;-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)-    docdir=$ac_optarg ;;--  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)-    ac_prev=dvidir ;;-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)-    dvidir=$ac_optarg ;;--  -enable-* | --enable-*)-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid feature name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"enable_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval enable_$ac_useropt=\$ac_optarg ;;--  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \-  | --exec | --exe | --ex)-    ac_prev=exec_prefix ;;-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \-  | --exec=* | --exe=* | --ex=*)-    exec_prefix=$ac_optarg ;;--  -gas | --gas | --ga | --g)-    # Obsolete; use --with-gas.-    with_gas=yes ;;--  -help | --help | --hel | --he | -h)-    ac_init_help=long ;;-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)-    ac_init_help=recursive ;;-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)-    ac_init_help=short ;;--  -host | --host | --hos | --ho)-    ac_prev=host_alias ;;-  -host=* | --host=* | --hos=* | --ho=*)-    host_alias=$ac_optarg ;;--  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)-    ac_prev=htmldir ;;-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \-  | --ht=*)-    htmldir=$ac_optarg ;;--  -includedir | --includedir | --includedi | --included | --include \-  | --includ | --inclu | --incl | --inc)-    ac_prev=includedir ;;-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \-  | --includ=* | --inclu=* | --incl=* | --inc=*)-    includedir=$ac_optarg ;;--  -infodir | --infodir | --infodi | --infod | --info | --inf)-    ac_prev=infodir ;;-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)-    infodir=$ac_optarg ;;--  -libdir | --libdir | --libdi | --libd)-    ac_prev=libdir ;;-  -libdir=* | --libdir=* | --libdi=* | --libd=*)-    libdir=$ac_optarg ;;--  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \-  | --libexe | --libex | --libe)-    ac_prev=libexecdir ;;-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \-  | --libexe=* | --libex=* | --libe=*)-    libexecdir=$ac_optarg ;;--  -localedir | --localedir | --localedi | --localed | --locale)-    ac_prev=localedir ;;-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)-    localedir=$ac_optarg ;;--  -localstatedir | --localstatedir | --localstatedi | --localstated \-  | --localstate | --localstat | --localsta | --localst | --locals)-    ac_prev=localstatedir ;;-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)-    localstatedir=$ac_optarg ;;--  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)-    ac_prev=mandir ;;-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)-    mandir=$ac_optarg ;;--  -nfp | --nfp | --nf)-    # Obsolete; use --without-fp.-    with_fp=no ;;--  -no-create | --no-create | --no-creat | --no-crea | --no-cre \-  | --no-cr | --no-c | -n)-    no_create=yes ;;--  -no-recursion | --no-recursion | --no-recursio | --no-recursi \-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)-    no_recursion=yes ;;--  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \-  | --oldin | --oldi | --old | --ol | --o)-    ac_prev=oldincludedir ;;-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)-    oldincludedir=$ac_optarg ;;--  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)-    ac_prev=prefix ;;-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)-    prefix=$ac_optarg ;;--  -program-prefix | --program-prefix | --program-prefi | --program-pref \-  | --program-pre | --program-pr | --program-p)-    ac_prev=program_prefix ;;-  -program-prefix=* | --program-prefix=* | --program-prefi=* \-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)-    program_prefix=$ac_optarg ;;--  -program-suffix | --program-suffix | --program-suffi | --program-suff \-  | --program-suf | --program-su | --program-s)-    ac_prev=program_suffix ;;-  -program-suffix=* | --program-suffix=* | --program-suffi=* \-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)-    program_suffix=$ac_optarg ;;--  -program-transform-name | --program-transform-name \-  | --program-transform-nam | --program-transform-na \-  | --program-transform-n | --program-transform- \-  | --program-transform | --program-transfor \-  | --program-transfo | --program-transf \-  | --program-trans | --program-tran \-  | --progr-tra | --program-tr | --program-t)-    ac_prev=program_transform_name ;;-  -program-transform-name=* | --program-transform-name=* \-  | --program-transform-nam=* | --program-transform-na=* \-  | --program-transform-n=* | --program-transform-=* \-  | --program-transform=* | --program-transfor=* \-  | --program-transfo=* | --program-transf=* \-  | --program-trans=* | --program-tran=* \-  | --progr-tra=* | --program-tr=* | --program-t=*)-    program_transform_name=$ac_optarg ;;--  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)-    ac_prev=pdfdir ;;-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)-    pdfdir=$ac_optarg ;;--  -psdir | --psdir | --psdi | --psd | --ps)-    ac_prev=psdir ;;-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)-    psdir=$ac_optarg ;;--  -q | -quiet | --quiet | --quie | --qui | --qu | --q \-  | -silent | --silent | --silen | --sile | --sil)-    silent=yes ;;--  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)-    ac_prev=sbindir ;;-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \-  | --sbi=* | --sb=*)-    sbindir=$ac_optarg ;;--  -sharedstatedir | --sharedstatedir | --sharedstatedi \-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \-  | --sharedst | --shareds | --shared | --share | --shar \-  | --sha | --sh)-    ac_prev=sharedstatedir ;;-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \-  | --sha=* | --sh=*)-    sharedstatedir=$ac_optarg ;;--  -site | --site | --sit)-    ac_prev=site ;;-  -site=* | --site=* | --sit=*)-    site=$ac_optarg ;;--  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)-    ac_prev=srcdir ;;-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)-    srcdir=$ac_optarg ;;--  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \-  | --syscon | --sysco | --sysc | --sys | --sy)-    ac_prev=sysconfdir ;;-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)-    sysconfdir=$ac_optarg ;;--  -target | --target | --targe | --targ | --tar | --ta | --t)-    ac_prev=target_alias ;;-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)-    target_alias=$ac_optarg ;;--  -v | -verbose | --verbose | --verbos | --verbo | --verb)-    verbose=yes ;;--  -version | --version | --versio | --versi | --vers | -V)-    ac_init_version=: ;;--  -with-* | --with-*)-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid package name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"with_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval with_$ac_useropt=\$ac_optarg ;;--  -without-* | --without-*)-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid package name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"with_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval with_$ac_useropt=no ;;--  --x)-    # Obsolete; use --with-x.-    with_x=yes ;;--  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \-  | --x-incl | --x-inc | --x-in | --x-i)-    ac_prev=x_includes ;;-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)-    x_includes=$ac_optarg ;;--  -x-libraries | --x-libraries | --x-librarie | --x-librari \-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)-    ac_prev=x_libraries ;;-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)-    x_libraries=$ac_optarg ;;--  -*) as_fn_error $? "unrecognized option: \`$ac_option'-Try \`$0 --help' for more information"-    ;;--  *=*)-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`-    # Reject names that are not valid shell variable names.-    case $ac_envvar in #(-      '' | [0-9]* | *[!_$as_cr_alnum]* )-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;-    esac-    eval $ac_envvar=\$ac_optarg-    export $ac_envvar ;;--  *)-    # FIXME: should be removed in autoconf 3.0.-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"-    ;;--  esac-done--if test -n "$ac_prev"; then-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`-  as_fn_error $? "missing argument to $ac_option"-fi--if test -n "$ac_unrecognized_opts"; then-  case $enable_option_checking in-    no) ;;-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;-  esac-fi--# Check all directory arguments for consistency.-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \-		datadir sysconfdir sharedstatedir localstatedir includedir \-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \-		libdir localedir mandir-do-  eval ac_val=\$$ac_var-  # Remove trailing slashes.-  case $ac_val in-    */ )-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`-      eval $ac_var=\$ac_val;;-  esac-  # Be sure to have absolute directory names.-  case $ac_val in-    [\\/$]* | ?:[\\/]* )  continue;;-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;-  esac-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"-done--# There might be people who depend on the old broken behavior: `$host'-# used to hold the argument of --host etc.-# FIXME: To remove some day.-build=$build_alias-host=$host_alias-target=$target_alias--# FIXME: To remove some day.-if test "x$host_alias" != x; then-  if test "x$build_alias" = x; then-    cross_compiling=maybe-  elif test "x$build_alias" != "x$host_alias"; then-    cross_compiling=yes-  fi-fi--ac_tool_prefix=-test -n "$host_alias" && ac_tool_prefix=$host_alias---test "$silent" = yes && exec 6>/dev/null---ac_pwd=`pwd` && test -n "$ac_pwd" &&-ac_ls_di=`ls -di .` &&-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||-  as_fn_error $? "working directory cannot be determined"-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||-  as_fn_error $? "pwd does not report name of working directory"---# Find the source files, if location was not specified.-if test -z "$srcdir"; then-  ac_srcdir_defaulted=yes-  # Try the directory containing this script, then the parent directory.-  ac_confdir=`$as_dirname -- "$as_myself" ||-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_myself" : 'X\(//\)[^/]' \| \-	 X"$as_myself" : 'X\(//\)$' \| \-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$as_myself" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-  srcdir=$ac_confdir-  if test ! -r "$srcdir/$ac_unique_file"; then-    srcdir=..-  fi-else-  ac_srcdir_defaulted=no-fi-if test ! -r "$srcdir/$ac_unique_file"; then-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"-fi-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"-ac_abs_confdir=`(-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"-	pwd)`-# When building in place, set srcdir=.-if test "$ac_abs_confdir" = "$ac_pwd"; then-  srcdir=.-fi-# Remove unnecessary trailing slashes from srcdir.-# Double slashes in file names in object file debugging info-# mess up M-x gdb in Emacs.-case $srcdir in-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;-esac-for ac_var in $ac_precious_vars; do-  eval ac_env_${ac_var}_set=\${${ac_var}+set}-  eval ac_env_${ac_var}_value=\$${ac_var}-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}-  eval ac_cv_env_${ac_var}_value=\$${ac_var}-done--#-# Report the --help message.-#-if test "$ac_init_help" = "long"; then-  # Omit some internal or obsolete options to make the list less imposing.-  # This message is too long to be a string in the A/UX 3.1 sh.-  cat <<_ACEOF-\`configure' configures Haskell network package 2.3.0.14 to adapt to many kinds of systems.--Usage: $0 [OPTION]... [VAR=VALUE]...--To assign environment variables (e.g., CC, CFLAGS...), specify them as-VAR=VALUE.  See below for descriptions of some of the useful variables.--Defaults for the options are specified in brackets.--Configuration:-  -h, --help              display this help and exit-      --help=short        display options specific to this package-      --help=recursive    display the short help of all the included packages-  -V, --version           display version information and exit-  -q, --quiet, --silent   do not print \`checking ...' messages-      --cache-file=FILE   cache test results in FILE [disabled]-  -C, --config-cache      alias for \`--cache-file=config.cache'-  -n, --no-create         do not create output files-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']--Installation directories:-  --prefix=PREFIX         install architecture-independent files in PREFIX-                          [$ac_default_prefix]-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX-                          [PREFIX]--By default, \`make install' will install all the files in-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify-an installation prefix other than \`$ac_default_prefix' using \`--prefix',-for instance \`--prefix=\$HOME'.--For better control, use the options below.--Fine tuning of the installation directories:-  --bindir=DIR            user executables [EPREFIX/bin]-  --sbindir=DIR           system admin executables [EPREFIX/sbin]-  --libexecdir=DIR        program executables [EPREFIX/libexec]-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]-  --libdir=DIR            object code libraries [EPREFIX/lib]-  --includedir=DIR        C header files [PREFIX/include]-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]-  --infodir=DIR           info documentation [DATAROOTDIR/info]-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]-  --mandir=DIR            man documentation [DATAROOTDIR/man]-  --docdir=DIR            documentation root [DATAROOTDIR/doc/network]-  --htmldir=DIR           html documentation [DOCDIR]-  --dvidir=DIR            dvi documentation [DOCDIR]-  --pdfdir=DIR            pdf documentation [DOCDIR]-  --psdir=DIR             ps documentation [DOCDIR]-_ACEOF--  cat <<\_ACEOF--System types:-  --build=BUILD     configure for building on BUILD [guessed]-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]-_ACEOF-fi--if test -n "$ac_init_help"; then-  case $ac_init_help in-     short | recursive ) echo "Configuration of Haskell network package 2.3.0.14:";;-   esac-  cat <<\_ACEOF--Optional Packages:-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)-C compiler--Some influential environment variables:-  CC          C compiler command-  CFLAGS      C compiler flags-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a-              nonstandard directory <lib dir>-  LIBS        libraries to pass to the linker, e.g. -l<library>-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if-              you have headers in a nonstandard directory <include dir>-  CPP         C preprocessor--Use these variables to override the choices made by `configure' or to help-it to find libraries and programs with nonstandard names/locations.--Report bugs to <libraries@haskell.org>.-_ACEOF-ac_status=$?-fi--if test "$ac_init_help" = "recursive"; then-  # If there are subdirs, report their specific --help.-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue-    test -d "$ac_dir" ||-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||-      continue-    ac_builddir=.--case "$ac_dir" in-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;-*)-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`-  # A ".." for each directory in $ac_dir_suffix.-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`-  case $ac_top_builddir_sub in-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;-  esac ;;-esac-ac_abs_top_builddir=$ac_pwd-ac_abs_builddir=$ac_pwd$ac_dir_suffix-# for backward compatibility:-ac_top_builddir=$ac_top_build_prefix--case $srcdir in-  .)  # We are building in place.-    ac_srcdir=.-    ac_top_srcdir=$ac_top_builddir_sub-    ac_abs_top_srcdir=$ac_pwd ;;-  [\\/]* | ?:[\\/]* )  # Absolute name.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir-    ac_abs_top_srcdir=$srcdir ;;-  *) # Relative name.-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_build_prefix$srcdir-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;-esac-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix--    cd "$ac_dir" || { ac_status=$?; continue; }-    # Check for guested configure.-    if test -f "$ac_srcdir/configure.gnu"; then-      echo &&-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive-    elif test -f "$ac_srcdir/configure"; then-      echo &&-      $SHELL "$ac_srcdir/configure" --help=recursive-    else-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2-    fi || ac_status=$?-    cd "$ac_pwd" || { ac_status=$?; break; }-  done-fi--test -n "$ac_init_help" && exit $ac_status-if $ac_init_version; then-  cat <<\_ACEOF-Haskell network package configure 2.3.0.14-generated by GNU Autoconf 2.69--Copyright (C) 2012 Free Software Foundation, Inc.-This configure script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it.-_ACEOF-  exit-fi--## ------------------------ ##-## Autoconf initialization. ##-## ------------------------ ##--# ac_fn_c_try_compile LINENO-# ---------------------------# Try to compile conftest.$ac_ext, and return whether this succeeded.-ac_fn_c_try_compile ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  rm -f conftest.$ac_objext-  if { { ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_compile") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    grep -v '^ *+' conftest.err >conftest.er1-    cat conftest.er1 >&5-    mv -f conftest.er1 conftest.err-  fi-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest.$ac_objext; then :-  ac_retval=0-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--	ac_retval=1-fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_compile--# ac_fn_c_try_cpp LINENO-# -----------------------# Try to preprocess conftest.$ac_ext, and return whether this succeeded.-ac_fn_c_try_cpp ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if { { ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    grep -v '^ *+' conftest.err >conftest.er1-    cat conftest.er1 >&5-    mv -f conftest.er1 conftest.err-  fi-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } > conftest.i && {-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||-	 test ! -s conftest.err-       }; then :-  ac_retval=0-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--    ac_retval=1-fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_cpp--# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES-# --------------------------------------------------------# Tests whether HEADER exists, giving a warning if it cannot be compiled using-# the include files in INCLUDES and setting the cache variable VAR-# accordingly.-ac_fn_c_check_header_mongrel ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if eval \${$3+:} false; then :-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-else-  # Is the header compilable?-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5-$as_echo_n "checking $2 usability... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-#include <$2>-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_header_compiler=yes-else-  ac_header_compiler=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5-$as_echo "$ac_header_compiler" >&6; }--# Is the header present?-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5-$as_echo_n "checking $2 presence... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <$2>-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :-  ac_header_preproc=yes-else-  ac_header_preproc=no-fi-rm -f conftest.err conftest.i conftest.$ac_ext-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5-$as_echo "$ac_header_preproc" >&6; }--# So?  What about this header?-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((-  yes:no: )-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}-    ;;-  no:yes:* )-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}-( $as_echo "## ------------------------------------ ##-## Report this to libraries@haskell.org ##-## ------------------------------------ ##"-     ) | sed "s/^/$as_me: WARNING:     /" >&2-    ;;-esac-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  eval "$3=\$ac_header_compiler"-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_header_mongrel--# ac_fn_c_try_run LINENO-# -----------------------# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes-# that executables *can* be run.-ac_fn_c_try_run ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'-  { { case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_try") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; }; then :-  ac_retval=0-else-  $as_echo "$as_me: program exited with status $ac_status" >&5-       $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--       ac_retval=$ac_status-fi-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_run--# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES-# --------------------------------------------------------# Tests whether HEADER exists and can be compiled using the include files in-# INCLUDES, setting the cache variable VAR accordingly.-ac_fn_c_check_header_compile ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-#include <$2>-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  eval "$3=yes"-else-  eval "$3=no"-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_header_compile--# ac_fn_c_try_link LINENO-# ------------------------# Try to link conftest.$ac_ext, and return whether this succeeded.-ac_fn_c_try_link ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  rm -f conftest.$ac_objext conftest$ac_exeext-  if { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    grep -v '^ *+' conftest.err >conftest.er1-    cat conftest.er1 >&5-    mv -f conftest.er1 conftest.err-  fi-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest$ac_exeext && {-	 test "$cross_compiling" = yes ||-	 test -x conftest$ac_exeext-       }; then :-  ac_retval=0-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--	ac_retval=1-fi-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would-  # interfere with the next link command; also delete a directory that is-  # left behind by Apple's compiler.  We do this before executing the actions.-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_link--# ac_fn_c_check_func LINENO FUNC VAR-# -----------------------------------# Tests whether FUNC exists, setting the cache variable VAR accordingly-ac_fn_c_check_func ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */-#define $2 innocuous_$2--/* System header to define __stub macros and hopefully few prototypes,-    which can conflict with char $2 (); below.-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since-    <limits.h> exists even on freestanding compilers.  */--#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif--#undef $2--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char $2 ();-/* The GNU C library defines this for functions which it implements-    to always fail with ENOSYS.  Some functions are actually named-    something starting with __ and the normal name is an alias.  */-#if defined __stub_$2 || defined __stub___$2-choke me-#endif--int-main ()-{-return $2 ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  eval "$3=yes"-else-  eval "$3=no"-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_func--# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES-# -----------------------------------------------------# Tries to find if the field MEMBER exists in type AGGR, after including-# INCLUDES, setting cache variable VAR accordingly.-ac_fn_c_check_member ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5-$as_echo_n "checking for $2.$3... " >&6; }-if eval \${$4+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$5-int-main ()-{-static $2 ac_aggr;-if (ac_aggr.$3)-return 0;-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  eval "$4=yes"-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$5-int-main ()-{-static $2 ac_aggr;-if (sizeof ac_aggr.$3)-return 0;-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  eval "$4=yes"-else-  eval "$4=no"-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-eval ac_res=\$$4-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_member--# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES-# ----------------------------------------------# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR-# accordingly.-ac_fn_c_check_decl ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  as_decl_name=`echo $2|sed 's/ *(.*//'`-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-int-main ()-{-#ifndef $as_decl_name-#ifdef __cplusplus-  (void) $as_decl_use;-#else-  (void) $as_decl_name;-#endif-#endif--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  eval "$3=yes"-else-  eval "$3=no"-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_decl-cat >config.log <<_ACEOF-This file contains any messages produced by compilers while-running configure, to aid debugging if configure makes a mistake.--It was created by Haskell network package $as_me 2.3.0.14, which was-generated by GNU Autoconf 2.69.  Invocation command line was--  $ $0 $@--_ACEOF-exec 5>>config.log-{-cat <<_ASUNAME-## --------- ##-## Platform. ##-## --------- ##--hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`-uname -m = `(uname -m) 2>/dev/null || echo unknown`-uname -r = `(uname -r) 2>/dev/null || echo unknown`-uname -s = `(uname -s) 2>/dev/null || echo unknown`-uname -v = `(uname -v) 2>/dev/null || echo unknown`--/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`--/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`--_ASUNAME--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    $as_echo "PATH: $as_dir"-  done-IFS=$as_save_IFS--} >&5--cat >&5 <<_ACEOF---## ----------- ##-## Core tests. ##-## ----------- ##--_ACEOF---# Keep a trace of the command line.-# Strip out --no-create and --no-recursion so they do not pile up.-# Strip out --silent because we don't want to record it for future runs.-# Also quote any args containing shell meta-characters.-# Make two passes to allow for proper duplicate-argument suppression.-ac_configure_args=-ac_configure_args0=-ac_configure_args1=-ac_must_keep_next=false-for ac_pass in 1 2-do-  for ac_arg-  do-    case $ac_arg in-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \-    | -silent | --silent | --silen | --sile | --sil)-      continue ;;-    *\'*)-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;-    esac-    case $ac_pass in-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;-    2)-      as_fn_append ac_configure_args1 " '$ac_arg'"-      if test $ac_must_keep_next = true; then-	ac_must_keep_next=false # Got value, back to normal.-      else-	case $ac_arg in-	  *=* | --config-cache | -C | -disable-* | --disable-* \-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \-	  | -with-* | --with-* | -without-* | --without-* | --x)-	    case "$ac_configure_args0 " in-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;-	    esac-	    ;;-	  -* ) ac_must_keep_next=true ;;-	esac-      fi-      as_fn_append ac_configure_args " '$ac_arg'"-      ;;-    esac-  done-done-{ ac_configure_args0=; unset ac_configure_args0;}-{ ac_configure_args1=; unset ac_configure_args1;}--# When interrupted or exit'd, cleanup temporary files, and complete-# config.log.  We remove comments because anyway the quotes in there-# would cause problems or look ugly.-# WARNING: Use '\'' to represent an apostrophe within the trap.-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.-trap 'exit_status=$?-  # Save into config.log some information that might help in debugging.-  {-    echo--    $as_echo "## ---------------- ##-## Cache variables. ##-## ---------------- ##"-    echo-    # The following way of writing the cache mishandles newlines in values,-(-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do-    eval ac_val=\$$ac_var-    case $ac_val in #(-    *${as_nl}*)-      case $ac_var in #(-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;-      esac-      case $ac_var in #(-      _ | IFS | as_nl) ;; #(-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(-      *) { eval $ac_var=; unset $ac_var;} ;;-      esac ;;-    esac-  done-  (set) 2>&1 |-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(-    *${as_nl}ac_space=\ *)-      sed -n \-	"s/'\''/'\''\\\\'\'''\''/g;-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"-      ;; #(-    *)-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"-      ;;-    esac |-    sort-)-    echo--    $as_echo "## ----------------- ##-## Output variables. ##-## ----------------- ##"-    echo-    for ac_var in $ac_subst_vars-    do-      eval ac_val=\$$ac_var-      case $ac_val in-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;-      esac-      $as_echo "$ac_var='\''$ac_val'\''"-    done | sort-    echo--    if test -n "$ac_subst_files"; then-      $as_echo "## ------------------- ##-## File substitutions. ##-## ------------------- ##"-      echo-      for ac_var in $ac_subst_files-      do-	eval ac_val=\$$ac_var-	case $ac_val in-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;-	esac-	$as_echo "$ac_var='\''$ac_val'\''"-      done | sort-      echo-    fi--    if test -s confdefs.h; then-      $as_echo "## ----------- ##-## confdefs.h. ##-## ----------- ##"-      echo-      cat confdefs.h-      echo-    fi-    test "$ac_signal" != 0 &&-      $as_echo "$as_me: caught signal $ac_signal"-    $as_echo "$as_me: exit $exit_status"-  } >&5-  rm -f core *.core core.conftest.* &&-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&-    exit $exit_status-' 0-for ac_signal in 1 2 13 15; do-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal-done-ac_signal=0--# confdefs.h avoids OS command line length limits that DEFS can exceed.-rm -f -r conftest* confdefs.h--$as_echo "/* confdefs.h */" > confdefs.h--# Predefined preprocessor variables.--cat >>confdefs.h <<_ACEOF-#define PACKAGE_NAME "$PACKAGE_NAME"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_VERSION "$PACKAGE_VERSION"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_STRING "$PACKAGE_STRING"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_URL "$PACKAGE_URL"-_ACEOF---# Let the site file select an alternate cache file if it wants to.-# Prefer an explicitly selected file to automatically selected ones.-ac_site_file1=NONE-ac_site_file2=NONE-if test -n "$CONFIG_SITE"; then-  # We do not want a PATH search for config.site.-  case $CONFIG_SITE in #((-    -*)  ac_site_file1=./$CONFIG_SITE;;-    */*) ac_site_file1=$CONFIG_SITE;;-    *)   ac_site_file1=./$CONFIG_SITE;;-  esac-elif test "x$prefix" != xNONE; then-  ac_site_file1=$prefix/share/config.site-  ac_site_file2=$prefix/etc/config.site-else-  ac_site_file1=$ac_default_prefix/share/config.site-  ac_site_file2=$ac_default_prefix/etc/config.site-fi-for ac_site_file in "$ac_site_file1" "$ac_site_file2"-do-  test "x$ac_site_file" = xNONE && continue-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5-$as_echo "$as_me: loading site script $ac_site_file" >&6;}-    sed 's/^/| /' "$ac_site_file" >&5-    . "$ac_site_file" \-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "failed to load site script $ac_site_file-See \`config.log' for more details" "$LINENO" 5; }-  fi-done--if test -r "$cache_file"; then-  # Some versions of bash will fail to source /dev/null (special files-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5-$as_echo "$as_me: loading cache $cache_file" >&6;}-    case $cache_file in-      [\\/]* | ?:[\\/]* ) . "$cache_file";;-      *)                      . "./$cache_file";;-    esac-  fi-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5-$as_echo "$as_me: creating cache $cache_file" >&6;}-  >$cache_file-fi--# Check that the precious variables saved in the cache have kept the same-# value.-ac_cache_corrupted=false-for ac_var in $ac_precious_vars; do-  eval ac_old_set=\$ac_cv_env_${ac_var}_set-  eval ac_new_set=\$ac_env_${ac_var}_set-  eval ac_old_val=\$ac_cv_env_${ac_var}_value-  eval ac_new_val=\$ac_env_${ac_var}_value-  case $ac_old_set,$ac_new_set in-    set,)-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}-      ac_cache_corrupted=: ;;-    ,set)-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}-      ac_cache_corrupted=: ;;-    ,);;-    *)-      if test "x$ac_old_val" != "x$ac_new_val"; then-	# differences in whitespace do not lead to failure.-	ac_old_val_w=`echo x $ac_old_val`-	ac_new_val_w=`echo x $ac_new_val`-	if test "$ac_old_val_w" != "$ac_new_val_w"; then-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}-	  ac_cache_corrupted=:-	else-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}-	  eval $ac_var=\$ac_old_val-	fi-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}-      fi;;-  esac-  # Pass precious variables to config.status.-  if test "$ac_new_set" = set; then-    case $ac_new_val in-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;-    *) ac_arg=$ac_var=$ac_new_val ;;-    esac-    case " $ac_configure_args " in-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;-    esac-  fi-done-if $ac_cache_corrupted; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5-fi-## -------------------- ##-## Main body of script. ##-## -------------------- ##--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu----ac_includes_default="$ac_includes_default-#ifdef HAVE_SYS_SOCKET_H-# include <sys/socket.h>-#endif-#ifdef HAVE_NETINET_IN_H-# include <netinet/in.h>-#endif-#ifdef HAVE_NETDB_H-# include <netdb.h>-#endif-#ifdef HAVE_WINSOCK2_H-# include <winsock2.h>-#endif-#ifdef HAVE_WS2TCPIP_H-# include <ws2tcpip.h>-// fix for MingW not defining IPV6_V6ONLY-# define IPV6_V6ONLY 27-#endif-#ifdef HAVE_WSPIAPI_H-# include <wspiapi.h>-#endif"--# Safety check: Ensure that we are in the correct source directory.---ac_config_headers="$ac_config_headers include/HsNetworkConfig.h"---ac_aux_dir=-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do-  if test -f "$ac_dir/install-sh"; then-    ac_aux_dir=$ac_dir-    ac_install_sh="$ac_aux_dir/install-sh -c"-    break-  elif test -f "$ac_dir/install.sh"; then-    ac_aux_dir=$ac_dir-    ac_install_sh="$ac_aux_dir/install.sh -c"-    break-  elif test -f "$ac_dir/shtool"; then-    ac_aux_dir=$ac_dir-    ac_install_sh="$ac_aux_dir/shtool install -c"-    break-  fi-done-if test -z "$ac_aux_dir"; then-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5-fi--# These three variables are undocumented and unsupported,-# and are intended to be withdrawn in a future Autoconf release.-# They can cause serious problems if a builder's source tree is in a directory-# whose full name contains unusual characters.-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.---# Make sure we can run config.sub.-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5-$as_echo_n "checking build system type... " >&6; }-if ${ac_cv_build+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_build_alias=$build_alias-test "x$ac_build_alias" = x &&-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`-test "x$ac_build_alias" = x &&-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5-$as_echo "$ac_cv_build" >&6; }-case $ac_cv_build in-*-*-*) ;;-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;-esac-build=$ac_cv_build-ac_save_IFS=$IFS; IFS='-'-set x $ac_cv_build-shift-build_cpu=$1-build_vendor=$2-shift; shift-# Remember, the first character of IFS is used to create $*,-# except with old shells:-build_os=$*-IFS=$ac_save_IFS-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5-$as_echo_n "checking host system type... " >&6; }-if ${ac_cv_host+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test "x$host_alias" = x; then-  ac_cv_host=$ac_cv_build-else-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5-fi--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5-$as_echo "$ac_cv_host" >&6; }-case $ac_cv_host in-*-*-*) ;;-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;-esac-host=$ac_cv_host-ac_save_IFS=$IFS; IFS='-'-set x $ac_cv_host-shift-host_cpu=$1-host_vendor=$2-shift; shift-# Remember, the first character of IFS is used to create $*,-# except with old shells:-host_os=$*-IFS=$ac_save_IFS-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac-----# Check whether --with-cc was given.-if test "${with_cc+set}" = set; then :-  withval=$with_cc; CC=$withval-fi--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu-if test -n "$ac_tool_prefix"; then-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.-set dummy ${ac_tool_prefix}gcc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_CC="${ac_tool_prefix}gcc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---fi-if test -z "$ac_cv_prog_CC"; then-  ac_ct_CC=$CC-  # Extract the first word of "gcc", so it can be a program name with args.-set dummy gcc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_ac_ct_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$ac_ct_CC"; then-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_ac_ct_CC="gcc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-ac_ct_CC=$ac_cv_prog_ac_ct_CC-if test -n "$ac_ct_CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5-$as_echo "$ac_ct_CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi--  if test "x$ac_ct_CC" = x; then-    CC=""-  else-    case $cross_compiling:$ac_tool_warned in-yes:)-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}-ac_tool_warned=yes ;;-esac-    CC=$ac_ct_CC-  fi-else-  CC="$ac_cv_prog_CC"-fi--if test -z "$CC"; then-          if test -n "$ac_tool_prefix"; then-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.-set dummy ${ac_tool_prefix}cc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_CC="${ac_tool_prefix}cc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---  fi-fi-if test -z "$CC"; then-  # Extract the first word of "cc", so it can be a program name with args.-set dummy cc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-  ac_prog_rejected=no-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then-       ac_prog_rejected=yes-       continue-     fi-    ac_cv_prog_CC="cc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--if test $ac_prog_rejected = yes; then-  # We found a bogon in the path, so make sure we never use it.-  set dummy $ac_cv_prog_CC-  shift-  if test $# != 0; then-    # We chose a different compiler from the bogus one.-    # However, it has the same basename, so the bogon will be chosen-    # first if we set CC to just the basename; use the full file name.-    shift-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"-  fi-fi-fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---fi-if test -z "$CC"; then-  if test -n "$ac_tool_prefix"; then-  for ac_prog in cl.exe-  do-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.-set dummy $ac_tool_prefix$ac_prog; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---    test -n "$CC" && break-  done-fi-if test -z "$CC"; then-  ac_ct_CC=$CC-  for ac_prog in cl.exe-do-  # Extract the first word of "$ac_prog", so it can be a program name with args.-set dummy $ac_prog; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_ac_ct_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$ac_ct_CC"; then-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_ac_ct_CC="$ac_prog"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-ac_ct_CC=$ac_cv_prog_ac_ct_CC-if test -n "$ac_ct_CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5-$as_echo "$ac_ct_CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---  test -n "$ac_ct_CC" && break-done--  if test "x$ac_ct_CC" = x; then-    CC=""-  else-    case $cross_compiling:$ac_tool_warned in-yes:)-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}-ac_tool_warned=yes ;;-esac-    CC=$ac_ct_CC-  fi-fi--fi---test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "no acceptable C compiler found in \$PATH-See \`config.log' for more details" "$LINENO" 5; }--# Provide some information about the compiler.-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5-set X $ac_compile-ac_compiler=$2-for ac_option in --version -v -V -qversion; do-  { { ac_try="$ac_compiler $ac_option >&5"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    sed '10a\-... rest of stderr output deleted ...-         10q' conftest.err >conftest.er1-    cat conftest.er1 >&5-  fi-  rm -f conftest.er1 conftest.err-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }-done--cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-ac_clean_files_save=$ac_clean_files-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"-# Try to create an executable without -o first, disregard a.out.-# It will help us diagnose broken compilers, and finding out an intuition-# of exeext.-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5-$as_echo_n "checking whether the C compiler works... " >&6; }-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`--# The possible output files:-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"--ac_rmfiles=-for ac_file in $ac_files-do-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;-  esac-done-rm -f $ac_rmfiles--if { { ac_try="$ac_link_default"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link_default") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; then :-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'-# in a Makefile.  We should not override ac_cv_exeext if it was cached,-# so that the user can short-circuit this test for compilers unknown to-# Autoconf.-for ac_file in $ac_files ''-do-  test -f "$ac_file" || continue-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )-	;;-    [ab].out )-	# We found the default executable, but exeext='' is most-	# certainly right.-	break;;-    *.* )-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;-	then :; else-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`-	fi-	# We set ac_cv_exeext here because the later test for it is not-	# safe: cross compilers may not add the suffix if given an `-o'-	# argument, so we may need to know it at that point already.-	# Even if this section looks crufty: it has the advantage of-	# actually working.-	break;;-    * )-	break;;-  esac-done-test "$ac_cv_exeext" = no && ac_cv_exeext=--else-  ac_file=''-fi-if test -z "$ac_file"; then :-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-$as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error 77 "C compiler cannot create executables-See \`config.log' for more details" "$LINENO" 5; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5-$as_echo_n "checking for C compiler default output file name... " >&6; }-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5-$as_echo "$ac_file" >&6; }-ac_exeext=$ac_cv_exeext--rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out-ac_clean_files=$ac_clean_files_save-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5-$as_echo_n "checking for suffix of executables... " >&6; }-if { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; then :-  # If both `conftest.exe' and `conftest' are `present' (well, observable)-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will-# work properly (i.e., refer to `conftest.exe'), while it won't with-# `rm'.-for ac_file in conftest.exe conftest conftest.*; do-  test -f "$ac_file" || continue-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`-	  break;;-    * ) break;;-  esac-done-else-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "cannot compute suffix of executables: cannot compile and link-See \`config.log' for more details" "$LINENO" 5; }-fi-rm -f conftest conftest$ac_cv_exeext-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5-$as_echo "$ac_cv_exeext" >&6; }--rm -f conftest.$ac_ext-EXEEXT=$ac_cv_exeext-ac_exeext=$EXEEXT-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdio.h>-int-main ()-{-FILE *f = fopen ("conftest.out", "w");- return ferror (f) || fclose (f) != 0;--  ;-  return 0;-}-_ACEOF-ac_clean_files="$ac_clean_files conftest.out"-# Check that the compiler produces executables we can run.  If not, either-# the compiler is broken, or we cross compile.-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5-$as_echo_n "checking whether we are cross compiling... " >&6; }-if test "$cross_compiling" != yes; then-  { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }-  if { ac_try='./conftest$ac_cv_exeext'-  { { case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_try") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; }; then-    cross_compiling=no-  else-    if test "$cross_compiling" = maybe; then-	cross_compiling=yes-    else-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "cannot run C compiled programs.-If you meant to cross compile, use \`--host'.-See \`config.log' for more details" "$LINENO" 5; }-    fi-  fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5-$as_echo "$cross_compiling" >&6; }--rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out-ac_clean_files=$ac_clean_files_save-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5-$as_echo_n "checking for suffix of object files... " >&6; }-if ${ac_cv_objext+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-rm -f conftest.o conftest.obj-if { { ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_compile") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; then :-  for ac_file in conftest.o conftest.obj conftest.*; do-  test -f "$ac_file" || continue;-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`-       break;;-  esac-done-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "cannot compute suffix of object files: cannot compile-See \`config.log' for more details" "$LINENO" 5; }-fi-rm -f conftest.$ac_cv_objext conftest.$ac_ext-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5-$as_echo "$ac_cv_objext" >&6; }-OBJEXT=$ac_cv_objext-ac_objext=$OBJEXT-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }-if ${ac_cv_c_compiler_gnu+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{-#ifndef __GNUC__-       choke me-#endif--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_compiler_gnu=yes-else-  ac_compiler_gnu=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-ac_cv_c_compiler_gnu=$ac_compiler_gnu--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5-$as_echo "$ac_cv_c_compiler_gnu" >&6; }-if test $ac_compiler_gnu = yes; then-  GCC=yes-else-  GCC=-fi-ac_test_CFLAGS=${CFLAGS+set}-ac_save_CFLAGS=$CFLAGS-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5-$as_echo_n "checking whether $CC accepts -g... " >&6; }-if ${ac_cv_prog_cc_g+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_save_c_werror_flag=$ac_c_werror_flag-   ac_c_werror_flag=yes-   ac_cv_prog_cc_g=no-   CFLAGS="-g"-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_prog_cc_g=yes-else-  CFLAGS=""-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :--else-  ac_c_werror_flag=$ac_save_c_werror_flag-	 CFLAGS="-g"-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_prog_cc_g=yes-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-   ac_c_werror_flag=$ac_save_c_werror_flag-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5-$as_echo "$ac_cv_prog_cc_g" >&6; }-if test "$ac_test_CFLAGS" = set; then-  CFLAGS=$ac_save_CFLAGS-elif test $ac_cv_prog_cc_g = yes; then-  if test "$GCC" = yes; then-    CFLAGS="-g -O2"-  else-    CFLAGS="-g"-  fi-else-  if test "$GCC" = yes; then-    CFLAGS="-O2"-  else-    CFLAGS=-  fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }-if ${ac_cv_prog_cc_c89+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_cv_prog_cc_c89=no-ac_save_CC=$CC-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdarg.h>-#include <stdio.h>-struct stat;-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */-struct buf { int x; };-FILE * (*rcsopen) (struct buf *, struct stat *, int);-static char *e (p, i)-     char **p;-     int i;-{-  return p[i];-}-static char *f (char * (*g) (char **, int), char **p, ...)-{-  char *s;-  va_list v;-  va_start (v,p);-  s = g (p, va_arg (v,int));-  va_end (v);-  return s;-}--/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has-   function prototypes and stuff, but not '\xHH' hex character constants.-   These don't provoke an error unfortunately, instead are silently treated-   as 'x'.  The following induces an error, until -std is added to get-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an-   array size at least.  It's necessary to write '\x00'==0 to get something-   that's true only with -std.  */-int osf4_cc_array ['\x00' == 0 ? 1 : -1];--/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters-   inside strings and character constants.  */-#define FOO(x) 'x'-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];--int test (int i, double x);-struct s1 {int (*f) (int a);};-struct s2 {int (*f) (double a);};-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);-int argc;-char **argv;-int-main ()-{-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];-  ;-  return 0;-}-_ACEOF-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"-do-  CC="$ac_save_CC $ac_arg"-  if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_prog_cc_c89=$ac_arg-fi-rm -f core conftest.err conftest.$ac_objext-  test "x$ac_cv_prog_cc_c89" != "xno" && break-done-rm -f conftest.$ac_ext-CC=$ac_save_CC--fi-# AC_CACHE_VAL-case "x$ac_cv_prog_cc_c89" in-  x)-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5-$as_echo "none needed" >&6; } ;;-  xno)-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5-$as_echo "unsupported" >&6; } ;;-  *)-    CC="$CC $ac_cv_prog_cc_c89"-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;-esac-if test "x$ac_cv_prog_cc_c89" != xno; then :--fi--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu----{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }-if ${ac_cv_c_const+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--#ifndef __cplusplus-  /* Ultrix mips cc rejects this sort of thing.  */-  typedef int charset[2];-  const charset cs = { 0, 0 };-  /* SunOS 4.1.1 cc rejects this.  */-  char const *const *pcpcc;-  char **ppc;-  /* NEC SVR4.0.2 mips cc rejects this.  */-  struct point {int x, y;};-  static struct point const zero = {0,0};-  /* AIX XL C 1.02.0.0 rejects this.-     It does not let you subtract one const X* pointer from another in-     an arm of an if-expression whose if-part is not a constant-     expression */-  const char *g = "string";-  pcpcc = &g + (g ? g-g : 0);-  /* HPUX 7.0 cc rejects these. */-  ++pcpcc;-  ppc = (char**) pcpcc;-  pcpcc = (char const *const *) ppc;-  { /* SCO 3.2v4 cc rejects this sort of thing.  */-    char tx;-    char *t = &tx;-    char const *s = 0 ? (char *) 0 : (char const *) 0;--    *t++ = 0;-    if (s) return 0;-  }-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */-    int x[] = {25, 17};-    const int *foo = &x[0];-    ++foo;-  }-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */-    typedef const int *iptr;-    iptr p = 0;-    ++p;-  }-  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */-    struct s { int j; const int *ap[3]; } bx;-    struct s *b = &bx; b->j = 5;-  }-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */-    const int foo = 10;-    if (!foo) return 0;-  }-  return !cs[0] && !zero.x;-#endif--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_c_const=yes-else-  ac_cv_c_const=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5-$as_echo "$ac_cv_c_const" >&6; }-if test $ac_cv_c_const = no; then--$as_echo "#define const /**/" >>confdefs.h--fi---ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5-$as_echo_n "checking how to run the C preprocessor... " >&6; }-# On Suns, sometimes $CPP names a directory.-if test -n "$CPP" && test -d "$CPP"; then-  CPP=-fi-if test -z "$CPP"; then-  if ${ac_cv_prog_CPP+:} false; then :-  $as_echo_n "(cached) " >&6-else-      # Double quotes because CPP needs to be expanded-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"-    do-      ac_preproc_ok=false-for ac_c_preproc_warn_flag in '' yes-do-  # Use a header file that comes with gcc, so configuring glibc-  # with a fresh cross-compiler works.-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since-  # <limits.h> exists even on freestanding compilers.-  # On the NeXT, cc -E runs the code through the compiler's parser,-  # not just through cpp. "Syntax error" is here to catch this case.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif-		     Syntax error-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :--else-  # Broken: fails on valid input.-continue-fi-rm -f conftest.err conftest.i conftest.$ac_ext--  # OK, works on sane cases.  Now check whether nonexistent headers-  # can be detected and how.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <ac_nonexistent.h>-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :-  # Broken: success on invalid input.-continue-else-  # Passes both tests.-ac_preproc_ok=:-break-fi-rm -f conftest.err conftest.i conftest.$ac_ext--done-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.-rm -f conftest.i conftest.err conftest.$ac_ext-if $ac_preproc_ok; then :-  break-fi--    done-    ac_cv_prog_CPP=$CPP--fi-  CPP=$ac_cv_prog_CPP-else-  ac_cv_prog_CPP=$CPP-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5-$as_echo "$CPP" >&6; }-ac_preproc_ok=false-for ac_c_preproc_warn_flag in '' yes-do-  # Use a header file that comes with gcc, so configuring glibc-  # with a fresh cross-compiler works.-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since-  # <limits.h> exists even on freestanding compilers.-  # On the NeXT, cc -E runs the code through the compiler's parser,-  # not just through cpp. "Syntax error" is here to catch this case.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif-		     Syntax error-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :--else-  # Broken: fails on valid input.-continue-fi-rm -f conftest.err conftest.i conftest.$ac_ext--  # OK, works on sane cases.  Now check whether nonexistent headers-  # can be detected and how.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <ac_nonexistent.h>-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :-  # Broken: success on invalid input.-continue-else-  # Passes both tests.-ac_preproc_ok=:-break-fi-rm -f conftest.err conftest.i conftest.$ac_ext--done-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.-rm -f conftest.i conftest.err conftest.$ac_ext-if $ac_preproc_ok; then :--else-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check-See \`config.log' for more details" "$LINENO" 5; }-fi--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }-if ${ac_cv_path_GREP+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -z "$GREP"; then-  ac_path_GREP_found=false-  # Loop through the user's path and test for each of PROGNAME-LIST-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_prog in grep ggrep; do-    for ac_exec_ext in '' $ac_executable_extensions; do-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"-      as_fn_executable_p "$ac_path_GREP" || continue-# Check for GNU ac_path_GREP and select it if it is found.-  # Check for GNU $ac_path_GREP-case `"$ac_path_GREP" --version 2>&1` in-*GNU*)-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;-*)-  ac_count=0-  $as_echo_n 0123456789 >"conftest.in"-  while :-  do-    cat "conftest.in" "conftest.in" >"conftest.tmp"-    mv "conftest.tmp" "conftest.in"-    cp "conftest.in" "conftest.nl"-    $as_echo 'GREP' >> "conftest.nl"-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break-    as_fn_arith $ac_count + 1 && ac_count=$as_val-    if test $ac_count -gt ${ac_path_GREP_max-0}; then-      # Best one so far, save it but keep looking for a better one-      ac_cv_path_GREP="$ac_path_GREP"-      ac_path_GREP_max=$ac_count-    fi-    # 10*(2^10) chars as input seems more than enough-    test $ac_count -gt 10 && break-  done-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;-esac--      $ac_path_GREP_found && break 3-    done-  done-  done-IFS=$as_save_IFS-  if test -z "$ac_cv_path_GREP"; then-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5-  fi-else-  ac_cv_path_GREP=$GREP-fi--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5-$as_echo "$ac_cv_path_GREP" >&6; }- GREP="$ac_cv_path_GREP"---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5-$as_echo_n "checking for egrep... " >&6; }-if ${ac_cv_path_EGREP+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1-   then ac_cv_path_EGREP="$GREP -E"-   else-     if test -z "$EGREP"; then-  ac_path_EGREP_found=false-  # Loop through the user's path and test for each of PROGNAME-LIST-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_prog in egrep; do-    for ac_exec_ext in '' $ac_executable_extensions; do-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"-      as_fn_executable_p "$ac_path_EGREP" || continue-# Check for GNU ac_path_EGREP and select it if it is found.-  # Check for GNU $ac_path_EGREP-case `"$ac_path_EGREP" --version 2>&1` in-*GNU*)-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;-*)-  ac_count=0-  $as_echo_n 0123456789 >"conftest.in"-  while :-  do-    cat "conftest.in" "conftest.in" >"conftest.tmp"-    mv "conftest.tmp" "conftest.in"-    cp "conftest.in" "conftest.nl"-    $as_echo 'EGREP' >> "conftest.nl"-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break-    as_fn_arith $ac_count + 1 && ac_count=$as_val-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then-      # Best one so far, save it but keep looking for a better one-      ac_cv_path_EGREP="$ac_path_EGREP"-      ac_path_EGREP_max=$ac_count-    fi-    # 10*(2^10) chars as input seems more than enough-    test $ac_count -gt 10 && break-  done-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;-esac--      $ac_path_EGREP_found && break 3-    done-  done-  done-IFS=$as_save_IFS-  if test -z "$ac_cv_path_EGREP"; then-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5-  fi-else-  ac_cv_path_EGREP=$EGREP-fi--   fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5-$as_echo "$ac_cv_path_EGREP" >&6; }- EGREP="$ac_cv_path_EGREP"---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5-$as_echo_n "checking for ANSI C header files... " >&6; }-if ${ac_cv_header_stdc+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdlib.h>-#include <stdarg.h>-#include <string.h>-#include <float.h>--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_header_stdc=yes-else-  ac_cv_header_stdc=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext--if test $ac_cv_header_stdc = yes; then-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <string.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |-  $EGREP "memchr" >/dev/null 2>&1; then :--else-  ac_cv_header_stdc=no-fi-rm -f conftest*--fi--if test $ac_cv_header_stdc = yes; then-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdlib.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |-  $EGREP "free" >/dev/null 2>&1; then :--else-  ac_cv_header_stdc=no-fi-rm -f conftest*--fi--if test $ac_cv_header_stdc = yes; then-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.-  if test "$cross_compiling" = yes; then :-  :-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <ctype.h>-#include <stdlib.h>-#if ((' ' & 0x0FF) == 0x020)-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))-#else-# define ISLOWER(c) \-		   (('a' <= (c) && (c) <= 'i') \-		     || ('j' <= (c) && (c) <= 'r') \-		     || ('s' <= (c) && (c) <= 'z'))-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))-#endif--#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))-int-main ()-{-  int i;-  for (i = 0; i < 256; i++)-    if (XOR (islower (i), ISLOWER (i))-	|| toupper (i) != TOUPPER (i))-      return 2;-  return 0;-}-_ACEOF-if ac_fn_c_try_run "$LINENO"; then :--else-  ac_cv_header_stdc=no-fi-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \-  conftest.$ac_objext conftest.beam conftest.$ac_ext-fi--fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5-$as_echo "$ac_cv_header_stdc" >&6; }-if test $ac_cv_header_stdc = yes; then--$as_echo "#define STDC_HEADERS 1" >>confdefs.h--fi--# On IRIX 5.3, sys/types and inttypes.h are conflicting.-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \-		  inttypes.h stdint.h unistd.h-do :-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default-"-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :-  cat >>confdefs.h <<_ACEOF-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1-_ACEOF--fi--done---for ac_header in fcntl.h limits.h stdlib.h sys/types.h unistd.h winsock2.h ws2tcpip.h wspiapi.h-do :-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :-  cat >>confdefs.h <<_ACEOF-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1-_ACEOF--fi--done--for ac_header in arpa/inet.h netdb.h netinet/in.h netinet/tcp.h sys/socket.h sys/uio.h sys/un.h-do :-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :-  cat >>confdefs.h <<_ACEOF-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1-_ACEOF--fi--done---for ac_func in readlink symlink-do :-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :-  cat >>confdefs.h <<_ACEOF-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1-_ACEOF--fi-done---ac_fn_c_check_member "$LINENO" "struct msghdr" "msg_control" "ac_cv_member_struct_msghdr_msg_control" "#if HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#if HAVE_SYS_SOCKET_H-# include <sys/socket.h>-#endif-#if HAVE_SYS_UIO_H-# include <sys/uio.h>-#endif-"-if test "x$ac_cv_member_struct_msghdr_msg_control" = xyes; then :--cat >>confdefs.h <<_ACEOF-#define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1-_ACEOF---fi-ac_fn_c_check_member "$LINENO" "struct msghdr" "msg_accrights" "ac_cv_member_struct_msghdr_msg_accrights" "#if HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#if HAVE_SYS_SOCKET_H-# include <sys/socket.h>-#endif-#if HAVE_SYS_UIO_H-# include <sys/uio.h>-#endif-"-if test "x$ac_cv_member_struct_msghdr_msg_accrights" = xyes; then :--cat >>confdefs.h <<_ACEOF-#define HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS 1-_ACEOF---fi---ac_fn_c_check_member "$LINENO" "struct sockaddr" "sa_len" "ac_cv_member_struct_sockaddr_sa_len" "#if HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#if HAVE_SYS_SOCKET_H-# include <sys/socket.h>-#endif-"-if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes; then :--cat >>confdefs.h <<_ACEOF-#define HAVE_STRUCT_SOCKADDR_SA_LEN 1-_ACEOF---fi---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for in_addr_t in netinet/in.h" >&5-$as_echo_n "checking for in_addr_t in netinet/in.h... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <netinet/in.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |-  $EGREP "in_addr_t" >/dev/null 2>&1; then :--$as_echo "#define HAVE_IN_ADDR_T 1" >>confdefs.h- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi-rm -f conftest*---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SO_PEERCRED and struct ucred in sys/socket.h" >&5-$as_echo_n "checking for SO_PEERCRED and struct ucred in sys/socket.h... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <sys/types.h>-#include <sys/socket.h>-#ifndef SO_PEERCRED-# error no SO_PEERCRED-#endif-struct ucred u;-int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_ucred=yes-else-  ac_cv_ucred=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-if test "x$ac_cv_ucred" = xno; then-    old_CFLAGS="$CFLAGS"-    CFLAGS="-D_GNU_SOURCE $CFLAGS"-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <sys/types.h>-#include <sys/socket.h>-#ifndef SO_PEERCRED-# error no SO_PEERCRED-#endif-struct ucred u;-int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_ucred=yes-else-  ac_cv_ucred=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-    if test "x$ac_cv_ucred" = xyes; then-        EXTRA_CPPFLAGS=-D_GNU_SOURCE-    fi-else-    old_CFLAGS="$CFLAGS"-fi-if test "x$ac_cv_ucred" = xno; then-    CFLAGS="$old_CFLAGS"-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-else--$as_echo "#define HAVE_STRUCT_UCRED 1" >>confdefs.h--    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-fi--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _head_libws2_32_a in -lws2_32" >&5-$as_echo_n "checking for _head_libws2_32_a in -lws2_32... " >&6; }-if ${ac_cv_lib_ws2_32__head_libws2_32_a+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_check_lib_save_LIBS=$LIBS-LIBS="-lws2_32  $LIBS"-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char _head_libws2_32_a ();-int-main ()-{-return _head_libws2_32_a ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  ac_cv_lib_ws2_32__head_libws2_32_a=yes-else-  ac_cv_lib_ws2_32__head_libws2_32_a=no-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-LIBS=$ac_check_lib_save_LIBS-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ws2_32__head_libws2_32_a" >&5-$as_echo "$ac_cv_lib_ws2_32__head_libws2_32_a" >&6; }-if test "x$ac_cv_lib_ws2_32__head_libws2_32_a" = xyes; then :-  cat >>confdefs.h <<_ACEOF-#define HAVE_LIBWS2_32 1-_ACEOF--  LIBS="-lws2_32 $LIBS"--fi---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5-$as_echo_n "checking for getaddrinfo... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$ac_includes_default-int testme(){ getaddrinfo; }-int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :--$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h- ac_have_getaddrinfo=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext--if test "x$ac_have_getaddrinfo" = x; then-  old_CFLAGS="$CFLAGS"-  if test "z$ac_cv_lib_ws2_32__head_libws2_32_a" = zyes; then-    CFLAGS="-DWINVER=0x0501 $CFLAGS"-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo if WINVER is 0x0501" >&5-$as_echo_n "checking for getaddrinfo if WINVER is 0x0501... " >&6; }-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$ac_includes_default-    int testme(){ getaddrinfo; }-int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :--$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h--$as_echo "#define NEED_WINVER_XP 1" >>confdefs.h- EXTRA_CPPFLAGS="-DWINVER=0x0501 $EXTRA_CPPFLAGS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-else-  CFLAGS="$old_CFLAGS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-  fi-fi--for ac_func in gai_strerror-do :-  ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror"-if test "x$ac_cv_func_gai_strerror" = xyes; then :-  cat >>confdefs.h <<_ACEOF-#define HAVE_GAI_STRERROR 1-_ACEOF--fi-done---ac_fn_c_check_decl "$LINENO" "AI_ADDRCONFIG" "ac_cv_have_decl_AI_ADDRCONFIG" "$ac_includes_default"-if test "x$ac_cv_have_decl_AI_ADDRCONFIG" = xyes; then :-  ac_have_decl=1-else-  ac_have_decl=0-fi--cat >>confdefs.h <<_ACEOF-#define HAVE_DECL_AI_ADDRCONFIG $ac_have_decl-_ACEOF-ac_fn_c_check_decl "$LINENO" "AI_ALL" "ac_cv_have_decl_AI_ALL" "$ac_includes_default"-if test "x$ac_cv_have_decl_AI_ALL" = xyes; then :-  ac_have_decl=1-else-  ac_have_decl=0-fi--cat >>confdefs.h <<_ACEOF-#define HAVE_DECL_AI_ALL $ac_have_decl-_ACEOF-ac_fn_c_check_decl "$LINENO" "AI_NUMERICSERV" "ac_cv_have_decl_AI_NUMERICSERV" "$ac_includes_default"-if test "x$ac_cv_have_decl_AI_NUMERICSERV" = xyes; then :-  ac_have_decl=1-else-  ac_have_decl=0-fi--cat >>confdefs.h <<_ACEOF-#define HAVE_DECL_AI_NUMERICSERV $ac_have_decl-_ACEOF-ac_fn_c_check_decl "$LINENO" "AI_V4MAPPED" "ac_cv_have_decl_AI_V4MAPPED" "$ac_includes_default"-if test "x$ac_cv_have_decl_AI_V4MAPPED" = xyes; then :-  ac_have_decl=1-else-  ac_have_decl=0-fi--cat >>confdefs.h <<_ACEOF-#define HAVE_DECL_AI_V4MAPPED $ac_have_decl-_ACEOF---ac_fn_c_check_decl "$LINENO" "IPV6_V6ONLY" "ac_cv_have_decl_IPV6_V6ONLY" "$ac_includes_default"-if test "x$ac_cv_have_decl_IPV6_V6ONLY" = xyes; then :-  ac_have_decl=1-else-  ac_have_decl=0-fi--cat >>confdefs.h <<_ACEOF-#define HAVE_DECL_IPV6_V6ONLY $ac_have_decl-_ACEOF---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendfile in sys/sendfile.h" >&5-$as_echo_n "checking for sendfile in sys/sendfile.h... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <sys/sendfile.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |-  $EGREP "sendfile" >/dev/null 2>&1; then :--$as_echo "#define HAVE_LINUX_SENDFILE 1" >>confdefs.h- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi-rm -f conftest*---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendfile in sys/socket.h" >&5-$as_echo_n "checking for sendfile in sys/socket.h... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <sys/socket.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |-  $EGREP "sendfile" >/dev/null 2>&1; then :--$as_echo "#define HAVE_BSD_SENDFILE 1" >>confdefs.h- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi-rm -f conftest*---for ac_func in gethostent-do :-  ac_fn_c_check_func "$LINENO" "gethostent" "ac_cv_func_gethostent"-if test "x$ac_cv_func_gethostent" = xyes; then :-  cat >>confdefs.h <<_ACEOF-#define HAVE_GETHOSTENT 1-_ACEOF--fi-done---for ac_func in accept4-do :-  ac_fn_c_check_func "$LINENO" "accept4" "ac_cv_func_accept4"-if test "x$ac_cv_func_accept4" = xyes; then :-  cat >>confdefs.h <<_ACEOF-#define HAVE_ACCEPT4 1-_ACEOF--fi-done---case "$host" in-*-mingw32)-	EXTRA_SRCS="cbits/initWinSock.c, cbits/winSockErr.c, cbits/asyncAccept.c"-	EXTRA_LIBS=ws2_32-	CALLCONV=stdcall ;;-*-solaris2*)-	EXTRA_SRCS="cbits/ancilData.c"-	EXTRA_LIBS="nsl, socket"-	CALLCONV=ccall ;;-*)-	EXTRA_SRCS="cbits/ancilData.c"-	EXTRA_LIBS=-	CALLCONV=ccall ;;-esac------ac_config_files="$ac_config_files network.buildinfo"---cat >confcache <<\_ACEOF-# This file is a shell script that caches the results of configure-# tests run on this system so they can be shared between configure-# scripts and configure runs, see configure's option --config-cache.-# It is not useful on other systems.  If it contains results you don't-# want to keep, you may remove or edit it.-#-# config.status only pays attention to the cache file if you give it-# the --recheck option to rerun configure.-#-# `ac_cv_env_foo' variables (set or unset) will be overridden when-# loading this file, other *unset* `ac_cv_foo' will be assigned the-# following values.--_ACEOF--# The following way of writing the cache mishandles newlines in values,-# but we know of no workaround that is simple, portable, and efficient.-# So, we kill variables containing newlines.-# Ultrix sh set writes to stderr and can't be redirected directly,-# and sets the high bit in the cache file unless we assign to the vars.-(-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do-    eval ac_val=\$$ac_var-    case $ac_val in #(-    *${as_nl}*)-      case $ac_var in #(-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;-      esac-      case $ac_var in #(-      _ | IFS | as_nl) ;; #(-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(-      *) { eval $ac_var=; unset $ac_var;} ;;-      esac ;;-    esac-  done--  (set) 2>&1 |-    case $as_nl`(ac_space=' '; set) 2>&1` in #(-    *${as_nl}ac_space=\ *)-      # `set' does not quote correctly, so add quotes: double-quote-      # substitution turns \\\\ into \\, and sed turns \\ into \.-      sed -n \-	"s/'/'\\\\''/g;-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"-      ;; #(-    *)-      # `set' quotes correctly as required by POSIX, so do not add quotes.-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"-      ;;-    esac |-    sort-) |-  sed '-     /^ac_cv_env_/b end-     t clear-     :clear-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/-     t end-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/-     :end' >>confcache-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else-  if test -w "$cache_file"; then-    if test "x$cache_file" != "x/dev/null"; then-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5-$as_echo "$as_me: updating cache $cache_file" >&6;}-      if test ! -f "$cache_file" || test -h "$cache_file"; then-	cat confcache >"$cache_file"-      else-        case $cache_file in #(-        */* | ?:*)-	  mv -f confcache "$cache_file"$$ &&-	  mv -f "$cache_file"$$ "$cache_file" ;; #(-        *)-	  mv -f confcache "$cache_file" ;;-	esac-      fi-    fi-  else-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}-  fi-fi-rm -f confcache--test "x$prefix" = xNONE && prefix=$ac_default_prefix-# Let make expand exec_prefix.-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'--DEFS=-DHAVE_CONFIG_H--ac_libobjs=-ac_ltlibobjs=-U=-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue-  # 1. Remove the extension, and $U if already installed.-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR-  #    will be set to the directory where LIBOBJS objects are built.-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'-done-LIBOBJS=$ac_libobjs--LTLIBOBJS=$ac_ltlibobjs----: "${CONFIG_STATUS=./config.status}"-ac_write_fail=0-ac_clean_files_save=$ac_clean_files-ac_clean_files="$ac_clean_files $CONFIG_STATUS"-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}-as_write_fail=0-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1-#! $SHELL-# Generated by $as_me.-# Run this file to recreate the current configuration.-# Compiler output produced by configure, useful for debugging-# configure, is in config.log if it exists.--debug=false-ac_cs_recheck=false-ac_cs_silent=false--SHELL=\${CONFIG_SHELL-$SHELL}-export SHELL-_ASEOF-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1-## -------------------- ##-## M4sh Initialization. ##-## -------------------- ##--# Be more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :-  emulate sh-  NULLCMD=:-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '${1+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in #(-  *posix*) :-    set -o posix ;; #(-  *) :-     ;;-esac-fi---as_nl='-'-export as_nl-# Printing a long string crashes Solaris 7 /usr/bin/printf.-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo-# Prefer a ksh shell builtin over an external printf program on Solaris,-# but without wasting forks for bash or zsh.-if test -z "$BASH_VERSION$ZSH_VERSION" \-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='print -r --'-  as_echo_n='print -rn --'-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='printf %s\n'-  as_echo_n='printf %s'-else-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'-    as_echo_n='/usr/ucb/echo -n'-  else-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'-    as_echo_n_body='eval-      arg=$1;-      case $arg in #(-      *"$as_nl"*)-	expr "X$arg" : "X\\(.*\\)$as_nl";-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;-      esac;-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"-    '-    export as_echo_n_body-    as_echo_n='sh -c $as_echo_n_body as_echo'-  fi-  export as_echo_body-  as_echo='sh -c $as_echo_body as_echo'-fi--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then-  PATH_SEPARATOR=:-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||-      PATH_SEPARATOR=';'-  }-fi---# IFS-# We need space, tab and new line, in precisely that order.  Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-IFS=" ""	$as_nl"--# Find who we are.  Look in the path if we contain no directory separator.-as_myself=-case $0 in #((-  *[\\/]* ) as_myself=$0 ;;-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-  done-IFS=$as_save_IFS--     ;;-esac-# We did not find ourselves, most probably we were run as `sh COMMAND'-# in which case we are not to be found in the path.-if test "x$as_myself" = x; then-  as_myself=$0-fi-if test ! -f "$as_myself"; then-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2-  exit 1-fi--# Unset variables that we do not need and which cause bugs (e.g. in-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"-# suppresses any "Segmentation fault" message there.  '((' could-# trigger a bug in pdksh 5.2.14.-for as_var in BASH_ENV ENV MAIL MAILPATH-do eval test x\${$as_var+set} = xset \-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :-done-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-LC_ALL=C-export LC_ALL-LANGUAGE=C-export LANGUAGE--# CDPATH.-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH---# as_fn_error STATUS ERROR [LINENO LOG_FD]-# -----------------------------------------# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the-# script with STATUS, using 1 if that was 0.-as_fn_error ()-{-  as_status=$1; test $as_status -eq 0 && as_status=1-  if test "$4"; then-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4-  fi-  $as_echo "$as_me: error: $2" >&2-  as_fn_exit $as_status-} # as_fn_error---# as_fn_set_status STATUS-# ------------------------# Set $? to STATUS, without forking.-as_fn_set_status ()-{-  return $1-} # as_fn_set_status--# as_fn_exit STATUS-# ------------------# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.-as_fn_exit ()-{-  set +e-  as_fn_set_status $1-  exit $1-} # as_fn_exit--# as_fn_unset VAR-# ----------------# Portably unset VAR.-as_fn_unset ()-{-  { eval $1=; unset $1;}-}-as_unset=as_fn_unset-# as_fn_append VAR VALUE-# -----------------------# Append the text in VALUE to the end of the definition contained in VAR. Take-# advantage of any shell optimizations that allow amortized linear growth over-# repeated appends, instead of the typical quadratic growth present in naive-# implementations.-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :-  eval 'as_fn_append ()-  {-    eval $1+=\$2-  }'-else-  as_fn_append ()-  {-    eval $1=\$$1\$2-  }-fi # as_fn_append--# as_fn_arith ARG...-# -------------------# Perform arithmetic evaluation on the ARGs, and store the result in the-# global $as_val. Take advantage of shells that can avoid forks. The arguments-# must be portable across $(()) and expr.-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :-  eval 'as_fn_arith ()-  {-    as_val=$(( $* ))-  }'-else-  as_fn_arith ()-  {-    as_val=`expr "$@" || test $? -eq 1`-  }-fi # as_fn_arith---if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; then-  as_expr=expr-else-  as_expr=false-fi--if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then-  as_basename=basename-else-  as_basename=false-fi--if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then-  as_dirname=dirname-else-  as_dirname=false-fi--as_me=`$as_basename -- "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \-	 X"$0" : 'X\(//\)$' \| \-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X/"$0" |-    sed '/^.*\/\([^/][^/]*\)\/*$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`--# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in #(((((--n*)-  case `echo 'xy\c'` in-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.-  xy)  ECHO_C='\c';;-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null-       ECHO_T='	';;-  esac;;-*)-  ECHO_N='-n';;-esac--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then-  rm -f conf$$.dir/conf$$.file-else-  rm -f conf$$.dir-  mkdir conf$$.dir 2>/dev/null-fi-if (echo >conf$$.file) 2>/dev/null; then-  if ln -s conf$$.file conf$$ 2>/dev/null; then-    as_ln_s='ln -s'-    # ... but there are two gotchas:-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.-    # In both cases, we have to default to `cp -pR'.-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||-      as_ln_s='cp -pR'-  elif ln conf$$.file conf$$ 2>/dev/null; then-    as_ln_s=ln-  else-    as_ln_s='cp -pR'-  fi-else-  as_ln_s='cp -pR'-fi-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null---# as_fn_mkdir_p-# --------------# Create "$as_dir" as a directory, including parents if necessary.-as_fn_mkdir_p ()-{--  case $as_dir in #(-  -*) as_dir=./$as_dir;;-  esac-  test -d "$as_dir" || eval $as_mkdir_p || {-    as_dirs=-    while :; do-      case $as_dir in #(-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(-      *) as_qdir=$as_dir;;-      esac-      as_dirs="'$as_qdir' $as_dirs"-      as_dir=`$as_dirname -- "$as_dir" ||-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_dir" : 'X\(//\)[^/]' \| \-	 X"$as_dir" : 'X\(//\)$' \| \-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$as_dir" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-      test -d "$as_dir" && break-    done-    test -z "$as_dirs" || eval "mkdir $as_dirs"-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"---} # as_fn_mkdir_p-if mkdir -p . 2>/dev/null; then-  as_mkdir_p='mkdir -p "$as_dir"'-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi---# as_fn_executable_p FILE-# ------------------------# Test if FILE is an executable regular file.-as_fn_executable_p ()-{-  test -f "$1" && test -x "$1"-} # as_fn_executable_p-as_test_x='test -x'-as_executable_p=as_fn_executable_p--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"---exec 6>&1-## ----------------------------------- ##-## Main body of $CONFIG_STATUS script. ##-## ----------------------------------- ##-_ASEOF-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-# Save the log message, to keep $0 and so on meaningful, and to-# report actual input values of CONFIG_FILES etc. instead of their-# values after options handling.-ac_log="-This file was extended by Haskell network package $as_me 2.3.0.14, which was-generated by GNU Autoconf 2.69.  Invocation command line was--  CONFIG_FILES    = $CONFIG_FILES-  CONFIG_HEADERS  = $CONFIG_HEADERS-  CONFIG_LINKS    = $CONFIG_LINKS-  CONFIG_COMMANDS = $CONFIG_COMMANDS-  $ $0 $@--on `(hostname || uname -n) 2>/dev/null | sed 1q`-"--_ACEOF--case $ac_config_files in *"-"*) set x $ac_config_files; shift; ac_config_files=$*;;-esac--case $ac_config_headers in *"-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;-esac---cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-# Files that config.status was made for.-config_files="$ac_config_files"-config_headers="$ac_config_headers"--_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-ac_cs_usage="\-\`$as_me' instantiates files and other configuration actions-from templates according to the current configuration.  Unless the files-and actions are specified as TAGs, all are instantiated by default.--Usage: $0 [OPTION]... [TAG]...--  -h, --help       print this help, then exit-  -V, --version    print version number and configuration settings, then exit-      --config     print configuration, then exit-  -q, --quiet, --silent-                   do not print progress messages-  -d, --debug      don't remove temporary files-      --recheck    update $as_me by reconfiguring in the same conditions-      --file=FILE[:TEMPLATE]-                   instantiate the configuration file FILE-      --header=FILE[:TEMPLATE]-                   instantiate the configuration header FILE--Configuration files:-$config_files--Configuration headers:-$config_headers--Report bugs to <libraries@haskell.org>."--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"-ac_cs_version="\\-Haskell network package config.status 2.3.0.14-configured by $0, generated by GNU Autoconf 2.69,-  with options \\"\$ac_cs_config\\"--Copyright (C) 2012 Free Software Foundation, Inc.-This config.status script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it."--ac_pwd='$ac_pwd'-srcdir='$srcdir'-test -n "\$AWK" || AWK=awk-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-# The default lists apply if the user does not specify any file.-ac_need_defaults=:-while test $# != 0-do-  case $1 in-  --*=?*)-    ac_option=`expr "X$1" : 'X\([^=]*\)='`-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`-    ac_shift=:-    ;;-  --*=)-    ac_option=`expr "X$1" : 'X\([^=]*\)='`-    ac_optarg=-    ac_shift=:-    ;;-  *)-    ac_option=$1-    ac_optarg=$2-    ac_shift=shift-    ;;-  esac--  case $ac_option in-  # Handling of the options.-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)-    ac_cs_recheck=: ;;-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )-    $as_echo "$ac_cs_version"; exit ;;-  --config | --confi | --conf | --con | --co | --c )-    $as_echo "$ac_cs_config"; exit ;;-  --debug | --debu | --deb | --de | --d | -d )-    debug=: ;;-  --file | --fil | --fi | --f )-    $ac_shift-    case $ac_optarg in-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;-    '') as_fn_error $? "missing file argument" ;;-    esac-    as_fn_append CONFIG_FILES " '$ac_optarg'"-    ac_need_defaults=false;;-  --header | --heade | --head | --hea )-    $ac_shift-    case $ac_optarg in-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;-    esac-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"-    ac_need_defaults=false;;-  --he | --h)-    # Conflict between --help and --header-    as_fn_error $? "ambiguous option: \`$1'-Try \`$0 --help' for more information.";;-  --help | --hel | -h )-    $as_echo "$ac_cs_usage"; exit ;;-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \-  | -silent | --silent | --silen | --sile | --sil | --si | --s)-    ac_cs_silent=: ;;--  # This is an error.-  -*) as_fn_error $? "unrecognized option: \`$1'-Try \`$0 --help' for more information." ;;--  *) as_fn_append ac_config_targets " $1"-     ac_need_defaults=false ;;--  esac-  shift-done--ac_configure_extra_args=--if $ac_cs_silent; then-  exec 6>/dev/null-  ac_configure_extra_args="$ac_configure_extra_args --silent"-fi--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-if \$ac_cs_recheck; then-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion-  shift-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6-  CONFIG_SHELL='$SHELL'-  export CONFIG_SHELL-  exec "\$@"-fi--_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-exec 5>>config.log-{-  echo-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX-## Running $as_me. ##-_ASBOX-  $as_echo "$ac_log"-} >&5--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1--# Handling of arguments.-for ac_config_target in $ac_config_targets-do-  case $ac_config_target in-    "include/HsNetworkConfig.h") CONFIG_HEADERS="$CONFIG_HEADERS include/HsNetworkConfig.h" ;;-    "network.buildinfo") CONFIG_FILES="$CONFIG_FILES network.buildinfo" ;;--  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;-  esac-done---# If the user did not use the arguments to specify the items to instantiate,-# then the envvar interface is used.  Set only those that are not.-# We use the long form for the default assignment because of an extremely-# bizarre bug on SunOS 4.1.3.-if $ac_need_defaults; then-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers-fi--# Have a temporary directory for convenience.  Make it in the build tree-# simply because there is no reason against having it here, and in addition,-# creating and moving files from /tmp can sometimes cause problems.-# Hook for its removal unless debugging.-# Note that there is a small window in which the directory will not be cleaned:-# after its creation but before its name has been assigned to `$tmp'.-$debug ||-{-  tmp= ac_tmp=-  trap 'exit_status=$?-  : "${ac_tmp:=$tmp}"-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status-' 0-  trap 'as_fn_exit 1' 1 2 13 15-}-# Create a (secure) tmp directory for tmp files.--{-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&-  test -d "$tmp"-}  ||-{-  tmp=./conf$$-$RANDOM-  (umask 077 && mkdir "$tmp")-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5-ac_tmp=$tmp--# Set up the scripts for CONFIG_FILES section.-# No need to generate them if there are no CONFIG_FILES.-# This happens for instance with `./config.status config.h'.-if test -n "$CONFIG_FILES"; then---ac_cr=`echo X | tr X '\015'`-# On cygwin, bash can eat \r inside `` if the user requested igncr.-# But we know of no other shell where ac_cr would be empty at this-# point, so we can use a bashism as a fallback.-if test "x$ac_cr" = x; then-  eval ac_cr=\$\'\\r\'-fi-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then-  ac_cs_awk_cr='\\r'-else-  ac_cs_awk_cr=$ac_cr-fi--echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&-_ACEOF---{-  echo "cat >conf$$subs.awk <<_ACEOF" &&-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&-  echo "_ACEOF"-} >conf$$subs.sh ||-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`-ac_delim='%!_!# '-for ac_last_try in false false false false false :; do-  . ./conf$$subs.sh ||-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5--  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`-  if test $ac_delim_n = $ac_delim_num; then-    break-  elif $ac_last_try; then-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5-  else-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "-  fi-done-rm -f conf$$subs.sh--cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&-_ACEOF-sed -n '-h-s/^/S["/; s/!.*/"]=/-p-g-s/^[^!]*!//-:repl-t repl-s/'"$ac_delim"'$//-t delim-:nl-h-s/\(.\{148\}\)..*/\1/-t more1-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/-p-n-b repl-:more1-s/["\\]/\\&/g; s/^/"/; s/$/"\\/-p-g-s/.\{148\}//-t nl-:delim-h-s/\(.\{148\}\)..*/\1/-t more2-s/["\\]/\\&/g; s/^/"/; s/$/"/-p-b-:more2-s/["\\]/\\&/g; s/^/"/; s/$/"\\/-p-g-s/.\{148\}//-t delim-' <conf$$subs.awk | sed '-/^[^""]/{-  N-  s/\n//-}-' >>$CONFIG_STATUS || ac_write_fail=1-rm -f conf$$subs.awk-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-_ACAWK-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&-  for (key in S) S_is_set[key] = 1-  FS = ""--}-{-  line = $ 0-  nfields = split(line, field, "@")-  substed = 0-  len = length(field[1])-  for (i = 2; i < nfields; i++) {-    key = field[i]-    keylen = length(key)-    if (S_is_set[key]) {-      value = S[key]-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)-      len += length(value) + length(field[++i])-      substed = 1-    } else-      len += 1 + keylen-  }--  print line-}--_ACAWK-_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"-else-  cat-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5-_ACEOF--# VPATH may cause trouble with some makes, so we remove sole $(srcdir),-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and-# trailing colons and then remove the whole line if VPATH becomes empty-# (actually we leave an empty line to preserve line numbers).-if test "x$srcdir" = x.; then-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{-h-s///-s/^/:/-s/[	 ]*$/:/-s/:\$(srcdir):/:/g-s/:\${srcdir}:/:/g-s/:@srcdir@:/:/g-s/^:*//-s/:*$//-x-s/\(=[	 ]*\).*/\1/-G-s/\n//-s/^[^=]*=[	 ]*$//-}'-fi--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-fi # test -n "$CONFIG_FILES"--# Set up the scripts for CONFIG_HEADERS section.-# No need to generate them if there are no CONFIG_HEADERS.-# This happens for instance with `./config.status Makefile'.-if test -n "$CONFIG_HEADERS"; then-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||-BEGIN {-_ACEOF--# Transform confdefs.h into an awk script `defines.awk', embedded as-# here-document in config.status, that substitutes the proper values into-# config.h.in to produce config.h.--# Create a delimiter string that does not exist in confdefs.h, to ease-# handling of long lines.-ac_delim='%!_!# '-for ac_last_try in false false :; do-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`-  if test -z "$ac_tt"; then-    break-  elif $ac_last_try; then-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5-  else-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "-  fi-done--# For the awk script, D is an array of macro values keyed by name,-# likewise P contains macro parameters if any.  Preserve backslash-# newline sequences.--ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*-sed -n '-s/.\{148\}/&'"$ac_delim"'/g-t rset-:rset-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /-t def-d-:def-s/\\$//-t bsnl-s/["\\]/\\&/g-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\-D["\1"]=" \3"/p-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p-d-:bsnl-s/["\\]/\\&/g-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\-D["\1"]=" \3\\\\\\n"\\/p-t cont-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p-t cont-d-:cont-n-s/.\{148\}/&'"$ac_delim"'/g-t clear-:clear-s/\\$//-t bsnlc-s/["\\]/\\&/g; s/^/"/; s/$/"/p-d-:bsnlc-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p-b cont-' <confdefs.h | sed '-s/'"$ac_delim"'/"\\\-"/g' >>$CONFIG_STATUS || ac_write_fail=1--cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-  for (key in D) D_is_set[key] = 1-  FS = ""-}-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {-  line = \$ 0-  split(line, arg, " ")-  if (arg[1] == "#") {-    defundef = arg[2]-    mac1 = arg[3]-  } else {-    defundef = substr(arg[1], 2)-    mac1 = arg[2]-  }-  split(mac1, mac2, "(") #)-  macro = mac2[1]-  prefix = substr(line, 1, index(line, defundef) - 1)-  if (D_is_set[macro]) {-    # Preserve the white space surrounding the "#".-    print prefix "define", macro P[macro] D[macro]-    next-  } else {-    # Replace #undef with comments.  This is necessary, for example,-    # in the case of _POSIX_SOURCE, which is predefined and required-    # on some systems where configure will not decide to define it.-    if (defundef == "undef") {-      print "/*", prefix defundef, macro, "*/"-      next-    }-  }-}-{ print }-_ACAWK-_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5-fi # test -n "$CONFIG_HEADERS"---eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    "-shift-for ac_tag-do-  case $ac_tag in-  :[FHLC]) ac_mode=$ac_tag; continue;;-  esac-  case $ac_mode$ac_tag in-  :[FHL]*:*);;-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;-  :[FH]-) ac_tag=-:-;;-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;-  esac-  ac_save_IFS=$IFS-  IFS=:-  set x $ac_tag-  IFS=$ac_save_IFS-  shift-  ac_file=$1-  shift--  case $ac_mode in-  :L) ac_source=$1;;-  :[FH])-    ac_file_inputs=-    for ac_f-    do-      case $ac_f in-      -) ac_f="$ac_tmp/stdin";;-      *) # Look for the file first in the build tree, then in the source tree-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,-	 # because $ac_f cannot contain `:'.-	 test -f "$ac_f" ||-	   case $ac_f in-	   [\\/$]*) false;;-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;-	   esac ||-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;-      esac-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac-      as_fn_append ac_file_inputs " '$ac_f'"-    done--    # Let's still pretend it is `configure' which instantiates (i.e., don't-    # use $as_me), people would be surprised to read:-    #    /* config.h.  Generated by config.status.  */-    configure_input='Generated from '`-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'-	`' by configure.'-    if test x"$ac_file" != x-; then-      configure_input="$ac_file.  $configure_input"-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5-$as_echo "$as_me: creating $ac_file" >&6;}-    fi-    # Neutralize special characters interpreted by sed in replacement strings.-    case $configure_input in #(-    *\&* | *\|* | *\\* )-       ac_sed_conf_input=`$as_echo "$configure_input" |-       sed 's/[\\\\&|]/\\\\&/g'`;; #(-    *) ac_sed_conf_input=$configure_input;;-    esac--    case $ac_tag in-    *:-:* | *:-) cat >"$ac_tmp/stdin" \-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;-    esac-    ;;-  esac--  ac_dir=`$as_dirname -- "$ac_file" ||-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$ac_file" : 'X\(//\)[^/]' \| \-	 X"$ac_file" : 'X\(//\)$' \| \-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$ac_file" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-  as_dir="$ac_dir"; as_fn_mkdir_p-  ac_builddir=.--case "$ac_dir" in-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;-*)-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`-  # A ".." for each directory in $ac_dir_suffix.-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`-  case $ac_top_builddir_sub in-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;-  esac ;;-esac-ac_abs_top_builddir=$ac_pwd-ac_abs_builddir=$ac_pwd$ac_dir_suffix-# for backward compatibility:-ac_top_builddir=$ac_top_build_prefix--case $srcdir in-  .)  # We are building in place.-    ac_srcdir=.-    ac_top_srcdir=$ac_top_builddir_sub-    ac_abs_top_srcdir=$ac_pwd ;;-  [\\/]* | ?:[\\/]* )  # Absolute name.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir-    ac_abs_top_srcdir=$srcdir ;;-  *) # Relative name.-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_build_prefix$srcdir-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;-esac-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix---  case $ac_mode in-  :F)-  #-  # CONFIG_FILE-  #--_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-# If the template does not know about datarootdir, expand it.-# FIXME: This hack should be removed a few years after 2.60.-ac_datarootdir_hack=; ac_datarootdir_seen=-ac_sed_dataroot='-/datarootdir/ {-  p-  q-}-/@datadir@/p-/@docdir@/p-/@infodir@/p-/@localedir@/p-/@mandir@/p'-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in-*datarootdir*) ac_datarootdir_seen=yes;;-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}-_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-  ac_datarootdir_hack='-  s&@datadir@&$datadir&g-  s&@docdir@&$docdir&g-  s&@infodir@&$infodir&g-  s&@localedir@&$localedir&g-  s&@mandir@&$mandir&g-  s&\\\${datarootdir}&$datarootdir&g' ;;-esac-_ACEOF--# Neutralize VPATH when `$srcdir' = `.'.-# Shell code in configure.ac might set extrasub.-# FIXME: do we really want to maintain this feature?-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-ac_sed_extra="$ac_vpsub-$extrasub-_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-:t-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b-s|@configure_input@|$ac_sed_conf_input|;t t-s&@top_builddir@&$ac_top_builddir_sub&;t t-s&@top_build_prefix@&$ac_top_build_prefix&;t t-s&@srcdir@&$ac_srcdir&;t t-s&@abs_srcdir@&$ac_abs_srcdir&;t t-s&@top_srcdir@&$ac_top_srcdir&;t t-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t-s&@builddir@&$ac_builddir&;t t-s&@abs_builddir@&$ac_abs_builddir&;t t-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t-$ac_datarootdir_hack-"-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5--test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \-      "$ac_tmp/out"`; test -z "$ac_out"; } &&-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'-which seems to be undefined.  Please make sure it is defined" >&5-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'-which seems to be undefined.  Please make sure it is defined" >&2;}--  rm -f "$ac_tmp/stdin"-  case $ac_file in-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;-  esac \-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5- ;;-  :H)-  #-  # CONFIG_HEADER-  #-  if test x"$ac_file" != x-; then-    {-      $as_echo "/* $configure_input  */" \-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"-    } >"$ac_tmp/config.h" \-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5-$as_echo "$as_me: $ac_file is unchanged" >&6;}-    else-      rm -f "$ac_file"-      mv "$ac_tmp/config.h" "$ac_file" \-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5-    fi-  else-    $as_echo "/* $configure_input  */" \-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \-      || as_fn_error $? "could not create -" "$LINENO" 5-  fi- ;;---  esac--done # for ac_tag---as_fn_exit 0-_ACEOF-ac_clean_files=$ac_clean_files_save--test $ac_write_fail = 0 ||-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5---# configure is writing to config.log, and then calls config.status.-# config.status does its own redirection, appending to config.log.-# Unfortunately, on DOS this fails, as config.log is still kept open-# by configure, so config.status won't be able to write to it; its-# output is simply discarded.  So we exec the FD to /dev/null,-# effectively closing config.log, so it can be properly (re)opened and-# appended to by config.status.  When coming back to configure, we-# need to make the FD available again.-if test "$no_create" != yes; then-  ac_cs_success=:-  ac_config_status_args=-  test "$silent" = yes &&-    ac_config_status_args="$ac_config_status_args --quiet"-  exec 5>/dev/null-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false-  exec 5>>config.log-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which-  # would make configure fail if this is the last instruction.-  $ac_cs_success || as_fn_exit 1-fi-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}-fi-
− standalone/android/tmp/network-2.4.1.2/configure.ac
@@ -1,184 +0,0 @@-AC_INIT([Haskell network package], [2.3.0.14], [libraries@haskell.org], [network])--ac_includes_default="$ac_includes_default-#ifdef HAVE_SYS_SOCKET_H-# include <sys/socket.h>-#endif-#ifdef HAVE_NETINET_IN_H-# include <netinet/in.h>-#endif-#ifdef HAVE_NETDB_H-# include <netdb.h>-#endif-#ifdef HAVE_WINSOCK2_H-# include <winsock2.h>-#endif-#ifdef HAVE_WS2TCPIP_H-# include <ws2tcpip.h>-// fix for MingW not defining IPV6_V6ONLY-# define IPV6_V6ONLY 27-#endif-#ifdef HAVE_WSPIAPI_H-# include <wspiapi.h>-#endif"--# Safety check: Ensure that we are in the correct source directory.-AC_CONFIG_SRCDIR([include/HsNet.h])--AC_CONFIG_HEADERS([include/HsNetworkConfig.h])--AC_CANONICAL_HOST--AC_ARG_WITH([cc],-            [C compiler],-            [CC=$withval])-AC_PROG_CC()--AC_C_CONST--dnl ** check for specific header (.h) files that we are interested in-AC_CHECK_HEADERS([fcntl.h limits.h stdlib.h sys/types.h unistd.h winsock2.h ws2tcpip.h wspiapi.h])-AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h netinet/tcp.h sys/socket.h sys/uio.h sys/un.h])--AC_CHECK_FUNCS([readlink symlink])--dnl ** check what fields struct msghdr contains-AC_CHECK_MEMBERS([struct msghdr.msg_control, struct msghdr.msg_accrights], [], [], [#if HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#if HAVE_SYS_SOCKET_H-# include <sys/socket.h>-#endif-#if HAVE_SYS_UIO_H-# include <sys/uio.h>-#endif])--dnl ** check if struct sockaddr contains sa_len-AC_CHECK_MEMBERS([struct sockaddr.sa_len], [], [], [#if HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#if HAVE_SYS_SOCKET_H-# include <sys/socket.h>-#endif])--dnl ---------------------------------------------------dnl * test for in_addr_t-dnl ---------------------------------------------------AC_MSG_CHECKING(for in_addr_t in netinet/in.h)-AC_EGREP_HEADER(in_addr_t, netinet/in.h,- [ AC_DEFINE([HAVE_IN_ADDR_T], [1], [Define to 1 if in_addr_t is available.]) AC_MSG_RESULT(yes) ],- AC_MSG_RESULT(no))--dnl ---------------------------------------------------dnl * test for SO_PEERCRED and struct ucred-dnl ---------------------------------------------------AC_MSG_CHECKING(for SO_PEERCRED and struct ucred in sys/socket.h)-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>-#include <sys/socket.h>-#ifndef SO_PEERCRED-# error no SO_PEERCRED-#endif-struct ucred u;]])],ac_cv_ucred=yes,ac_cv_ucred=no)-if test "x$ac_cv_ucred" = xno; then-    old_CFLAGS="$CFLAGS"-    CFLAGS="-D_GNU_SOURCE $CFLAGS"-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>-#include <sys/socket.h>-#ifndef SO_PEERCRED-# error no SO_PEERCRED-#endif-struct ucred u;]])],ac_cv_ucred=yes,ac_cv_ucred=no)-    if test "x$ac_cv_ucred" = xyes; then-        EXTRA_CPPFLAGS=-D_GNU_SOURCE-    fi-else-    old_CFLAGS="$CFLAGS"-fi-if test "x$ac_cv_ucred" = xno; then-    CFLAGS="$old_CFLAGS"-    AC_MSG_RESULT(no)-else-    AC_DEFINE([HAVE_STRUCT_UCRED], [1], [Define to 1 if you have both SO_PEERCRED and struct ucred.])-    AC_MSG_RESULT(yes)-fi--dnl ---------------------------------------------------dnl * check for Windows networking libraries-dnl ---------------------------------------------------AC_CHECK_LIB(ws2_32, _head_libws2_32_a)--dnl ---------------------------------------------------dnl * test for getaddrinfo as proxy for IPv6 support-dnl ---------------------------------------------------AC_MSG_CHECKING(for getaddrinfo)-dnl Can't use AC_CHECK_FUNC here, because it doesn't do the right-dnl thing on Windows.-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$ac_includes_default-int testme(){ getaddrinfo; }]])],[AC_DEFINE([HAVE_GETADDRINFO], [1], [Define to 1 if you have the `getaddrinfo' function.]) ac_have_getaddrinfo=yes; AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])--dnl Under mingw, we may need to set WINVER to 0x0501 to expose getaddrinfo.-if test "x$ac_have_getaddrinfo" = x; then-  old_CFLAGS="$CFLAGS"-  if test "z$ac_cv_lib_ws2_32__head_libws2_32_a" = zyes; then-    CFLAGS="-DWINVER=0x0501 $CFLAGS"-    AC_MSG_CHECKING(for getaddrinfo if WINVER is 0x0501)-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$ac_includes_default-    int testme(){ getaddrinfo; }]])],[AC_DEFINE([HAVE_GETADDRINFO], [1], [Define to 1 if you have the `getaddrinfo' function.]) AC_DEFINE([NEED_WINVER_XP], [1], [Define to 1 if the `getaddrinfo' function needs WINVER set.]) EXTRA_CPPFLAGS="-DWINVER=0x0501 $EXTRA_CPPFLAGS"; AC_MSG_RESULT(yes)],[CFLAGS="$old_CFLAGS"; AC_MSG_RESULT(no)])-  fi-fi--dnl Missing under mingw, sigh.-AC_CHECK_FUNCS(gai_strerror)--dnl --------------------------------------------------------dnl * test for AI_* flags that not all implementations have-dnl --------------------------------------------------------AC_CHECK_DECLS([AI_ADDRCONFIG, AI_ALL, AI_NUMERICSERV, AI_V4MAPPED])--dnl --------------------------------------------------------dnl * test for IPV6_V6ONLY flags that not all implementations have-dnl --------------------------------------------------------AC_CHECK_DECLS([IPV6_V6ONLY])--dnl ---------------------------------------------------dnl * test for Linux sendfile(2)-dnl ---------------------------------------------------AC_MSG_CHECKING(for sendfile in sys/sendfile.h)-AC_EGREP_HEADER(sendfile, sys/sendfile.h,- [ AC_DEFINE([HAVE_LINUX_SENDFILE], [1], [Define to 1 if you have a Linux sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],- AC_MSG_RESULT(no))--dnl ---------------------------------------------------dnl * test for BSD sendfile(2)-dnl ---------------------------------------------------AC_MSG_CHECKING(for sendfile in sys/socket.h)-AC_EGREP_HEADER(sendfile, sys/socket.h,- [ AC_DEFINE([HAVE_BSD_SENDFILE], [1], [Define to 1 if you have a BSDish sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],- AC_MSG_RESULT(no))--AC_CHECK_FUNCS(gethostent)--AC_CHECK_FUNCS(accept4)--case "$host" in-*-mingw32)-	EXTRA_SRCS="cbits/initWinSock.c, cbits/winSockErr.c, cbits/asyncAccept.c"-	EXTRA_LIBS=ws2_32-	CALLCONV=stdcall ;;-*-solaris2*)-	EXTRA_SRCS="cbits/ancilData.c"-	EXTRA_LIBS="nsl, socket"-	CALLCONV=ccall ;;-*)-	EXTRA_SRCS="cbits/ancilData.c"-	EXTRA_LIBS=-	CALLCONV=ccall ;;-esac-AC_SUBST([CALLCONV])-AC_SUBST([EXTRA_CPPFLAGS])-AC_SUBST([EXTRA_LIBS])-AC_SUBST([EXTRA_SRCS])--AC_CONFIG_FILES([network.buildinfo])--AC_OUTPUT
− standalone/android/tmp/network-2.4.1.2/examples/EchoClient.hs
@@ -1,18 +0,0 @@--- Echo client program-module Main where--import Network.Socket hiding (recv)-import Network.Socket.ByteString (recv, sendAll)-import qualified Data.ByteString.Char8 as C--main :: IO ()-main = withSocketsDo $-    do addrinfos <- getAddrInfo Nothing (Just "") (Just "3000")-       let serveraddr = head addrinfos-       sock <- socket (addrFamily serveraddr) Stream defaultProtocol-       connect sock (addrAddress serveraddr)-       sendAll sock $ C.pack "Hello, world!"-       msg <- recv sock 1024-       sClose sock-       putStr "Received "-       C.putStrLn msg
− standalone/android/tmp/network-2.4.1.2/examples/EchoServer.hs
@@ -1,27 +0,0 @@--- Echo server program-module Main where--import Control.Monad (unless)-import Network.Socket hiding (recv)-import qualified Data.ByteString as S-import Network.Socket.ByteString (recv, sendAll)--main :: IO ()-main = withSocketsDo $-    do addrinfos <- getAddrInfo-                    (Just (defaultHints {addrFlags = [AI_PASSIVE]}))-                    Nothing (Just "3000")-       let serveraddr = head addrinfos-       sock <- socket (addrFamily serveraddr) Stream defaultProtocol-       bindSocket sock (addrAddress serveraddr)-       listen sock 1-       (conn, _) <- accept sock-       talk conn-       sClose conn-       sClose sock--    where-      talk :: Socket -> IO ()-      talk conn =-          do msg <- recv conn 1024-             unless (S.null msg) $ sendAll conn msg >> talk conn
− standalone/android/tmp/network-2.4.1.2/include/HsNet.h
@@ -1,179 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Definitions for package `net' which are visible in Haskell land.- *- * ---------------------------------------------------------------------------*/--#ifndef HSNET_H-#define HSNET_H--#include "HsNetworkConfig.h"--#ifdef NEED_WINVER-# define WINVER 0x0501-#endif--/* ultra-evil... */-#undef PACKAGE_BUGREPORT-#undef PACKAGE_NAME-#undef PACKAGE_STRING-#undef PACKAGE_TARNAME-#undef PACKAGE_VERSION--#ifndef INLINE-# if defined(_MSC_VER)-#  define INLINE extern __inline-# elif defined(__GNUC__)-#  define INLINE extern inline-# else-#  define INLINE inline-# endif-#endif--#ifdef HAVE_GETADDRINFO-# define IPV6_SOCKET_SUPPORT 1-#else-# undef IPV6_SOCKET_SUPPORT-#endif--#if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)-#include <winsock2.h>-# ifdef HAVE_WS2TCPIP_H-#  include <ws2tcpip.h>-// fix for MingW not defining IPV6_V6ONLY-#  define IPV6_V6ONLY 27-# endif-# ifdef HAVE_WSPIAPI_H-#  include <wspiapi.h>-# endif--extern void  shutdownWinSock();-extern int   initWinSock ();-extern const char* getWSErrorDescr(int err);-extern void* newAcceptParams(int sock,-			     int sz,-			     void* sockaddr);-extern int   acceptNewSock(void* d);-extern int   acceptDoProc(void* param);--#else--#ifdef HAVE_LIMITS_H-# include <limits.h>-#endif-#ifdef HAVE_STDLIB_H-# include <stdlib.h>-#endif-#ifdef HAVE_UNISTD_H-#include <unistd.h>-#endif-#ifdef HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#ifdef HAVE_FCNTL_H-# include <fcntl.h>-#endif-#ifdef HAVE_SYS_UIO_H-# include <sys/uio.h>-#endif-#ifdef HAVE_SYS_SOCKET_H-# include <sys/socket.h>-#endif-#ifdef HAVE_NETINET_TCP_H-# include <netinet/tcp.h>-#endif-#ifdef HAVE_NETINET_IN_H-# include <netinet/in.h>-#endif-#ifdef HAVE_SYS_UN_H-# include <sys/un.h>-#endif-#ifdef HAVE_ARPA_INET_H-# include <arpa/inet.h>-#endif-#ifdef HAVE_NETDB_H-#include <netdb.h>-#endif--#ifdef HAVE_BSD_SENDFILE-#include <sys/uio.h>-#endif-#ifdef HAVE_LINUX_SENDFILE-#if !defined(__USE_FILE_OFFSET64)-#include <sys/sendfile.h>-#endif-#endif--extern int-sendFd(int sock, int outfd);--extern int-recvFd(int sock);--#endif /* HAVE_WINSOCK2_H && !__CYGWIN */--INLINE char *-my_inet_ntoa(-#if defined(HAVE_WINSOCK2_H)-             u_long addr-#elif defined(HAVE_IN_ADDR_T)-             in_addr_t addr-#elif defined(HAVE_INTTYPES_H)-             u_int32_t addr-#else-             unsigned long addr-#endif-	    )-{ -    struct in_addr a;-    a.s_addr = addr;-    return inet_ntoa(a);-}--#ifdef HAVE_GETADDRINFO-INLINE int-hsnet_getnameinfo(const struct sockaddr* a,socklen_t b, char* c,-# if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)-                  DWORD d, char* e, DWORD f, int g)-# else-                  socklen_t d, char* e, socklen_t f, int g)-# endif-{-  return getnameinfo(a,b,c,d,e,f,g);-}--INLINE int-hsnet_getaddrinfo(const char *hostname, const char *servname,-		  const struct addrinfo *hints, struct addrinfo **res)-{-    return getaddrinfo(hostname, servname, hints, res);-}--INLINE void-hsnet_freeaddrinfo(struct addrinfo *ai)-{-    freeaddrinfo(ai);-}-#endif--#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)-# define WITH_WINSOCK  1-#endif--#if !defined(mingw32_HOST_OS) && !defined(_WIN32)-# define DOMAIN_SOCKET_SUPPORT 1-#endif--#if !defined(CALLCONV)-# if defined(WITH_WINSOCK)-#  define CALLCONV stdcall-# else-#  define CALLCONV ccall-# endif-#endif--#if !defined(IOV_MAX)-# define IOV_MAX 1024-#endif--#endif /* HSNET_H */
− standalone/android/tmp/network-2.4.1.2/include/HsNetworkConfig.h
@@ -1,154 +0,0 @@-/* include/HsNetworkConfig.h.  Generated from HsNetworkConfig.h.in by configure.  */-/* include/HsNetworkConfig.h.in.  Generated from configure.ac by autoheader.  */--/* Define to 1 if you have the `accept4' function. */-/* #undef HAVE_ACCEPT4 */--/* Define to 1 if you have the <arpa/inet.h> header file. */-#define HAVE_ARPA_INET_H 1--/* Define to 1 if you have a BSDish sendfile(2) implementation. */-#define HAVE_BSD_SENDFILE 1--/* Define to 1 if you have the declaration of `AI_ADDRCONFIG', and to 0 if you-   don't. */-#define HAVE_DECL_AI_ADDRCONFIG 1--/* Define to 1 if you have the declaration of `AI_ALL', and to 0 if you don't.-   */-#define HAVE_DECL_AI_ALL 1--/* Define to 1 if you have the declaration of `AI_NUMERICSERV', and to 0 if-   you don't. */-#define HAVE_DECL_AI_NUMERICSERV 1--/* Define to 1 if you have the declaration of `AI_V4MAPPED', and to 0 if you-   don't. */-#define HAVE_DECL_AI_V4MAPPED 1--/* Define to 1 if you have the declaration of `IPV6_V6ONLY', and to 0 if you-   don't. */-#define HAVE_DECL_IPV6_V6ONLY 1--/* Define to 1 if you have the <fcntl.h> header file. */-#define HAVE_FCNTL_H 1--/* Define to 1 if you have the `gai_strerror' function. */-#define HAVE_GAI_STRERROR 1--/* Define to 1 if you have the `getaddrinfo' function. */-#define HAVE_GETADDRINFO 1--/* Define to 1 if you have the `gethostent' function. */-#define HAVE_GETHOSTENT 1--/* Define to 1 if you have the <inttypes.h> header file. */-#define HAVE_INTTYPES_H 1--/* Define to 1 if in_addr_t is available. */-#define HAVE_IN_ADDR_T 1--/* Define to 1 if you have the `ws2_32' library (-lws2_32). */-/* #undef HAVE_LIBWS2_32 */--/* Define to 1 if you have the <limits.h> header file. */-#define HAVE_LIMITS_H 1--/* Define to 1 if you have a Linux sendfile(2) implementation. */-/* #undef HAVE_LINUX_SENDFILE */--/* Define to 1 if you have the <memory.h> header file. */-#define HAVE_MEMORY_H 1--/* Define to 1 if you have the <netdb.h> header file. */-#define HAVE_NETDB_H 1--/* Define to 1 if you have the <netinet/in.h> header file. */-#define HAVE_NETINET_IN_H 1--/* Define to 1 if you have the <netinet/tcp.h> header file. */-#define HAVE_NETINET_TCP_H 1--/* Define to 1 if you have the `readlink' function. */-#define HAVE_READLINK 1--/* Define to 1 if you have the <stdint.h> header file. */-#define HAVE_STDINT_H 1--/* Define to 1 if you have the <stdlib.h> header file. */-#define HAVE_STDLIB_H 1--/* Define to 1 if you have the <strings.h> header file. */-#define HAVE_STRINGS_H 1--/* Define to 1 if you have the <string.h> header file. */-#define HAVE_STRING_H 1--/* Define to 1 if `msg_accrights' is a member of `struct msghdr'. */-/* #undef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */--/* Define to 1 if `msg_control' is a member of `struct msghdr'. */-#define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1--/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */-#define HAVE_STRUCT_SOCKADDR_SA_LEN 1--/* Define to 1 if you have both SO_PEERCRED and struct ucred. */-/* #undef HAVE_STRUCT_UCRED */--/* Define to 1 if you have the `symlink' function. */-#define HAVE_SYMLINK 1--/* Define to 1 if you have the <sys/socket.h> header file. */-#define HAVE_SYS_SOCKET_H 1--/* Define to 1 if you have the <sys/stat.h> header file. */-#define HAVE_SYS_STAT_H 1--/* Define to 1 if you have the <sys/types.h> header file. */-#define HAVE_SYS_TYPES_H 1--/* Define to 1 if you have the <sys/uio.h> header file. */-#define HAVE_SYS_UIO_H 1--/* Define to 1 if you have the <sys/un.h> header file. */-#define HAVE_SYS_UN_H 1--/* Define to 1 if you have the <unistd.h> header file. */-#define HAVE_UNISTD_H 1--/* Define to 1 if you have the <winsock2.h> header file. */-/* #undef HAVE_WINSOCK2_H */--/* Define to 1 if you have the <ws2tcpip.h> header file. */-/* #undef HAVE_WS2TCPIP_H */--/* Define to 1 if you have the <wspiapi.h> header file. */-/* #undef HAVE_WSPIAPI_H */--/* Define to 1 if the `getaddrinfo' function needs WINVER set. */-/* #undef NEED_WINVER_XP */--/* Define to the address where bug reports for this package should be sent. */-#define PACKAGE_BUGREPORT "libraries@haskell.org"--/* Define to the full name of this package. */-#define PACKAGE_NAME "Haskell network package"--/* Define to the full name and version of this package. */-#define PACKAGE_STRING "Haskell network package 2.3.0.14"--/* Define to the one symbol short name of this package. */-#define PACKAGE_TARNAME "network"--/* Define to the home page for this package. */-#define PACKAGE_URL ""--/* Define to the version of this package. */-#define PACKAGE_VERSION "2.3.0.14"--/* Define to 1 if you have the ANSI C header files. */-#define STDC_HEADERS 1--/* Define to empty if `const' does not conform to ANSI C. */-/* #undef const */
− standalone/android/tmp/network-2.4.1.2/include/HsNetworkConfig.h.in
@@ -1,153 +0,0 @@-/* include/HsNetworkConfig.h.in.  Generated from configure.ac by autoheader.  */--/* Define to 1 if you have the `accept4' function. */-#undef HAVE_ACCEPT4--/* Define to 1 if you have the <arpa/inet.h> header file. */-#undef HAVE_ARPA_INET_H--/* Define to 1 if you have a BSDish sendfile(2) implementation. */-#undef HAVE_BSD_SENDFILE--/* Define to 1 if you have the declaration of `AI_ADDRCONFIG', and to 0 if you-   don't. */-#undef HAVE_DECL_AI_ADDRCONFIG--/* Define to 1 if you have the declaration of `AI_ALL', and to 0 if you don't.-   */-#undef HAVE_DECL_AI_ALL--/* Define to 1 if you have the declaration of `AI_NUMERICSERV', and to 0 if-   you don't. */-#undef HAVE_DECL_AI_NUMERICSERV--/* Define to 1 if you have the declaration of `AI_V4MAPPED', and to 0 if you-   don't. */-#undef HAVE_DECL_AI_V4MAPPED--/* Define to 1 if you have the declaration of `IPV6_V6ONLY', and to 0 if you-   don't. */-#undef HAVE_DECL_IPV6_V6ONLY--/* Define to 1 if you have the <fcntl.h> header file. */-#undef HAVE_FCNTL_H--/* Define to 1 if you have the `gai_strerror' function. */-#undef HAVE_GAI_STRERROR--/* Define to 1 if you have the `getaddrinfo' function. */-#undef HAVE_GETADDRINFO--/* Define to 1 if you have the `gethostent' function. */-#undef HAVE_GETHOSTENT--/* Define to 1 if you have the <inttypes.h> header file. */-#undef HAVE_INTTYPES_H--/* Define to 1 if in_addr_t is available. */-#undef HAVE_IN_ADDR_T--/* Define to 1 if you have the `ws2_32' library (-lws2_32). */-#undef HAVE_LIBWS2_32--/* Define to 1 if you have the <limits.h> header file. */-#undef HAVE_LIMITS_H--/* Define to 1 if you have a Linux sendfile(2) implementation. */-#undef HAVE_LINUX_SENDFILE--/* Define to 1 if you have the <memory.h> header file. */-#undef HAVE_MEMORY_H--/* Define to 1 if you have the <netdb.h> header file. */-#undef HAVE_NETDB_H--/* Define to 1 if you have the <netinet/in.h> header file. */-#undef HAVE_NETINET_IN_H--/* Define to 1 if you have the <netinet/tcp.h> header file. */-#undef HAVE_NETINET_TCP_H--/* Define to 1 if you have the `readlink' function. */-#undef HAVE_READLINK--/* Define to 1 if you have the <stdint.h> header file. */-#undef HAVE_STDINT_H--/* Define to 1 if you have the <stdlib.h> header file. */-#undef HAVE_STDLIB_H--/* Define to 1 if you have the <strings.h> header file. */-#undef HAVE_STRINGS_H--/* Define to 1 if you have the <string.h> header file. */-#undef HAVE_STRING_H--/* Define to 1 if `msg_accrights' is a member of `struct msghdr'. */-#undef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS--/* Define to 1 if `msg_control' is a member of `struct msghdr'. */-#undef HAVE_STRUCT_MSGHDR_MSG_CONTROL--/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */-#undef HAVE_STRUCT_SOCKADDR_SA_LEN--/* Define to 1 if you have both SO_PEERCRED and struct ucred. */-#undef HAVE_STRUCT_UCRED--/* Define to 1 if you have the `symlink' function. */-#undef HAVE_SYMLINK--/* Define to 1 if you have the <sys/socket.h> header file. */-#undef HAVE_SYS_SOCKET_H--/* Define to 1 if you have the <sys/stat.h> header file. */-#undef HAVE_SYS_STAT_H--/* Define to 1 if you have the <sys/types.h> header file. */-#undef HAVE_SYS_TYPES_H--/* Define to 1 if you have the <sys/uio.h> header file. */-#undef HAVE_SYS_UIO_H--/* Define to 1 if you have the <sys/un.h> header file. */-#undef HAVE_SYS_UN_H--/* Define to 1 if you have the <unistd.h> header file. */-#undef HAVE_UNISTD_H--/* Define to 1 if you have the <winsock2.h> header file. */-#undef HAVE_WINSOCK2_H--/* Define to 1 if you have the <ws2tcpip.h> header file. */-#undef HAVE_WS2TCPIP_H--/* Define to 1 if you have the <wspiapi.h> header file. */-#undef HAVE_WSPIAPI_H--/* Define to 1 if the `getaddrinfo' function needs WINVER set. */-#undef NEED_WINVER_XP--/* Define to the address where bug reports for this package should be sent. */-#undef PACKAGE_BUGREPORT--/* Define to the full name of this package. */-#undef PACKAGE_NAME--/* Define to the full name and version of this package. */-#undef PACKAGE_STRING--/* Define to the one symbol short name of this package. */-#undef PACKAGE_TARNAME--/* Define to the home page for this package. */-#undef PACKAGE_URL--/* Define to the version of this package. */-#undef PACKAGE_VERSION--/* Define to 1 if you have the ANSI C header files. */-#undef STDC_HEADERS--/* Define to empty if `const' does not conform to ANSI C. */-#undef const
− standalone/android/tmp/network-2.4.1.2/install-sh
@@ -1,295 +0,0 @@-#!/bin/sh-# install - install a program, script, or datafile--scriptversion=2003-09-24.23--# This originates from X11R5 (mit/util/scripts/install.sh), which was-# later released in X11R6 (xc/config/util/install.sh) with the-# following copyright and license.-#-# Copyright (C) 1994 X Consortium-#-# Permission is hereby granted, free of charge, to any person obtaining a copy-# of this software and associated documentation files (the "Software"), to-# deal in the Software without restriction, including without limitation the-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or-# sell copies of the Software, and to permit persons to whom the Software is-# furnished to do so, subject to the following conditions:-#-# The above copyright notice and this permission notice shall be included in-# all copies or substantial portions of the Software.-#-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC--# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.-#-# Except as contained in this notice, the name of the X Consortium shall not-# be used in advertising or otherwise to promote the sale, use or other deal--# ings in this Software without prior written authorization from the X Consor--# tium.-#-#-# FSF changes to this file are in the public domain.-#-# Calling this script install-sh is preferred over install.sh, to prevent-# `make' implicit rules from creating a file called install from it-# when there is no Makefile.-#-# This script is compatible with the BSD install script, but was written-# from scratch.  It can only install one file at a time, a restriction-# shared with many OS's install programs.--# set DOITPROG to echo to test this script--# Don't use :- since 4.3BSD and earlier shells don't like it.-doit="${DOITPROG-}"--# put in absolute paths if you don't have them in your path; or use env. vars.--mvprog="${MVPROG-mv}"-cpprog="${CPPROG-cp}"-chmodprog="${CHMODPROG-chmod}"-chownprog="${CHOWNPROG-chown}"-chgrpprog="${CHGRPPROG-chgrp}"-stripprog="${STRIPPROG-strip}"-rmprog="${RMPROG-rm}"-mkdirprog="${MKDIRPROG-mkdir}"--transformbasename=-transform_arg=-instcmd="$mvprog"-chmodcmd="$chmodprog 0755"-chowncmd=-chgrpcmd=-stripcmd=-rmcmd="$rmprog -f"-mvcmd="$mvprog"-src=-dst=-dir_arg=--usage="Usage: $0 [OPTION]... SRCFILE DSTFILE-   or: $0 -d DIR1 DIR2...--In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.-In the second, create the directory path DIR.--Options:--b=TRANSFORMBASENAME--c         copy source (using $cpprog) instead of moving (using $mvprog).--d         create directories instead of installing files.--g GROUP   $chgrp installed files to GROUP.--m MODE    $chmod installed files to MODE.--o USER    $chown installed files to USER.--s         strip installed files (using $stripprog).--t=TRANSFORM---help     display this help and exit.---version  display version info and exit.--Environment variables override the default commands:-  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG-"--while test -n "$1"; do-  case $1 in-    -b=*) transformbasename=`echo $1 | sed 's/-b=//'`-        shift-        continue;;--    -c) instcmd=$cpprog-        shift-        continue;;--    -d) dir_arg=true-        shift-        continue;;--    -g) chgrpcmd="$chgrpprog $2"-        shift-        shift-        continue;;--    --help) echo "$usage"; exit 0;;--    -m) chmodcmd="$chmodprog $2"-        shift-        shift-        continue;;--    -o) chowncmd="$chownprog $2"-        shift-        shift-        continue;;--    -s) stripcmd=$stripprog-        shift-        continue;;--    -t=*) transformarg=`echo $1 | sed 's/-t=//'`-        shift-        continue;;--    --version) echo "$0 $scriptversion"; exit 0;;--    *)  if test -z "$src"; then-          src=$1-        else-          # this colon is to work around a 386BSD /bin/sh bug-          :-          dst=$1-        fi-        shift-        continue;;-  esac-done--if test -z "$src"; then-  echo "$0: no input file specified." >&2-  exit 1-fi--# Protect names starting with `-'.-case $src in-  -*) src=./$src ;;-esac--if test -n "$dir_arg"; then-  dst=$src-  src=--  if test -d "$dst"; then-    instcmd=:-    chmodcmd=-  else-    instcmd=$mkdirprog-  fi-else-  # Waiting for this to be detected by the "$instcmd $src $dsttmp" command-  # might cause directories to be created, which would be especially bad-  # if $src (and thus $dsttmp) contains '*'.-  if test ! -f "$src" && test ! -d "$src"; then-    echo "$0: $src does not exist." >&2-    exit 1-  fi--  if test -z "$dst"; then-    echo "$0: no destination specified." >&2-    exit 1-  fi--  # Protect names starting with `-'.-  case $dst in-    -*) dst=./$dst ;;-  esac--  # If destination is a directory, append the input filename; won't work-  # if double slashes aren't ignored.-  if test -d "$dst"; then-    dst=$dst/`basename "$src"`-  fi-fi--# This sed command emulates the dirname command.-dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`--# Make sure that the destination directory exists.--# Skip lots of stat calls in the usual case.-if test ! -d "$dstdir"; then-  defaultIFS='-	'-  IFS="${IFS-$defaultIFS}"--  oIFS=$IFS-  # Some sh's can't handle IFS=/ for some reason.-  IFS='%'-  set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`-  IFS=$oIFS--  pathcomp=--  while test $# -ne 0 ; do-    pathcomp=$pathcomp$1-    shift-    test -d "$pathcomp" || $mkdirprog "$pathcomp"-    pathcomp=$pathcomp/-  done-fi--if test -n "$dir_arg"; then-  $doit $instcmd "$dst" \-    && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \-    && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \-    && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \-    && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }--else-  # If we're going to rename the final executable, determine the name now.-  if test -z "$transformarg"; then-    dstfile=`basename "$dst"`-  else-    dstfile=`basename "$dst" $transformbasename \-             | sed $transformarg`$transformbasename-  fi--  # don't allow the sed command to completely eliminate the filename.-  test -z "$dstfile" && dstfile=`basename "$dst"`--  # Make a couple of temp file names in the proper directory.-  dsttmp=$dstdir/_inst.$$_-  rmtmp=$dstdir/_rm.$$_--  # Trap to clean up those temp files at exit.-  trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0-  trap '(exit $?); exit' 1 2 13 15--  # Move or copy the file name to the temp name-  $doit $instcmd "$src" "$dsttmp" &&--  # and set any options; do chmod last to preserve setuid bits.-  #-  # If any of these fail, we abort the whole thing.  If we want to-  # ignore errors from any of these, just make sure not to ignore-  # errors from the above "$doit $instcmd $src $dsttmp" command.-  #-  { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \-    && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \-    && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \-    && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&--  # Now remove or move aside any old file at destination location.  We-  # try this two ways since rm can't unlink itself on some systems and-  # the destination file might be busy for other reasons.  In this case,-  # the final cleanup might fail but the new file should still install-  # successfully.-  {-    if test -f "$dstdir/$dstfile"; then-      $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \-      || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \-      || {-	  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2-	  (exit 1); exit-      }-    else-      :-    fi-  } &&--  # Now rename the file to the real destination.-  $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"-fi &&--# The final little trick to "correctly" pass the exit status to the exit trap.-{-  (exit 0); exit-}--# Local variables:-# eval: (add-hook 'write-file-hooks 'time-stamp)-# time-stamp-start: "scriptversion="-# time-stamp-format: "%:y-%02m-%02d.%02H"-# time-stamp-end: "$"-# End:
− standalone/android/tmp/network-2.4.1.2/network.buildinfo.in
@@ -1,5 +0,0 @@-ghc-options: -DCALLCONV=@CALLCONV@ @EXTRA_CPPFLAGS@-ghc-prof-options: -DCALLCONV=@CALLCONV@ @EXTRA_CPPFLAGS@-cc-options: -DCALLCONV=@CALLCONV@ @EXTRA_CPPFLAGS@-c-sources: @EXTRA_SRCS@-extra-libraries: @EXTRA_LIBS@
− standalone/android/tmp/network-2.4.1.2/network.cabal
@@ -1,103 +0,0 @@-name:           network-version:        2.4.1.2-license:        BSD3-license-file:   LICENSE-maintainer:     Johan Tibell <johan.tibell@gmail.com>-synopsis:       Low-level networking interface-description:    Low-level networking interface-category:       Network-build-type:     Configure-cabal-version:  >=1.8-extra-tmp-files:-  config.log config.status autom4te.cache network.buildinfo-  include/HsNetworkConfig.h-extra-source-files:-  README examples/*.hs tests/*.hs config.guess config.sub install-sh-  configure.ac configure network.buildinfo.in-  include/HsNetworkConfig.h.in include/HsNet.h-  -- C sources only used on some systems-  cbits/ancilData.c cbits/asyncAccept.c cbits/initWinSock.c-  cbits/winSockErr.c-homepage:       https://github.com/haskell/network-bug-reports:    https://github.com/haskell/network/issues--library-  exposed-modules:-    Network-    Network.BSD-    Network.Socket-    Network.Socket.ByteString-    Network.Socket.ByteString.Lazy-    Network.Socket.Internal-    Network.URI-  other-modules:-    Network.Socket.ByteString.Internal-    Network.Socket.Types--  if !os(windows)-    other-modules:-      Network.Socket.ByteString.IOVec-      Network.Socket.ByteString.MsgHdr--  build-depends:-    base >= 3 && < 5,-    bytestring,-    parsec >= 3.0--  if !os(windows)-    build-depends:-      unix >= 2--  extensions:-    CPP, DeriveDataTypeable, ForeignFunctionInterface, TypeSynonymInstances-  include-dirs: include-  includes: HsNet.h-  install-includes: HsNet.h HsNetworkConfig.h-  c-sources: cbits/HsNet.c-  if impl(ghc >= 6.8)-    ghc-options: -fwarn-tabs--test-suite simple-  hs-source-dirs: tests-  main-is: Simple.hs-  type: exitcode-stdio-1.0--  build-depends:-    base < 5,-    bytestring,-    HUnit,-    network,-    test-framework,-    test-framework-hunit--test-suite regression-  hs-source-dirs: tests-  main-is: Regression.hs-  type: exitcode-stdio-1.0--  build-depends:-    base < 5,-    bytestring,-    HUnit,-    network,-    test-framework,-    test-framework-hunit--  ghc-options: -Wall--test-suite uri-  hs-source-dirs: tests-  main-is: uri001.hs-  type: exitcode-stdio-1.0--  build-depends:-    base < 5,-    HUnit,-    network,-    test-framework,-    test-framework-hunit,-    test-framework-quickcheck2--source-repository head-  type:     git-  location: git://github.com/haskell/network.git
− standalone/android/tmp/network-2.4.1.2/tests/Regression.hs
@@ -1,31 +0,0 @@--- | Tests for things that didn't work in the past.-module Main where--import Network.Socket-import Test.Framework (Test, defaultMain)-import Test.Framework.Providers.HUnit (testCase)----------------------------------------------------------------------------- Tests---- Used to segfault on OS X 10.8.2 due to AI_NUMERICSERV being set--- without a service being set. This is a OS X bug.-testGetAddrInfo :: IO ()-testGetAddrInfo = do-    let hints = defaultHints { addrFlags = [AI_NUMERICSERV] }-    _ <- getAddrInfo (Just hints) (Just "localhost") Nothing-    return ()----------------------------------------------------------------------------- List of all tests--tests :: [Test]-tests =-    [ testCase "testGetAddrInfo" testGetAddrInfo-    ]----------------------------------------------------------------------------- Test harness--main :: IO ()-main = withSocketsDo $ defaultMain tests
− standalone/android/tmp/network-2.4.1.2/tests/Simple.hs
@@ -1,244 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}--module Main where--import Control.Concurrent (ThreadId, forkIO, myThreadId)-import Control.Concurrent.MVar (newEmptyMVar, putMVar, takeMVar, readMVar)-import qualified Control.Exception as E-import qualified Data.ByteString as S-import qualified Data.ByteString.Char8 as C-import Network.Socket hiding (recv, recvFrom, send, sendTo)-import Network.Socket.ByteString-import Test.Framework (Test, defaultMain, testGroup)-import Test.Framework.Providers.HUnit (testCase)-import Test.HUnit (Assertion, (@=?))----------------------------------------------------------------------------serverAddr :: String-serverAddr = "127.0.0.1"--testMsg :: S.ByteString-testMsg = C.pack "This is a test message."----------------------------------------------------------------------------- Tests----------------------------------------------------------------------------- Sending and receiving--testSend :: Assertion-testSend = tcpTest client server-  where-    server sock = recv sock 1024 >>= (@=?) testMsg-    client sock = send sock testMsg--testSendAll :: Assertion-testSendAll = tcpTest client server-  where-    server sock = recv sock 1024 >>= (@=?) testMsg-    client sock = sendAll sock testMsg--testSendTo :: Assertion-testSendTo = udpTest client server-  where-    server sock = recv sock 1024 >>= (@=?) testMsg-    client sock serverPort = do-        addr <- inet_addr serverAddr-        sendTo sock testMsg (SockAddrInet serverPort addr)--testSendAllTo :: Assertion-testSendAllTo = udpTest client server-  where-    server sock = recv sock 1024 >>= (@=?) testMsg-    client sock serverPort = do-        addr <- inet_addr serverAddr-        sendAllTo sock testMsg (SockAddrInet serverPort addr)--testSendMany :: Assertion-testSendMany = tcpTest client server-  where-    server sock = recv sock 1024 >>= (@=?) (S.append seg1 seg2)-    client sock = sendMany sock [seg1, seg2]--    seg1 = C.pack "This is a "-    seg2 = C.pack "test message."--testSendManyTo :: Assertion-testSendManyTo = udpTest client server-  where-    server sock = recv sock 1024 >>= (@=?) (S.append seg1 seg2)-    client sock serverPort = do-        addr <- inet_addr serverAddr-        sendManyTo sock [seg1, seg2] (SockAddrInet serverPort addr)--    seg1 = C.pack "This is a "-    seg2 = C.pack "test message."--testRecv :: Assertion-testRecv = tcpTest client server-  where-    server sock = recv sock 1024 >>= (@=?) testMsg-    client sock = send sock testMsg--testOverFlowRecv :: Assertion-testOverFlowRecv = tcpTest client server-  where-    server sock = do seg1 <- recv sock (S.length testMsg - 3)-                     seg2 <- recv sock 1024-                     let msg = S.append seg1 seg2-                     testMsg @=? msg--    client sock = send sock testMsg--testRecvFrom :: Assertion-testRecvFrom = tcpTest client server-  where-    server sock = do (msg, _) <- recvFrom sock 1024-                     testMsg @=? msg--    client sock = do-        serverPort <- getPeerPort sock-        addr <- inet_addr serverAddr-        sendTo sock testMsg (SockAddrInet serverPort addr)--testOverFlowRecvFrom :: Assertion-testOverFlowRecvFrom = tcpTest client server-  where-    server sock = do (seg1, _) <- recvFrom sock (S.length testMsg - 3)-                     (seg2, _) <- recvFrom sock 1024-                     let msg = S.append seg1 seg2-                     testMsg @=? msg--    client sock = send sock testMsg----------------------------------------------------------------------------- Other----------------------------------------------------------------------------- List of all tests--basicTests :: Test-basicTests = testGroup "Basic socket operations"-    [-      -- Sending and receiving-      testCase "testSend" testSend-    , testCase "testSendAll" testSendAll-    , testCase "testSendTo" testSendTo-    , testCase "testSendAllTo" testSendAllTo-    , testCase "testSendMany" testSendMany-    , testCase "testSendManyTo" testSendManyTo-    , testCase "testRecv" testRecv-    , testCase "testOverFlowRecv" testOverFlowRecv-    , testCase "testRecvFrom" testRecvFrom-    , testCase "testOverFlowRecvFrom" testOverFlowRecvFrom-    ]--tests :: [Test]-tests = [basicTests]----------------------------------------------------------------------------- Test helpers---- | Returns the 'PortNumber' of the peer. Will throw an 'error' if--- used on a non-IP socket.-getPeerPort :: Socket -> IO PortNumber-getPeerPort sock = do-    sockAddr <- getPeerName sock-    case sockAddr of-        (SockAddrInet port _) -> return port-        (SockAddrInet6 port _ _ _) -> return port-        _ -> error "getPeerPort: only works with IP sockets"---- | Establish a connection between client and server and then run--- 'clientAct' and 'serverAct', in different threads.  Both actions--- get passed a connected 'Socket', used for communicating between--- client and server.  'tcpTest' makes sure that the 'Socket' is--- closed after the actions have run.-tcpTest :: (Socket -> IO a) -> (Socket -> IO b) -> IO ()-tcpTest clientAct serverAct = do-    portVar <- newEmptyMVar-    test (clientSetup portVar) clientAct (serverSetup portVar) server-  where-    clientSetup portVar = do-        sock <- socket AF_INET Stream defaultProtocol-        addr <- inet_addr serverAddr-        serverPort <- readMVar portVar-        connect sock $ SockAddrInet serverPort addr-        return sock--    serverSetup portVar = do-        sock <- socket AF_INET Stream defaultProtocol-        setSocketOption sock ReuseAddr 1-        addr <- inet_addr serverAddr-        bindSocket sock (SockAddrInet aNY_PORT addr)-        listen sock 1-        serverPort <- socketPort sock-        putMVar portVar serverPort-        return sock--    server sock = do-        (clientSock, _) <- accept sock-        serverAct clientSock-        sClose clientSock---- | Create an unconnected 'Socket' for sending UDP and receiving--- datagrams and then run 'clientAct' and 'serverAct'.-udpTest :: (Socket -> PortNumber -> IO a) -> (Socket -> IO b) -> IO ()-udpTest clientAct serverAct = do-    portVar <- newEmptyMVar-    test clientSetup (client portVar) (serverSetup portVar) serverAct-  where-    clientSetup = socket AF_INET Datagram defaultProtocol--    client portVar sock = do-        serverPort <- readMVar portVar-        clientAct sock serverPort--    serverSetup portVar = do-        sock <- socket AF_INET Datagram defaultProtocol-        setSocketOption sock ReuseAddr 1-        addr <- inet_addr serverAddr-        bindSocket sock (SockAddrInet aNY_PORT addr)-        serverPort <- socketPort sock-        putMVar portVar serverPort-        return sock---- | Run a client/server pair and synchronize them so that the server--- is started before the client and the specified server action is--- finished before the client closes the 'Socket'.-test :: IO Socket -> (Socket -> IO b) -> IO Socket -> (Socket -> IO c) -> IO ()-test clientSetup clientAct serverSetup serverAct = do-    tid <- myThreadId-    barrier <- newEmptyMVar-    forkIO $ server barrier-    client tid barrier-  where-    server barrier = do-        E.bracket serverSetup sClose $ \sock -> do-            serverReady-            serverAct sock-            putMVar barrier ()-      where-        -- | Signal to the client that it can proceed.-        serverReady = putMVar barrier ()--    client tid barrier = do-        takeMVar barrier-        -- Transfer exceptions to the main thread.-        bracketWithReraise tid clientSetup sClose $ \res -> do-            clientAct res-            takeMVar barrier---- | Like 'bracket' but catches and reraises the exception in another--- thread, specified by the first argument.-bracketWithReraise :: ThreadId -> IO a -> (a -> IO b) -> (a -> IO ()) -> IO ()-bracketWithReraise tid before after thing =-    E.bracket before after thing-    `E.catch` \ (e :: E.SomeException) -> E.throwTo tid e----------------------------------------------------------------------------- Test harness--main :: IO ()-main = withSocketsDo $ defaultMain tests
− standalone/android/tmp/network-2.4.1.2/tests/uri001.hs
@@ -1,1431 +0,0 @@-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}------------------------------------------------------------------------------------  $Id: URITest.hs,v 1.8 2005/07/19 22:01:27 gklyne Exp $------  Copyright (c) 2004, G. KLYNE.  All rights reserved.---  See end of this file for licence information.------------------------------------------------------------------------------------ |---  Module      :  URITest---  Copyright   :  (c) 2004, Graham Klyne---  License     :  BSD-style (see end of this file)------  Maintainer  :  Graham Klyne---  Stability   :  provisional---  Portability :  H98------  This Module contains test cases for module URI.------  To run this test without using Cabal to build the package---  (2013-01-05, instructions tested on MacOS):---  1. Install Haskell platform---  2. cabal install test-framework---  3. cabal install test-framework-hunit---  4. ghc -XDeriveDataTypeable -D"MIN_VERSION_base(x,y,z)=1" ../Network/URI.hs uri001.hs---  5. ./uri001------  Previous build instructions:---  Using GHC, I compile with this command line:---  ghc --make -fglasgow-exts---      -i..\;C:\Dev\Haskell\Lib\HUnit;C:\Dev\Haskell\Lib\Parsec---      -o URITest.exe URITest -main-is URITest.main---  The -i line may need changing for alternative installations.--------------------------------------------------------------------------------------module Main where--import Network.URI-    ( URI(..), URIAuth(..)-    , nullURI-    , parseURI, parseURIReference, parseRelativeReference, parseAbsoluteURI-    , parseAbsoluteURI-    , isURI, isURIReference, isRelativeReference, isAbsoluteURI-    , uriIsAbsolute, uriIsRelative-    , relativeTo, nonStrictRelativeTo-    , relativeFrom-    , uriToString-    , isUnescapedInURIComponent-    , isUnescapedInURI, escapeURIString, unEscapeString-    , normalizeCase, normalizeEscape, normalizePathSegments-    )--import Test.HUnit--import Data.Maybe (fromJust)-import System.IO (openFile, IOMode(WriteMode), hClose)-import qualified Test.Framework as TF-import qualified Test.Framework.Providers.HUnit as TF-import qualified Test.Framework.Providers.QuickCheck2 as TF---- Test supplied string for valid URI reference syntax---   isValidURIRef :: String -> Bool--- Test supplied string for valid absolute URI reference syntax---   isAbsoluteURIRef :: String -> Bool--- Test supplied string for valid absolute URI syntax---   isAbsoluteURI :: String -> Bool--data URIType = AbsId    -- URI form (absolute, no fragment)-             | AbsRf    -- Absolute URI reference-             | RelRf    -- Relative URI reference-             | InvRf    -- Invalid URI reference-isValidT :: URIType -> Bool-isValidT InvRf = False-isValidT _     = True--isAbsRfT :: URIType -> Bool-isAbsRfT AbsId = True-isAbsRfT AbsRf = True-isAbsRfT _     = False--isRelRfT :: URIType -> Bool-isRelRfT RelRf = True-isRelRfT _     = False--isAbsIdT :: URIType -> Bool-isAbsIdT AbsId = True-isAbsIdT _     = False--testEq :: (Eq a, Show a) => String -> a -> a -> Assertion-testEq lab a1 a2 = assertEqual lab a1 a2--testURIRef :: URIType -> String -> Assertion-testURIRef t u = sequence_-  [ testEq ("test_isURIReference:"++u) (isValidT t) (isURIReference u)-  , testEq ("test_isRelativeReference:"++u)  (isRelRfT t) (isRelativeReference  u)-  , testEq ("test_isAbsoluteURI:"++u)  (isAbsIdT t) (isAbsoluteURI  u)-  ]--testURIRefComponents :: String -> (Maybe URI) -> String -> Assertion-testURIRefComponents _lab uv us =-    testEq ("testURIRefComponents:"++us) uv (parseURIReference us)---testURIRef001 = testURIRef AbsRf "http://example.org/aaa/bbb#ccc"-testURIRef002 = testURIRef AbsId "mailto:local@domain.org"-testURIRef003 = testURIRef AbsRf "mailto:local@domain.org#frag"-testURIRef004 = testURIRef AbsRf "HTTP://EXAMPLE.ORG/AAA/BBB#CCC"-testURIRef005 = testURIRef RelRf "//example.org/aaa/bbb#ccc"-testURIRef006 = testURIRef RelRf "/aaa/bbb#ccc"-testURIRef007 = testURIRef RelRf "bbb#ccc"-testURIRef008 = testURIRef RelRf "#ccc"-testURIRef009 = testURIRef RelRf "#"-testURIRef010 = testURIRef RelRf "/"--- escapes-testURIRef011 = testURIRef AbsRf "http://example.org/aaa%2fbbb#ccc"-testURIRef012 = testURIRef AbsRf "http://example.org/aaa%2Fbbb#ccc"-testURIRef013 = testURIRef RelRf "%2F"-testURIRef014 = testURIRef RelRf "aaa%2Fbbb"--- ports-testURIRef015 = testURIRef AbsRf "http://example.org:80/aaa/bbb#ccc"-testURIRef016 = testURIRef AbsRf "http://example.org:/aaa/bbb#ccc"-testURIRef017 = testURIRef AbsRf "http://example.org./aaa/bbb#ccc"-testURIRef018 = testURIRef AbsRf "http://example.123./aaa/bbb#ccc"--- bare authority-testURIRef019 = testURIRef AbsId "http://example.org"--- IPv6 literals (from RFC2732):-testURIRef021 = testURIRef AbsId "http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html"-testURIRef022 = testURIRef AbsId "http://[1080:0:0:0:8:800:200C:417A]/index.html"-testURIRef023 = testURIRef AbsId "http://[3ffe:2a00:100:7031::1]"-testURIRef024 = testURIRef AbsId "http://[1080::8:800:200C:417A]/foo"-testURIRef025 = testURIRef AbsId "http://[::192.9.5.5]/ipng"-testURIRef026 = testURIRef AbsId "http://[::FFFF:129.144.52.38]:80/index.html"-testURIRef027 = testURIRef AbsId "http://[2010:836B:4179::836B:4179]"-testURIRef028 = testURIRef RelRf "//[2010:836B:4179::836B:4179]"-testURIRef029 = testURIRef InvRf "[2010:836B:4179::836B:4179]"--- RFC2396 test cases-testURIRef031 = testURIRef RelRf "./aaa"-testURIRef032 = testURIRef RelRf "../aaa"-testURIRef033 = testURIRef AbsId "g:h"-testURIRef034 = testURIRef RelRf "g"-testURIRef035 = testURIRef RelRf "./g"-testURIRef036 = testURIRef RelRf "g/"-testURIRef037 = testURIRef RelRf "/g"-testURIRef038 = testURIRef RelRf "//g"-testURIRef039 = testURIRef RelRf "?y"-testURIRef040 = testURIRef RelRf "g?y"-testURIRef041 = testURIRef RelRf "#s"-testURIRef042 = testURIRef RelRf "g#s"-testURIRef043 = testURIRef RelRf "g?y#s"-testURIRef044 = testURIRef RelRf ";x"-testURIRef045 = testURIRef RelRf "g;x"-testURIRef046 = testURIRef RelRf "g;x?y#s"-testURIRef047 = testURIRef RelRf "."-testURIRef048 = testURIRef RelRf "./"-testURIRef049 = testURIRef RelRf ".."-testURIRef050 = testURIRef RelRf "../"-testURIRef051 = testURIRef RelRf "../g"-testURIRef052 = testURIRef RelRf "../.."-testURIRef053 = testURIRef RelRf "../../"-testURIRef054 = testURIRef RelRf "../../g"-testURIRef055 = testURIRef RelRf "../../../g"-testURIRef056 = testURIRef RelRf "../../../../g"-testURIRef057 = testURIRef RelRf "/./g"-testURIRef058 = testURIRef RelRf "/../g"-testURIRef059 = testURIRef RelRf "g."-testURIRef060 = testURIRef RelRf ".g"-testURIRef061 = testURIRef RelRf "g.."-testURIRef062 = testURIRef RelRf "..g"-testURIRef063 = testURIRef RelRf "./../g"-testURIRef064 = testURIRef RelRf "./g/."-testURIRef065 = testURIRef RelRf "g/./h"-testURIRef066 = testURIRef RelRf "g/../h"-testURIRef067 = testURIRef RelRf "g;x=1/./y"-testURIRef068 = testURIRef RelRf "g;x=1/../y"-testURIRef069 = testURIRef RelRf "g?y/./x"-testURIRef070 = testURIRef RelRf "g?y/../x"-testURIRef071 = testURIRef RelRf "g#s/./x"-testURIRef072 = testURIRef RelRf "g#s/../x"-testURIRef073 = testURIRef RelRf ""-testURIRef074 = testURIRef RelRf "A'C"-testURIRef075 = testURIRef RelRf "A$C"-testURIRef076 = testURIRef RelRf "A@C"-testURIRef077 = testURIRef RelRf "A,C"--- Invalid-testURIRef080 = testURIRef InvRf "http://foo.org:80Path/More"-testURIRef081 = testURIRef InvRf "::"-testURIRef082 = testURIRef InvRf " "-testURIRef083 = testURIRef InvRf "%"-testURIRef084 = testURIRef InvRf "A%Z"-testURIRef085 = testURIRef InvRf "%ZZ"-testURIRef086 = testURIRef InvRf "%AZ"-testURIRef087 = testURIRef InvRf "A C"--- testURIRef088 = -- (case removed)--- testURIRef089 = -- (case removed)-testURIRef090 = testURIRef InvRf "A\"C"-testURIRef091 = testURIRef InvRf "A`C"-testURIRef092 = testURIRef InvRf "A<C"-testURIRef093 = testURIRef InvRf "A>C"-testURIRef094 = testURIRef InvRf "A^C"-testURIRef095 = testURIRef InvRf "A\\C"-testURIRef096 = testURIRef InvRf "A{C"-testURIRef097 = testURIRef InvRf "A|C"-testURIRef098 = testURIRef InvRf "A}C"--- From RFC2396:--- rel_segment   = 1*( unreserved | escaped |---                     ";" | "@" | "&" | "=" | "+" | "$" | "," )--- unreserved    = alphanum | mark--- mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |---                 "(" | ")"--- Note RFC 2732 allows '[', ']' ONLY for reserved purpose of IPv6 literals,--- or does it?-testURIRef101 = testURIRef InvRf "A[C"-testURIRef102 = testURIRef InvRf "A]C"-testURIRef103 = testURIRef InvRf "A[**]C"-testURIRef104 = testURIRef InvRf "http://[xyz]/"-testURIRef105 = testURIRef InvRf "http://]/"-testURIRef106 = testURIRef InvRf "http://example.org/[2010:836B:4179::836B:4179]"-testURIRef107 = testURIRef InvRf "http://example.org/abc#[2010:836B:4179::836B:4179]"-testURIRef108 = testURIRef InvRf "http://example.org/xxx/[qwerty]#a[b]"--- Random other things that crop up-testURIRef111 = testURIRef AbsRf "http://example/Andr&#567;"-testURIRef112 = testURIRef AbsId "file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/"-testURIRef113 = testURIRef AbsId "http://46229EFFE16A9BD60B9F1BE88B2DB047ADDED785/demo.mp3"-testURIRef114 = testURIRef InvRf "http://example.org/xxx/qwerty#a#b"-testURIRef115 = testURIRef InvRf "dcp.tcp.pft://192.168.0.1:1002:3002?fec=1&crc=0"-testURIRef116 = testURIRef AbsId "dcp.tcp.pft://192.168.0.1:1002?fec=1&crc=0"-testURIRef117 = testURIRef AbsId "foo://"--- URIs prefixed with IPv4 addresses-testURIRef118 = testURIRef AbsId "http://192.168.0.1.example.com/"-testURIRef119 = testURIRef AbsId "http://192.168.0.1.example.com./"--- URI prefixed with 3 octets of an IPv4 address and a subdomain part with a leading digit.-testURIRef120 = testURIRef AbsId "http://192.168.0.1test.example.com/"--- URI with IPv(future) address-testURIRef121 = testURIRef AbsId "http://[v9.123.abc;456.def]/"-testURIRef122 = testEq "v.future authority" -                       (Just (URIAuth "" "[v9.123.abc;456.def]" ":42"))-                       ((maybe Nothing uriAuthority) . parseURI $ "http://[v9.123.abc;456.def]:42/") --- URI with non-ASCII characters, fail with Network.HTTP escaping code (see below)--- Currently not supported by Network.URI, but captured here for possible future reference--- when IRI support may be added.-testURIRef123 = testURIRef AbsId "http://example.com/test123/䡥汬漬⁗潲汤/index.html"-testURIRef124 = testURIRef AbsId "http://example.com/test124/Москва/index.html"---- From report by Alexander Ivanov:--- should return " 䡥汬漬⁗潲汤", but returns "Hello, World" instead--- print $ urlDecode $ urlEncode " 䡥汬漬⁗潲汤"--- should return "Москва"--- print $ urlDecode $ urlEncode "Москва"--testURIRefSuite = TF.testGroup "Test URIrefs" testURIRefList-testURIRefList =-  [ TF.testCase "testURIRef001" testURIRef001-  , TF.testCase "testURIRef002" testURIRef002-  , TF.testCase "testURIRef003" testURIRef003-  , TF.testCase "testURIRef004" testURIRef004-  , TF.testCase "testURIRef005" testURIRef005-  , TF.testCase "testURIRef006" testURIRef006-  , TF.testCase "testURIRef007" testURIRef007-  , TF.testCase "testURIRef008" testURIRef008-  , TF.testCase "testURIRef009" testURIRef009-  , TF.testCase "testURIRef010" testURIRef010-    ---  , TF.testCase "testURIRef011" testURIRef011-  , TF.testCase "testURIRef012" testURIRef012-  , TF.testCase "testURIRef013" testURIRef013-  , TF.testCase "testURIRef014" testURIRef014-  , TF.testCase "testURIRef015" testURIRef015-  , TF.testCase "testURIRef016" testURIRef016-  , TF.testCase "testURIRef017" testURIRef017-  , TF.testCase "testURIRef018" testURIRef018-    ---  , TF.testCase "testURIRef019" testURIRef019-    ---  , TF.testCase "testURIRef021" testURIRef021-  , TF.testCase "testURIRef022" testURIRef022-  , TF.testCase "testURIRef023" testURIRef023-  , TF.testCase "testURIRef024" testURIRef024-  , TF.testCase "testURIRef025" testURIRef025-  , TF.testCase "testURIRef026" testURIRef026-  , TF.testCase "testURIRef027" testURIRef027-  , TF.testCase "testURIRef028" testURIRef028-  , TF.testCase "testURIRef029" testURIRef029-    ---  , TF.testCase "testURIRef031" testURIRef031-  , TF.testCase "testURIRef032" testURIRef032-  , TF.testCase "testURIRef033" testURIRef033-  , TF.testCase "testURIRef034" testURIRef034-  , TF.testCase "testURIRef035" testURIRef035-  , TF.testCase "testURIRef036" testURIRef036-  , TF.testCase "testURIRef037" testURIRef037-  , TF.testCase "testURIRef038" testURIRef038-  , TF.testCase "testURIRef039" testURIRef039-  , TF.testCase "testURIRef040" testURIRef040-  , TF.testCase "testURIRef041" testURIRef041-  , TF.testCase "testURIRef042" testURIRef042-  , TF.testCase "testURIRef043" testURIRef043-  , TF.testCase "testURIRef044" testURIRef044-  , TF.testCase "testURIRef045" testURIRef045-  , TF.testCase "testURIRef046" testURIRef046-  , TF.testCase "testURIRef047" testURIRef047-  , TF.testCase "testURIRef048" testURIRef048-  , TF.testCase "testURIRef049" testURIRef049-  , TF.testCase "testURIRef050" testURIRef050-  , TF.testCase "testURIRef051" testURIRef051-  , TF.testCase "testURIRef052" testURIRef052-  , TF.testCase "testURIRef053" testURIRef053-  , TF.testCase "testURIRef054" testURIRef054-  , TF.testCase "testURIRef055" testURIRef055-  , TF.testCase "testURIRef056" testURIRef056-  , TF.testCase "testURIRef057" testURIRef057-  , TF.testCase "testURIRef058" testURIRef058-  , TF.testCase "testURIRef059" testURIRef059-  , TF.testCase "testURIRef060" testURIRef060-  , TF.testCase "testURIRef061" testURIRef061-  , TF.testCase "testURIRef062" testURIRef062-  , TF.testCase "testURIRef063" testURIRef063-  , TF.testCase "testURIRef064" testURIRef064-  , TF.testCase "testURIRef065" testURIRef065-  , TF.testCase "testURIRef066" testURIRef066-  , TF.testCase "testURIRef067" testURIRef067-  , TF.testCase "testURIRef068" testURIRef068-  , TF.testCase "testURIRef069" testURIRef069-  , TF.testCase "testURIRef070" testURIRef070-  , TF.testCase "testURIRef071" testURIRef071-  , TF.testCase "testURIRef072" testURIRef072-  , TF.testCase "testURIRef073" testURIRef073-  , TF.testCase "testURIRef074" testURIRef074-  , TF.testCase "testURIRef075" testURIRef075-  , TF.testCase "testURIRef076" testURIRef076-  , TF.testCase "testURIRef077" testURIRef077-    ---  , TF.testCase "testURIRef080" testURIRef080-  , TF.testCase "testURIRef081" testURIRef081-  , TF.testCase "testURIRef082" testURIRef082-  , TF.testCase "testURIRef083" testURIRef083-  , TF.testCase "testURIRef084" testURIRef084-  , TF.testCase "testURIRef085" testURIRef085-  , TF.testCase "testURIRef086" testURIRef086-  , TF.testCase "testURIRef087" testURIRef087-    -- testURIRef088,-    -- testURIRef089,-  , TF.testCase "testURIRef090" testURIRef090-  , TF.testCase "testURIRef091" testURIRef091-  , TF.testCase "testURIRef092" testURIRef092-  , TF.testCase "testURIRef093" testURIRef093-  , TF.testCase "testURIRef094" testURIRef094-  , TF.testCase "testURIRef095" testURIRef095-  , TF.testCase "testURIRef096" testURIRef096-  , TF.testCase "testURIRef097" testURIRef097-  , TF.testCase "testURIRef098" testURIRef098-    -- testURIRef099,-    ---  , TF.testCase "testURIRef101" testURIRef101-  , TF.testCase "testURIRef102" testURIRef102-  , TF.testCase "testURIRef103" testURIRef103-  , TF.testCase "testURIRef104" testURIRef104-  , TF.testCase "testURIRef105" testURIRef105-  , TF.testCase "testURIRef106" testURIRef106-  , TF.testCase "testURIRef107" testURIRef107-  , TF.testCase "testURIRef108" testURIRef108-    ---  , TF.testCase "testURIRef111" testURIRef111-  , TF.testCase "testURIRef112" testURIRef112-  , TF.testCase "testURIRef113" testURIRef113-  , TF.testCase "testURIRef114" testURIRef114-  , TF.testCase "testURIRef115" testURIRef115-  , TF.testCase "testURIRef116" testURIRef116-  , TF.testCase "testURIRef117" testURIRef117-    ---  , TF.testCase "testURIRef118" testURIRef118-  , TF.testCase "testURIRef119" testURIRef119-  , TF.testCase "testURIRef120" testURIRef120-    ---  , TF.testCase "testURIRef121" testURIRef121-  , TF.testCase "testURIRef122" testURIRef122-    -- IRI test cases not currently supported-  -- , TF.testCase "testURIRef123" testURIRef123-  -- , TF.testCase "testURIRef124" testURIRef124-  ]---- test decomposition of URI into components-testComponent01 = testURIRefComponents "testComponent01"-        ( Just $ URI-            { uriScheme    = "http:"-            , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")-            , uriPath      = "/aaa/bbb"-            , uriQuery     = "?qqq"-            , uriFragment  = "#fff"-            } )-        "http://user:pass@example.org:99/aaa/bbb?qqq#fff"-testComponent02 = testURIRefComponents "testComponent02"-        ( const Nothing-        ( Just $ URI-            { uriScheme    = "http:"-            , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")-            , uriPath      = "aaa/bbb"-            , uriQuery     = ""-            , uriFragment  = ""-            } )-        )-        "http://user:pass@example.org:99aaa/bbb"-testComponent03 = testURIRefComponents "testComponent03"-        ( Just $ URI-            { uriScheme    = "http:"-            , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")-            , uriPath      = ""-            , uriQuery     = "?aaa/bbb"-            , uriFragment  = ""-            } )-        "http://user:pass@example.org:99?aaa/bbb"-testComponent04 = testURIRefComponents "testComponent03"-        ( Just $ URI-            { uriScheme    = "http:"-            , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")-            , uriPath      = ""-            , uriQuery     = ""-            , uriFragment  = "#aaa/bbb"-            } )-        "http://user:pass@example.org:99#aaa/bbb"--- These test cases contributed by Robert Buck (mathworks.com)-testComponent11 = testURIRefComponents "testComponent03"-        ( Just $ URI-            { uriScheme    = "about:"-            , uriAuthority = Nothing-            , uriPath      = ""-            , uriQuery     = ""-            , uriFragment  = ""-            } )-        "about:"-testComponent12 = testURIRefComponents "testComponent03"-        ( Just $ URI-            { uriScheme    = "file:"-            , uriAuthority = Just (URIAuth "" "windowsauth" "")-            , uriPath      = "/d$"-            , uriQuery     = ""-            , uriFragment  = ""-            } )-        "file://windowsauth/d$"--testComponentSuite = TF.testGroup "Test URIrefs" $-  [ TF.testCase "testComponent01" testComponent01-  , TF.testCase "testComponent02" testComponent02-  , TF.testCase "testComponent03" testComponent03-  , TF.testCase "testComponent04" testComponent04-  , TF.testCase "testComponent11" testComponent11-  , TF.testCase "testComponent12" testComponent12-  ]---- Get reference relative to given base---   relativeRef :: String -> String -> String------ Get absolute URI given base and relative reference---   absoluteURI :: String -> String -> String------ Test cases taken from: http://www.w3.org/2000/10/swap/uripath.py--- (Thanks, Dan Connolly)------ NOTE:  absoluteURI base (relativeRef base u) is always equivalent to u.--- cf. http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html--testRelSplit :: String -> String -> String -> String -> Assertion-testRelSplit label base uabs urel =-    testEq label urel (mkrel puabs pubas)-    where-        mkrel (Just u1) (Just u2) = show (u1 `relativeFrom` u2)-        mkrel Nothing   _         = "Invalid URI: "++urel-        mkrel _         Nothing   = "Invalid URI: "++uabs-        puabs = parseURIReference uabs-        pubas = parseURIReference base--testRelJoin  :: String -> String -> String -> String -> Assertion-testRelJoin label base urel uabs =-    testEq label uabs (mkabs purel pubas)-    where-        mkabs (Just u1) (Just u2) = show (u1 `relativeTo` u2)-        mkabs Nothing   _         = "Invalid URI: "++urel-        mkabs _         Nothing   = "Invalid URI: "++uabs-        purel = parseURIReference urel-        pubas = parseURIReference base--testRelative :: String -> String -> String -> String -> Assertion-testRelative label base uabs urel = sequence_-    [-    (testRelSplit (label++"(rel)") base uabs urel),-    (testRelJoin  (label++"(abs)") base urel uabs)-    ]--testRelative01 = testRelative "testRelative01"-                    "foo:xyz" "bar:abc" "bar:abc"-testRelative02 = testRelative "testRelative02"-                    "http://example/x/y/z" "http://example/x/abc" "../abc"-testRelative03 = testRelative "testRelative03"-                    "http://example2/x/y/z" "http://example/x/abc" "//example/x/abc"-                    -- "http://example2/x/y/z" "http://example/x/abc" "http://example/x/abc"-testRelative04 = testRelative "testRelative04"-                    "http://ex/x/y/z" "http://ex/x/r" "../r"-testRelative05 = testRelative "testRelative05"-                    "http://ex/x/y/z" "http://ex/r" "/r"-                    -- "http://ex/x/y/z" "http://ex/r" "../../r"-testRelative06 = testRelative "testRelative06"-                    "http://ex/x/y/z" "http://ex/x/y/q/r" "q/r"-testRelative07 = testRelative "testRelative07"-                    "http://ex/x/y" "http://ex/x/q/r#s" "q/r#s"-testRelative08 = testRelative "testRelative08"-                    "http://ex/x/y" "http://ex/x/q/r#s/t" "q/r#s/t"-testRelative09 = testRelative "testRelative09"-                    "http://ex/x/y" "ftp://ex/x/q/r" "ftp://ex/x/q/r"-testRelative10 = testRelative "testRelative10"-                    -- "http://ex/x/y" "http://ex/x/y" "y"-                    "http://ex/x/y" "http://ex/x/y" ""-testRelative11 = testRelative "testRelative11"-                    -- "http://ex/x/y/" "http://ex/x/y/" "./"-                    "http://ex/x/y/" "http://ex/x/y/" ""-testRelative12 = testRelative "testRelative12"-                    -- "http://ex/x/y/pdq" "http://ex/x/y/pdq" "pdq"-                    "http://ex/x/y/pdq" "http://ex/x/y/pdq" ""-testRelative13 = testRelative "testRelative13"-                    "http://ex/x/y/" "http://ex/x/y/z/" "z/"-testRelative14 = testRelative "testRelative14"-                    -- "file:/swap/test/animal.rdf" "file:/swap/test/animal.rdf#Animal" "animal.rdf#Animal"-                    "file:/swap/test/animal.rdf" "file:/swap/test/animal.rdf#Animal" "#Animal"-testRelative15 = testRelative "testRelative15"-                    "file:/e/x/y/z" "file:/e/x/abc" "../abc"-testRelative16 = testRelative "testRelative16"-                    "file:/example2/x/y/z" "file:/example/x/abc" "/example/x/abc"-testRelative17 = testRelative "testRelative17"-                    "file:/ex/x/y/z" "file:/ex/x/r" "../r"-testRelative18 = testRelative "testRelative18"-                    "file:/ex/x/y/z" "file:/r" "/r"-testRelative19 = testRelative "testRelative19"-                    "file:/ex/x/y" "file:/ex/x/q/r" "q/r"-testRelative20 = testRelative "testRelative20"-                    "file:/ex/x/y" "file:/ex/x/q/r#s" "q/r#s"-testRelative21 = testRelative "testRelative21"-                    "file:/ex/x/y" "file:/ex/x/q/r#" "q/r#"-testRelative22 = testRelative "testRelative22"-                    "file:/ex/x/y" "file:/ex/x/q/r#s/t" "q/r#s/t"-testRelative23 = testRelative "testRelative23"-                    "file:/ex/x/y" "ftp://ex/x/q/r" "ftp://ex/x/q/r"-testRelative24 = testRelative "testRelative24"-                    -- "file:/ex/x/y" "file:/ex/x/y" "y"-                    "file:/ex/x/y" "file:/ex/x/y" ""-testRelative25 = testRelative "testRelative25"-                    -- "file:/ex/x/y/" "file:/ex/x/y/" "./"-                    "file:/ex/x/y/" "file:/ex/x/y/" ""-testRelative26 = testRelative "testRelative26"-                    -- "file:/ex/x/y/pdq" "file:/ex/x/y/pdq" "pdq"-                    "file:/ex/x/y/pdq" "file:/ex/x/y/pdq" ""-testRelative27 = testRelative "testRelative27"-                    "file:/ex/x/y/" "file:/ex/x/y/z/" "z/"-testRelative28 = testRelative "testRelative28"-                    "file:/devel/WWW/2000/10/swap/test/reluri-1.n3"-                    "file://meetings.example.com/cal#m1" "//meetings.example.com/cal#m1"-                    -- "file:/devel/WWW/2000/10/swap/test/reluri-1.n3"-                    -- "file://meetings.example.com/cal#m1" "file://meetings.example.com/cal#m1"-testRelative29 = testRelative "testRelative29"-                    "file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3"-                    "file://meetings.example.com/cal#m1" "//meetings.example.com/cal#m1"-                    -- "file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3"-                    -- "file://meetings.example.com/cal#m1" "file://meetings.example.com/cal#m1"-testRelative30 = testRelative "testRelative30"-                    "file:/some/dir/foo" "file:/some/dir/#blort" "./#blort"-testRelative31 = testRelative "testRelative31"-                    "file:/some/dir/foo" "file:/some/dir/#" "./#"-testRelative32 = testRelative "testRelative32"-                    "http://ex/x/y" "http://ex/x/q:r" "./q:r"-                    -- see RFC2396bis, section 5       ^^-testRelative33 = testRelative "testRelative33"-                    "http://ex/x/y" "http://ex/x/p=q:r" "./p=q:r"-                    -- "http://ex/x/y" "http://ex/x/p=q:r" "p=q:r"-testRelative34 = testRelative "testRelative34"-                    "http://ex/x/y?pp/qq" "http://ex/x/y?pp/rr" "?pp/rr"-testRelative35 = testRelative "testRelative35"-                    "http://ex/x/y?pp/qq" "http://ex/x/y/z" "y/z"-testRelative36 = testRelative "testRelative36"-                    "mailto:local"-                    "mailto:local/qual@domain.org#frag"-                    "local/qual@domain.org#frag"-testRelative37 = testRelative "testRelative37"-                    "mailto:local/qual1@domain1.org"-                    "mailto:local/more/qual2@domain2.org#frag"-                    "more/qual2@domain2.org#frag"-testRelative38 = testRelative "testRelative38"-                    "http://ex/x/z?q" "http://ex/x/y?q" "y?q"-testRelative39 = testRelative "testRelative39"-                    "http://ex?p" "http://ex/x/y?q" "/x/y?q"-testRelative40 = testRelative "testRelative40"-                    "foo:a/b" "foo:a/c/d" "c/d"-testRelative41 = testRelative "testRelative41"-                    "foo:a/b" "foo:/c/d" "/c/d"-testRelative42 = testRelative "testRelative42"-                    "foo:a/b?c#d" "foo:a/b?c" ""-testRelative43 = testRelative "testRelative42"-                    "foo:a" "foo:b/c" "b/c"-testRelative44 = testRelative "testRelative44"-                    "foo:/a/y/z" "foo:/a/b/c" "../b/c"-testRelative45 = testRelJoin "testRelative45"-                    "foo:a" "./b/c" "foo:b/c"-testRelative46 = testRelJoin "testRelative46"-                    "foo:a" "/./b/c" "foo:/b/c"-testRelative47 = testRelJoin "testRelative47"-                    "foo://a//b/c" "../../d" "foo://a/d"-testRelative48 = testRelJoin "testRelative48"-                    "foo:a" "." "foo:"-testRelative49 = testRelJoin "testRelative49"-                    "foo:a" ".." "foo:"---- add escape tests-testRelative50 = testRelative "testRelative50"-                    "http://example/x/y%2Fz" "http://example/x/abc" "abc"-testRelative51 = testRelative "testRelative51"-                    "http://example/a/x/y/z" "http://example/a/x%2Fabc" "../../x%2Fabc"-testRelative52 = testRelative "testRelative52"-                    "http://example/a/x/y%2Fz" "http://example/a/x%2Fabc" "../x%2Fabc"-testRelative53 = testRelative "testRelative53"-                    "http://example/x%2Fy/z" "http://example/x%2Fy/abc" "abc"-testRelative54 = testRelative "testRelative54"-                    "http://ex/x/y" "http://ex/x/q%3Ar" "q%3Ar"-testRelative55 = testRelative "testRelative55"-                    "http://example/x/y%2Fz" "http://example/x%2Fabc" "/x%2Fabc"--- Apparently, TimBL prefers the following way to 41, 42 above--- cf. http://lists.w3.org/Archives/Public/uri/2003Feb/0028.html--- He also notes that there may be different relative fuctions--- that satisfy the basic equivalence axiom:--- cf. http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html-testRelative56 = testRelative "testRelative56"-                    "http://example/x/y/z" "http://example/x%2Fabc" "/x%2Fabc"-testRelative57 = testRelative "testRelative57"-                    "http://example/x/y%2Fz" "http://example/x%2Fabc" "/x%2Fabc"---- Other oddball tests-    -- Check segment normalization code:-testRelative60 = testRelJoin "testRelative60"-                    "ftp://example/x/y" "http://example/a/b/../../c" "http://example/c"-testRelative61 = testRelJoin "testRelative61"-                    "ftp://example/x/y" "http://example/a/b/c/../../" "http://example/a/"-testRelative62 = testRelJoin "testRelative62"-                    "ftp://example/x/y" "http://example/a/b/c/./" "http://example/a/b/c/"-testRelative63 = testRelJoin "testRelative63"-                    "ftp://example/x/y" "http://example/a/b/c/.././" "http://example/a/b/"-testRelative64 = testRelJoin "testRelative64"-                    "ftp://example/x/y" "http://example/a/b/c/d/../../../../e" "http://example/e"-testRelative65 = testRelJoin "testRelative65"-                    "ftp://example/x/y" "http://example/a/b/c/d/../.././../../e" "http://example/e"-    -- Check handling of queries and fragments with non-relative paths-testRelative70 = testRelative "testRelative70"-                    "mailto:local1@domain1?query1" "mailto:local2@domain2"-                    "local2@domain2"-testRelative71 = testRelative "testRelative71"-                    "mailto:local1@domain1" "mailto:local2@domain2?query2"-                    "local2@domain2?query2"-testRelative72 = testRelative "testRelative72"-                    "mailto:local1@domain1?query1" "mailto:local2@domain2?query2"-                    "local2@domain2?query2"-testRelative73 = testRelative "testRelative73"-                    "mailto:local@domain?query1" "mailto:local@domain?query2"-                    "?query2"-testRelative74 = testRelative "testRelative74"-                    "mailto:?query1" "mailto:local@domain?query2"-                    "local@domain?query2"-testRelative75 = testRelative "testRelative75"-                    "mailto:local@domain?query1" "mailto:local@domain?query2"-                    "?query2"-testRelative76 = testRelative "testRelative76"-                    "foo:bar" "http://example/a/b?c/../d"  "http://example/a/b?c/../d"-testRelative77 = testRelative "testRelative77"-                    "foo:bar" "http://example/a/b#c/../d"  "http://example/a/b#c/../d"-{- These (78-81) are some awkward test cases thrown up by a question on the URI list:-     http://lists.w3.org/Archives/Public/uri/2005Jul/0013-   Mote that RFC 3986 discards path segents after the final '/' only when merging two-   paths - otherwise the final segment in the base URI is mnaintained.  This leads to-   difficulty in constructinmg a reversible relativeTo/relativeFrom pair of functions.--}-testRelative78 = testRelative "testRelative78"-                    "http://www.example.com/data/limit/.." "http://www.example.com/data/limit/test.xml"-                    "test.xml"-testRelative79 = testRelative "testRelative79"-                    "file:/some/dir/foo" "file:/some/dir/#blort" "./#blort"-testRelative80 = testRelative "testRelative80"-                    "file:/some/dir/foo" "file:/some/dir/#" "./#"-testRelative81 = testRelative "testRelative81"-                    "file:/some/dir/.." "file:/some/dir/#blort" "./#blort"---- testRelative  base abs rel--- testRelSplit  base abs rel--- testRelJoin   base rel abs-testRelative91 = testRelSplit "testRelative91"-                    "http://example.org/base/uri" "http:this"-                    "this"-testRelative92 = testRelJoin "testRelative92"-                    "http://example.org/base/uri" "http:this"-                    "http:this"-testRelative93 = testRelJoin "testRelative93"-                    "http:base" "http:this"-                    "http:this"-testRelative94 = testRelJoin "testRelative94"-                    "f:/a" ".//g"-                    "f://g"-testRelative95 = testRelJoin "testRelative95"-                    "f://example.org/base/a" "b/c//d/e"-                    "f://example.org/base/b/c//d/e"-testRelative96 = testRelJoin "testRelative96"-                    "mid:m@example.ord/c@example.org" "m2@example.ord/c2@example.org"-                    "mid:m@example.ord/m2@example.ord/c2@example.org"-testRelative97 = testRelJoin "testRelative97"-                    "file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/" "mini1.xml"-                    "file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/mini1.xml"-testRelative98 = testRelative "testRelative98"-                    "foo:a/y/z" "foo:a/b/c" "../b/c"-testRelative99 = testRelJoin "testRelative99"-                    "f:/a/" "..//g"-                    "f://g"---testRelativeSuite = TF.testGroup "Test Relative URIs" testRelativeList-testRelativeList  =-  [ TF.testCase "testRelative01" testRelative01-  , TF.testCase "testRelative02" testRelative02-  , TF.testCase "testRelative03" testRelative03-  , TF.testCase "testRelative04" testRelative04-  , TF.testCase "testRelative05" testRelative05-  , TF.testCase "testRelative06" testRelative06-  , TF.testCase "testRelative07" testRelative07-  , TF.testCase "testRelative08" testRelative08-  , TF.testCase "testRelative09" testRelative09-  , TF.testCase "testRelative10" testRelative10-  , TF.testCase "testRelative11" testRelative11-  , TF.testCase "testRelative12" testRelative12-  , TF.testCase "testRelative13" testRelative13-  , TF.testCase "testRelative14" testRelative14-  , TF.testCase "testRelative15" testRelative15-  , TF.testCase "testRelative16" testRelative16-  , TF.testCase "testRelative17" testRelative17-  , TF.testCase "testRelative18" testRelative18-  , TF.testCase "testRelative19" testRelative19-  , TF.testCase "testRelative20" testRelative20-  , TF.testCase "testRelative21" testRelative21-  , TF.testCase "testRelative22" testRelative22-  , TF.testCase "testRelative23" testRelative23-  , TF.testCase "testRelative24" testRelative24-  , TF.testCase "testRelative25" testRelative25-  , TF.testCase "testRelative26" testRelative26-  , TF.testCase "testRelative27" testRelative27-  , TF.testCase "testRelative28" testRelative28-  , TF.testCase "testRelative29" testRelative29-  , TF.testCase "testRelative30" testRelative30-  , TF.testCase "testRelative31" testRelative31-  , TF.testCase "testRelative32" testRelative32-  , TF.testCase "testRelative33" testRelative33-  , TF.testCase "testRelative34" testRelative34-  , TF.testCase "testRelative35" testRelative35-  , TF.testCase "testRelative36" testRelative36-  , TF.testCase "testRelative37" testRelative37-  , TF.testCase "testRelative38" testRelative38-  , TF.testCase "testRelative39" testRelative39-  , TF.testCase "testRelative40" testRelative40-  , TF.testCase "testRelative41" testRelative41-  , TF.testCase "testRelative42" testRelative42-  , TF.testCase "testRelative43" testRelative43-  , TF.testCase "testRelative44" testRelative44-  , TF.testCase "testRelative45" testRelative45-  , TF.testCase "testRelative46" testRelative46-  , TF.testCase "testRelative47" testRelative47-  , TF.testCase "testRelative48" testRelative48-  , TF.testCase "testRelative49" testRelative49-    ---  , TF.testCase "testRelative50" testRelative50-  , TF.testCase "testRelative51" testRelative51-  , TF.testCase "testRelative52" testRelative52-  , TF.testCase "testRelative53" testRelative53-  , TF.testCase "testRelative54" testRelative54-  , TF.testCase "testRelative55" testRelative55-  , TF.testCase "testRelative56" testRelative56-  , TF.testCase "testRelative57" testRelative57-    ---  , TF.testCase "testRelative60" testRelative60-  , TF.testCase "testRelative61" testRelative61-  , TF.testCase "testRelative62" testRelative62-  , TF.testCase "testRelative63" testRelative63-  , TF.testCase "testRelative64" testRelative64-  , TF.testCase "testRelative65" testRelative65-    ---  , TF.testCase "testRelative70" testRelative70-  , TF.testCase "testRelative71" testRelative71-  , TF.testCase "testRelative72" testRelative72-  , TF.testCase "testRelative73" testRelative73-  , TF.testCase "testRelative74" testRelative74-  , TF.testCase "testRelative75" testRelative75-  , TF.testCase "testRelative76" testRelative76-  , TF.testCase "testRelative77" testRelative77-  -- Awkward cases:-  , TF.testCase "testRelative78" testRelative78-  , TF.testCase "testRelative79" testRelative79-  , TF.testCase "testRelative80" testRelative80-  , TF.testCase "testRelative81" testRelative81-    ---  -- , TF.testCase "testRelative90" testRelative90-  , TF.testCase "testRelative91" testRelative91-  , TF.testCase "testRelative92" testRelative92-  , TF.testCase "testRelative93" testRelative93-  , TF.testCase "testRelative94" testRelative94-  , TF.testCase "testRelative95" testRelative95-  , TF.testCase "testRelative96" testRelative96-  , TF.testCase "testRelative97" testRelative97-  , TF.testCase "testRelative98" testRelative98-  , TF.testCase "testRelative99" testRelative99-  ]---- RFC2396 relative-to-absolute URI tests--rfcbase  = "http://a/b/c/d;p?q"--- normal cases, RFC2396bis 5.4.1-testRFC01 = testRelJoin "testRFC01" rfcbase "g:h" "g:h"-testRFC02 = testRelJoin "testRFC02" rfcbase "g" "http://a/b/c/g"-testRFC03 = testRelJoin "testRFC03" rfcbase "./g" "http://a/b/c/g"-testRFC04 = testRelJoin "testRFC04" rfcbase "g/" "http://a/b/c/g/"-testRFC05 = testRelJoin "testRFC05" rfcbase "/g" "http://a/g"-testRFC06 = testRelJoin "testRFC06" rfcbase "//g" "http://g"-testRFC07 = testRelJoin "testRFC07" rfcbase "?y" "http://a/b/c/d;p?y"-testRFC08 = testRelJoin "testRFC08" rfcbase "g?y" "http://a/b/c/g?y"-testRFC09 = testRelJoin "testRFC09" rfcbase "?q#s" "http://a/b/c/d;p?q#s"-testRFC23 = testRelJoin "testRFC10" rfcbase "#s" "http://a/b/c/d;p?q#s"-testRFC10 = testRelJoin "testRFC11" rfcbase "g#s" "http://a/b/c/g#s"-testRFC11 = testRelJoin "testRFC12" rfcbase "g?y#s" "http://a/b/c/g?y#s"-testRFC12 = testRelJoin "testRFC13" rfcbase ";x" "http://a/b/c/;x"-testRFC13 = testRelJoin "testRFC14" rfcbase "g;x" "http://a/b/c/g;x"-testRFC14 = testRelJoin "testRFC15" rfcbase "g;x?y#s" "http://a/b/c/g;x?y#s"-testRFC24 = testRelJoin "testRFC16" rfcbase "" "http://a/b/c/d;p?q"-testRFC15 = testRelJoin "testRFC17" rfcbase "." "http://a/b/c/"-testRFC16 = testRelJoin "testRFC18" rfcbase "./" "http://a/b/c/"-testRFC17 = testRelJoin "testRFC19" rfcbase ".." "http://a/b/"-testRFC18 = testRelJoin "testRFC20" rfcbase "../" "http://a/b/"-testRFC19 = testRelJoin "testRFC21" rfcbase "../g" "http://a/b/g"-testRFC20 = testRelJoin "testRFC22" rfcbase "../.." "http://a/"-testRFC21 = testRelJoin "testRFC23" rfcbase "../../" "http://a/"-testRFC22 = testRelJoin "testRFC24" rfcbase "../../g" "http://a/g"--- abnormal cases, RFC2396bis 5.4.2-testRFC31 = testRelJoin "testRFC31" rfcbase "?q" rfcbase-testRFC32 = testRelJoin "testRFC32" rfcbase "../../../g" "http://a/g"-testRFC33 = testRelJoin "testRFC33" rfcbase "../../../../g" "http://a/g"-testRFC34 = testRelJoin "testRFC34" rfcbase "/./g" "http://a/g"-testRFC35 = testRelJoin "testRFC35" rfcbase "/../g" "http://a/g"-testRFC36 = testRelJoin "testRFC36" rfcbase "g." "http://a/b/c/g."-testRFC37 = testRelJoin "testRFC37" rfcbase ".g" "http://a/b/c/.g"-testRFC38 = testRelJoin "testRFC38" rfcbase "g.." "http://a/b/c/g.."-testRFC39 = testRelJoin "testRFC39" rfcbase "..g" "http://a/b/c/..g"-testRFC40 = testRelJoin "testRFC40" rfcbase "./../g" "http://a/b/g"-testRFC41 = testRelJoin "testRFC41" rfcbase "./g/." "http://a/b/c/g/"-testRFC42 = testRelJoin "testRFC42" rfcbase "g/./h" "http://a/b/c/g/h"-testRFC43 = testRelJoin "testRFC43" rfcbase "g/../h" "http://a/b/c/h"-testRFC44 = testRelJoin "testRFC44" rfcbase "g;x=1/./y" "http://a/b/c/g;x=1/y"-testRFC45 = testRelJoin "testRFC45" rfcbase "g;x=1/../y" "http://a/b/c/y"-testRFC46 = testRelJoin "testRFC46" rfcbase "g?y/./x" "http://a/b/c/g?y/./x"-testRFC47 = testRelJoin "testRFC47" rfcbase "g?y/../x" "http://a/b/c/g?y/../x"-testRFC48 = testRelJoin "testRFC48" rfcbase "g#s/./x" "http://a/b/c/g#s/./x"-testRFC49 = testRelJoin "testRFC49" rfcbase "g#s/../x" "http://a/b/c/g#s/../x"-testRFC50 = testRelJoin "testRFC50" rfcbase "http:x" "http:x"---- Null path tests--- See RFC2396bis, section 5.2,--- "If the base URI's path component is the empty string, then a single---  slash character is copied to the buffer"-testRFC60 = testRelative "testRFC60" "http://ex"     "http://ex/x/y?q" "/x/y?q"-testRFC61 = testRelJoin  "testRFC61" "http://ex"     "x/y?q"           "http://ex/x/y?q"-testRFC62 = testRelative "testRFC62" "http://ex?p"   "http://ex/x/y?q" "/x/y?q"-testRFC63 = testRelJoin  "testRFC63" "http://ex?p"   "x/y?q"           "http://ex/x/y?q"-testRFC64 = testRelative "testRFC64" "http://ex#f"   "http://ex/x/y?q" "/x/y?q"-testRFC65 = testRelJoin  "testRFC65" "http://ex#f"   "x/y?q"           "http://ex/x/y?q"-testRFC66 = testRelative "testRFC66" "http://ex?p"   "http://ex/x/y#g" "/x/y#g"-testRFC67 = testRelJoin  "testRFC67" "http://ex?p"   "x/y#g"           "http://ex/x/y#g"-testRFC68 = testRelative "testRFC68" "http://ex"     "http://ex/"      "/"-testRFC69 = testRelJoin  "testRFC69" "http://ex"     "./"              "http://ex/"-testRFC70 = testRelative "testRFC70" "http://ex"     "http://ex/a/b"   "/a/b"-testRFC71 = testRelative "testRFC71" "http://ex/a/b" "http://ex"       "./"--testRFC2396Suite = TF.testGroup "Test RFC2396 examples" testRFC2396List-testRFC2396List  =-  [ TF.testCase "testRFC01" testRFC01-  , TF.testCase "testRFC02" testRFC02-  , TF.testCase "testRFC03" testRFC03-  , TF.testCase "testRFC04" testRFC04-  , TF.testCase "testRFC05" testRFC05-  , TF.testCase "testRFC06" testRFC06-  , TF.testCase "testRFC07" testRFC07-  , TF.testCase "testRFC08" testRFC08-  , TF.testCase "testRFC09" testRFC09-  , TF.testCase "testRFC10" testRFC10-  , TF.testCase "testRFC11" testRFC11-  , TF.testCase "testRFC12" testRFC12-  , TF.testCase "testRFC13" testRFC13-  , TF.testCase "testRFC14" testRFC14-  , TF.testCase "testRFC15" testRFC15-  , TF.testCase "testRFC16" testRFC16-  , TF.testCase "testRFC17" testRFC17-  , TF.testCase "testRFC18" testRFC18-  , TF.testCase "testRFC19" testRFC19-  , TF.testCase "testRFC20" testRFC20-  , TF.testCase "testRFC21" testRFC21-  , TF.testCase "testRFC22" testRFC22-  , TF.testCase "testRFC23" testRFC23-  , TF.testCase "testRFC24" testRFC24-    -- testRFC30,-  , TF.testCase "testRFC31" testRFC31-  , TF.testCase "testRFC32" testRFC32-  , TF.testCase "testRFC33" testRFC33-  , TF.testCase "testRFC34" testRFC34-  , TF.testCase "testRFC35" testRFC35-  , TF.testCase "testRFC36" testRFC36-  , TF.testCase "testRFC37" testRFC37-  , TF.testCase "testRFC38" testRFC38-  , TF.testCase "testRFC39" testRFC39-  , TF.testCase "testRFC40" testRFC40-  , TF.testCase "testRFC41" testRFC41-  , TF.testCase "testRFC42" testRFC42-  , TF.testCase "testRFC43" testRFC43-  , TF.testCase "testRFC44" testRFC44-  , TF.testCase "testRFC45" testRFC45-  , TF.testCase "testRFC46" testRFC46-  , TF.testCase "testRFC47" testRFC47-  , TF.testCase "testRFC48" testRFC48-  , TF.testCase "testRFC49" testRFC49-  , TF.testCase "testRFC50" testRFC50-    ---  , TF.testCase "testRFC60" testRFC60-  , TF.testCase "testRFC61" testRFC61-  , TF.testCase "testRFC62" testRFC62-  , TF.testCase "testRFC63" testRFC63-  , TF.testCase "testRFC64" testRFC64-  , TF.testCase "testRFC65" testRFC65-  , TF.testCase "testRFC66" testRFC66-  , TF.testCase "testRFC67" testRFC67-  , TF.testCase "testRFC68" testRFC68-  , TF.testCase "testRFC69" testRFC69-  , TF.testCase "testRFC70" testRFC70-  ]---- And some other oddballs:-mailbase = "mailto:local/option@domain.org?notaquery#frag"-testMail01 = testRelJoin "testMail01"-            mailbase "more@domain"-            "mailto:local/more@domain"-testMail02 = testRelJoin "testMail02"-            mailbase "#newfrag"-            "mailto:local/option@domain.org?notaquery#newfrag"-testMail03 = testRelJoin "testMail03"-            mailbase "l1/q1@domain"-            "mailto:local/l1/q1@domain"--testMail11 = testRelJoin "testMail11"-             "mailto:local1@domain1?query1" "mailto:local2@domain2"-             "mailto:local2@domain2"-testMail12 = testRelJoin "testMail12"-             "mailto:local1@domain1" "mailto:local2@domain2?query2"-             "mailto:local2@domain2?query2"-testMail13 = testRelJoin "testMail13"-             "mailto:local1@domain1?query1" "mailto:local2@domain2?query2"-             "mailto:local2@domain2?query2"-testMail14 = testRelJoin "testMail14"-             "mailto:local@domain?query1" "mailto:local@domain?query2"-             "mailto:local@domain?query2"-testMail15 = testRelJoin "testMail15"-             "mailto:?query1" "mailto:local@domain?query2"-             "mailto:local@domain?query2"-testMail16 = testRelJoin "testMail16"-             "mailto:local@domain?query1" "?query2"-             "mailto:local@domain?query2"-testInfo17 = testRelJoin "testInfo17"-             "info:name/1234/../567" "name/9876/../543"-             "info:name/name/543"-testInfo18 = testRelJoin "testInfo18"-             "info:/name/1234/../567" "name/9876/../543"-             "info:/name/name/543"--testOddballSuite = TF.testGroup "Test oddball examples" testOddballList-testOddballList  =-  [ TF.testCase "testMail01" testMail01-  , TF.testCase "testMail02" testMail02-  , TF.testCase "testMail03" testMail03-  , TF.testCase "testMail11" testMail11-  , TF.testCase "testMail12" testMail12-  , TF.testCase "testMail13" testMail13-  , TF.testCase "testMail14" testMail14-  , TF.testCase "testMail15" testMail15-  , TF.testCase "testMail16" testMail16-  , TF.testCase "testInfo17" testInfo17-  ]----  Normalization tests----  Case normalization; cf. RFC2396bis section 6.2.2.1---  NOTE:  authority case normalization is not performed-testNormalize01 = testEq "testNormalize01"-                  "http://EXAMPLE.com/Root/%2A?%2B#%2C"-                  (normalizeCase "HTTP://EXAMPLE.com/Root/%2a?%2b#%2c")----  Encoding normalization; cf. RFC2396bis section 6.2.2.2-testNormalize11 = testEq "testNormalize11"-                  "HTTP://EXAMPLE.com/Root/~Me/"-                  (normalizeEscape "HTTP://EXAMPLE.com/Root/%7eMe/")-testNormalize12 = testEq "testNormalize12"-                  "foo:%40AZ%5b%60az%7b%2f09%3a-._~"-                  (normalizeEscape "foo:%40%41%5a%5b%60%61%7a%7b%2f%30%39%3a%2d%2e%5f%7e")-testNormalize13 = testEq "testNormalize13"-                  "foo:%3a%2f%3f%23%5b%5d%40"-                  (normalizeEscape "foo:%3a%2f%3f%23%5b%5d%40")----  Path segment normalization; cf. RFC2396bis section 6.2.2.4-testNormalize21 = testEq "testNormalize21"-                    "http://example/c"-                    (normalizePathSegments "http://example/a/b/../../c")-testNormalize22 = testEq "testNormalize22"-                    "http://example/a/"-                    (normalizePathSegments "http://example/a/b/c/../../")-testNormalize23 = testEq "testNormalize23"-                    "http://example/a/b/c/"-                    (normalizePathSegments "http://example/a/b/c/./")-testNormalize24 = testEq "testNormalize24"-                    "http://example/a/b/"-                    (normalizePathSegments "http://example/a/b/c/.././")-testNormalize25 = testEq "testNormalize25"-                    "http://example/e"-                    (normalizePathSegments "http://example/a/b/c/d/../../../../e")-testNormalize26 = testEq "testNormalize26"-                    "http://example/e"-                    (normalizePathSegments "http://example/a/b/c/d/../.././../../e")-testNormalize27 = testEq "testNormalize27"-                    "http://example/e"-                    (normalizePathSegments "http://example/a/b/../.././../../e")-testNormalize28 = testEq "testNormalize28"-                    "foo:e"-                    (normalizePathSegments "foo:a/b/../.././../../e")--testNormalizeSuite = TF.testGroup "testNormalizeSuite"-  [ TF.testCase "testNormalize01" testNormalize01-  , TF.testCase "testNormalize11" testNormalize11-  , TF.testCase "testNormalize12" testNormalize12-  , TF.testCase "testNormalize13" testNormalize13-  , TF.testCase "testNormalize21" testNormalize21-  , TF.testCase "testNormalize22" testNormalize22-  , TF.testCase "testNormalize23" testNormalize23-  , TF.testCase "testNormalize24" testNormalize24-  , TF.testCase "testNormalize25" testNormalize25-  , TF.testCase "testNormalize26" testNormalize26-  , TF.testCase "testNormalize27" testNormalize27-  , TF.testCase "testNormalize28" testNormalize28-  ]---- URI formatting (show) tests--ts02URI = URI   { uriScheme    = "http:"-                , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")-                , uriPath      = "/aaa/bbb"-                , uriQuery     = "?ccc"-                , uriFragment  = "#ddd/eee"-                }--ts04URI = URI   { uriScheme    = "http:"-                , uriAuthority = Just (URIAuth "user:anonymous@" "example.org" ":99")-                , uriPath      = "/aaa/bbb"-                , uriQuery     = "?ccc"-                , uriFragment  = "#ddd/eee"-                }--ts02str = "http://user:...@example.org:99/aaa/bbb?ccc#ddd/eee"-ts03str = "http://user:pass@example.org:99/aaa/bbb?ccc#ddd/eee"-ts04str = "http://user:...@example.org:99/aaa/bbb?ccc#ddd/eee"--testShowURI01 = testEq "testShowURI01" ""      (show nullURI)-testShowURI02 = testEq "testShowURI02" ts02str (show ts02URI)-testShowURI03 = testEq "testShowURI03" ts03str ((uriToString id ts02URI) "")-testShowURI04 = testEq "testShowURI04" ts04str (show ts04URI)--testShowURI = TF.testGroup "testShowURI"-  [ TF.testCase "testShowURI01" testShowURI01-  , TF.testCase "testShowURI02" testShowURI02-  , TF.testCase "testShowURI03" testShowURI03-  , TF.testCase "testShowURI04" testShowURI04-  ]----- URI escaping tests--te01str = "http://example.org/az/09-_/.~:/?#[]@!$&'()*+,;="-te02str = "http://example.org/a</b>/c%/d /e"-te02esc = "http://example.org/a%3C/b%3E/c%25/d%20/e"--testEscapeURIString01 = testEq "testEscapeURIString01"-    te01str (escapeURIString isUnescapedInURI te01str)--testEscapeURIString02 = testEq "testEscapeURIString02"-    te02esc (escapeURIString isUnescapedInURI te02str)--testEscapeURIString03 = testEq "testEscapeURIString03"-    te01str (unEscapeString te01str)--testEscapeURIString04 = testEq "testEscapeURIString04"-    te02str (unEscapeString te02esc)--testEscapeURIString05 = testEq "testEscapeURIString05"-    "http%3A%2F%2Fexample.org%2Faz%2F09-_%2F.~%3A%2F%3F%23%5B%5D%40%21%24%26%27%28%29%2A%2B%2C%3B%3D"-    (escapeURIString isUnescapedInURIComponent te01str)--testEscapeURIString06 = testEq "testEscapeURIString06"-    "hello%C3%B8%C2%A9%E6%97%A5%E6%9C%AC"-    (escapeURIString isUnescapedInURIComponent "helloø©日本")--propEscapeUnEscapeLoop :: String -> Bool-propEscapeUnEscapeLoop s = s == (unEscapeString $! escaped)-	where-	escaped = escapeURIString (const False) s-	{-# NOINLINE escaped #-}--testEscapeURIString = TF.testGroup "testEscapeURIString"-  [ TF.testCase "testEscapeURIString01" testEscapeURIString01-  , TF.testCase "testEscapeURIString02" testEscapeURIString02-  , TF.testCase "testEscapeURIString03" testEscapeURIString03-  , TF.testCase "testEscapeURIString04" testEscapeURIString04-  , TF.testCase "testEscapeURIString05" testEscapeURIString05-  , TF.testCase "testEscapeURIString06" testEscapeURIString06-  , TF.testProperty "propEscapeUnEscapeLoop" propEscapeUnEscapeLoop-  ]---- URI string normalization tests--tn01str = "eXAMPLE://a/b/%7bfoo%7d"-tn01nrm = "example://a/b/%7Bfoo%7D"--tn02str = "example://a/b/%63/"-tn02nrm = "example://a/b/c/"--tn03str = "example://a/./b/../b/c/foo"-tn03nrm = "example://a/b/c/foo"--tn04str = "eXAMPLE://a/b/%7bfoo%7d"     -- From RFC2396bis, 6.2.2-tn04nrm = "example://a/b/%7Bfoo%7D"--tn06str = "file:/x/..//y"-tn06nrm = "file://y"--tn07str = "file:x/..//y/"-tn07nrm = "file:/y/"--testNormalizeURIString01 = testEq "testNormalizeURIString01"-    tn01nrm (normalizeCase tn01str)-testNormalizeURIString02 = testEq "testNormalizeURIString02"-    tn02nrm (normalizeEscape tn02str)-testNormalizeURIString03 = testEq "testNormalizeURIString03"-    tn03nrm (normalizePathSegments tn03str)-testNormalizeURIString04 = testEq "testNormalizeURIString04"-    tn04nrm ((normalizeCase . normalizeEscape . normalizePathSegments) tn04str)-testNormalizeURIString05 = testEq "testNormalizeURIString05"-    tn04nrm ((normalizePathSegments . normalizeEscape . normalizeCase) tn04str)-testNormalizeURIString06 = testEq "testNormalizeURIString06"-    tn06nrm (normalizePathSegments tn06str)-testNormalizeURIString07 = testEq "testNormalizeURIString07"-    tn07nrm (normalizePathSegments tn07str)--testNormalizeURIString = TF.testGroup "testNormalizeURIString"-  [ TF.testCase "testNormalizeURIString01" testNormalizeURIString01-  , TF.testCase "testNormalizeURIString02" testNormalizeURIString02-  , TF.testCase "testNormalizeURIString03" testNormalizeURIString03-  , TF.testCase "testNormalizeURIString04" testNormalizeURIString04-  , TF.testCase "testNormalizeURIString05" testNormalizeURIString05-  , TF.testCase "testNormalizeURIString06" testNormalizeURIString06-  , TF.testCase "testNormalizeURIString07" testNormalizeURIString07-  ]---- Test strict vs non-strict relativeTo logic--trbase = fromJust $ parseURIReference "http://bar.org/"--testRelativeTo01 = testEq "testRelativeTo01"-    "http://bar.org/foo"-    (show $-      (fromJust $ parseURIReference "foo") `relativeTo` trbase)--testRelativeTo02 = testEq "testRelativeTo02"-    "http:foo"-    (show $-      (fromJust $ parseURIReference "http:foo") `relativeTo` trbase)--testRelativeTo03 = testEq "testRelativeTo03"-    "http://bar.org/foo"-    (show $-      (fromJust $ parseURIReference "http:foo") `nonStrictRelativeTo` trbase)--testRelativeTo = TF.testGroup "testRelativeTo"-  [ TF.testCase "testRelativeTo01" testRelativeTo01-  , TF.testCase "testRelativeTo02" testRelativeTo02-  , TF.testCase "testRelativeTo03" testRelativeTo03-  ]---- Test alternative parsing functions-testAltFn01 = testEq "testAltFn01" "Just http://a.b/c#f"-    (show . parseURI $ "http://a.b/c#f")-testAltFn02 = testEq "testAltFn02" "Just http://a.b/c#f"-    (show . parseURIReference $ "http://a.b/c#f")-testAltFn03 = testEq "testAltFn03" "Just c/d#f"-    (show . parseRelativeReference $ "c/d#f")-testAltFn04 = testEq "testAltFn04" "Nothing"-    (show . parseRelativeReference $ "http://a.b/c#f")-testAltFn05 = testEq "testAltFn05" "Just http://a.b/c"-    (show . parseAbsoluteURI $ "http://a.b/c")-testAltFn06 = testEq "testAltFn06" "Nothing"-    (show . parseAbsoluteURI $ "http://a.b/c#f")-testAltFn07 = testEq "testAltFn07" "Nothing"-    (show . parseAbsoluteURI $ "c/d")-testAltFn08 = testEq "testAltFn08" "Just http://a.b/c"-    (show . parseAbsoluteURI $ "http://a.b/c")--testAltFn11 = testEq "testAltFn11" True  (isURI "http://a.b/c#f")-testAltFn12 = testEq "testAltFn12" True  (isURIReference "http://a.b/c#f")-testAltFn13 = testEq "testAltFn13" True  (isRelativeReference "c/d#f")-testAltFn14 = testEq "testAltFn14" False (isRelativeReference "http://a.b/c#f")-testAltFn15 = testEq "testAltFn15" True  (isAbsoluteURI "http://a.b/c")-testAltFn16 = testEq "testAltFn16" False (isAbsoluteURI "http://a.b/c#f")-testAltFn17 = testEq "testAltFn17" False (isAbsoluteURI "c/d")--testAltFn = TF.testGroup "testAltFn"-  [ TF.testCase "testAltFn01" testAltFn01-  , TF.testCase "testAltFn02" testAltFn02-  , TF.testCase "testAltFn03" testAltFn03-  , TF.testCase "testAltFn04" testAltFn04-  , TF.testCase "testAltFn05" testAltFn05-  , TF.testCase "testAltFn06" testAltFn06-  , TF.testCase "testAltFn07" testAltFn07-  , TF.testCase "testAltFn08" testAltFn08-  , TF.testCase "testAltFn11" testAltFn11-  , TF.testCase "testAltFn12" testAltFn12-  , TF.testCase "testAltFn13" testAltFn13-  , TF.testCase "testAltFn14" testAltFn14-  , TF.testCase "testAltFn15" testAltFn15-  , TF.testCase "testAltFn16" testAltFn16-  , TF.testCase "testAltFn17" testAltFn17-  ]--testUriIsAbsolute :: String -> Assertion-testUriIsAbsolute str =-    assertBool str (uriIsAbsolute uri)-    where-    Just uri = parseURIReference str--testUriIsRelative :: String -> Assertion-testUriIsRelative str =-    assertBool str (uriIsRelative uri)-    where-    Just uri = parseURIReference str--testIsAbsolute = TF.testGroup "testIsAbsolute"-  [ TF.testCase "testIsAbsolute01" $ testUriIsAbsolute "http://google.com"-  , TF.testCase "testIsAbsolute02" $ testUriIsAbsolute "ftp://p.x.ca/woo?hai=a"-  , TF.testCase "testIsAbsolute03" $ testUriIsAbsolute "mailto:bob@example.com"-  ]--testIsRelative = TF.testGroup "testIsRelative"-  [ TF.testCase "testIsRelative01" $ testUriIsRelative "//google.com"-  , TF.testCase "testIsRelative02" $ testUriIsRelative "/hello"-  , TF.testCase "testIsRelative03" $ testUriIsRelative "this/is/a/path"-  , TF.testCase "testIsRelative04" $ testUriIsRelative "?what=that"-  ]---- Full test suite-allTests =-  [ testURIRefSuite-  , testComponentSuite-  , testRelativeSuite-  , testRFC2396Suite-  , testOddballSuite-  , testNormalizeSuite-  , testShowURI-  , testEscapeURIString-  , testNormalizeURIString-  , testRelativeTo-  , testAltFn-  , testIsAbsolute-  , testIsRelative-  ]--main = TF.defaultMain allTests--runTestFile t = do-    h <- openFile "a.tmp" WriteMode-    _ <- runTestText (putTextToHandle h False) t-    hClose h-tf = runTestFile-tt = runTestTT---- Miscellaneous values for hand-testing/debugging in Hugs:--uref = testURIRefSuite-tr01 = testRelative01-tr02 = testRelative02-tr03 = testRelative03-tr04 = testRelative04-rel  = testRelativeSuite-rfc  = testRFC2396Suite-oddb = testOddballSuite--(Just bu02) = parseURIReference "http://example/x/y/z"-(Just ou02) = parseURIReference "../abc"-(Just ru02) = parseURIReference "http://example/x/abc"--- fileuri = testURIReference "file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/"--cu02 = ou02 `relativeTo` bu02----------------------------------------------------------------------------------------  Copyright (c) 2004, G. KLYNE.  All rights reserved.---  Distributed as free software under the following license.------  Redistribution and use in source and binary forms, with or without---  modification, are permitted provided that the following conditions---  are met:------  - Redistributions of source code must retain the above copyright notice,---  this list of conditions and the following disclaimer.------  - Redistributions in binary form must reproduce the above copyright---  notice, this list of conditions and the following disclaimer in the---  documentation and/or other materials provided with the distribution.------  - Neither name of the copyright holders nor the names of its---  contributors may be used to endorse or promote products derived from---  this software without specific prior written permission.------  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND THE CONTRIBUTORS---  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT---  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR---  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT---  HOLDERS OR THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,---  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,---  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS---  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND---  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR---  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE---  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.--------------------------------------------------------------------------------------- $Source: /srv/cvs/cvs.haskell.org/fptools/libraries/network/tests/URITest.hs,v $--- $Author: gklyne $--- $Revision: 1.8 $--- $Log: URITest.hs,v $--- Revision 1.81 2012/08/01           aaronfriel--- Added additional test case for the "xip.io" service style URLs and absolute URLs prefixed with ipv4 addresses.------ Revision 1.8  2005/07/19 22:01:27  gklyne--- Added some additional test cases raised by discussion on URI@w3.org mailing list about 2005-07-19.  The test p[roposed by this discussion exposed a subtle bug in relativeFrom not being an exact inverse of relativeTo.------ Revision 1.7  2005/06/06 16:31:44  gklyne--- Added two new test cases.------ Revision 1.6  2005/05/31 17:18:36  gklyne--- Added some additional test cases triggered by URI-list discussions.------ Revision 1.5  2005/04/07 11:09:37  gklyne--- Added test cases for alternate parsing functions (including deprecated 'parseabsoluteURI')------ Revision 1.4  2005/04/05 12:47:32  gklyne--- Added test case.--- Changed module name, now requires GHC -main-is to compile.--- All tests run OK with GHC 6.4 on MS-Windows.------ Revision 1.3  2004/11/05 17:29:09  gklyne--- Changed password-obscuring logic to reflect late change in revised URI--- specification (password "anonymous" is no longer a special case).--- Updated URI test module to use function 'escapeURIString'.--- (Should unEscapeString be similarly updated?)------ Revision 1.2  2004/10/27 13:06:55  gklyne--- Updated URI module function names per:--- http://www.haskell.org//pipermail/cvs-libraries/2004-October/002916.html--- Added test cases to give better covereage of module functions.------ Revision 1.1  2004/10/14 16:11:30  gklyne--- Add URI unit test to cvs.haskell.org repository------ Revision 1.17  2004/10/14 11:51:09  graham--- Confirm that URITest runs with GHC.--- Fix up some comments and other minor details.------ Revision 1.16  2004/10/14 11:45:30  graham--- Use moduke name main for GHC 6.2------ Revision 1.15  2004/08/11 11:07:39  graham--- Add new test case.------ Revision 1.14  2004/06/30 11:35:27  graham--- Update URI code to use hierarchical libraries for Parsec and Network.------ Revision 1.13  2004/06/22 16:19:16  graham--- New URI test case added.------ Revision 1.12  2004/04/21 15:13:29  graham--- Add test case------ Revision 1.11  2004/04/21 14:54:05  graham--- Fix up some tests------ Revision 1.10  2004/04/20 14:54:13  graham--- Fix up test cases related to port number in authority,--- and add some more URI decomposition tests.------ Revision 1.9  2004/04/07 15:06:17  graham--- Add extra test case--- Revise syntax in line with changes to RFC2396bis------ Revision 1.8  2004/03/17 14:34:58  graham--- Add Network.HTTP files to CVS------ Revision 1.7  2004/03/16 14:19:38  graham--- Change licence to BSD style;  add nullURI definition; new test cases.------ Revision 1.6  2004/02/20 12:12:00  graham--- Add URI normalization functions------ Revision 1.5  2004/02/19 23:19:35  graham--- Network.URI module passes all test cases------ Revision 1.4  2004/02/17 20:06:02  graham--- Revised URI parser to reflect latest RFC2396bis (-04)------ Revision 1.3  2004/02/11 14:32:14  graham--- Added work-in-progress notes.------ Revision 1.2  2004/02/02 14:00:39  graham--- Fix optional host name in URI.  Add test cases.------ Revision 1.1  2004/01/27 21:13:45  graham--- New URI module and test suite added,--- implementing the GHC Network.URI interface.---
− standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch
@@ -1,26 +0,0 @@-From 392602f5ff14c0b5a801397d075ddcbcd890aa83 Mon Sep 17 00:00:00 2001-From: Joey Hess <joey@kitenet.net>-Date: Thu, 18 Apr 2013 17:50:59 -0400-Subject: [PATCH] fix cross build------ src/Data/Profunctor/Unsafe.hs | 3 ---- 1 file changed, 3 deletions(-)--diff --git a/src/Data/Profunctor/Unsafe.hs b/src/Data/Profunctor/Unsafe.hs-index 025c7c4..0249274 100644---- a/src/Data/Profunctor/Unsafe.hs-+++ b/src/Data/Profunctor/Unsafe.hs-@@ -40,9 +40,6 @@ import Data.Tagged- import Prelude hiding (id,(.),sequence)- import Unsafe.Coerce- --{-# ANN module "Hlint: ignore Redundant lambda" #-}--{-# ANN module "Hlint: ignore Collapse lambdas" #-}--- infixr 9 #.- infixl 8 .#- --- -1.8.2.rc3-
− standalone/no-th/haskell-patches/yesod-persistent_do-not-really-build.patch
@@ -1,33 +0,0 @@-From e82ed4e6fd7b5ea6dbe474b5de2755ec5794161c Mon Sep 17 00:00:00 2001-From: dummy <dummy@example.com>-Date: Thu, 16 Oct 2014 02:23:50 +0000-Subject: [PATCH] stub out------ yesod-persistent.cabal | 10 ----------- 1 file changed, 10 deletions(-)--diff --git a/yesod-persistent.cabal b/yesod-persistent.cabal-index b116f3a..017b184 100644---- a/yesod-persistent.cabal-+++ b/yesod-persistent.cabal-@@ -14,16 +14,6 @@ description:     Some helpers for using Persistent from Yesod.- - library-     build-depends:   base                      >= 4        && < 5--                   , yesod-core                >= 1.2.2    && < 1.3--                   , persistent                >= 1.2      && < 2.1--                   , persistent-template       >= 1.2      && < 2.1--                   , transformers              >= 0.2.2--                   , blaze-builder--                   , conduit--                   , resourcet                 >= 0.4.5--                   , resource-pool--    exposed-modules: Yesod.Persist--                     Yesod.Persist.Core-     ghc-options:     -Wall- - test-suite test--- -2.1.1-