<html lang='en'>
<head>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
<title>
GitLab
</title>
</meta>
</head>
<style>
  img {
    max-width: 100%;
    height: auto;
  }
  p.details {
    font-style:italic;
    color:#777
  }
  .footer p {
    font-size:small;
    color:#777
  }
  pre.commit-message {
    white-space: pre-wrap;
  }
  .file-stats a {
    text-decoration: none;
  }
  .file-stats .new-file {
    color: #090;
  }
  .file-stats .deleted-file {
    color: #B00;
  }
</style>
<body>
<div class='content'>
<h3>Shane Snyder pushed to branch dev-modular at <a href="https://xgitlab.cels.anl.gov/darshan/darshan">darshan / darshan</a></h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/4bbe8e640eeaea440a794de765a1b9fd54f8560d">4bbe8e64</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-01-08T17:07:01Z</i>
</div>
<pre class='commit-message'>add diff routines to remaining modules</pre>
</li>
</ul>
<h4>5 changed files:</h4>
<ul>
<li class='file-stats'>
<a href='#diff-0'>
darshan-util/darshan-bgq-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-1'>
darshan-util/darshan-hdf5-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-2'>
darshan-util/darshan-mpiio-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-3'>
darshan-util/darshan-null-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-4'>
darshan-util/darshan-pnetcdf-logutils.c
</a>
</li>
</ul>
<h4>Changes:</h4>
<li id='diff-0'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/commit/4bbe8e640eeaea440a794de765a1b9fd54f8560d#diff-0'>
<strong>
darshan-util/darshan-bgq-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-bgq-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-bgq-logutils.c
</span><span style="color: #aaaaaa">@@ -19,7 +19,7 @@
</span> 
 #include "darshan-logutils.h"
 
