diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/misc/Makefile.in | 22 | ||||
-rw-r--r-- | tools/misc/h5createU8.c | 141 |
2 files changed, 148 insertions, 15 deletions
diff --git a/tools/misc/Makefile.in b/tools/misc/Makefile.in index 6b228b9..5ea8aaa 100644 --- a/tools/misc/Makefile.in +++ b/tools/misc/Makefile.in @@ -1,17 +1,9 @@ ## HDF5 Library Makefile(.in) ## -## Copyright by the Board of Trustees of the University of Illinois. -## All rights reserved. -## -## This file is part of HDF5. The full HDF5 copyright notice, including -## terms governing use, modification, and redistribution, is contained in -## the files COPYING and Copyright.html. COPYING can be found at the root -## of the source code distribution tree; Copyright.html can be found at the -## root level of an installed copy of the electronic HDF5 document set and -## is linked from the top-level documents page. It can also be found at -## http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have -## access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. +## Copyright (C) 2001 National Center for Supercomputing Applications. +## All rights reserved. ## +## top_srcdir=@top_srcdir@ top_builddir=../.. srcdir=@srcdir@ @@ -34,7 +26,7 @@ TEST_SCRIPTS= LIBTOOLS=../lib/libh5tools.la LIBHDF5=$(top_builddir)/src/libhdf5.la -PUB_PROGS=h5cc h5debug h5import h5redeploy h5repart @PDB2HDF@ +PUB_PROGS=h5cc h5debug h5createU8 h5redeploy h5repart @PDB2HDF@ PROGS=$(PUB_PROGS) $(TEST_PROGS) ## Source and object files for the library; do not install @@ -45,7 +37,7 @@ PUB_LIB= ## Source and object files for programs... ## -PROG_SRC=h5debug.c h5import.c h5repart.c pdb2hdf.c +PROG_SRC=h5debug.c h5createU8.c h5repart.c pdb2hdf.c PROG_OBJ=$(PROG_SRC:.c=.lo) PRIVATE_HDR= @@ -70,8 +62,8 @@ h5cc: h5cc.in h5debug: h5debug.lo @$(LT_LINK_EXE) $(CFLAGS) -o $@ h5debug.lo $(LIBTOOLS) $(LIBHDF5) $(LDFLAGS) $(LIBS) -h5import: h5import.lo - @$(LT_LINK_EXE) $(CFLAGS) -o $@ h5import.lo $(LIBTOOLS) $(LIBHDF5) $(LDFLAGS) $(LIBS) +h5createU8: h5createU8.lo + @$(LT_LINK_EXE) $(CFLAGS) -o $@ h5createU8.lo $(LIBTOOLS) $(LIBHDF5) $(LDFLAGS) $(LIBS) h5redeploy: h5redeploy.in $(CP) $(srcdir)/$@.in $@ diff --git a/tools/misc/h5createU8.c b/tools/misc/h5createU8.c new file mode 100644 index 0000000..b669259 --- /dev/null +++ b/tools/misc/h5createU8.c @@ -0,0 +1,141 @@ +/* + * Copyright (C) 1998 NCSA + * All rights reserved. + * + * Programmer: Robb Matzke <matzke@llnl.gov> + * Thursday, June 11, 1998 + * + * Purpose: Create an hdf5 file with a 1d dataset of uint8. + */ + +/* See H5private.h for how to include system headers */ +#include <hdf5.h> +#ifdef H5_STDC_HEADERS +# include <fcntl.h> +# include <string.h> +# include <stdlib.h> +# include <stdio.h> +#endif + +#ifdef H5_HAVE_UNISTD_H +# include <sys/types.h> +# include <unistd.h> +#endif + +#ifdef H5_HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif + +#ifdef WIN32 +# include <io.h> +#endif + + +/*------------------------------------------------------------------------- + * Function: usage + * + * Purpose: Print a usage message and exit with non-zero status + * + * Return: never returns + * + * Programmer: Robb Matzke + * Thursday, June 11, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void +usage (const char *argv0) +{ + fprintf (stderr, "Usage: %s -f HDF5-FILE FILES...\n", argv0); + exit (1); +} + + +/*------------------------------------------------------------------------- + * Function: main + * + * Purpose: + * + * Return: Success: 0 + * + * Failure: 1 + * + * Programmer: Robb Matzke + * Thursday, June 11, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +int +main (int argc, char *argv[]) +{ + hid_t file, space=-1, dset=-1; + const char *output_name, *dset_name; + int argno, fd=-1; + hsize_t size[1]; + struct stat sb; + + /* Parse arguments */ + if (argc<4) usage (argv[0]); + if (strcmp (argv[1], "-f")) usage (argv[0]); + output_name = argv[2]; + + /* create the file */ + H5E_BEGIN_TRY { + if ((file = H5Fcreate (output_name, H5F_ACC_EXCL, + H5P_DEFAULT, H5P_DEFAULT))<0 && + (file = H5Fopen (output_name, H5F_ACC_RDWR, H5P_DEFAULT)<0)) { + fprintf (stderr, "%s: unable to create or open hdf5 file\n", + output_name); + exit (1); + } + } H5E_END_TRY; + + /* process files from command-line */ + for (argno=3; argno<argc; argno++) { + + /* Open the file */ + if ((dset_name=strrchr (argv[argno], '/'))) dset_name++; + else dset_name = argv[argno]; + fprintf (stderr, "%s\n", dset_name); + if ((fd=open (argv[argno], O_RDONLY))<0) { + perror (argv[argno]); + goto next; + } + if (fstat (fd, &sb)<0) { + perror (argv[argno]); + goto next; + } + + /* Data space */ + size[0] = sb.st_size; + if ((space = H5Screate_simple (1, size, size))<0) goto next; + + /* Dataset */ + if ((dset=H5Dcreate (file, dset_name, H5T_NATIVE_SCHAR, + space, H5P_DEFAULT))<0) goto next; + + + + next: + if (fd>=0) close (fd); + fd = -1; + H5E_BEGIN_TRY { + if (space>=0) { + H5Sclose (space); + space = -1; + } + if (dset>=0) { + H5Dclose (dset); + dset = -1; + } + } H5E_END_TRY; + } + + /* Close the file */ + H5Fclose (file); + return 0; +} |