On Sun, Jun 28, 2020 at 02:02:51PM +0100, Richard W.M. Jones wrote:
+static void *
+tar_open (int readonly)
+{
+ struct handle *h;
+
+ assert (offset > 0); /* Cannot be zero because of tar header. */
+
+ h = calloc (1, sizeof *h);
+ if (h == NULL) {
+ nbdkit_error ("calloc: %m");
+ return NULL;
+ }
+ h->fd = open (tarfile, (readonly ? O_RDONLY : O_RDWR) | O_CLOEXEC);
+ if (h->fd == -1) {
+ nbdkit_error ("%s: %m", tarfile);
+ free (h);
+ return NULL;
+ }
+
+ return h;
+}
Oops, I forgot to close the file descriptor, so this needs an
accompanying close callback:
static void
tar_close (void *handle)
{
struct handle *h = handle;
close (h->fd);
}
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW