function lint( arr ) {
	var headers;
	var fnames;
	var fname;
	var list;
	var exts;
	var ext;
	var tmp;
	var out;
	var i;
	var j;
	var k;

	headers = {};
	out = [];
	for ( i = 0; i < arr.length; i++ ) {
		fname = basename( arr[ i ] );
		ext = extname( fname );
		fname = fname.substring( 0, fname.length-ext.length );

		// Ensure a header basename does not match a C/C++ standard library header...
		if ( indexOf( C_HEADERS, fname ) !== -1 ) {
			out.push({
				'name': arr[ i ],
				'error': 'should not match a C standard library header.'
			});
		} else if ( indexOf( CPP_HEADERS, fname ) !== -1 ) {
			out.push({
				'name': arr[ i ],
				'error': 'should not match a C++ standard library header.'
			});
		}

		// Cache basenames...
		if ( !headers[ ext ] ) {
			headers[ ext ] = {};
		}
		if ( hasOwnProp( headers[ ext ], fname ) ) {
			headers[ ext ][ fname ].push( arr[ i ] );
		} else {
			headers[ ext ][ fname ] = [ arr[ i ] ];
		}
	}
	// For every basename found multiple times, log a lint error...
	exts = objectKeys( headers );
	for ( i = 0; i < exts.length; i++ ) {
		tmp = headers[ exts[ i ] ];
		fnames = objectKeys( tmp );
		for ( j = 0; j < fnames.length; j++ ) {
			list = tmp[ fnames[ j ] ];
			if ( list.length > 1 ) {
				for ( k = 0; k < list.length; k++ ) {
					out.push({
						'name': list[ k ],
						'error': 'duplicate header filename.'
					});
				}
			}
		}
	}
	return out;
}
Lints an array of filenames.

@private
@param {StringArray} arr - array of filenames
@returns {(ObjectArray|EmptyArray)} array of lint errors