コード例 #1
0
ファイル: converte.c プロジェクト: ricardoteles/ep3-SO
void imprimeDiretorio(FILE* bin, int inicioBytes) {
	Arquivo saida = leStruct(bin, inicioBytes+4);
	int n = leInt(bin, inicioBytes);

	printf("#Entradas: %d|\n", n);
	printf("Nome: %s|\n", saida.nome);
	printf("Inicio byte: %d|\n", saida.byteInicio);
	printf("Tamanho: %d|x|\n\n", saida.tamanho);
}
コード例 #2
0
//Objetivo: validar numero inteiro
//Parametros: referencia ao titulo, min e max
//Retorno: numero validado
int leValidaInt(char titulo[], int min, int max){
	int numero;
	do{
	  numero = leInt(titulo);
	  if(numero < min || numero > max){
			MSG_ERRO
	  }
	}while(numero < min || numero > max);
	
	return numero;
}
コード例 #3
0
ファイル: dados.c プロジェクト: ricardoteles/ep3-SO
// retorna o endereco do bloco da entrada onde deve inserir
int insereEntradaPorBloco(int endInicioBloco) {
	int pos;
	int NEntradas = leInt(arquivo, endInicioBloco);

	if (NEntradas > 0) {
		for (pos = endInicioBloco+4; pos < endInicioBloco + TAM_BLOCO; ) {
			if (leChar(arquivo, pos) == '\0') {
				// só decrementa entradas livres do bloco do pai
				escreveInt(arquivo, NEntradas-1, endInicioBloco, 1); 
				return pos;	// ja retorna
			}
			else pos += sizeof(Arquivo);
		}
	}
	return 0;
}
コード例 #4
0
ファイル: dados.c プロジェクト: ricardoteles/ep3-SO
// retorna endereco do bloco de inicio da entrada ou -1 => pra montar a arvore :)
int buscaEnderecoDaEntradaPorBloco(char* entrada, int enderecoBlocoPai, Arquivo* reg) {
	int numEntradasLivres = leInt(arquivo, enderecoBlocoPai);
	int pos;
	int numEntradas = totalArquivo - numEntradasLivres; 

	if (numEntradas > 0) {
		// começa a busca da entrada depois do inteiro
		for (pos = enderecoBlocoPai+4; pos < enderecoBlocoPai + TAM_BLOCO; ) {
			if (leChar(arquivo, pos) == '\0') 
				pos++;
			
			else { 
				Arquivo arq = leStruct(arquivo, pos);

				if (strcmp(entrada, &arq.nome[0]) == 0) {
					if (reg != NULL) *reg = arq;
					return arq.byteInicio;
				}
				else pos++;
			}
		} 
	}
	return -1;
}