
// This file is put in the public domain
//
// $Id: zeroer.js 1365 2008-06-27 19:03:31Z  $

var FILE_SIZE_LIMIT = -1;
var BUFFER_SIZE = 1024 * 1024;
var DEFAULT_FILE_NAME = "zeroes";

java.lang.System.err.println("Disk Zero Filler v0.2");

var DiskZeroFiller = {
    zero: null,
    wipe: null,
    commonFill: null
};
DiskZeroFiller.commonFill = function(filename, buffer) {
// try
    var fos = new java.io.FileOutputStream(filename, false);

    java.lang.System.err.println();
    var written = 0;
    var ignore = BUFFER_SIZE * 3;

    var reference = new java.io.File(".");
    var free;
    while (ignore < (free = reference.getUsableSpace())) {
        // Must use this form to not be ambiguous
        fos.write(buffer.array(), 0, buffer.array().length);
        written += buffer.array().length;

        java.lang.System.err.printf("\r%d w %d f // %.2fMiB w %.2fMiB",
                       new Array(
                         new java.lang.Long(written), new java.lang.Long(free),
                         written / 1024.0 / 1024.0,
                         free / 1024.0 / 1024.0
                       )
        );
    }
    java.lang.System.err.println();

    fos.close();
};

DiskZeroFiller.zero = function(filename) {
    var buffer = java.nio.ByteBuffer.allocate(BUFFER_SIZE);
    java.util.Arrays.fill(buffer.array(), new java.lang.Byte(0));
    this.commonFill(filename, buffer);
};

DiskZeroFiller.wipe = function(filename) {
    var buffer = java.nio.ByteBuffer.allocate(BUFFER_SIZE);
    java.util.Arrays.fill(buffer.array(), new java.lang.Byte(0));
    for (var i=0; i<BUFFER_SIZE; i+=2) {
        buffer.array()[i] = new java.lang.Byte(127);
    }
    this.commonFill(filename, buffer);
};

DiskZeroFiller.zero("zeroes");
//DiskZeroFiller.wipe("wipe");

// vim:set ts=4 et ai: //
