]> snippets.scripts.mit.edu Git - Scripts/git/.git/blame - programming/gccrun
gccrun: Run tiny programs from the command line.
[Scripts/git/.git] / programming / gccrun
CommitLineData
bd204af8
GT
1#!/bin/sh
2
3if [ "$#" = 0 ]; then
4 echo "usage: $0 [-w wrapper] <C code...>" >&2
5 exit 1
6fi
7
8if [ "$1" = -w ]; then
9 wrapper="$2"
10 shift 2
11fi
12
13f=$(mktemp -d -t gccrun.XXXXXXXX) || exit 1
14cat > "$f/command.c" << EOF
15#define _GNU_SOURCE
16#include <sys/types.h>
17#include <sys/stat.h>
18#include <sys/mman.h>
19#include <sys/ptrace.h>
20#include <sys/syscall.h>
21#include <fcntl.h>
22#include <signal.h>
23#include <stdio.h>
24#include <stdlib.h>
25#include <string.h>
26#include <unistd.h>
27
28int
29main(int argc, char *argv[], char *envp[])
30{
31 $@;
32 return 0;
33}
34EOF
35if ! gcc -o "$f/command" "$f/command.c"; then
36 exit 1
37fi
38if [ -n "$wrapper" ]; then
39 "$wrapper" "$f/command"
40else
41 "$f/command"
42fi
43r=$?
44rm -r "$f"
45exit $r