CD Player 0.1
Publicado por Lord Arthas Menethil 29/08/2006
[ Hits: 6.039 ]
Simples reprodutor de CD feito em C, com NCurses. Ainda tem pouca coisa, só toca o CD, pausa, essas coisas, mas ainda sem controle de volume e tals...
/* Declaração dos includes */
#include <curses.h>
#include <err.h>
#include <fcntl.h>
#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <linux/cdrom.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
/* Pré-Declaração das funções que serão utilizadas */
void usar(void);
void about(void);
int opt(int ac, char *av[]);
int ligar(void);
/* Variáveis Globais */
const char* const sopt = "ha:p";
const struct option lopt[] =
{
{ "help", 0, NULL, 'h' },
{ "about", 0, NULL, 'a' },
{ "play", 0, NULL, 'p' },
{ NULL, 0, NULL, 0 }
};
struct cdrom_tochdr header;
struct cdrom_ti inicio;
int main(int argc, char *argv[])
{
opt(argc, argv);
return(0);
}
void usar(void)
{
fprintf(stderr, "-h or --help = Mostra isso tudo\n");
fprintf(stderr, "-p or --play = Toca o CD\n");
fprintf(stderr, "-a or --about = Mostra o about desse prog\n");
}
void about(void)
{
fprintf(stderr, "DeadlyCorpse CD Player 0.1, by Morte137\n");
fprintf(stderr, "Codado em C com NCurses\n");
fprintf(stderr, "Agradecimentos: os de sempre\n");
fprintf(stderr, "Ajuda grande: Advanced Programming in Linux, GNU LibC Manual\n");
fprintf(stderr, "Inté\n");
}
int opt(int ac, char *av[])
{
int nopt;
bool device;
nopt = getopt_long(ac, av, sopt, lopt, NULL);
switch(nopt)
{
case 'h':
usar();
break;
case 'a':
about();
break;
case 'p':
ligar();
break;
case '?':
usar();
break;
default:
usar();
break;
}
return(0);
}
int ligar(void)
{
int cdrom = open("/dev/cdrom", O_RDONLY);
initscr();
start_color();
init_pair(1, COLOR_RED, COLOR_BLACK);
bkgd(COLOR_PAIR(1));
move(2, 1);
printw("DeadlyCorpse CD PLayer 0.1");
move(3, 1);
printw("Digite q para sair, p para pausar, r para despausar, s para parar totalmente");
move(5, 1);
while(1)
{
char str[50];
getstr(str);
if(strcmp("q", str) == 0)
{
ioctl(cdrom, CDROMSTOP, 0);
close(cdrom);
endwin();
exit(0);
}
if(strcmp("p", str) == 0)
{
ioctl(cdrom, CDROMPAUSE, 0);
}
if(strcmp("r", str) == 0)
{
ioctl(cdrom, CDROMRESUME, 0);
}
if(strcmp("s", str) == 0)
{
ioctl(cdrom, CDROMSTOP, 0);
}
else
{
ioctl(cdrom, CDROMREADTOCHDR, (void *) &header);
inicio.cdti_trk0 = header.cdth_trk0;
inicio.cdti_ind0 = 0;
inicio.cdti_trk1 = header.cdth_trk1;
inicio.cdti_ind1 = 255;
ioctl(cdrom, CDROMPLAYTRKIND, (void *) &inicio);
}
refresh();
}
return(0);
}
Dangerous Tux Game com gráficos
POGRAMA EM C REGISTRO DE CADASTRO ALTERAR E REMOVER CLIENTES PRODUTOS
Joguinho de labirinto usando as setas do teclado
Nenhum comentário foi encontrado.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica









