g2cindex.c(3) | Library Functions Manual | g2cindex.c(3) |
g2cindex.c - Write summary output to an index file, as is done by utility grb2index.
#include 'grib2_int.h'
#include <libgen.h>
#include <stdarg.h>
#include <time.h>
#define G2C_INDEX_BASENAME_LEN 40
Length of the basename in header record 2. #define
G2C_INDEX_BITMAP_BYTES 6
Length of bitmap section included in the index record. #define
G2C_INDEX_DATE_STR_LEN 10
Length of date string in index record. #define G2C_INDEX_FIXED_LEN 44
Length of beginning of index record. #define G2C_INDEX_FIXED_LEN_2 48
Length of beginning of index record for large files. #define
G2C_INDEX_HEADER_LEN 81
Length of the two header lines at the top of the index file. #define
G2C_INDEX_STR1_LEN 7
Length of str1 string in index record. #define G2C_INDEX_TIME_STR_LEN 8
Length of time string in index record.
EXTERN_MUTEX (m)
Use externally-defined mutex for thread-safety. int
g2c_get_prod_sections (G2C_MESSAGE_INFO_T *msg, int fieldnum,
G2C_SECTION_INFO_T **sec3, G2C_SECTION_INFO_T **sec4,
G2C_SECTION_INFO_T **sec5, G2C_SECTION_INFO_T **sec6,
G2C_SECTION_INFO_T **sec7)
Given a pointer to a message, and a field number, return pointers to all
relevent section structs for that product. int g2c_open_index (const
char *data_file, const char *index_file, int mode, int *g2cid)
Open a GRIB2 file with the help of an index file. int g2c_open_index1
(const char *index_file)
Open a GRIB1 index file and read the contents. int
g2c_start_index1_record (FILE *f, int rw_flag, unsigned int *b2_msg,
unsigned int *b2_pds, unsigned int *b2_gds, unsigned int *b2_bms, unsigned
int *b2_bds, unsigned int *msglen, unsigned char *version, unsigned char
*pds_val, unsigned char *gds_val, unsigned char *bms_val, unsigned char
*bds_val, unsigned char *pds_val2, unsigned char *pds_val3, unsigned char
*gds_val2)
Read or write the start of a version 1 index record. int
g2c_start_index_record (FILE *f, int rw_flag, int *reclen, int *msg,
int *local, int *gds, int *pds, int *drs, int *bms, int *data, size_t
*msglen, unsigned char *version, unsigned char *discipline, short *fieldnum)
Read or write the start of a version 2 index record. int
g2c_start_index_record_lf (FILE *f, int rw_flag, int *reclen, size_t
*msg, size_t *local, size_t *gds, size_t *pds, size_t *drs, size_t *bms,
size_t *data, size_t *msglen, unsigned char *version, unsigned char
*discipline, short *fieldnum)
Read or write the start of a version 2 index record. int
g2c_write_index (int g2cid, int mode, const char *index_file)
Create an index file from a GRIB2 file, just like those created by the
grb2index utility. static int read_hdr_rec1 (FILE *f, int *ip, int
*jp, int *kp, char *date_str, char *time_str)
Read the header record apparently named after Steve Lord. static int
read_hdr_rec2 (FILE *f, int *skipp, int *total_lenp, int *num_recp,
char *basename, int *index_version)
Read the second header record of an index file.
G2C_FILE_INFO_T g2c_file [G2C_MAX_FILES+1]
Global file information.
Write summary output to an index file, as is done by utility grb2index.
Author
Date
Definition in file g2cindex.c.
Length of the basename in header record 2.
Definition at line 20 of file g2cindex.c.
Length of bitmap section included in the index record.
Definition at line 23 of file g2cindex.c.
Length of date string in index record.
Definition at line 32 of file g2cindex.c.
Length of beginning of index record.
Definition at line 26 of file g2cindex.c.
Length of beginning of index record for large files.
Definition at line 29 of file g2cindex.c.
Length of the two header lines at the top of the index file.
Definition at line 17 of file g2cindex.c.
Length of str1 string in index record.
Definition at line 38 of file g2cindex.c.
Length of time string in index record.
Definition at line 35 of file g2cindex.c.
Use externally-defined mutex for thread-safety.
Given a pointer to a message, and a field number, return pointers to all relevent section structs for that product. Each product is defined in a section 4, and has an associated section 3, 5, 6, and 7.
Parameters
Note
Returns
Author
Date
Definition at line 317 of file g2cindex.c.
References G2C_EINVAL, G2C_ENOSECTION, G2C_NOERROR, g2c_section_info::next, g2c_section_info::prev, g2c_message_info::sec, g2c_section_info::sec_info, and g2c_section_info::sec_num.
Referenced by g2c_write_index().
Open a GRIB2 file with the help of an index file. The index file, generated by the grb2index utility, of the g2c_write_index() function, contains the byte offsets for the sections of each message in the GRIB2 file. When a GRIB2 file is opened with an index file, the library does not have to scan the file to locate all metadata.
Parameters
Returns
Author
Date
Definition at line 914 of file g2cindex.c.
References add_msg(), add_section(), g2c_message_info::bytes_to_bms, g2c_message_info::bytes_to_data, g2c_message_info::bytes_to_local, g2c_message_info::bytes_to_msg, g2c_message_info::discipline, g2c_add_file(), G2C_EBADSECTION, G2C_EFILE, G2C_EINVAL, G2C_ENAMETOOLONG, g2c_file, g2c_file_io_ubyte(), g2c_file_io_uint(), G2C_FILE_READ, G2C_INDEX_BASENAME_LEN, G2C_INDEX_DATE_STR_LEN, G2C_INDEX_HEADER_LEN, G2C_INDEX_STR1_LEN, G2C_INDEX_TIME_STR_LEN, g2c_log_section1(), G2C_MAX_NAME, G2C_NOERROR, g2c_rw_section1_metadata(), g2c_start_index_record(), g2c_start_index_record_lf(), LOG, g2c_message_info::master_version, MUTEX_LOCK, and MUTEX_UNLOCK.
Referenced by main().
Open a GRIB1 index file and read the contents. This function opens the GRIB2 index file and reads its metadata, and opens the accompanying GRIB2 file.
GRIB2 messages in the file are assigned a message ID, starting with 0 for the first message in the file.
Each product within a message is assigned a product ID, starting with 0 for the first product in the message.
Files opened with this function should be closed with a call g2c_close() to release resources.
Parameters
Returns
Author
Date
Definition at line 812 of file g2cindex.c.
References G2C_EFILE, G2C_EINVAL, G2C_FILE_READ, G2C_INDEX1_BDS_VAL_LEN, G2C_INDEX1_BMS_VAL_LEN, G2C_INDEX1_GDS_VAL_LEN, G2C_INDEX1_PDS_VAL_LEN, G2C_INDEX_BASENAME_LEN, G2C_INDEX_DATE_STR_LEN, G2C_INDEX_HEADER_LEN, G2C_INDEX_TIME_STR_LEN, G2C_NOERROR, g2c_start_index1_record(), LOG, MUTEX_LOCK, MUTEX_UNLOCK, read_hdr_rec1(), and read_hdr_rec2().
Read or write the start of a version 1 index record. For more detail on version 1 of the index format, see the grbindex documentation in the NCEPLIBS-grib_util.
Parameters
Returns
Author
Definition at line 238 of file g2cindex.c.
References G2C_EFILE, G2C_EINVAL, g2c_file_io_ubyte(), g2c_file_io_uint(), G2C_INDEX1_BDS_VAL_LEN, G2C_INDEX1_BMS_VAL_LEN, G2C_INDEX1_GDS_VAL_LEN, G2C_INDEX1_PDS_VAL_LEN, and G2C_NOERROR.
Referenced by g2c_open_index1().
Read or write the start of a version 2 index record.
Parameters
Returns
Author
Definition at line 70 of file g2cindex.c.
References G2C_EINVAL, g2c_file_io_short(), g2c_file_io_ubyte(), g2c_file_io_uint(), g2c_file_io_ulonglong(), G2C_NOERROR, and LOG.
Referenced by g2c_open_index(), and g2c_write_index().
Read or write the start of a version 2 index record.
Parameters
Returns
Author
Definition at line 151 of file g2cindex.c.
References G2C_EINVAL, g2c_file_io_short(), g2c_file_io_ubyte(), g2c_file_io_uint(), g2c_file_io_ulonglong(), G2C_NOERROR, and LOG.
Referenced by g2c_open_index(), and g2c_write_index().
Create an index file from a GRIB2 file, just like those created by the grb2index utility. The index file starts with two header records:
Each following index record corresponds to a grib message and has the internal format:
Parameters
Returns
Author
Date
Definition at line 431 of file g2cindex.c.
References g2c_message_info::bytes_in_msg, g2c_message_info::bytes_to_local, g2c_message_info::bytes_to_msg, g2c_section_info::bytes_to_sec, g2c_message_info::discipline, g2c_file_info::f, g2c_message_info::file, G2C_EBADID, G2C_EFILE, G2C_EINVAL, g2c_file, g2c_file_io_ubyte(), g2c_file_io_uint(), G2C_FILE_WRITE, g2c_get_prod_sections(), G2C_INDEX_BASENAME_LEN, G2C_INDEX_BITMAP_BYTES, G2C_INDEX_FIXED_LEN, G2C_INDEX_FIXED_LEN_2, G2C_INDEX_HEADER_LEN, G2C_LARGE_FILE_INDEX, G2C_MAX_FILES, G2C_NOCLOBBER, G2C_NOERROR, g2c_rw_section1_metadata(), g2c_rw_section3_metadata(), g2c_rw_section4_metadata(), g2c_rw_section5_metadata(), g2c_start_index_record(), g2c_start_index_record_lf(), LOG, g2c_message_info::master_version, MUTEX_LOCK, MUTEX_UNLOCK, g2c_message_info::next, g2c_message_info::num_fields, ONE_BYTE, g2c_message_info::sec1_len, and g2c_section_info::sec_len.
Referenced by main().
Read the header record apparently named after Steve Lord. This function reads the first of two 81-byte header records of an index file.
Parameters
Returns
Author
Date
Definition at line 684 of file g2cindex.c.
References G2C_EFILE, G2C_INDEX_DATE_STR_LEN, G2C_INDEX_HEADER_LEN, G2C_INDEX_STR1_LEN, G2C_INDEX_TIME_STR_LEN, G2C_NOERROR, and LOG.
Referenced by g2c_open_index1().
Read the second header record of an index file. This function reads the second of two 81-byte header records of an index file.
Parameters
Returns
Author
Date
Definition at line 753 of file g2cindex.c.
References G2C_EFILE, G2C_INDEX_BASENAME_LEN, G2C_INDEX_HEADER_LEN, and G2C_NOERROR.
Referenced by g2c_open_index1().
Global file information.
Definition at line 10 of file g2cfile.c.
Referenced by g2c_open_index(), and g2c_write_index().
Generated automatically by Doxygen for NCEPLIBS-g2c from the source code.
Version 2.1.0 | NCEPLIBS-g2c |