view paste/paste.14186 @ 2317:32451419357a

<Jafet> (echo \'#!/bin/sh\'; echo \'a() { p=$(echo -n $(ps -p $0 -oppid | tail -1)); if egrep " \\| cat\\$" /proc/$p/cmdline; then ps -p $0 -ocmd | tail -1; else a $p; fi }\'; echo \'a $$\') > bin/quine2
author HackBot
date Fri, 01 Mar 2013 02:00:55 +0000
parents e037173e0012
children
line wrap: on
line source

import System.Environment
import System.Process
import System.Exit
import Control.Monad
import Control.Applicative
import Data.List

main = do
    r <- buildRegex . permuteArgs <$> getArgs
    (_, _, _, h) <- createProcess (proc "/hackenv/bin/log" [r])
    exitWith <$> waitForProcess h
   where
     permuteArgs = permutations . join . map words
     buildRegex = oBrackets . intercalate ".*" . map (iBrackets . intercalate "|")
     iBrackets s = "(?:" ++ s ++ ")"
     oBrackets s = "^.*(?:" ++ s ++ ").*$"