1#!/usr/bin/env ruby
2
3if ARGV[0] == "-c"
4  out_stdout = 1
5  ARGV.shift
6end
7
8$sawbegin = 0
9$sawend = 0
10
11while line = gets()
12  if /^begin\s*(\d*)\s*(\S*)/ =~ line
13    $mode, $file = $1, $2
14    $sawbegin+=1
15    if out_stdout
16      out = STDOUT
17    else
18      out = open($file, "w") if $file != ""
19    end
20    out.binmode
21    break
22  end
23end
24
25raise "missing begin" unless $sawbegin
26
27out.binmode
28while line = gets()
29  if /^end/ =~ line
30    $sawend+=1
31    out.close unless out_stdout
32    File.chmod $mode.oct, $file unless out_stdout
33    next
34  end
35  line.sub!(/[a-z]+$/, "")	# handle stupid trailing lowercase letters
36  next if /[a-z]/ =~ line
37  next if !(((($_[0] - 32) & 077) + 2) / 3 == $_.length / 4)
38  out << $_.unpack("u") if $sawbegin > $sawend
39end
40
41raise "missing end" if $sawbegin > $sawend
42raise "missing begin" if ! $sawbegin
43exit 0
44