about summary refs log tree commit diff
path: root/converter/other/hdifftopam.c
diff options
context:
space:
mode:
Diffstat (limited to 'converter/other/hdifftopam.c')
-rw-r--r--converter/other/hdifftopam.c54
1 files changed, 29 insertions, 25 deletions
diff --git a/converter/other/hdifftopam.c b/converter/other/hdifftopam.c
index c9363040..1b058a78 100644
--- a/converter/other/hdifftopam.c
+++ b/converter/other/hdifftopam.c
@@ -1,7 +1,7 @@
 /******************************************************************************
                                 hdifftopam
 *******************************************************************************
-  This program recovers a PAM image from a horizontal difference images 
+  This program recovers a PAM image from a horizontal difference images
   such as created by Pamtohdiff.
 
   By Bryan Henderson, San Jose, CA 2002.04.15.
@@ -10,15 +10,16 @@
 #include <stdio.h>
 
 #include "pm_c_util.h"
-#include "pam.h"
-#include "shhopt.h"
+#include "mallocvar.h"
 #include "nstring.h"
+#include "shhopt.h"
+#include "pam.h"
 
-struct cmdlineInfo {
+struct CmdlineInfo {
     /* All the information the user supplied in the command line,
        in a form easy for the program to use.
     */
-    const char *inputFilespec;  /* Filespecs of input files */
+    const char * inputFileNm;  /* Names of input files */
     unsigned int pnm;
     unsigned int verbose;
 };
@@ -26,19 +27,19 @@ struct cmdlineInfo {
 
 
 static void
-parseCommandLine(int argc, char ** argv,
-                 struct cmdlineInfo * const cmdlineP) {
+parseCommandLine(int argc, const char ** const argv,
+                 struct CmdlineInfo * const cmdlineP) {
 /*----------------------------------------------------------------------------
    Note that the file spec array we return is stored in the storage that
    was passed to us as the argv array.
 -----------------------------------------------------------------------------*/
-    optEntry *option_def = malloc( 100*sizeof( optEntry ) );
-        /* Instructions to pm_optParseOptions3 on how to parse our options.
-         */
+    optEntry * option_def;   /* Used by OPTENT3 */
     optStruct3 opt;
 
     unsigned int option_def_index;
 
+    MALLOCARRAY_NOFAIL(option_def, 100);
+
     option_def_index = 0;   /* incremented by OPTENTRY */
     OPTENT3(0, "pnm",       OPT_FLAG,    NULL, &cmdlineP->pnm,      0);
     OPTENT3(0, "verbose",   OPT_FLAG,    NULL, &cmdlineP->verbose,  0);
@@ -47,13 +48,13 @@ parseCommandLine(int argc, char ** argv,
     opt.short_allowed = FALSE;  /* We have no short (old-fashioned) options */
     opt.allowNegNum = FALSE;  /* We have no parms that are negative numbers */
 
-    pm_optParseOptions3(&argc, argv, opt, sizeof(opt), 0);
+    pm_optParseOptions4(&argc, argv, opt, sizeof(opt), 0);
         /* Uses and sets argc, argv, and some of *cmdlineP and others. */
 
     if (argc-1 < 1)
-        cmdlineP->inputFilespec = "-";
+        cmdlineP->inputFileNm = "-";
     else if (argc-1 == 1)
-        cmdlineP->inputFilespec = argv[1];
+        cmdlineP->inputFileNm = argv[1];
     else
         pm_error("Too many arguments.");
 }
@@ -64,7 +65,7 @@ static void
 makePnm(struct pam * const pamP) {
 
     switch (pamP->depth) {
-    case 1: 
+    case 1:
         pamP->format = PGM_FORMAT;
         break;
     case 3:
@@ -87,27 +88,28 @@ static void
 
 
 
-int 
-main(int argc, char *argv[]) {
-    FILE *ifP;
-    struct cmdlineInfo cmdline;
+int
+main(int argc, const char ** argv) {
+
+    FILE * ifP;
+    struct CmdlineInfo cmdline;
     struct pam diffpam, outpam;
     unsigned int row;
     tuple * diffrow;
     tuple * outrow;
     tuple * prevrow;
 
-    pnm_init(&argc, argv);
+    pm_proginit(&argc, argv);
 
     parseCommandLine(argc, argv, &cmdline);
 
-    ifP = pm_openr(cmdline.inputFilespec);
+    ifP = pm_openr(cmdline.inputFileNm);
 
     pnm_readpaminit(ifP, &diffpam, PAM_STRUCT_SIZE(tuple_type));
 
-    if (diffpam.format != PAM_FORMAT) 
+    if (diffpam.format != PAM_FORMAT)
         pm_error("Input must be a PAM file, not PNM");
-    else if (!streq(diffpam.tuple_type, "hdiff")) 
+    else if (!streq(diffpam.tuple_type, "hdiff"))
         pm_error("Input tuple type is '%s'.  Must be 'hdiff'",
                  diffpam.tuple_type);
 
@@ -130,7 +132,7 @@ main(int argc, char *argv[]) {
 
     {
         unsigned int const bias = diffpam.maxval/2;
-        
+
         for (row = 0; row < diffpam.height; ++row) {
             unsigned int col;
             pnm_readpamrow(&diffpam, diffrow);
@@ -139,8 +141,8 @@ main(int argc, char *argv[]) {
                 for (plane = 0; plane < diffpam.depth; ++plane) {
                     sample const prevSample = prevrow[col][plane];
                     sample const diffSample = diffrow[col][plane];
-                    
-                    outrow[col][plane] = 
+
+                    outrow[col][plane] =
                         (-bias + prevSample + diffSample) % (outpam.maxval+1);
                     prevrow[col][plane] = outrow[col][plane];
                 }
@@ -155,3 +157,5 @@ main(int argc, char *argv[]) {
     exit(0);
 }
 
+
+