-/* counter name strings for the POSIX module */
<span style="color: #000000;background-color: #ddffdd">+/* counter name strings for the BGQ module */
</span> #define X(a) #a,
 char *bgq_counter_names[] = {
     BGQ_COUNTERS
<span style="color: #aaaaaa">@@ -36,13 +36,16 @@ static int darshan_log_put_bgq_rec(darshan_fd fd, void* bgq_buf, int ver);
</span> static void darshan_log_print_bgq_rec(void *file_rec,
     char *file_name, char *mnt_pt, char *fs_type, int ver);
 static void darshan_log_print_bgq_description(void);
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_bgq_rec_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2);
</span> 
 struct darshan_mod_logutil_funcs bgq_logutils =
 {
     .log_get_record = &darshan_log_get_bgq_rec,
     .log_put_record = &darshan_log_put_bgq_rec,
     .log_print_record = &darshan_log_print_bgq_rec,
<span style="color: #000000;background-color: #ffdddd">-    .log_print_description = &darshan_log_print_bgq_description
</span><span style="color: #000000;background-color: #ddffdd">+    .log_print_description = &darshan_log_print_bgq_description,
+    .log_print_diff = &darshan_log_print_bgq_rec_diff
</span> };
 
 static int darshan_log_get_bgq_rec(darshan_fd fd, void* bgq_buf,
<span style="color: #aaaaaa">@@ -131,6 +134,79 @@ static void darshan_log_print_bgq_description()
</span>     return;
 }
 
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_bgq_rec_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2)
+{
+    struct darshan_bgq_record *file1 = (struct darshan_bgq_record *)file_rec1;
+    struct darshan_bgq_record *file2 = (struct darshan_bgq_record *)file_rec2;
+    int i;
+
+    /* NOTE: we assume that both input records are the same module format version */
+
+    for(i=0; i<BGQ_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_BGQ_MOD],
+                file1->rank, file1->f_id, bgq_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_BGQ_MOD],
+                file2->rank, file2->f_id, bgq_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+        else if(file1->counters[i] != file2->counters[i])
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_BGQ_MOD],
+                file1->rank, file1->f_id, bgq_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_BGQ_MOD],
+                file2->rank, file2->f_id, bgq_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+    }
+
+    for(i=0; i<BGQ_F_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_BGQ_MOD],
+                file1->rank, file1->f_id, bgq_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_BGQ_MOD],
+                file2->rank, file2->f_id, bgq_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+        else if(file1->fcounters[i] != file2->fcounters[i])
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_BGQ_MOD],
+                file1->rank, file1->f_id, bgq_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_BGQ_MOD],
+                file2->rank, file2->f_id, bgq_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+    }
+
+    return;
+}
+
+
</span> /*
  * Local variables:
  *  c-indent-level: 4
</code></pre>

<br>
</li>
<li id='diff-1'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/commit/4bbe8e640eeaea440a794de765a1b9fd54f8560d#diff-1'>
<strong>
darshan-util/darshan-hdf5-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-hdf5-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-hdf5-logutils.c
</span><span style="color: #aaaaaa">@@ -36,13 +36,16 @@ static int darshan_log_put_hdf5_file(darshan_fd fd, void* hdf5_buf, int ver);
</span> static void darshan_log_print_hdf5_file(void *file_rec,
     char *file_name, char *mnt_pt, char *fs_type, int ver);
 static void darshan_log_print_hdf5_description(void);
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_hdf5_file_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2);
</span> 
 struct darshan_mod_logutil_funcs hdf5_logutils =
 {
     .log_get_record = &darshan_log_get_hdf5_file,
     .log_put_record = &darshan_log_put_hdf5_file,
     .log_print_record = &darshan_log_print_hdf5_file,
<span style="color: #000000;background-color: #ffdddd">-    .log_print_description = &darshan_log_print_hdf5_description
</span><span style="color: #000000;background-color: #ddffdd">+    .log_print_description = &darshan_log_print_hdf5_description,
+    .log_print_diff = &darshan_log_print_hdf5_file_diff
</span> };
 
 static int darshan_log_get_hdf5_file(darshan_fd fd, void* hdf5_buf,
<span style="color: #aaaaaa">@@ -126,6 +129,79 @@ static void darshan_log_print_hdf5_description()
</span>     return;
 }
 
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_hdf5_file_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2)
+{
+    struct darshan_hdf5_file *file1 = (struct darshan_hdf5_file *)file_rec1;
+    struct darshan_hdf5_file *file2 = (struct darshan_hdf5_file *)file_rec2;
+    int i;
+
+    /* NOTE: we assume that both input records are the same module format version */
+
+    for(i=0; i<HDF5_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_HDF5_MOD],
+                file1->rank, file1->f_id, hdf5_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_HDF5_MOD],
+                file2->rank, file2->f_id, hdf5_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+        else if(file1->counters[i] != file2->counters[i])
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_HDF5_MOD],
+                file1->rank, file1->f_id, hdf5_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_HDF5_MOD],
+                file2->rank, file2->f_id, hdf5_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+    }
+
+    for(i=0; i<HDF5_F_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_HDF5_MOD],
+                file1->rank, file1->f_id, hdf5_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_HDF5_MOD],
+                file2->rank, file2->f_id, hdf5_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+        else if(file1->fcounters[i] != file2->fcounters[i])
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_HDF5_MOD],
+                file1->rank, file1->f_id, hdf5_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_HDF5_MOD],
+                file2->rank, file2->f_id, hdf5_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+    }
+
+    return;
+}
+
+
</span> /*
  * Local variables:
  *  c-indent-level: 4
</code></pre>

<br>
</li>
<li id='diff-2'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/commit/4bbe8e640eeaea440a794de765a1b9fd54f8560d#diff-2'>
<strong>
darshan-util/darshan-mpiio-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-mpiio-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-mpiio-logutils.c
</span><span style="color: #aaaaaa">@@ -36,13 +36,16 @@ static int darshan_log_put_mpiio_file(darshan_fd fd, void* mpiio_buf, int ver);
</span> static void darshan_log_print_mpiio_file(void *file_rec,
     char *file_name, char *mnt_pt, char *fs_type, int ver);
 static void darshan_log_print_mpiio_description(void);
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_mpiio_file_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2);
</span> 
 struct darshan_mod_logutil_funcs mpiio_logutils =
 {
     .log_get_record = &darshan_log_get_mpiio_file,
     .log_put_record = &darshan_log_put_mpiio_file,
     .log_print_record = &darshan_log_print_mpiio_file,
<span style="color: #000000;background-color: #ffdddd">-    .log_print_description = &darshan_log_print_mpiio_description
</span><span style="color: #000000;background-color: #ddffdd">+    .log_print_description = &darshan_log_print_mpiio_description,
+    .log_print_diff = &darshan_log_print_mpiio_file_diff
</span> };
 
 static int darshan_log_get_mpiio_file(darshan_fd fd, void* mpiio_buf,
<span style="color: #aaaaaa">@@ -148,6 +151,79 @@ static void darshan_log_print_mpiio_description()
</span>     return;
 }
 
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_mpiio_file_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2)
+{
+    struct darshan_mpiio_file *file1 = (struct darshan_mpiio_file *)file_rec1;
+    struct darshan_mpiio_file *file2 = (struct darshan_mpiio_file *)file_rec2;
+    int i;
+
+    /* NOTE: we assume that both input records are the same module format version */
+
+    for(i=0; i<MPIIO_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_MPIIO_MOD],
+                file1->rank, file1->f_id, mpiio_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_MPIIO_MOD],
+                file2->rank, file2->f_id, mpiio_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+        else if(file1->counters[i] != file2->counters[i])
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_MPIIO_MOD],
+                file1->rank, file1->f_id, mpiio_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_MPIIO_MOD],
+                file2->rank, file2->f_id, mpiio_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+    }
+
+    for(i=0; i<MPIIO_F_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_MPIIO_MOD],
+                file1->rank, file1->f_id, mpiio_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_MPIIO_MOD],
+                file2->rank, file2->f_id, mpiio_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+        else if(file1->fcounters[i] != file2->fcounters[i])
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_MPIIO_MOD],
+                file1->rank, file1->f_id, mpiio_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_MPIIO_MOD],
+                file2->rank, file2->f_id, mpiio_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+    }
+
+    return;
+}
+
+
</span> /*
  * Local variables:
  *  c-indent-level: 4
</code></pre>

<br>
</li>
<li id='diff-3'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/commit/4bbe8e640eeaea440a794de765a1b9fd54f8560d#diff-3'>
<strong>
darshan-util/darshan-null-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-null-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-null-logutils.c
</span><span style="color: #aaaaaa">@@ -38,6 +38,8 @@ static int darshan_log_put_null_record(darshan_fd fd, void* null_buf, int ver);
</span> static void darshan_log_print_null_record(void *file_rec,
     char *file_name, char *mnt_pt, char *fs_type, int ver);
 static void darshan_log_print_null_description(void);
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_null_record_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2);
</span> 
 /* structure storing each function needed for implementing the darshan
  * logutil interface. these functions are used for reading, writing, and
<span style="color: #aaaaaa">@@ -48,7 +50,8 @@ struct darshan_mod_logutil_funcs null_logutils =
</span>     .log_get_record = &darshan_log_get_null_record,
     .log_put_record = &darshan_log_put_null_record,
     .log_print_record = &darshan_log_print_null_record,
<span style="color: #000000;background-color: #ffdddd">-    .log_print_description = &darshan_log_print_null_description
</span><span style="color: #000000;background-color: #ddffdd">+    .log_print_description = &darshan_log_print_null_description,
+    .log_print_diff = &darshan_log_print_null_record_diff
</span> };
 
 /* retrieve a NULL record from log file descriptor 'fd', storing the
<span style="color: #aaaaaa">@@ -148,6 +151,79 @@ static void darshan_log_print_null_description()
</span>     return;
 }
 
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_null_record_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2)
+{
+    struct darshan_null_record *file1 = (struct darshan_null_record *)file_rec1;
+    struct darshan_null_record *file2 = (struct darshan_null_record *)file_rec2;
+    int i;
+
+    /* NOTE: we assume that both input records are the same module format version */
+
+    for(i=0; i<NULL_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_NULL_MOD],
+                file1->rank, file1->f_id, null_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_NULL_MOD],
+                file2->rank, file2->f_id, null_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+        else if(file1->counters[i] != file2->counters[i])
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_NULL_MOD],
+                file1->rank, file1->f_id, null_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_NULL_MOD],
+                file2->rank, file2->f_id, null_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+    }
+
+    for(i=0; i<NULL_F_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_NULL_MOD],
+                file1->rank, file1->f_id, null_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_NULL_MOD],
+                file2->rank, file2->f_id, null_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+        else if(file1->fcounters[i] != file2->fcounters[i])
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_NULL_MOD],
+                file1->rank, file1->f_id, null_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_NULL_MOD],
+                file2->rank, file2->f_id, null_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+    }
+
+    return;
+}
+
+
</span> /*
  * Local variables:
  *  c-indent-level: 4
</code></pre>

<br>
</li>
<li id='diff-4'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/commit/4bbe8e640eeaea440a794de765a1b9fd54f8560d#diff-4'>
<strong>
darshan-util/darshan-pnetcdf-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-pnetcdf-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-pnetcdf-logutils.c
</span><span style="color: #aaaaaa">@@ -36,13 +36,16 @@ static int darshan_log_put_pnetcdf_file(darshan_fd fd, void* pnetcdf_buf, int ve
</span> static void darshan_log_print_pnetcdf_file(void *file_rec,
     char *file_name, char *mnt_pt, char *fs_type, int ver);
 static void darshan_log_print_pnetcdf_description(void);
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_pnetcdf_file_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2);
</span> 
 struct darshan_mod_logutil_funcs pnetcdf_logutils =
 {
     .log_get_record = &darshan_log_get_pnetcdf_file,
     .log_put_record = &darshan_log_put_pnetcdf_file,
     .log_print_record = &darshan_log_print_pnetcdf_file,
<span style="color: #000000;background-color: #ffdddd">-    .log_print_description = &darshan_log_print_pnetcdf_description
</span><span style="color: #000000;background-color: #ddffdd">+    .log_print_description = &darshan_log_print_pnetcdf_description,
+    .log_print_diff = &darshan_log_print_pnetcdf_file_diff
</span> };
 
 static int darshan_log_get_pnetcdf_file(darshan_fd fd, void* pnetcdf_buf,
<span style="color: #aaaaaa">@@ -127,6 +130,78 @@ static void darshan_log_print_pnetcdf_description()
</span>     return;
 }
 
<span style="color: #000000;background-color: #ddffdd">+static void darshan_log_print_pnetcdf_file_diff(void *file_rec1, char *file_name1,
+    void *file_rec2, char *file_name2)
+{
+    struct darshan_pnetcdf_file *file1 = (struct darshan_pnetcdf_file *)file_rec1;
+    struct darshan_pnetcdf_file *file2 = (struct darshan_pnetcdf_file *)file_rec2;
+    int i;
+
+    /* NOTE: we assume that both input records are the same module format version */
+
+    for(i=0; i<PNETCDF_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_PNETCDF_MOD],
+                file1->rank, file1->f_id, pnetcdf_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_PNETCDF_MOD],
+                file2->rank, file2->f_id, pnetcdf_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+        else if(file1->counters[i] != file2->counters[i])
+        {
+            printf("- ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_PNETCDF_MOD],
+                file1->rank, file1->f_id, pnetcdf_counter_names[i],
+                file1->counters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_PNETCDF_MOD],
+                file2->rank, file2->f_id, pnetcdf_counter_names[i],
+                file2->counters[i], file_name2, "", "");
+        }
+    }
+
+    for(i=0; i<PNETCDF_F_NUM_INDICES; i++)
+    {
+        if(!file2)
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_PNETCDF_MOD],
+                file1->rank, file1->f_id, pnetcdf_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+
+        }
+        else if(!file1)
+        {
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_PNETCDF_MOD],
+                file2->rank, file2->f_id, pnetcdf_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+        else if(file1->fcounters[i] != file2->fcounters[i])
+        {
+            printf("- ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_PNETCDF_MOD],
+                file1->rank, file1->f_id, pnetcdf_f_counter_names[i],
+                file1->fcounters[i], file_name1, "", "");
+            printf("+ ");
+            DARSHAN_F_COUNTER_PRINT(darshan_module_names[DARSHAN_PNETCDF_MOD],
+                file2->rank, file2->f_id, pnetcdf_f_counter_names[i],
+                file2->fcounters[i], file_name2, "", "");
+        }
+    }
+
+    return;
+}
+
</span> /*
  * Local variables:
  *  c-indent-level: 4
</code></pre>

<br>
</li>

</div>
<div class='footer' style='margin-top: 10px;'>
<p>

<br>
<a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/4bbe8e640eeaea440a794de765a1b9fd54f8560d">View it on GitLab</a>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Commit","url":"https://xgitlab.cels.anl.gov/darshan/darshan/commit/4bbe8e640eeaea440a794de765a1b9fd54f8560d"}}</script>
</p>
</div>
</body>
</html>