From: Geoffrey Thomas Date: Mon, 23 Aug 2010 09:59:41 +0000 (-0400) Subject: gccrun: Run tiny programs from the command line. X-Git-Url: https://snippets.scripts.mit.edu/gitweb.cgi/Scripts/git/.git/commitdiff_plain/bd204af875154cc4702debfd77b546cd11df48fc gccrun: Run tiny programs from the command line. e.g., dr-wily:~ geofft$ gccrun 'printf("Hello world!\n");' Hello world! See http://geofft.mit.edu/blog/sipb/132 for a bit more info. Signed-off-by: Geoffrey Thomas --- diff --git a/programming/gccrun b/programming/gccrun new file mode 100755 index 0000000..55e6b68 --- /dev/null +++ b/programming/gccrun @@ -0,0 +1,45 @@ +#!/bin/sh + +if [ "$#" = 0 ]; then + echo "usage: $0 [-w wrapper] " >&2 + exit 1 +fi + +if [ "$1" = -w ]; then + wrapper="$2" + shift 2 +fi + +f=$(mktemp -d -t gccrun.XXXXXXXX) || exit 1 +cat > "$f/command.c" << EOF +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int +main(int argc, char *argv[], char *envp[]) +{ + $@; + return 0; +} +EOF +if ! gcc -o "$f/command" "$f/command.c"; then + exit 1 +fi +if [ -n "$wrapper" ]; then + "$wrapper" "$f/command" +else + "$f/command" +fi +r=$? +rm -r "$f" +exit $r