public boolean section( BufferedReader r)
    throws IOException {
      String field;
      String front;
      String name = null;
      Attributes atts = new Attributes();
      boolean gotany = false;

      for ( ;; ) {
        field = header( r);
        if ( field == null  ||  0 == field.length() )
          break;
        gotany = true;
	int i = field.indexOf( ": ");
	if ( i < 1 ) {
	  System.err.printf( "Malformed line in manifest: %s\n", field);
	  System.exit( 1);
	}
	front = field.substring(0, i);
	field = field.substring(i+2);
        if ( front.equalsIgnoreCase( "Name") ) {
          if ( name == null )
            name = field;
          else
            System.err.println(
              "Warning: name attribute repeated within a section, ignored.");
          continue;
	}
	atts.putValue( front, field);
      }

      if ( ! gotany )
        return null != field;

      if ( null == name ) {
        if ( null != mainAttributes ) {
	  System.err.println(
	    "Main attributes followed by another nameless section");
	  System.exit( 1);
	}
	setDefaults( atts);
      }
      else
        store( name, atts);

      return null != field;
    }