changeset 1744:43479573053c

Revised logging/error handling
author bert <bert>
date Tue, 27 Apr 2004 15:40:22 +0000
parents 932ad1d4a87c
children 1bded95651f6
files libsrc/image_conversion.c
diffstat 1 files changed, 133 insertions(+), 95 deletions(-) [+]
line wrap: on
line diff
--- a/libsrc/image_conversion.c
+++ b/libsrc/image_conversion.c
@@ -34,7 +34,10 @@
 @CREATED    : July 27, 1992. (Peter Neelin, Montreal Neurological Institute)
 @MODIFIED   : 
  * $Log: image_conversion.c,v $
- * Revision 6.10  2003-09-18 16:17:00  bert
+ * Revision 6.11  2004-04-27 15:40:22  bert
+ * Revised logging/error handling
+ *
+ * Revision 6.10  2003/09/18 16:17:00  bert
  * Correctly cast double to nc_type
  *
  * Revision 6.9  2001/11/28 15:38:07  neelin
@@ -147,7 +150,7 @@
 ---------------------------------------------------------------------------- */
 
 #ifndef lint
-static char rcsid[] = "$Header: /private-cvsroot/minc/libsrc/image_conversion.c,v 6.10 2003-09-18 16:17:00 bert Exp $ MINC (MNI)";
+static char rcsid[] = "$Header: /private-cvsroot/minc/libsrc/image_conversion.c,v 6.11 2004-04-27 15:40:22 bert Exp $ MINC (MNI)";
 #endif
 
 #include <type_limits.h>
@@ -213,7 +216,7 @@
       /* Check that the allocation was successful */
       if (minc_icv_list == NULL) {
          MI_LOG_SYS_ERROR1("miicv_create");
-         MI_RETURN_ERROR(MI_ERROR);
+         MI_RETURN(MI_ERROR);
       }
       /* Put in NULL pointers */
       for (new_icv=minc_icv_list_nalloc; new_icv<new_nalloc; new_icv++)
@@ -228,7 +231,7 @@
    /* Allocate a new structure */
    if ((minc_icv_list[new_icv]=MALLOC(1, mi_icv_type))==NULL) {
       MI_LOG_SYS_ERROR1("miicv_create");
-      MI_RETURN_ERROR(MI_ERROR);
+      MI_RETURN(MI_ERROR);
    }
    icvp=minc_icv_list[new_icv];
 
@@ -303,11 +306,14 @@
    MI_SAVE_ROUTINE_NAME("miicv_free");
 
    /* Check icv id */
-   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN_ERROR(MI_ERROR);
+   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN(MI_ERROR);
 
    /* Detach the icv if it is attached */
-   if (icvp->cdfid != MI_ERROR)
-      {MI_CHK_ERR(miicv_detach(icvid))}
+   if (icvp->cdfid != MI_ERROR) {
+       if (miicv_detach(icvid) < 0) {
+           MI_RETURN(MI_ERROR);
+       }
+   }
 
    /* Free anything allocated at creation time */
    FREE(icvp->user_maxvar);
@@ -344,13 +350,12 @@
    MI_SAVE_ROUTINE_NAME("miicv_setdbl");
 
    /* Check icv id */
-   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN_ERROR(MI_ERROR);
+   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN(MI_ERROR);
 
    /* Check that the icv is not attached to a file */
    if (icvp->cdfid != MI_ERROR) {
-      MI_LOG_PKG_ERROR2(MI_ERR_ICVATTACHED, 
-         "Attempt to modify an attached image conversion variable");
-      MI_RETURN_ERROR(MI_ERROR);
+       milog_message(MI_MSG_ICVATTACHED);
+       MI_RETURN(MI_ERROR);
    }
 
    /* Set the property */
@@ -403,9 +408,8 @@
    case MI_ICV_NUM_IMGDIMS:
       ival = value;
       if ((ival<0) || (ival>MI_MAX_IMGDIMS)) {
-         MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                           "MI_ICV_NUM_IMGDIMS out of range");
-         MI_RETURN_ERROR(MI_ERROR);
+          milog_message(MI_MSG_BADPROP, _("MI_ICV_NUM_IMGDIMS out of range"));
+         MI_RETURN(MI_ERROR);
       }
       icvp->user_num_imgdims = ival;
       break;
@@ -418,10 +422,10 @@
    case MI_ICV_SIGN:
    case MI_ICV_MAXVAR:
    case MI_ICV_MINVAR:
