tikhomirov@74: /* tikhomirov@493: * Copyright (c) 2011-2012 TMate Software Ltd tikhomirov@74: * tikhomirov@74: * This program is free software; you can redistribute it and/or modify tikhomirov@74: * it under the terms of the GNU General Public License as published by tikhomirov@74: * the Free Software Foundation; version 2 of the License. tikhomirov@74: * tikhomirov@74: * This program is distributed in the hope that it will be useful, tikhomirov@74: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@74: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@74: * GNU General Public License for more details. tikhomirov@74: * tikhomirov@74: * For information on how to redistribute this software under tikhomirov@74: * the terms of a license other than GNU General Public License tikhomirov@102: * contact TMate Software at support@hg4j.com tikhomirov@74: */ tikhomirov@74: package org.tmatesoft.hg.internal; tikhomirov@74: tikhomirov@74: import java.io.BufferedReader; tikhomirov@74: import java.io.File; tikhomirov@74: import java.io.FileInputStream; tikhomirov@74: import java.io.IOException; tikhomirov@74: import java.io.InputStreamReader; tikhomirov@74: tikhomirov@74: /** tikhomirov@74: * tikhomirov@74: * @author Artem Tikhomirov tikhomirov@74: * @author TMate Software Ltd. tikhomirov@74: */ tikhomirov@74: public class RequiresFile { tikhomirov@493: public static final int STORE = 1 << 0; tikhomirov@493: public static final int FNCACHE = 1 << 1; tikhomirov@493: public static final int DOTENCODE = 1 << 2; tikhomirov@493: public static final int REVLOGV0 = 1 << 31; tikhomirov@493: public static final int REVLOGV1 = 1 << 30; tikhomirov@74: tikhomirov@74: public RequiresFile() { tikhomirov@74: } tikhomirov@74: tikhomirov@493: /** tikhomirov@493: * Settings from requires file as bits tikhomirov@493: */ tikhomirov@493: public int parse(File requiresFile) throws IOException { tikhomirov@74: if (!requiresFile.exists()) { tikhomirov@493: // TODO check what's going on in Mercurial if no requires exist tikhomirov@493: return 0; tikhomirov@74: } tikhomirov@295: BufferedReader br = null; tikhomirov@74: try { tikhomirov@295: br = new BufferedReader(new InputStreamReader(new FileInputStream(requiresFile))); tikhomirov@74: String line; tikhomirov@493: int flags = 0; tikhomirov@74: while ((line = br.readLine()) != null) { tikhomirov@493: if ("revlogv1".equals(line)) { tikhomirov@493: flags |= REVLOGV1; tikhomirov@493: } else if ("store".equals(line)) { tikhomirov@493: flags |= STORE; tikhomirov@493: } else if ("fncache".equals(line)) { tikhomirov@493: flags |= FNCACHE; tikhomirov@493: } else if ("dotencode".equals(line)) { tikhomirov@493: flags |= DOTENCODE; tikhomirov@493: } tikhomirov@74: } tikhomirov@493: if ((flags & REVLOGV1) == 0) { tikhomirov@493: flags |= REVLOGV0; // TODO check if there's no special flag for V0 indeed tikhomirov@493: } tikhomirov@493: return flags; tikhomirov@295: } finally { tikhomirov@295: if (br != null) { tikhomirov@295: br.close(); tikhomirov@295: } tikhomirov@74: } tikhomirov@74: } tikhomirov@74: }