diff options
-rw-r--r-- | Assistant/Install.hs | 3 | ||||
-rw-r--r-- | Assistant/Ssh.hs | 3 | ||||
-rw-r--r-- | Assistant/XMPP/Git.hs | 3 | ||||
-rw-r--r-- | Init.hs | 10 | ||||
-rw-r--r-- | Utility/Shell.hs | 20 |
5 files changed, 32 insertions, 7 deletions
diff --git a/Assistant/Install.hs b/Assistant/Install.hs index 989843e90..0db021ef7 100644 --- a/Assistant/Install.hs +++ b/Assistant/Install.hs @@ -14,6 +14,7 @@ import Assistant.Install.AutoStart import Assistant.Ssh import Locations.UserConfig import Utility.FileMode +import Utility.Shell #ifdef darwin_HOST_OS import Utility.OSX @@ -58,7 +59,7 @@ ensureInstalled = go =<< standaloneAppBase sshdir <- sshDir let shim = sshdir </> "git-annex-shell" let content = unlines - [ "#!/bin/sh" + [ shebang , "set -e" , "exec", base </> "runshell" ++ " git-annex-shell -c \"$SSH_ORIGINAL_COMMAND\"" diff --git a/Assistant/Ssh.hs b/Assistant/Ssh.hs index 15c97ab53..753babad4 100644 --- a/Assistant/Ssh.hs +++ b/Assistant/Ssh.hs @@ -10,6 +10,7 @@ module Assistant.Ssh where import Common.Annex import Utility.TempFile import Utility.UserInfo +import Utility.Shell import Git.Remote import Data.Text (Text) @@ -155,7 +156,7 @@ addAuthorizedKeysCommand rsynconly dir pubkey = join "&&" echoval v = "echo " ++ shellEscape v wrapper = "~/.ssh/git-annex-shell" script = - [ "#!/bin/sh" + [ shebang , "set -e" , "exec git-annex-shell -c \"$SSH_ORIGINAL_COMMAND\"" ] diff --git a/Assistant/XMPP/Git.hs b/Assistant/XMPP/Git.hs index d3c8343c2..8dba309a8 100644 --- a/Assistant/XMPP/Git.hs +++ b/Assistant/XMPP/Git.hs @@ -25,6 +25,7 @@ import qualified Git.Branch import Locations.UserConfig import qualified Types.Remote as Remote import Utility.FileMode +import Utility.Shell import Network.Protocol.XMPP import qualified Data.Text as T @@ -141,7 +142,7 @@ xmppPush cid gitpush = runPush SendPack cid handleDeferred $ do let wrapper = tmpdir </> "git-remote-xmpp" program <- readProgramFile writeFile wrapper $ unlines - [ "#!/bin/sh" + [ shebang , "exec " ++ program ++ " xmppgit" ] modifyFileMode wrapper $ addModes executeModes @@ -21,6 +21,7 @@ import Logs.UUID import Annex.Version import Annex.UUID import Utility.UserInfo +import Utility.Shell genDescription :: Maybe String -> Annex String genDescription (Just d) = return d @@ -92,7 +93,8 @@ preCommitHook :: Annex FilePath preCommitHook = (</>) <$> fromRepo Git.localGitDir <*> pure "hooks/pre-commit" preCommitScript :: String -preCommitScript = - "#!/bin/sh\n" ++ - "# automatically configured by git-annex\n" ++ - "git annex pre-commit .\n" +preCommitScript = unlines + [ shebang + , "# automatically configured by git-annex" + , "git annex pre-commit ." + ] diff --git a/Utility/Shell.hs b/Utility/Shell.hs new file mode 100644 index 000000000..fecafe1a8 --- /dev/null +++ b/Utility/Shell.hs @@ -0,0 +1,20 @@ +{- /bin/sh handling + - + - Copyright 2013 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +{-# LANGUAGE CPP #-} + +module Utility.Shell where + +shellPath :: FilePath +#ifndef WITH_ANDROID +shellPath = "/bin/sh" +#else +shellPath = "/system/bin/sh" +#endif + +shebang :: String +shebang = "#!" ++ shellPath |