code: public int write( final WritableByteChannel channel, int total) throws IOException {
  		final ByteBuffer buffer = charset.encode( CharBuffer.wrap( name));
  		int length = buffer.remaining() + 1;
  		ByteBuffer descriptor = ByteBuffer.allocate( CPIO_HEADER);
  		descriptor.put( writeSix( MAGIC));
  		descriptor.put( writeEight( inode));
  		descriptor.put( writeEight( getMode()));
  		descriptor.put( writeEight( uid));
  		descriptor.put( writeEight( gid));
  		descriptor.put( writeEight( nlink));
  		descriptor.put( writeEight(( int) ( mtime / 1000)));
  		descriptor.put( writeEight( filesize));
  		descriptor.put( writeEight( devMajor));
  		descriptor.put( writeEight( devMinor));
  		descriptor.put( writeEight( rdevMajor));
  		descriptor.put( writeEight( rdevMinor));
  		descriptor.put( writeEight( length));
  		descriptor.put( writeEight( checksum));
  		descriptor.flip();
  
  		total += CPIO_HEADER + length;
  		Util.empty( channel, descriptor);
  		Util.empty( channel, buffer);
  		Util.empty( channel, ByteBuffer.allocate( 1));
  		return total + skip( channel, total);
  	}
docs: Write the content for the CPIO header, including the name immediately following. The name data is rounded
  to the nearest 2 byte boundary as CPIO requires by appending a null when needed.
  @param channel which channel to write on
  @param total current size of header?
  @return total written and skipped
  @throws IOException there was an IO error