Changeset 161

Show
Ignore:
Timestamp:
03/14/06 21:53:15 (3 years ago)
Author:
pragma
Message:

More Mango refactoring. Not quite-so-dirty commit.

- Fixed some small problems with DDLReader
- Continued with bugfixing and refactoring the utils
- Refactored DDL and InSitu? loaders

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/buildtest.bat

    r101 r161  
    22 
    33if "%1"==""  goto err 
    4  
     4echo * Compiling Test Module 
    55build -c test\testmodule.d %2 %3 %4 %5 %6 %7 %8 %9 
    66 
     7echo * Building Test 
    78build -full -L" -map" test\%1 %2 %3 %4 %5 %6 %7 %8 %9 
    89copy %1.map test 
     10 
     11echo * Creating in-situ module via insitu.exe 
    912utils\insitu test\%1.map -ftest\%1.situ 
     13 
     14echo * Creating ddl in-situ module via bless.exe 
    1015utils\bless test\%1.situ -ftest\%1.ddl 
    1116 
     
    1722 
    1823:done 
     24 
     25echo * Done 
  • trunk/ddl/DDLReader.d

    r158 r161  
    4141public class DDLReader : Reader{ 
    4242    public this(void[] data){ 
    43         super(new Buffer(data)); 
     43        super(new Buffer(data,data.length)); 
    4444    } 
    4545     
     
    8787        x ~= content [0..filled]; // add on additional data 
    8888         
    89         Stdout.println("DDLReader.getAll: %d bytes read\n",x.length); 
    9089        return this; 
    9190    } 
  • trunk/ddl/FileBuffer.d

    r143 r161  
    2727private import mango.io.Buffer; 
    2828private import mango.io.FileConduit; 
     29 
     30private import mango.io.model.IBuffer; 
    2931private import mango.io.model.IConduit; 
    3032 
     
    3638    FilePath path; 
    3739     
    38     public this(char[] path){ 
     40    public this(char[] path, FileStyle.Bits style = FileStyle.ReadExisting){ 
    3941        this.path = new FilePath(path); 
    40         super(new FileConduit(this.path)); 
     42        super(new FileConduit(this.path,style)); 
    4143    } 
    4244     
    43     public this(FilePath path){ 
    44         super(new FileConduit(path)); 
     45    public this(FilePath path, FileStyle.Bits style = FileStyle.ReadExisting){ 
     46        super(new FileConduit(path,style)); 
    4547        this.path = path; 
    4648    } 
     
    6466        return path; 
    6567    } 
    66     /* 
    67     public  void[] readAll(){ 
    68         ubyte[] content; 
    6968     
    70         auto conduit = this.getConduit();   
    71         try{ 
    72             content = new ubyte[cast(int) conduit.length]; 
    73      
    74             // read the entire file into memory and return it 
    75             if (conduit.read (content) != content.length) 
    76                 throw new IOException ("eof whilst reading"); 
    77         }  
    78         finally{ 
    79             conduit.close (); 
    80         } 
    81         return content; 
    82     }*/ 
     69    public IBuffer.Style getStyle(){ 
     70        return IBuffer.Mixed; 
     71    } 
    8372} 
  • trunk/ddl/LoaderRegistry.d

    r158 r161  
    2929private import ddl.FileBuffer; 
    3030 
     31private import mango.io.Stdout; 
     32 
    3133/** 
    3234    Exception class used exclusively by the Linker. 
     
    140142        DynamicLibrary lib; 
    141143        foreach(DynamicLibraryLoader loader;loaders){ 
     144            //  Stdout.println("trying %s loader",loader.getLibraryType); 
    142145            if(loader.canLoadLibrary(buffer)){ 
     146                //Stdout.println("loading... "); 
    143147                lib = loader.load(this,buffer); 
    144  
     148                //Stdout.println("completed"); 
    145149                // check the version if needed 
    146150                if(attrStdVersion.length > 0){ 
  • trunk/ddl/ddl/DDLBinary.d

    r158 r161  
    119119        DDLWriter writer = new DDLWriter(fileBuffer); 
    120120             
    121         writer.put(cast(ubyte[])MagicBytes); 
     121        writer.getBuffer.append(cast(void[])MagicBytes); 
    122122        writer.put(DDLVersion); 
    123123        writer.put(cast(uint)0); // dummy write for binary start 
     
    140140            writer.put(value); 
    141141        } 
    142          
    143         writer.put(binaryData); 
    144          
     142                 
    145143        uint binaryStart = writer.getPosition(); 
    146144         
    147         writer.put(binaryData); 
     145        writer.getBuffer.append(cast(void[])binaryData); 
    148146         
    149147        writer.seek(8); // offset for binary start 
     
    174172count ::= uint 
    175173 
    176 embeddedFile ::= ubyte(count
     174embeddedFile ::= ubyte(*
    177175+/ 
  • trunk/ddl/insitu/InSituLibBinary.d

    r143 r161  
    3434 
    3535private import mango.io.GrowBuffer; 
     36private import mango.io.Stdout; 
    3637 
    3738class InSituLibBinary : InSituBinary{ 
     
    7475        reader.getAll(binaryData); 
    7576        reader = new DDLReader(uncompress(binaryData)); 
    76          
     77                
    7778        // read symbols 
    7879        for(uint i=0; i<symbolCount; i++){ 
     
    8283            reader.get(address); 
    8384            reader.get(sym.name); 
    84              
     85                        
    8586            sym.address = cast(void*)address; 
    8687                     
     
    101102        // compress the data 
    102103        ubyte[] binaryData = cast(ubyte[])compress(zipWriter.getBuffer.toString,compressionLevel); 
    103          
     104 
    104105        // write the actual file 
    105106        DDLWriter writer = new DDLWriter(file); 
    106         writer.put(cast(ubyte[])magicString); 
     107        writer.getBuffer.append(cast(void[])magicString); 
    107108        writer.put(InSituVersion); 
    108109        writer.put(allSymbols.length); 
    109         writer.put(binaryData); 
     110        writer.getBuffer.append(cast(void[])binaryData); 
    110111    } 
    111112} 
     
    113114/+ 
    114115    InSituLibBinary ::= header compressedData  
    115     header ::= fileVersion symbolCount 
     116    header ::= magicString fileVersion symbolCount 
    116117    fileVersion ::= uint 
    117118    symbolCount ::= uint 
  • trunk/ddl/insitu/InSituMapBinary.d

    r158 r161  
    2929private import ddl.insitu.InSituBinary; 
    3030 
    31 private import mango.io.TextReader; 
    3231private import mango.text.LineIterator; 
    3332 
     
    3938    ExportSymbol[char[]] allSymbols; 
    4039     
     40    // helper class 
     41    protected class ExtLineIteratorT(T) : LineIteratorT!(T){ 
     42        public this(){} 
     43         
     44        public this (IBuffer buffer){ 
     45            super (buffer); 
     46        } 
     47         
     48        public this (IConduit conduit){ 
     49            super (conduit); 
     50        } 
     51         
     52        this (T[] string){ 
     53            super (string); 
     54        } 
     55         
     56        public T[] getNext(){ 
     57            if(next) return get(); 
     58            else return (T[]).init; 
     59        } 
     60    } 
     61     
     62    alias ExtLineIteratorT!(char) ExtLineIterator; 
     63         
    4164    public this(){ 
    4265        //do nothing 
     
    4467         
    4568    public void load(FileBuffer file){ 
    46         TextReader reader = new TextReader(new LineIterator(file)); 
    47         parseSegmentDefinitions(reader); 
    48         parsePublicsByName(reader);  
     69        ExtLineIterator iter = new ExtLineIterator(file); 
     70                 
     71        parseSegmentDefinitions(iter); 
     72        parsePublicsByName(iter);    
    4973        // throw away the publics by address 
    5074    } 
     
    5882    } 
    5983     
    60     protected void parseSegmentDefinitions(TextReader reader){ 
     84    protected void parseSegmentDefinitions(ExtLineIterator iter){ 
    6185        char[] line; 
    62         reader.get(line); // throw away the first line (blank) 
    63         reader.get(line); // throw away the second line (header) 
     86        line = iter.getNext(); // throw away the first line (blank) 
     87        line = iter.getNext(); // throw away the second line (header) 
    6488         
    6589        // read until there's a blank line 
    6690        while(true){ 
    67             reader.get(line);  
     91            line = iter.getNext();  
    6892            if(line.length == 0) break; 
    6993        } 
    7094    } 
    7195     
    72     protected void parsePublicsByName(TextReader reader){ 
     96    protected void parsePublicsByName(ExtLineIterator iter){ 
    7397        char[] line; 
    74         reader.get(line);  // throw away the first line (header) 
    75         reader.get(line);  // throw away the second line (blank) 
     98        line = iter.getNext();  // throw away the first line (header) 
     99        line = iter.getNext();  // throw away the second line (blank) 
    76100                 
    77101        // read until there's a blank line 
    78102        while(true){ 
    79             reader.get(line); 
     103            line = iter.getNext(); 
    80104            if(line.length == 0) break; 
    81105                                     
  • trunk/ddoc/ddl.readme.txt

    r62 r161  
    1 DDOC TOOL V1.0 FOR DDL 
    2 --------------- 
    3  
    4 By Eric Anderton (C) 2005 
    5 Contact: EricAnderton@yahoo.com 
    6  
    7 This product is released under a modified BSD license -- see the section LICENSE for more information 
    8  
    9 This tool has been modified explicitly for the DDL project. 
    10  
    11 http://www.dsource.org/projects/ddl 
    12  
    13 Please see the original readme.txt for more information 
  • trunk/ddoc/readme.txt

    r62 r161  
    1 DDOC TOOL V1.0 
    2 --------------- 
    3  
    4 By Eric Anderton (C) 2005 
    5 Contact: EricAnderton@yahoo.com 
    6  
    7 This product is released under a modified BSD license -- see the section LICENSE for more information 
    8  
    9  
    10 INTRODUCTION 
    11 ------------ 
    12  
    13 The ddoc tool provides a means to manipulate XML data as generated by DMD's ddoc facility, into useful and cross-referenced documentation.  It accomplishes this by using a XSLT processor, such as AltovaXML and a series of customizable stylesheets.  The result is a very flexible system that can be molded to fit just about any html-based documentation layout imaginable. 
    14  
    15 More information on DMD and ddoc can be found on the digitalmars.com website:  
    16     http://www.digitalmars.com/d/ddoc.html 
    17      
    18      
    19 PLATFORMS AND DEPENDENCIES 
    20 -------------------------- 
    21  
    22 The tool is presently provided for use on win32 with the AltovaXML XSLT processor.  If you are interested in using this tool with a different processor or a different operating system, please see the PORTING section below. 
    23  
    24 AltovaXML may be acquired on their website.  It is a free (as in beer) download that comes with a royalty-free use license. 
    25  
    26     http://www.altova.com/altovaxml.html 
    27  
    28  
    29 INSTALLATION 
    30 ------------ 
    31  
    32 There are several steps to installation before you can get started with this utility. 
    33  
    34 0)  Extract the files from the provided .zip, making sure to preserve the directory structure. If you are reading this, then you've likely completed this step.  The installed files can stay put: the installation tool takes care of moving things about from here on. 
    35  
    36 1)  If you plan on building your sourcecode using a tool like 'build', you may want to install the xml.ddoc file in the same directory as DMD, and add a reference to it in the sc.ini file: 
    37  
    38     DDOCFILE=myproject.ddoc 
    39  
    40     Otherwise, you can simply use the xml.ddoc file inline when you compile a file in DMD. 
    41      
    42     dmd myfile.d xml.ddoc 
    43      
    44     Since the ddoc tool can only work with what DMD outputs, it is only going to work as well as the quality of your code comments.  If you're not already familiar with it, please review the documentation guidelines on the digitalmars.com website: 
    45      
    46     http://www.digitalmars.com/d/ddoc.html   
    47      
    48 2)  Install ddoc for your D application of choice.  Simply run the 'install' script in the directory where you extracted the files back in step #0.  If you run it without any arguments, it'll prompt you in how to use it correctly. 
    49  
    50     Usage: install.bat (source_path) (dest_path) 
    51      
    52     Where the source path is the root-most directory where your sourcecode is kept, and the destination path is where you'd like your generated documentation to go. 
    53      
    54     The source and destination paths must be fully-qualified.  This is because the installation tool will install the scripts with those paths in mind, so you won't have to type them in after this step.  If you decide to move your project directory, or its documentation directory, just re-run this step with the new paths.  The installer is smart, and won't over-write any customized scripts you may have added in the interim. 
    55      
    56     The installer will create a '_ddoc' sub-directory under your destination directory, and will copy all the needed XML, XSL and shell scripts there for use.  When the installation process is complete, the installer will prompt you with the proper command-line for the next step.  Feel free to place that in a shell script of your choosing for easy access later. 
    57      
    58 3)  Generate your documentation*.  Simply run the 'compile' command that was given you by the installer;  this will be in the form '(dest-path)\_ddoc\compile'. 
    59  
    60     The 'compile' command will generate a cross-reference for your entire source tree, and then pass it to a series of transforms and child scripts.  The process is very time-consuming, but is needed to generate some of the more complex pages in the documentation set.   
    61      
    62     (*You'll of course want to have DMD generate the output .html (really XML data -- see step #1) files before you do this.  Otherwise, you'll be very dissapointed at the output.) 
    63  
    64 4)  Once it is completed, you can aim your browser at (dest-path)/index.html to review the output.  If at any time you update your code, and run it through DMD to get ddoc output, run the 'compile' script again from Step #3 to update your documentation. 
    65  
    66  
    67 CUSTOMIZATION 
    68 ------------- 
    69  
    70 There are several points for customization with this tool.  These are located in the (dest-dir)\_ddoc directory after installation. 
    71  
    72 - page.xsl - This transform is used for each and every page in the document.  Modify the templates here if you want to change how all your pages look 
    73  
    74 - pages.xml - This is used to describe all the non-module pages in the documentation output.  If you want to suppress a given page, or to add your own, simply modify the file.  The various XSL files indicated within pages.xml can also be modified, say if you want to change the title or enhance the content. 
    75  
    76 Also, there is a logo.gif that is copied directly into the destination directory.  As this is referenced in the page.xsl file (mentioned above), you may want to change this to your project's logo or get rid of it completely. 
    77  
    78 If you are interested in porting the tool to another platform, please see the PORTING section. 
    79  
    80  
    81 BUGS & ISSUES 
    82 ------------- 
    83  
    84 - The xref is slow for big projects.  Large D projects take a very long time to generate documentation -several minutes or more.  This is a known issue, and a more scalable algorithm will be adopted for future releases. 
    85  
    86 - Depending on your XSLT engine of choice, it may be difficult to debug custom scripts used with the tool.  AltovaXML is notorious for quietly failing or giving minimal output on where your markup is invalid or if an XPATH expression is wrong. 
    87      
    88      
    89 PORTING 
    90 ------- 
    91  
    92 There are two files that need to be modified in order to get the tool to work with with a different scripting shell or XSLT engine, on your platform of choice. 
    93  
    94 - install.bat - This script is inherently non-portable.  It will require a complete re-write for porting to another operating system.  Care has been taken to make it as short as possible, as to ease this transition.  Note the behavior of xcopy, as it only overwrites files that are older than the ones from the /install sub-directory. 
    95  
    96 - install/script.xsl - The system uses this transform to generate all of the scripts used after the inital install script.  The files compile.xml, all-modules.xml and all-pages.xml are fed through this transform to generate shell scripts for later use.  All of the productions in script.xsl will need to be modified to accomodate your command-shell and/or XSLT engine of choice. 
    97  
    98 One caveat: the scripts for this tool require XSLT/XPATH 2.0 support.  At the time of writing this document, there were exceptionally few such engine implementations out in the wild, with a very slim number of them available for free.  It is technically possible to reduce the entire XSL set in the tool to XSLT/XPATH 1.0, but to do so would be quite an undertaking. 
    99  
    100  
    101 LICENSE 
    102 ------- 
    103  
    104 Copyright (c) 2005 Eric Anderton 
    105      
    106 Permission is hereby granted, free of charge, to any person 
    107 obtaining a copy of this software and associated documentation 
    108 files (the "Software"), to deal in the Software without 
    109 restriction, including without limitation the rights to use, 
    110 copy, modify, merge, publish, distribute, sublicense, and/or 
    111 sell copies of the Software, and to permit persons to whom the 
    112 Software is furnished to do so, subject to the following 
    113 conditions: 
    114  
    115 The above copyright notice and this permission notice shall be 
    116 included in all copies or substantial portions of the Software. 
    117  
    118 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
    119 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
    120 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
    121 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
    122 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
    123 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
    124 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 
    125 OTHER DEALINGS IN THE SOFTWARE. 
  • trunk/utils/bless.d

    r142 r161  
    3030private import ddl.all; 
    3131private import ddl.FileBuffer; 
     32private import ddl.Attributes; 
     33private import ddl.DDLException; 
     34private import ddl.DDLReader; 
     35 
    3236private import ddl.ddl.DDLLoader; 
    3337private import ddl.ddl.DDLBinary; 
    3438 
    35 private import mango.io.File; 
    3639private import mango.io.FilePath; 
     40private import mango.io.FileConduit; 
     41 
     42private import mango.text.LineIterator; 
    3743 
    3844private import utils.bless_bn; 
     
    95101         
    96102    // get the filename 
    97     File file = new File(args[1]); 
    98          
    99     char[] originalOutputFile = filePathPart(file.getPath,PathPart.Root | PathPart.Path | PathPart.Name | PathPart.Suffix); 
    100      
     103 
    101104    // pick through the options (if any) 
    102105    bit verbose = false; 
    103106    bit extract = false; 
    104107    bit noCreate = false; 
    105     char[] outputFileName = originalOutputFile; 
    106     char[][char[]] attributes; 
    107          
    108     // get dash prefixed args 
    109     ArgParser parser = new ArgParser(); 
     108    char[] outputFileName = ""; 
     109    char[] filename = ""; 
     110    Attributes attributes; 
     111     
     112    // configure the arg parser 
     113    ArgParser parser = new ArgParser(delegate uint(char[] value,uint ordinal){ 
     114        if(ordinal > 0) throw new DDLException("Invalid argument %s",value); 
     115        filename = value; 
     116        return value.length; 
     117    }); 
    110118     
    111119    parser.bind("-", "v",delegate void(){ 
     
    149157     
    150158    parser.bind("-", "p",delegate uint(char[] value){ 
    151         DDLFile file; 
    152         file.create(value); 
    153         if(file.exists){ 
    154             file.load(value); 
    155             ReadCursor cursor = new ReadCursor(file); 
    156             while(cursor.hasMore()){ 
    157                 parseAttribute(cursor.readLine); 
     159        FileConduit file = new FileConduit(value); 
     160        //TODO: determine if file exists, or just let exception fall through? 
     161        //if(file.exists){ 
     162            LineIterator iter = new LineIterator(file); 
     163            while(iter.next){ 
     164                parseAttribute(iter.get); 
    158165            } 
    159166            return value.length; 
    160         } 
    161         else{ 
    162             throw new Exception("Cannot find properties file: '" ~ value ~ "'"); 
    163         } 
    164     }); 
    165      
    166     try{ 
    167         parser.parse(args[2..$]); 
    168     } 
    169     catch(Exception e){ 
    170         Stdout.println("%s",e.toString()); 
    171         return 1; 
     167        //} 
     168        //else{ 
     169        //  throw new Exception("Cannot find properties file: '" ~ value ~ "'"); 
     170        //} 
     171    }); 
     172     
     173    // parse the arguments 
     174    parser.parse(args[1..$]); 
     175         
     176    if(filename == ""){ 
     177        throw new DDLException("No filename specified."); 
     178    } 
     179     
     180    // get the file 
     181    FileBuffer file = new FileBuffer(filename);      
     182         
     183    char[] originalOutputFile = filePathPart(file.getPath,PathPart.Root | PathPart.Path | PathPart.Name | PathPart.Suffix); 
     184     
     185    if(outputFileName == ""){ 
     186        outputFileName = originalOutputFile; 
    172187    } 
    173188     
     
    191206    // we load the entire file via its loader to ensure that it will work later. 
    192207    DynamicLibrary lib = registry.load(file.getPath.toString()); 
     208     
    193209     
    194210    if(!lib){ 
     
    245261        // create the file and save it 
    246262        DDLBinary binary = new DDLBinary(); 
     263        DDLReader reader = new DDLReader(file); 
     264        void[] data; 
    247265 
    248266        // save the easy fields  
    249267        binary.binaryType = lib.getType; 
    250         binary.binaryData = cast(ubyte[])file.read(); 
    251         binary.attributes = attributes; 
    252          
     268        binary.attributes = attributes;      
     269         
     270        reader.getAll(data); 
     271        binary.binaryData = cast(ubyte[])data; 
     272                                 
    253273        if(!("std.filename" in attributes)){ 
    254274            attributes["std.filename"] = file.getPath.getName ~ "." ~ file.getPath.getExtension; 
     
    282302                 
    283303        if(!noCreate){ 
    284             binary.save(new FileBuffer(outputFileName)); 
     304            FileBuffer outputFile = new FileBuffer(outputFileName,FileStyle.ReadWriteCreate); 
     305            binary.save(outputFile); 
     306             
     307            outputFile.flush(); 
     308            outputFile.getConduit().close(); 
     309             
    285310            if(verbose) Stdout.println("Created '%s'",outputFileName); 
    286311        } 
  • trunk/utils/bless_bn.d

    r159 r161  
    22// This file is automatically maintained by the BUILD utility, 
    33// Please refrain from manually editing it. 
    4 long auto_build_number = 318
     4long auto_build_number = 407
  • trunk/utils/ddlinfo_bn.d

    r159 r161  
    22// This file is automatically maintained by the BUILD utility, 
    33// Please refrain from manually editing it. 
    4 long auto_build_number = 318
     4long auto_build_number = 407
  • trunk/utils/insitu.d

    r159 r161  
    3030 
    3131private import ddl.all; 
     32private import ddl.DDLException; 
    3233private import ddl.FileBuffer; 
    3334private import ddl.insitu.all; 
     
    3536private import utils.insitu_bn; 
    3637private import utils.ArgParser; 
     38 
     39private import mango.io.FileConduit; 
    3740 
    3841char[] helpText =  
     
    7073    } 
    7174             
    72     // get the filename 
    73     FileBuffer inputFile = new FileBuffer(args[1]); 
    74      
    7575    // determine the output file 
    76     char[] outputFilename = inputFile.getPath.toString; 
    77     bit filenameOverride = false; 
     76    char[] outputFilename = ""; 
     77    bool filenameOverride = false; 
     78    char[] filename = ""; 
    7879     
    7980    ubyte compressionLevel = 9; 
    8081         
    81     // get dash prefixed args 
    82     ArgParser parser = new ArgParser(); 
     82    // Configure the parser and parse the command line   
     83    ArgParser parser = new ArgParser(delegate uint(char[] value,uint ordinal){ 
     84        if(ordinal > 0) throw new DDLException("Invalid argument %s",value); 
     85        filename = value; 
     86        return value.length; 
     87    });  
    8388     
    8489    parser.bind("-", "f",delegate uint(char[] value){ 
     
    8691        outputFilename = value; 
    8792        return value.length; 
    88     });         
     93    }); 
    8994         
    9095    parser.bind("-", "c",delegate uint(char[] value){ 
     
    96101        return 1; 
    97102    }); 
    98              
    99103     
    100     parser.parse(args[2..$]); 
     104    parser.parse(args[1..$]); 
     105     
     106    if(filename == ""){ 
     107        throw new DDLException("No filename specified."); 
     108    } 
     109     
     110    // get the file 
     111    FileBuffer inputFile = new FileBuffer(filename);         
     112         
     113    if(outputFilename == ""){ 
     114        outputFilename = inputFile.getPath.toString;         
     115    }    
    101116     
    102117    // load the .map file and get what we need 
     
    111126    } 
    112127     
    113     FileBuffer outputFile = new FileBuffer(outputFilename); 
     128    FileBuffer outputFile = new FileBuffer(outputFilename,FileStyle.ReadWriteCreate); 
    114129             
    115130    // commit the data to the lib-style binary 
     
    117132    outputBinary.setAllSymbols(inputBinary.getAllSymbols()); 
    118133    outputBinary.save(outputFile,compressionLevel); 
     134     
     135    outputFile.flush(); 
     136    outputFile.getConduit().close(); 
    119137 
    120138    return 0; 
  • trunk/utils/insitu_bn.d

    r159 r161  
    22// This file is automatically maintained by the BUILD utility, 
    33// Please refrain from manually editing it. 
    4 long auto_build_number = 318
     4long auto_build_number = 407