Initial import
This commit is contained in:
78
test/poll.c
Normal file
78
test/poll.c
Normal file
@ -0,0 +1,78 @@
|
||||
/* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
|
||||
|
||||
#include "libburn/libburn.h"
|
||||
#include "libburn/toc.h"
|
||||
#include "libburn/mmc.h"
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include <assert.h>
|
||||
|
||||
static struct burn_drive_info *drives;
|
||||
static unsigned int n_drives;
|
||||
int NEXT;
|
||||
|
||||
static void catch_int ()
|
||||
{
|
||||
NEXT = 1;
|
||||
}
|
||||
|
||||
static void poll_drive(int d)
|
||||
{
|
||||
enum burn_disc_status s;
|
||||
|
||||
fprintf(stderr, "polling disc in %s - %s:\n",
|
||||
drives[d].vendor, drives[d].product);
|
||||
|
||||
if (!burn_drive_grab(drives[d].drive, 1)) {
|
||||
fprintf(stderr, "Unable to open the drive!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
while (burn_drive_get_status(drives[d].drive, NULL))
|
||||
usleep(1000);
|
||||
|
||||
while ((s = burn_disc_get_status(drives[d].drive))
|
||||
== BURN_DISC_UNREADY)
|
||||
usleep(1000);
|
||||
|
||||
while (NEXT == 0) {
|
||||
sleep(2);
|
||||
mmc_get_event(drives[d].drive);
|
||||
}
|
||||
burn_drive_release(drives[d].drive, 0);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int i;
|
||||
struct sigaction newact;
|
||||
struct sigaction oldact;
|
||||
fprintf(stderr, "Initializing library...");
|
||||
if (burn_initialize())
|
||||
fprintf(stderr, "Success\n");
|
||||
else {
|
||||
printf("Failed\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fprintf(stderr, "Scanning for devices...");
|
||||
while (!burn_drive_scan(&drives, &n_drives)) ;
|
||||
fprintf(stderr, "Done\n");
|
||||
if (!drives) {
|
||||
printf("No burner found\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
newact.sa_handler = catch_int;
|
||||
sigaction(SIGINT, &newact, &oldact);
|
||||
for (i = 0; i < n_drives; i++) {
|
||||
NEXT=0;
|
||||
poll_drive(i);
|
||||
}
|
||||
sigaction(SIGINT, &oldact, NULL);
|
||||
burn_drive_info_free(drives);
|
||||
burn_finish();
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user