Remove assignment to variables not in use.
[yaz-moved-to-github.git] / src / opacdisp.c
index ad8113e..4700a35 100644 (file)
@@ -1,32 +1,41 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2009 Index Data
+ * Copyright (C) 1995-2011 Index Data
  * See the file LICENSE for details.
  */
 /**
  * \file opacdisp.c
  * \brief Implements OPAC record display
  */
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <ctype.h>
 
 #include <yaz/proto.h>
 #include <yaz/marcdisp.h>
 
-static void opac_element_str(WRBUF wrbuf, yaz_iconv_t cd, 
+static void opac_element_str(WRBUF wrbuf, yaz_iconv_t cd1, yaz_iconv_t cd2,
                              int l, const char *elem,
                              const char *data)
 {
     if (data)
     {
+        size_t pos;
         while (--l >= 0)
             wrbuf_puts(wrbuf, " ");
         wrbuf_puts(wrbuf, "<");
         wrbuf_puts(wrbuf, elem);
         wrbuf_puts(wrbuf, ">");
-        wrbuf_iconv_puts_cdata(wrbuf, cd, data);
+        
+        pos = wrbuf->pos; /* save position */
+        if (wrbuf_iconv_write_x(wrbuf, cd1, data, strlen(data), 1) && cd2)
+        {
+            wrbuf->pos = pos; /* rewind to pos */
+            wrbuf_iconv_write_x(wrbuf, cd2, data, strlen(data), 1);
+        }
         wrbuf_puts(wrbuf, "</");
         wrbuf_puts(wrbuf, elem);
         wrbuf_puts(wrbuf, ">\n");
@@ -49,10 +58,11 @@ static void opac_element_bool(WRBUF wrbuf, int l, const char *elem, int *data)
     }
 }
 
-void yaz_opac_decode_wrbuf(yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf)
+void yaz_opac_decode_wrbuf2(yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf,
+                            yaz_iconv_t cd2)
 {
     int i;
-    yaz_iconv_t cd = yaz_marc_get_iconv(mt);
+    yaz_iconv_t cd1 = yaz_marc_get_iconv(mt);
 
     wrbuf_puts(wrbuf, "<opacRecord>\n");
     if (r->bibliographicRecord)
@@ -89,35 +99,50 @@ void yaz_opac_decode_wrbuf(yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf)
             
             Z_HoldingsAndCircData *d = h->u.holdingsAndCirc;
         
-            opac_element_str(wrbuf, cd, 2, "typeOfRecord", d->typeOfRecord);
-            opac_element_str(wrbuf, cd, 2, "encodingLevel", d->encodingLevel);
-            opac_element_str(wrbuf, cd, 2, "format", d->format);
-            opac_element_str(wrbuf, cd, 2, "receiptAcqStatus", d->receiptAcqStatus);
-            opac_element_str(wrbuf, cd, 2, "generalRetention", d->generalRetention);
-            opac_element_str(wrbuf, cd, 2, "completeness", d->completeness);
-            opac_element_str(wrbuf, cd, 2, "dateOfReport", d->dateOfReport);
-            opac_element_str(wrbuf, cd, 2, "nucCode", d->nucCode);
-            opac_element_str(wrbuf, cd, 2, "localLocation", d->localLocation);
-            opac_element_str(wrbuf, cd, 2, "shelvingLocation", d->shelvingLocation);
-            opac_element_str(wrbuf, cd, 2, "callNumber", d->callNumber);
-            opac_element_str(wrbuf, cd, 2, "shelvingData", d->shelvingData);
-            
-            opac_element_str(wrbuf, cd, 2, "copyNumber", d->copyNumber);
-            opac_element_str(wrbuf, cd, 2, "publicNote", d->publicNote);
-            opac_element_str(wrbuf, cd, 2, "reproductionNote", d->reproductionNote);
-            opac_element_str(wrbuf, cd, 2, "termsUseRepro", d->termsUseRepro);
-            opac_element_str(wrbuf, cd, 2, "enumAndChron", d->enumAndChron);
+            opac_element_str(wrbuf, cd1, cd2, 2, "typeOfRecord",
+                             d->typeOfRecord);
+            opac_element_str(wrbuf, cd1, cd2, 2, "encodingLevel",
+                             d->encodingLevel);
+            opac_element_str(wrbuf, cd1, cd2, 2, "format",
+                             d->format);
+            opac_element_str(wrbuf, cd1, cd2, 2, "receiptAcqStatus",
+                             d->receiptAcqStatus);
+            opac_element_str(wrbuf, cd1, cd2, 2, "generalRetention",
+                             d->generalRetention);
+            opac_element_str(wrbuf, cd1, cd2, 2, "completeness",
+                             d->completeness);
+            opac_element_str(wrbuf, cd1, cd2, 2, "dateOfReport",
+                             d->dateOfReport);
+            opac_element_str(wrbuf, cd1, cd2, 2, "nucCode", d->nucCode);
+            opac_element_str(wrbuf, cd1, cd2, 2, "localLocation",
+                             d->localLocation);
+            opac_element_str(wrbuf, cd1, cd2, 2, "shelvingLocation",
+                             d->shelvingLocation);
+            opac_element_str(wrbuf, cd1, cd2, 2, "callNumber",
+                             d->callNumber);
+            opac_element_str(wrbuf, cd1, cd2, 2, "shelvingData",
+                             d->shelvingData);
+            opac_element_str(wrbuf, cd1, cd2, 2, "copyNumber",
+                             d->copyNumber);
+            opac_element_str(wrbuf, cd1, cd2, 2, "publicNote",
+                             d->publicNote);
+            opac_element_str(wrbuf, cd1, cd2, 2, "reproductionNote",
+                             d->reproductionNote);
+            opac_element_str(wrbuf, cd1, cd2, 2, "termsUseRepro",
+                             d->termsUseRepro);
+            opac_element_str(wrbuf, cd1, cd2, 2, "enumAndChron",
+                             d->enumAndChron);
             if (d->num_volumes)
             {
                 wrbuf_puts (wrbuf, "  <volumes>\n");
                 for (j = 0; j<d->num_volumes; j++)
                 {
                     wrbuf_puts (wrbuf, "   <volume>\n");
-                    opac_element_str(wrbuf, cd, 4, "enumeration",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "enumeration",
                                      d->volumes[j]->enumeration);
-                    opac_element_str(wrbuf, cd, 4, "chronology",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "chronology",
                                      d->volumes[j]->chronology);
-                    opac_element_str(wrbuf, cd, 4, "enumAndChron",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "enumAndChron",
                                      d->volumes[j]->enumAndChron);
                     wrbuf_puts(wrbuf, "   </volume>\n");
                 }
@@ -131,23 +156,23 @@ void yaz_opac_decode_wrbuf(yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf)
                     wrbuf_puts(wrbuf,"   <circulation>\n");
                     opac_element_bool(wrbuf, 4, "availableNow",
                                       d->circulationData[j]->availableNow);
-                    opac_element_str(wrbuf, cd, 4, "availabiltyDate",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "availabiltyDate",
                                      d->circulationData[j]->availablityDate);
-                    opac_element_str(wrbuf, cd, 4, "availableThru",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "availableThru",
                                       d->circulationData[j]->availableThru);
-                    opac_element_str(wrbuf, cd, 4, "restrictions",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "restrictions",
                                       d->circulationData[j]->restrictions);
-                    opac_element_str(wrbuf, cd, 4, "itemId",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "itemId",
                                       d->circulationData[j]->itemId);
                     opac_element_bool(wrbuf, 4, "renewable",
                                       d->circulationData[j]->renewable);
                     opac_element_bool(wrbuf, 4, "onHold",
                                       d->circulationData[j]->onHold);
-                    opac_element_str(wrbuf, cd, 4, "enumAndChron",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "enumAndChron",
                                       d->circulationData[j]->enumAndChron);
-                    opac_element_str(wrbuf, cd, 4, "midspine",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "midspine",
                                       d->circulationData[j]->midspine);
-                    opac_element_str(wrbuf, cd, 4, "temporaryLocation",
+                    opac_element_str(wrbuf, cd1, cd2, 4, "temporaryLocation",
                                       d->circulationData[j]->temporaryLocation);
                     wrbuf_puts(wrbuf, "   </circulation>\n");
                 }
@@ -160,18 +185,15 @@ void yaz_opac_decode_wrbuf(yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf)
     wrbuf_puts(wrbuf, "</opacRecord>\n");
 }
 
-void yaz_display_OPAC(WRBUF wrbuf, Z_OPACRecord *opac_rec, int flags)
+void yaz_opac_decode_wrbuf(yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf)
 {
-    yaz_marc_t mt = yaz_marc_create();
-
-    yaz_marc_xml(mt, YAZ_MARC_MARCXML);
-    yaz_opac_decode_wrbuf(mt, opac_rec, wrbuf);
-    yaz_marc_destroy(mt);
+    yaz_opac_decode_wrbuf2(mt, r, wrbuf, 0);
 }
 
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab