/****h* root/fortran/test/tc.c * * NAME * tc.c * * FUNCTION * This file contains C routines needed for the test programs. * * COPYRIGHT * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * 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 COPYING file, which can be found at the root of the source code * * distribution tree, or in https://www.hdfgroup.org/licenses. * * If you do not have access to either file, you may request a copy from * * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ****** */ #include "t.h" #include "H5Eprivate.h" /*---------------------------------------------------------------------------- * Name: h5_fixname_c * Purpose: Call h5_fixname to modify file name * Inputs: base_name - name of the file * base_namelen - name length * fapl - file access property list * full_name - buffer to return full name * full_namelen - name length * Returns: 0 on success, -1 on failure *---------------------------------------------------------------------------*/ int_f nh5_fixname_c(_fcd base_name, size_t_f *base_namelen, hid_t_f *fapl, _fcd full_name, size_t_f *full_namelen) { char *c_base_name = NULL; char *c_full_name = NULL; int_f ret_value = 0; /* * Convert FORTRAN name to C name */ if (NULL == (c_base_name = (char *)HD5f2cstring(base_name, (size_t)*base_namelen))) HGOTO_DONE(FAIL); if (NULL == (c_full_name = (char *)malloc((size_t)*full_namelen + 1))) HGOTO_DONE(FAIL); /* * Call h5_fixname function. */ if (NULL == h5_fixname(c_base_name, (hid_t)*fapl, c_full_name, (size_t)*full_namelen + 1)) HGOTO_DONE(FAIL); HD5packFstring(c_full_name, _fcdtocp(full_name), (size_t)*full_namelen); done: if (c_base_name) free(c_base_name); if (c_full_name) free(c_full_name); return ret_value; } /*---------------------------------------------------------------------------- * Name: h5_cleanup_c * Purpose: Call h5_cleanup to clean temporary files. * Inputs: base_name - name of the file * base_namelen - name length * fapl - file access property list * Returns: 0 on success, -1 on failure *---------------------------------------------------------------------------*/ int_f nh5_cleanup_c(_fcd base_name, size_t_f *base_namelen, hid_t_f *fapl) { char filename[1024]; int ret_value = -1; char *c_base_name[1]; hid_t c_fapl; /* * Define ifile access property list */ c_fapl = (hid_t)*fapl; /*c_fapl = H5Pcreate(H5P_FILE_ACCESS);*/ /* * Convert FORTRAN name to C name */ c_base_name[0] = (char *)HD5f2cstring(base_name, (size_t)*base_namelen); if (c_base_name[0] == NULL) goto DONE; /* * Call h5_cleanup function. */ /*if (h5_cleanup(c_base_name, c_fapl) != 0) { ret_value = 0; goto DONE; } */ h5_fixname(c_base_name[0], c_fapl, filename, sizeof(filename)); HDremove(filename); ret_value = 0; DONE: if (NULL != c_base_name[0]) free(c_base_name[0]); return ret_value; } /*---------------------------------------------------------------------------- * Name: h5_exit_c * Purpose: Call 'exit()' to terminate application. Be careful not to * overflow the exit value range since UNIX supports a very * small range such as 1 byte. Therefore, exit(256) may end * up as exit(0). * Inputs: status - status for exit() to return * Returns: none *---------------------------------------------------------------------------*/ void nh5_exit_c(int_f *status) { exit((int)*status); } /* h5_exit_c */ /*---------------------------------------------------------------------------- * Name: h5_env_nocleanup_c * Purpose: Determines the state of the environment variable HDF5_NOCLEANUP * Input: none * Output: status: 1 - HDF5_NOCLEANUP is set * 0 - HDF5_NOCLEANUP is not set * Returns: none *---------------------------------------------------------------------------*/ void nh5_env_nocleanup_c(int_f *status) { *status = (int_f)0; if (getenv(HDF5_NOCLEANUP)) *status = (int_f)1; } /* h5_env_nocleanup_c */