int main(int argc, char** argv) { char *arquivo, *aplicativo = NULL; mp3_ID3v1 id; /* Validação da entrada. */ if(argc < 2) { printf("É preciso passar pelo menos um arquivo MP3 como argumento.\n"); return EXIT_FAILURE; } else if(argc > 2) aplicativo = argv[2]; /* Verificação da entrada. */ arquivo = argv[1]; if(!existe_e_pode_abrir(arquivo)) { printf("Arquivo \"%s\" não encontrado ou não pode ser lido.\n", arquivo); return EXIT_FAILURE; } /* Leitura do cabeçalho. */ id = le_ID3v1(arquivo); if(!valido(id)) { printf("Não foi possível ler cabeçalho arquivo \"%s\".\n", arquivo); return EXIT_FAILURE; } mostra_ID3v1(id); /* "Bônus" */ if(aplicativo && quer_abrir_com(aplicativo)) { if(abre(arquivo, aplicativo)) { printf("Erro ao tentar abrir o arquivo \"%s\" com o aplicativo \"%s\".\n", arquivo, argv[2]); return EXIT_FAILURE; } } return EXIT_SUCCESS; }
void PortaSerial::buscaDispositivo(const char *comando, char respEsperada, bool loop) { char msg[255]; char resp[255]; bool conexao = false; char porta[100]; int ret; int pos = 0; string dir = string("/dev"); vector<string> files = vector<string>(); while(!conexao) { files.clear(); if(conectado) fecha(); while(files.size() <= 0) { gettty(dir,files); } if(pos == files.size()) { pos = 0; } sprintf(porta, "/dev/%s", files[pos++].c_str()); setPort(porta); abre(baud, canonical, databits, parity, startbit, stopbit); sprintf(msg, "%s\0", comando); ret = envia(msg, resp); if(resp[0] == respEsperada || !loop) conexao = true; } if(resp[0] != respEsperada) { conectado = false; } }