Little demo program to test image generation.
This commit is contained in:
parent
35ef22cdd7
commit
de3c4e4962
@ -28,3 +28,4 @@ demo/lsl
|
|||||||
demo/cat
|
demo/cat
|
||||||
demo/tree
|
demo/tree
|
||||||
demo/ecma119tree
|
demo/ecma119tree
|
||||||
|
demo/iso
|
||||||
|
@ -47,7 +47,8 @@ noinst_PROGRAMS = \
|
|||||||
demo/lsl \
|
demo/lsl \
|
||||||
demo/cat \
|
demo/cat \
|
||||||
demo/tree \
|
demo/tree \
|
||||||
demo/ecma119tree
|
demo/ecma119tree \
|
||||||
|
demo/iso
|
||||||
|
|
||||||
demo_lsl_CPPFLAGS = -Isrc
|
demo_lsl_CPPFLAGS = -Isrc
|
||||||
demo_lsl_LDADD = $(src_libisofs_la_OBJECTS) $(THREAD_LIBS)
|
demo_lsl_LDADD = $(src_libisofs_la_OBJECTS) $(THREAD_LIBS)
|
||||||
@ -65,6 +66,10 @@ demo_ecma119tree_CPPFLAGS = -Isrc
|
|||||||
demo_ecma119tree_LDADD = $(src_libisofs_la_OBJECTS) $(THREAD_LIBS)
|
demo_ecma119tree_LDADD = $(src_libisofs_la_OBJECTS) $(THREAD_LIBS)
|
||||||
demo_ecma119tree_SOURCES = demo/ecma119_tree.c
|
demo_ecma119tree_SOURCES = demo/ecma119_tree.c
|
||||||
|
|
||||||
|
demo_iso_CPPFLAGS = -Isrc
|
||||||
|
demo_iso_LDADD = $(src_libisofs_la_OBJECTS) $(THREAD_LIBS)
|
||||||
|
demo_iso_SOURCES = demo/iso.c
|
||||||
|
|
||||||
|
|
||||||
## Build unit test
|
## Build unit test
|
||||||
|
|
||||||
|
78
demo/iso.c
Normal file
78
demo/iso.c
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* Little program to show how to create an iso image from a local
|
||||||
|
* directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libisofs.h"
|
||||||
|
#include "libburn/libburn.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <err.h>
|
||||||
|
|
||||||
|
void usage(char **argv)
|
||||||
|
{
|
||||||
|
printf("%s [OPTIONS] DIRECTORY OUTPUT\n", argv[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
IsoImage *image;
|
||||||
|
struct burn_source *burn_src;
|
||||||
|
unsigned char buf[2048];
|
||||||
|
FILE *fd;
|
||||||
|
Ecma119WriteOpts opts = {
|
||||||
|
1, /* level */
|
||||||
|
0, /* flags */
|
||||||
|
0 /* sort files */
|
||||||
|
};
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
printf ("Please pass directory from which to build ISO\n");
|
||||||
|
usage(argv);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (argc < 3) {
|
||||||
|
printf ("Please supply output file\n");
|
||||||
|
usage(argv);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
fd = fopen(argv[optind+1], "w");
|
||||||
|
if (!fd) {
|
||||||
|
err(1, "error opening output file");
|
||||||
|
}
|
||||||
|
|
||||||
|
result = iso_image_new("volume_id", &image);
|
||||||
|
if (result < 0) {
|
||||||
|
printf ("Error creating image\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
iso_image_set_msgs_severities(image, "NEVER", "ALL", "");
|
||||||
|
|
||||||
|
result = iso_tree_add_dir_rec(image, iso_image_get_root(image), argv[1]);
|
||||||
|
if (result < 0) {
|
||||||
|
printf ("Error adding directory %d\n", result);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = iso_image_create(image, &opts, &burn_src);
|
||||||
|
if (result < 0) {
|
||||||
|
printf ("Cant create image, error %d\n", result);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (burn_src->read(burn_src, buf, 2048) == 2048) {
|
||||||
|
fwrite(buf, 1, 2048, fd);
|
||||||
|
}
|
||||||
|
fclose(fd);
|
||||||
|
burn_src->free_data(burn_src);
|
||||||
|
|
||||||
|
iso_image_unref(image);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user