forked from lug/matterbridge
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			842 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			842 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"reflect"
 | |
| 
 | |
| 	"github.com/akavel/rsrc/binutil"
 | |
| 	"github.com/akavel/rsrc/coff"
 | |
| )
 | |
| 
 | |
| // copied from github.com/akavel/rsrc
 | |
| // LICENSE: MIT
 | |
| // Copyright 2013-2014 The rsrc Authors. (https://github.com/akavel/rsrc/blob/master/AUTHORS)
 | |
| func writeCoff(coff *coff.Coff, fnameout string) error {
 | |
| 	out, err := os.Create(fnameout)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	defer out.Close()
 | |
| 	w := binutil.Writer{W: out}
 | |
| 
 | |
| 	// write the resulting file to disk
 | |
| 	binutil.Walk(coff, func(v reflect.Value, path string) error {
 | |
| 		if binutil.Plain(v.Kind()) {
 | |
| 			w.WriteLE(v.Interface())
 | |
| 			return nil
 | |
| 		}
 | |
| 		vv, ok := v.Interface().(binutil.SizedReader)
 | |
| 		if ok {
 | |
| 			w.WriteFromSized(vv)
 | |
| 			return binutil.WALK_SKIP
 | |
| 		}
 | |
| 		return nil
 | |
| 	})
 | |
| 
 | |
| 	if w.Err != nil {
 | |
| 		return fmt.Errorf("Error writing output file: %s", w.Err)
 | |
| 	}
 | |
| 
 | |
| 	return nil
 | |
| }
 | 