-      MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                        "Tried to set icv string property to a number");
-      MI_RETURN_ERROR(MI_ERROR);
-      break;
+       milog_message(MI_MSG_BADPROP, 
+                     _("Can't store a number in a string value"));
+       MI_RETURN(MI_ERROR);
+       break;
    default:
       /* Check for image dimension properties */
       if ((icv_property>=MI_ICV_DIM_SIZE) && 
@@ -430,9 +434,8 @@
          icvp->user_dim_size[idim] = value;
       }
       else {
-         MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                           "Tried to set unknown or illegal icv property");
-         MI_RETURN_ERROR(MI_ERROR);
+          milog_message(MI_MSG_BADPROP, "Unknown code");
+          MI_RETURN(MI_ERROR);
       }
       break;
    }
@@ -462,7 +465,9 @@
 
    MI_SAVE_ROUTINE_NAME("miicv_setint");
 
-   {MI_CHK_ERR(miicv_setdbl(icvid, icv_property, (double) value))}
+   if (miicv_setdbl(icvid, icv_property, (double) value) < 0) {
+       MI_RETURN(MI_ERROR);
+   }
 
    MI_RETURN(MI_NOERROR);
 }
@@ -488,7 +493,9 @@
 
    MI_SAVE_ROUTINE_NAME("miicv_setlong");
 
-   {MI_CHK_ERR(miicv_setdbl(icvid, icv_property, (double) value))}
+   if (miicv_setdbl(icvid, icv_property, (double) value) < 0) {
+       MI_RETURN(MI_ERROR);
+   }
 
    MI_RETURN(MI_NOERROR);
 }
@@ -516,13 +523,12 @@
    MI_SAVE_ROUTINE_NAME("miicv_setstr");
 
    /* Check icv id */
-   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN_ERROR(MI_ERROR);
+   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN(MI_ERROR);
 
    /* Check that the icv is not attached to a file */
    if (icvp->cdfid != MI_ERROR) {
-      MI_LOG_PKG_ERROR2(MI_ERR_ICVATTACHED, 
-         "Attempt to modify an attached image conversion variable");
-      MI_RETURN_ERROR(MI_ERROR);
+       milog_message(MI_MSG_ICVATTACHED);
+       MI_RETURN(MI_ERROR);
    }
 
    /* Set the property */
@@ -563,22 +569,19 @@
    case MI_ICV_ADIM_SIZE:
    case MI_ICV_BDIM_SIZE:
    case MI_ICV_KEEP_ASPECT:
-      MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                        "Tried to set icv numeric property to a string");
-      MI_RETURN_ERROR(MI_ERROR);
+       milog_message(MI_MSG_BADPROP, "Can't store a string in a numeric property");
+       MI_RETURN(MI_ERROR);
       break;
    default:
       /* Check for image dimension properties */
       if ((icv_property>=MI_ICV_DIM_SIZE) && 
           (icv_property<MI_ICV_DIM_SIZE+MI_MAX_IMGDIMS)) {
-         MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                           "Tried to set icv numeric property to a string");
-         MI_RETURN_ERROR(MI_ERROR);
+          milog_message(MI_MSG_BADPROP, "Can't store a string in a numeric property");
+          MI_RETURN(MI_ERROR);
       }
       else {
-         MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                           "Tried to set unknown or illegal icv property");
-         MI_RETURN_ERROR(MI_ERROR);
+          milog_message(MI_MSG_BADPROP, "Unknown code");
+          MI_RETURN(MI_ERROR);
       }
       break;
    }
@@ -607,7 +610,7 @@
    MI_SAVE_ROUTINE_NAME("miicv_inqdbl");
 
    /* Check icv id */
-   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN_ERROR(MI_ERROR);
+   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN(MI_ERROR);
 
    /* Set the property */
    switch (icv_property) {
@@ -672,9 +675,9 @@
    case MI_ICV_SIGN:
    case MI_ICV_MAXVAR:
    case MI_ICV_MINVAR:
-      MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                   "Tried to inquire about icv string property as a number");
-      MI_RETURN_ERROR(MI_ERROR);
+       milog_message(MI_MSG_BADPROP,
+                     _("Tried to get icv string property as a number"));
+      MI_RETURN(MI_ERROR);
       break;
    default:
       /* Check for image dimension properties */
