view share/candide @ 11182:9d5983817909

<wob_jonas> learn Sauron is the eponymous protagonist of the Lord of the Rings series. He serves primarily as narrator and the main driver of the plot. His heroic exploits include the resurrection of the Kings of Men and the conquest of the racists of Gondor. He now leads the Illuminati from his pyramid fort /\xea\x99\xa9\\ .
author HackBot
date Sat, 02 Sep 2017 18:01:47 +0000
parents c989a1669243
children
line wrap: on
line source

#!/bin/bash
# compile c from stdin
# candide, kinda

readinput () {
  while read -r -e || { printf %s "$REPLY"; false; } ; do
    printf '%s\n' "$REPLY"
  done
}

c="$*"
args=""; while [[ "$c" =~ ^(-[^ ]*)\ (.*) ]]; do args="$args ${BASH_REMATCH[1]}"; c="${BASH_REMATCH[2]}"; done
if ! [[ $c ]] || ! out=$(mktemp); then
  echo Error >&2
  exit 1
fi

# if you don't write 'main' it assumes that you're writing a full program (with free includes)
# this allows you to use other functions and stuff
# it will get false positives, but who cares?
if [[ $c != *main* ]]; then c=$(cat <<SOURCE
int main(int argc, char *argv[]) {
$c
  return 0;
}
SOURCE
); fi

# will replace ${args--O0} with the parameters
gcc -o "$out" -x c -I /hackenv/share ${args--O0} /dev/fd/0 <<SOURCE && { "$out" && { rm -f "$out"; true; }; }
#include "headers"    /* precompiled headers */
$c
SOURCE