view progs/Get_image_offset/get_image_offset.c @ 589:96973371e945

Initial revision
author neelin <neelin>
date Fri, 09 Sep 1994 15:49:46 +0000
parents
children a155a3d0c62a
line wrap: on
line source

#include <minc.h>
#include <local_nc.h>

#define public

public long get_image_offset(int cdfid);

int main(int argc, char *argv[])
{
   int cdfid;
   long offset;

   /* Check arguments */
   if (argc != 2) {
      (void) fprintf(stderr, "Usage: %s <filename.mnc>\n", argv[0]);
      return -1;
   }

   /* Open minc file */
   cdfid = ncopen(argv[1], NC_NOWRITE);

   /* Get the offset */
   offset = get_image_offset(cdfid);
   if (offset == -1) {
      (void) fprintf(stderr, "Error getting offset to image in file %s\n",
                     argv[1]);
      return -1;
   }

   (void) printf("%ld\n", offset);

   return 0;
}

/* ----------------------------- MNI Header -----------------------------------
@NAME       : get_image_offset
@INPUT      : path - name of minc file
@OUTPUT     : (none)
@RETURNS    : offset to image data in minc file or MI_ERROR (-1) if an
              error occurs.
@DESCRIPTION: Function to return the offset to the image data in a minc file.
              WARNING: This function may be hazardous to your health since
              it directly accesses NetCDF internals!!!!! Use at your own
              risk.
@METHOD     : 
@GLOBALS    : 
@CALLS      : 
@CREATED    : September 9, 1994 (Peter Neelin)
@MODIFIED   : 
---------------------------------------------------------------------------- */
public long get_image_offset(int cdfid)
{
   int imgid;
   NC *handle;
   NC_var *vp;

   imgid = ncvarid(cdfid, MIimage);
   if (imgid == MI_ERROR) return MI_ERROR;

   handle = NC_check_id(cdfid);
   if (handle == NULL) return MI_ERROR;

   vp = NC_hlookupvar(handle, imgid);
   if (vp == NULL) return MI_ERROR;

   return (long) vp->begin;
}