49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/sh -
 | |
| 
 | |
| binary=$1
 | |
| shift
 | |
| 
 | |
| if [ `echo $binary | wc -c` -gt 28 ] ; then
 | |
|     echo "#!/bin/sh -"
 | |
|     echo exec $binary $* -i '"$0"' '"$@"'
 | |
| 
 | |
| elif [ $# -gt 0 ] ; then
 | |
|     echo '#!'$binary \\
 | |
|     echo $* -i
 | |
| 
 | |
| else echo '#!'$binary -i
 | |
| fi
 | |
| 
 | |
| exec cat
 | |
| 
 | |
| 
 | |
| # This program reads an S48 image from stdin and turns it into
 | |
| # an executable by prepending a #! prefix. The vm and its
 | |
| # args are passed to this program on the command line.
 | |
| #
 | |
| # If the vm binary is 27 chars or less, then we can directly
 | |
| # execute the vm with one of these scripts:
 | |
| #     No args:
 | |
| #         image2script /usr/local/bin/svm <image
 | |
| #     outputs this script:
 | |
| #	  #!/usr/local/bin/svm -i
 | |
| #	  ...image bits follow...
 | |
| #    
 | |
| #     Args:
 | |
| #         image2script /usr/bin/svm -h 4000000 -o /usr/bin/svm <image
 | |
| #     outputs this script:
 | |
| #	  #!/usr/bin/svm \
 | |
| #	  -h 4000000 -o /usr/bin/svm -i
 | |
| #	  ...image bits follow...
 | |
| #
 | |
| # The exec system call won't handle the #! line if it contains more than
 | |
| # 32 chars, so if the vm binary is over 28 chars, we have to use a /bin/sh
 | |
| # trampoline.
 | |
| #     image2script /user1/lecturer/shivers/vc/scsh/s48/lib/svm -h 4000000 < ...
 | |
| # outputs this script:
 | |
| #     #!/bin/sh -
 | |
| #     exec /user1/lecturer/shivers/vc/scsh/s48/lib/svm -h 4000000 -i $0 $*
 | |
| #     ...image bits follow...
 | |
| #
 | |
| # 	-Olin
 |