@@ -694,9 +697,8 @@
          *value = icvp->derv_dim_start[idim];
       }
       else {
-         MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                           "Tried to inquire about unknown icv property");
-         MI_RETURN_ERROR(MI_ERROR);
+         milog_message(MI_MSG_BADPROP, _("Tried to get unknown icv property"));
+         MI_RETURN(MI_ERROR);
       }
       break;
    }
@@ -723,7 +725,10 @@
 
    MI_SAVE_ROUTINE_NAME("miicv_inqint");
 
-   {MI_CHK_ERR(miicv_inqdbl(icvid, icv_property, &dvalue))}
+   if (miicv_inqdbl(icvid, icv_property, &dvalue) < 0) {
+       MI_RETURN(MI_ERROR);
+   }
+
    *value = dvalue;
 
    MI_RETURN(MI_NOERROR);
@@ -748,7 +753,10 @@
 
    MI_SAVE_ROUTINE_NAME("miicv_inqlong");
 
-   {MI_CHK_ERR(miicv_inqdbl(icvid, icv_property, &dvalue))}
+   if (miicv_inqdbl(icvid, icv_property, &dvalue) < 0) {
+       MI_RETURN(MI_ERROR);
+   }
+
    *value = dvalue;
 
    MI_RETURN(MI_NOERROR);
@@ -775,7 +783,7 @@
    MI_SAVE_ROUTINE_NAME("miicv_inqstr");
 
    /* Check icv id */
-   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN_ERROR(MI_ERROR);
+   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN(MI_ERROR);
 
    /* Set the property */
    switch (icv_property) {
@@ -819,9 +827,9 @@
    case MI_ICV_NUM_DIMS:
    case MI_ICV_CDFID:
    case MI_ICV_VARID:
-      MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                  "Tried to inquire about icv numeric property as a string");
-      MI_RETURN_ERROR(MI_ERROR);
+       milog_message(MI_MSG_BADPROP, 
+                     _("Tried to get icv numeric property as a string"));
+      MI_RETURN(MI_ERROR);
       break;
    default:
       /* Check for image dimension properties */
@@ -831,14 +839,14 @@
            (icv_property<MI_ICV_DIM_STEP+MI_MAX_IMGDIMS)) ||
           ((icv_property>=MI_ICV_DIM_START) && 
            (icv_property<MI_ICV_DIM_START+MI_MAX_IMGDIMS))) {
-         MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                  "Tried to inquire about icv numeric property as a string");
-         MI_RETURN_ERROR(MI_ERROR);
+         milog_message(MI_MSG_BADPROP,
+                       _("Tried to get icv numeric property as a string"));
+         MI_RETURN(MI_ERROR);
       }
       else {
-         MI_LOG_PKG_ERROR2(MI_ERR_BADPROP,
-                           "Tried to inquire about unknown icv property");
-         MI_RETURN_ERROR(MI_ERROR);
+         milog_message(MI_MSG_BADPROP,
+                       _("Tried to get unknown icv property"));
+         MI_RETURN(MI_ERROR);
       }
       break;
    }
@@ -873,14 +881,19 @@
    MI_SAVE_ROUTINE_NAME("miicv_ndattach");
 
    /* Check icv id */
-   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN_ERROR(MI_ERROR);
+   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN(MI_ERROR);
 
    /* If the icv is attached, then detach it */
-   if (icvp->cdfid != MI_ERROR)
-      {MI_CHK_ERR(miicv_detach(icvid))}
+   if (icvp->cdfid != MI_ERROR) {
+       if (miicv_detach(icvid) < 0) {
+           MI_RETURN(MI_ERROR);
+       }
+   }
 
    /* Inquire about the variable's type, sign and number of dimensions */
-   {MI_CHK_ERR(MI_icv_get_type(icvp, cdfid, varid))}
+   if (MI_icv_get_type(icvp, cdfid, varid) < 0) {
+       MI_RETURN(MI_ERROR);
+   }
 
    /* If not doing range calculations, just set derv_firstdim for
       MI_icv_access, otherwise, call routines to calculate range and 
@@ -890,10 +903,14 @@
    }
    else {
       /* Get valid range */
-      {MI_CHK_ERR(MI_icv_get_vrange(icvp, cdfid, varid))}
+       if (MI_icv_get_vrange(icvp, cdfid, varid) < 0) {
+           MI_RETURN(MI_ERROR);
+       }
           
       /* Get normalization info */
-      {MI_CHK_ERR(MI_icv_get_norm(icvp, cdfid, varid))}
+       if (MI_icv_get_norm(icvp, cdfid, varid) < 0) {
+           MI_RETURN(MI_ERROR);
+       }
    }
 
    /* Set other fields to defaults */
