view share/candide @ 11340:77399ae45cb1

<wob_jonas> slashlearn peace witch//Peace witches do alchemy: they turn mundane building material to gold. They\'re in the same universe where Bowser turned peaceful citizens of the Mushroom Kingdom to building material.
author HackBot
date Tue, 06 Feb 2018 23:37:00 +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