changeset 1265:85a8de40f9bf

Added -e option to allow reading data streams with explicit VR.
author neelin <neelin>
date Mon, 01 May 2000 13:59:55 +0000
parents a3df3eef40e2
children e105b2b096d2
files conversion/Acr_nema/dump_acr_nema.c conversion/Acr_nema/extract_acr_nema.c
diffstat 2 files changed, 30 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/conversion/Acr_nema/dump_acr_nema.c
+++ b/conversion/Acr_nema/dump_acr_nema.c
@@ -6,7 +6,10 @@
 @CREATED    : November 24, 1993 (Peter Neelin)
 @MODIFIED   : 
  * $Log: dump_acr_nema.c,v $
- * Revision 6.2  2000-04-28 15:02:01  neelin
+ * Revision 6.3  2000-05-01 13:59:55  neelin
+ * Added -e option to allow reading data streams with explicit VR.
+ *
+ * Revision 6.2  2000/04/28 15:02:01  neelin
  * Added more general argument processing (but not with ParseArgv).
  * Added support for ignoring non-fatal protocol errors.
  * Added support for user-specified byte-order.
@@ -83,6 +86,7 @@
    char *maxidstr = NULL;
    int ignore_errors = FALSE;
    Acr_byte_order byte_order = ACR_UNKNOWN_ENDIAN;
+   Acr_VR_encoding_type vr_encoding = ACR_IMPLICIT_VR;
    FILE *fp;
    Acr_File *afp;
    Acr_Group group_list;
@@ -92,7 +96,7 @@
    char *ptr;
    int iarg, argcounter;
    char *arg;
-   char *usage = "Usage: %s [-h] [-i] [-b] [-l] [<file> [<max group>]]\n";
+   char *usage = "Usage: %s [-h] [-i] [-b] [-l] [-e] [<file> [<max group>]]\n";
 
    /* Check arguments */
    pname = argv[0];
@@ -110,9 +114,11 @@
             (void) fprintf(stderr, "   -h:\tPrint this message\n");
             (void) fprintf(stderr, "   -i:\tIgnore protocol errors\n");
             (void) fprintf(stderr, "   -b:\tAssume big-endian data\n");
-            (void) fprintf(stderr, "   -l:\tAssume little-endian data\n\n");
+            (void) fprintf(stderr, "   -l:\tAssume little-endian data\n");
+            (void) fprintf(stderr, "   -e:\tAssume explicit VR encoding\n\n");
             (void) fprintf(stderr, usage, pname);
             exit(EXIT_FAILURE);
+            break;
          case 'i':
             ignore_errors = TRUE;
             break;
@@ -122,6 +128,9 @@
          case 'b':
             byte_order = ACR_BIG_ENDIAN;
             break;
+         case 'e':
+            vr_encoding = ACR_EXPLICIT_VR;
+            break;
          default:
             (void) fprintf(stderr, "Unrecognized option %s\n", arg);
             exit(EXIT_FAILURE);
@@ -176,6 +185,7 @@
    else {
       acr_set_byte_order(afp, byte_order);
    }
+   acr_set_vr_encoding(afp, vr_encoding);
 
    /* Read in group list */
    status = acr_input_group_list(afp, &group_list, maxid);
--- a/conversion/Acr_nema/extract_acr_nema.c
+++ b/conversion/Acr_nema/extract_acr_nema.c
@@ -6,7 +6,10 @@
 @CREATED    : November 24, 1993 (Peter Neelin)
 @MODIFIED   : 
  * $Log: extract_acr_nema.c,v $
- * Revision 6.2  2000-04-28 15:02:01  neelin
+ * Revision 6.3  2000-05-01 13:59:55  neelin
+ * Added -e option to allow reading data streams with explicit VR.
+ *
+ * Revision 6.2  2000/04/28 15:02:01  neelin
  * Added more general argument processing (but not with ParseArgv).
  * Added support for ignoring non-fatal protocol errors.
  * Added support for user-specified byte-order.
@@ -70,6 +73,7 @@
    char *elemstr = NULL;
    int ignore_errors = FALSE;
    Acr_byte_order byte_order = ACR_UNKNOWN_ENDIAN;
+   Acr_VR_encoding_type vr_encoding = ACR_IMPLICIT_VR;
    FILE *fp;
    Acr_File *afp;
    Acr_Group group_list;
@@ -80,7 +84,7 @@
    int iarg, argcounter;
    char *arg;
    char *usage = 
-      "Usage: %s [-h] [-i] [-b] [-l] [<file>] <group id> <element id>\n";
+      "Usage: %s [-h] [-i] [-b] [-l] [-e] [<file>] <group id> <element id>\n";
 
    /* Check arguments */
    pname = argv[0];
@@ -98,9 +102,11 @@
             (void) fprintf(stderr, "   -h:\tPrint this message\n");
             (void) fprintf(stderr, "   -i:\tIgnore protocol errors\n");
             (void) fprintf(stderr, "   -b:\tAssume big-endian data\n");
-            (void) fprintf(stderr, "   -l:\tAssume little-endian data\n\n");
+            (void) fprintf(stderr, "   -l:\tAssume little-endian data\n");
+            (void) fprintf(stderr, "   -e:\tAssume explicit VR encoding\n\n");
             (void) fprintf(stderr, usage, pname);
             exit(EXIT_FAILURE);
+            break;
          case 'i':
             ignore_errors = TRUE;
             break;
@@ -110,6 +116,9 @@
          case 'b':
             byte_order = ACR_BIG_ENDIAN;
             break;
+         case 'e':
+            vr_encoding = ACR_EXPLICIT_VR;
+            break;
          default:
             (void) fprintf(stderr, "Unrecognized option %s\n", arg);
             exit(EXIT_FAILURE);
@@ -135,6 +144,10 @@
    }
 
    /* Get element id (group and element) */
+   if ((grpstr == NULL) || (elemstr == NULL)) {
+      (void) fprintf(stderr, usage, pname);
+      exit(EXIT_FAILURE);
+   }
    element_id = MALLOC(sizeof(*element_id));
    element_id->group_id = strtol(grpstr, &ptr, 0);
    if (ptr == grpstr) {
@@ -169,6 +182,7 @@
    else {
       acr_set_byte_order(afp, byte_order);
    }
+   acr_set_vr_encoding(afp, vr_encoding);
 
    /* Read in group list up to group */
    (void) acr_input_group_list(afp, &group_list, element_id->group_id);