view bin/gccrun @ 5129:7d19c0f4d970

<b_jonas> echo $\'#!/usr/bin/perl\\n\'\'$_=shift;sub k{my$t;$t=~y/IVXLC/XLCDM/,$t.=("",I,II,III,IV,V,VI,VII,VIII,IX)[$_]for/./g;$$t=$_;$t}k for s""\\$"..4e3;print eval(),$/\' > bin/fromroman && chmod a+x bin/fromroman
author HackBot
date Fri, 14 Nov 2014 21:22:56 +0000
parents 7f957c1f4661
children
line wrap: on
line source

#!/bin/sh

if [ "$#" = 0 ]; then
    echo "usage: $0 [-w wrapper] <C code...>" >&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 <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/ptrace.h>
#include <sys/syscall.h>
#include <arpa/inet.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <math.h>

int
main(int argc, char *argv[], char *envp[])
{
	$1;
	return 0;
}
EOF
shift
if ! gcc -o "$f/command" "$f/command.c" $@ -lm; then
    exit 1
fi
if [ -n "$wrapper" ]; then
    $wrapper "$f/command"
else
    "$f/command"
fi
r=$?
rm -r "$f"
exit $r