hivex: Add HIVEX_OPEN_WRITE flag to allow hive to be opened for writing.
[libguestfs.git] / hivex / hivexml.c
index 9dd394e..90cb22b 100644 (file)
 
 #include "hivex.h"
 
+#ifdef HAVE_GETTEXT
+#include "gettext.h"
+#define _(str) dgettext(PACKAGE, (str))
+//#define N_(str) dgettext(PACKAGE, (str))
+#else
+#define _(str) str
+//#define N_(str) str
+#endif
+
 /* Callback functions. */
 static int node_start (hive_h *, void *, hive_node_h, const char *name);
 static int node_end (hive_h *, void *, hive_node_h, const char *name);
@@ -58,14 +67,18 @@ static struct hivex_visitor visitor = {
 #define XML_CHECK(proc, args)                                           \
   do {                                                                  \
     if ((proc args) == -1) {                                            \
-      fprintf (stderr, "%s: failed to write XML document\n", #proc);    \
-      exit (1);                                                         \
+      fprintf (stderr, _("%s: failed to write XML document\n"), #proc); \
+      exit (EXIT_FAILURE);                                              \
     }                                                                   \
   } while (0)
 
 int
 main (int argc, char *argv[])
 {
+  setlocale (LC_ALL, "");
+  bindtextdomain (PACKAGE, LOCALEBASEDIR);
+  textdomain (PACKAGE);
+
   int c;
   int open_flags = 0;
   int visit_flags = 0;
@@ -80,19 +93,19 @@ main (int argc, char *argv[])
       break;
     default:
       fprintf (stderr, "hivexml [-dk] regfile > output.xml\n");
-      exit (1);
+      exit (EXIT_FAILURE);
     }
   }
 
   if (optind + 1 != argc) {
-    fprintf (stderr, "hivexml: missing name of input file\n");
-    exit (1);
+    fprintf (stderr, _("hivexml: missing name of input file\n"));
+    exit (EXIT_FAILURE);
   }
 
   hive_h *h = hivex_open (argv[optind], open_flags);
   if (h == NULL) {
     perror (argv[optind]);
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 
   /* Note both this macro, and xmlTextWriterStartDocument leak memory.  There
@@ -104,8 +117,8 @@ main (int argc, char *argv[])
   xmlTextWriterPtr writer;
   writer = xmlNewTextWriterFilename ("/dev/stdout", 0);
   if (writer == NULL) {
-    fprintf (stderr, "xmlNewTextWriterFilename: failed to create XML writer\n");
-    exit (1);
+    fprintf (stderr, _("xmlNewTextWriterFilename: failed to create XML writer\n"));
+    exit (EXIT_FAILURE);
   }
 
   XML_CHECK (xmlTextWriterStartDocument, (writer, NULL, "utf-8", NULL));
@@ -113,19 +126,19 @@ main (int argc, char *argv[])
 
   if (hivex_visit (h, &visitor, sizeof visitor, writer, visit_flags) == -1) {
     perror (argv[optind]);
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 
   if (hivex_close (h) == -1) {
     perror (argv[optind]);
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 
   XML_CHECK (xmlTextWriterEndElement, (writer));
   XML_CHECK (xmlTextWriterEndDocument, (writer));
   xmlFreeTextWriter (writer);
 
-  exit (0);
+  exit (EXIT_SUCCESS);
 }
 
 static int