code: private List<String> processLine(String line,
  			BufferedReader buf,
  			int fieldLength)
  					throws IOException{
  
  		//System.out.println("XX processLine " + fieldLength + " " + line);
  		// go through the line and process each character
  		List<String> lineData = new ArrayList<String>();
  
  		boolean inString = false;
  
  		StringBuilder bigWord = null;
  
  		while ( true ){
  
  			if ( line.startsWith(STRING_LIMIT)){
  				if (! inString){
  
  					inString = true;
  					if ( line.length() > 1)
  						bigWord = new StringBuilder(line.substring(1));
  					else
  						bigWord = new StringBuilder("");
  
  
  				} else {
  					// the end of a word
  					lineData.add(bigWord.toString());
  					bigWord = null;
  					inString = false;
  
  				}
  			} else {
  				if ( inString )
  					bigWord.append(line);
  				else {
  
  					List<String> dat = processSingleLine(line);
  
  					for (String d : dat){
  						lineData.add(d);
  					}
  				}
  			}
  
  			//System.out.println("in process line : " + lineData.size() + " " + fieldLength);
  
  			if ( lineData.size() > fieldLength){
  
  				logger.warn("wrong data length ("+lineData.size()+
  						") should be ("+fieldLength+") at line " + line + " got lineData: " + lineData);
  				return lineData;
  			}
  
  			if ( lineData.size() == fieldLength)
  				return lineData;
  
  
  			line = buf.readLine();
  			if ( line == null)
  				break;
  		}
  		return lineData;
  
  	}
docs: Get the content of a cif entry
  
  @param line
  @param buf
  @return