@@ -960,13 +977,15 @@
    MI_SAVE_ROUTINE_NAME("MI_icv_get_type");
 
    /* Inquire about the variable */
-   MI_CHK_ERR(ncvarinq(cdfid, varid, NULL, &(icvp->var_type), 
-                       &(icvp->var_ndims), icvp->var_dim, NULL))
+   if (ncvarinq(cdfid, varid, NULL, &(icvp->var_type), 
+                &(icvp->var_ndims), icvp->var_dim, NULL) < 0) {
+       MI_RETURN(MI_ERROR);
+   }
 
    /* Check that the variable type is numeric */
    if (icvp->var_type==NC_CHAR) {
-      MI_LOG_PKG_ERROR2(MI_ERR_NONNUMERIC,"Non-numeric datatype");
-      MI_RETURN_ERROR(MI_ERROR);
+       milog_message(MI_MSG_VARNOTNUM);
+       MI_RETURN(MI_ERROR);
    }
 
    /* Try to find out the sign of the variable using MIsigntype. */
@@ -1107,7 +1126,9 @@
          icvp->derv_imgmin = icvp->user_imgmin;
       }
       else {
-         MI_CHK_ERR(miget_image_range(cdfid, image_range))
+          if (miget_image_range(cdfid, image_range) < 0) {
+              MI_RETURN(MI_ERROR);
+          }
          icvp->derv_imgmin = image_range[0];
          icvp->derv_imgmax = image_range[1];
       }
