Loading...
Searching...
No Matches
g2c_index.c
Go to the documentation of this file.
#include <ctype.h>
#include <grib2.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(int argc, char **argv)
{
char *filein = NULL;
char *fileout = NULL;
int verbose = 0;
int large_file_index = 0;
int index;
int write_index_flag = G2C_CLOBBER;
int c;
int p = 0;
int g2cid;
int ret;
opterr = 0;
/* Parse command line arguments. */
while ((c = getopt(argc, argv, "vlo:")) != -1)
{
switch (c)
{
case 'v':
verbose = 1;
break;
case 'l':
large_file_index = 1;
break;
case 'o':
if (!(fileout = malloc(sizeof(char) * strlen(optarg) + 1)))
return G2C_ENOMEM;
strcpy(fileout, optarg);
break;
case '?':
if (isprint(optopt))
fprintf(stderr, "Unknown option `-%c'.\n", optopt);
else
fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt);
return 1;
default:
return G2C_ERROR;
}
}
/* Get names of input file. */
for (index = optind; index < argc; index++)
{
if (!(filein = malloc(sizeof(char) * strlen(argv[index]) + 1)))
return G2C_ENOMEM;
strcpy(filein, argv[index]);
if (++p == 1)
break;
}
/* Yammer on and on. */
if (verbose)
{
printf("g2c_index %s reading index file %s summarizing into %s.\n",
G2C_VERSION, filein, fileout);
g2c_set_log_level(1);
}
/* Open the GRIB2 file. */
if ((ret = g2c_open(filein, G2C_NOWRITE, &g2cid)))
return ret;
/* Write the index file. */
if (large_file_index)
write_index_flag |= G2C_LARGE_FILE_INDEX;
if ((ret = g2c_write_index(g2cid, write_index_flag, fileout)))
return ret;
/* Close the file. */
if ((ret = g2c_close(g2cid)))
return ret;
/* Free memory. */
if (filein)
free(filein);
if (fileout)
free(fileout);
return 0;
}
main
int main(int argc, char **argv)
Write a GRIB2 index file.
Definition g2c_index.c:26
g2c_open
int g2c_open(const char *path, int mode, int *g2cid)
Open an existing GRIB2 file.
Definition g2cfile.c:1201
g2c_close
int g2c_close(int g2cid)
Close a GRIB2 file, freeing resources.
Definition g2cfile.c:1367
g2c_write_index
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.
Definition g2cindex.c:431
grib2.h
Header file for NCEPLIBS-g2c library.
G2C_LARGE_FILE_INDEX
#define G2C_LARGE_FILE_INDEX
Create a large file index.
Definition grib2.h:279
G2C_ENOMEM
#define G2C_ENOMEM
Out of memory.
Definition grib2.h:493
G2C_ERROR
#define G2C_ERROR
General error code, returned for some test errors.
Definition grib2.h:485
G2C_VERSION
#define G2C_VERSION
Current version of NCEPLIBS-g2c library.
Definition grib2.h:25
G2C_CLOBBER
#define G2C_CLOBBER
Destroy existing file.
Definition grib2.h:277
G2C_NOWRITE
#define G2C_NOWRITE
Set read-only access for g2c_open().
Definition grib2.h:275
g2c_set_log_level
int g2c_set_log_level(int new_level)
Use this to set the global log level.
Definition util.c:129