mirror of
				https://tildegit.org/ben/dotfiles.git
				synced 2025-08-10 05:02:03 +00:00 
			
		
		
		
	add c
This commit is contained in:
		
							parent
							
								
									4d4ee98463
								
							
						
					
					
						commit
						e55b10a835
					
				
							
								
								
									
										84
									
								
								bin/bin/c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										84
									
								
								bin/bin/c
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,84 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
set -eu
 | 
			
		||||
 | 
			
		||||
temp=$(mktemp -d)
 | 
			
		||||
trap 'rm -r "$temp"' EXIT
 | 
			
		||||
 | 
			
		||||
exec 3>>"${temp}/run.c"
 | 
			
		||||
 | 
			
		||||
cat >&3 <<EOF
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <ctype.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
#include <wctype.h>
 | 
			
		||||
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <strings.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
while getopts 'e:i:' opt; do
 | 
			
		||||
	case "$opt" in
 | 
			
		||||
		(e) expr=$OPTARG;;
 | 
			
		||||
		(i) echo "#include <${OPTARG}>" >&3;;
 | 
			
		||||
		(?) exit 1;;
 | 
			
		||||
	esac
 | 
			
		||||
done
 | 
			
		||||
shift $((OPTIND - 1))
 | 
			
		||||
 | 
			
		||||
cat >&3 <<EOF
 | 
			
		||||
int main(int argc, char *argv[]) {
 | 
			
		||||
	(void)argc;
 | 
			
		||||
	(void)argv;
 | 
			
		||||
	$*;
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
if [ -n "${expr:-}" ]; then
 | 
			
		||||
	cat >&3 <<EOF
 | 
			
		||||
	printf(
 | 
			
		||||
		_Generic(
 | 
			
		||||
			${expr},
 | 
			
		||||
			char: "%c\n",
 | 
			
		||||
			char *: "%s\n",
 | 
			
		||||
			wchar_t *: "%ls\n",
 | 
			
		||||
			signed char: "%hhd\n",
 | 
			
		||||
			short: "%hd\n",
 | 
			
		||||
			int: "%d\n",
 | 
			
		||||
			long: "%ld\n",
 | 
			
		||||
			long long: "%lld\n",
 | 
			
		||||
			unsigned char: "%hhu\n",
 | 
			
		||||
			unsigned short: "%hu\n",
 | 
			
		||||
			unsigned int: "%u\n",
 | 
			
		||||
			unsigned long: "%lu\n",
 | 
			
		||||
			unsigned long long: "%llu\n",
 | 
			
		||||
			double: "%g\n",
 | 
			
		||||
			default: "%p\n"
 | 
			
		||||
		),
 | 
			
		||||
		${expr}
 | 
			
		||||
	);
 | 
			
		||||
EOF
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ $# -eq 0 -a -z "${expr:-}" ]; then
 | 
			
		||||
	cat >&3
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo '}' >&3
 | 
			
		||||
 | 
			
		||||
cat >"${temp}/Makefile" <<EOF
 | 
			
		||||
CFLAGS += -Wall -Wextra -Wpedantic
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
make -s -C "${temp}" run
 | 
			
		||||
"${temp}/run"
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user