@@ -1118,8 +1139,9 @@
       vid[1]=icvp->imgmaxid;
       if ((vid[0] != MI_ERROR) && (vid[1] != MI_ERROR)) {
          for (imm=0; imm < 2; imm++) {
-            MI_CHK_ERR(ncvarinq(cdfid, vid[imm], NULL, NULL, 
-                                &ndims, dim, NULL))
+             if (ncvarinq(cdfid, vid[imm], NULL, NULL, &ndims, dim, NULL) < 0) {
+                 MI_RETURN(MI_ERROR);
+             }
             for (idim=0; idim<ndims; idim++) {
                for (i=0; i<icvp->var_ndims; i++) {
                   if (icvp->var_dim[i]==dim[idim])
@@ -1155,7 +1177,7 @@
    MI_SAVE_ROUTINE_NAME("miicv_detach");
 
    /* Check icv id */
-   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN_ERROR(MI_ERROR);
+   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN(MI_ERROR);
 
    /* Check that the icv is in fact attached */
    if (icvp->cdfid == MI_ERROR)
@@ -1202,10 +1224,12 @@
    MI_SAVE_ROUTINE_NAME("miicv_get");
 
    /* Check icv id */
-   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN_ERROR(MI_ERROR);
+   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN(MI_ERROR);
 
    /* Get the data */
-   MI_CHK_ERR(MI_icv_access(MI_PRIV_GET, icvp, start, count, values))
+   if (MI_icv_access(MI_PRIV_GET, icvp, start, count, values) < 0) {
+       MI_RETURN(MI_ERROR);
+   }
 
    MI_RETURN(MI_NOERROR);
 }
@@ -1233,10 +1257,12 @@
    MI_SAVE_ROUTINE_NAME("miicv_put");
 
    /* Check icv id */
-   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN_ERROR(MI_ERROR);
+   if ((icvp=MI_icv_chkid(icvid)) == NULL) MI_RETURN(MI_ERROR);
 
 
-   MI_CHK_ERR(MI_icv_access(MI_PRIV_PUT, icvp, start, count, values))
+   if (MI_icv_access(MI_PRIV_PUT, icvp, start, count, values) < 0) {
+       MI_RETURN(MI_ERROR);
+   }
 
    MI_RETURN(MI_NOERROR);
 }
@@ -1277,17 +1303,21 @@
 
    /* Check that icv is attached to a variable */
    if (icvp->cdfid == MI_ERROR) {
-      MI_LOG_PKG_ERROR2(MI_ERR_ICVNOTATTACHED, 
-                        "ICV is not attached to an image variable");
-      MI_RETURN_ERROR(MI_ERROR);
+       milog_message(MI_MSG_ICVNOTATTACHED);
+
+       MI_RETURN(MI_ERROR);
    }
 
    /* Zero the user's buffer if needed */
    if ((operation == MI_PRIV_GET) && (icvp->derv_do_zero))
-      {MI_CHK_ERR(MI_icv_zero_buffer(icvp, count, values))}
+       if (MI_icv_zero_buffer(icvp, count, values) < 0) {
+           MI_RETURN(MI_ERROR);
+       }
 
    /* Translate icv coordinates to variable coordinates */
-   {MI_CHK_ERR(MI_icv_coords_tovar(icvp, start, count, var_start, var_count))}
+   if (MI_icv_coords_tovar(icvp, start, count, var_start, var_count) < 0) {
+       MI_RETURN(MI_ERROR);
+   }
 
    /* Save icv coordinates for future reference (for dimension conversion
       routines) */
@@ -1342,14 +1372,18 @@
 
       /* Calculate scale factor */
       if (icvp->do_scale) {
-         MI_CHK_ERR(MI_icv_calc_scale(operation, icvp, chunk_start))
+          if (MI_icv_calc_scale(operation, icvp, chunk_start) < 0) {
+              MI_RETURN(MI_ERROR);
+          }
       }
 
       /* Get the values */
-      MI_CHK_ERR(MI_varaccess(operation, icvp->cdfid, icvp->varid,
-                              chunk_start, chunk_count,
-                              icvp->user_type, icvp->user_sign,
-                              chunk_values, bufsize_step, icvp))
+      if (MI_varaccess(operation, icvp->cdfid, icvp->varid,
+                       chunk_start, chunk_count,
+                       icvp->user_type, icvp->user_sign,
+                       chunk_values, bufsize_step, icvp) < 0) {
+          MI_RETURN(MI_ERROR);
+      }
 
       /* Increment the start counter */
       chunk_start[firstdim] += chunk_count[firstdim];
@@ -1478,9 +1512,8 @@
       if ((icv_start[i]<0) || (icv_start[i]>=icv_dim_size) ||
           (last_coord<0) || (last_coord>=icv_dim_size) ||
           (icv_count[i]<0)) {
-         MI_LOG_PKG_ERROR2(MI_ERR_ICV_INVCOORDS,
-                           "Invalid icv coordinates");
-         MI_RETURN_ERROR(MI_ERROR);
+          milog_message(MI_MSG_ICVCOORDS);
+          MI_RETURN(MI_ERROR);
       }
       /* Remove offset */
       coord = icv_start[i]-icvp->derv_dim_off[j];
@@ -1577,14 +1610,19 @@
           (icvp->imgmaxid!=MI_ERROR) && (icvp->imgminid!=MI_ERROR)) {
          if (mitranslate_coords(icvp->cdfid, icvp->varid, coords, 
                                 icvp->imgmaxid, mmcoords) == NULL)
-            MI_RETURN_ERROR(MI_ERROR);
-         {MI_CHK_ERR(mivarget1(icvp->cdfid, icvp->imgmaxid, mmcoords,
-                               NC_DOUBLE, NULL, &slice_imgmax))}
+            MI_RETURN(MI_ERROR);
+         if (mivarget1(icvp->cdfid, icvp->imgmaxid, mmcoords,
+                       NC_DOUBLE, NULL, &slice_imgmax) < 0) {
+             MI_RETURN(MI_ERROR);
+         }
          if (mitranslate_coords(icvp->cdfid, icvp->varid, coords, 
-                                icvp->imgminid, mmcoords) == NULL)
-            MI_RETURN_ERROR(MI_ERROR);
-         {MI_CHK_ERR(mivarget1(icvp->cdfid, icvp->imgminid, mmcoords,
-                               NC_DOUBLE, NULL, &slice_imgmin))}
+                                icvp->imgminid, mmcoords) == NULL) {
+            MI_RETURN(MI_ERROR);
+         }
+         if (mivarget1(icvp->cdfid, icvp->imgminid, mmcoords,
+                       NC_DOUBLE, NULL, &slice_imgmin) < 0) {
+             MI_RETURN(MI_ERROR);
+         }
       }
 
       /* Get the user real range */
@@ -1734,8 +1772,8 @@
    /* Check icv id */
    if ((icvid<0) || (icvid>=minc_icv_list_nalloc) || 
        (minc_icv_list[icvid]==NULL)) {
-      MI_LOG_PKG_ERROR2(MI_ERR_BADICV,"Illegal icv identifier");
-      MI_RETURN_ERROR((void *) NULL);
+       milog_message(MI_MSG_BADICV);
+       MI_RETURN((void *) NULL);
    }
 
    MI_RETURN(minc_icv_list[icvid]);