hivex: Add 'hivexsh' program (shell for navigating registry hives).
[hivex.git] / hivex / hivexget.c
index 9bb6bbb..4f2419c 100644 (file)
@@ -16,6 +16,8 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+#include <config.h>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 #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
+
+enum { EXIT_NOT_FOUND = 2 };
+
 int
 main (int argc, char *argv[])
 {
+  setlocale (LC_ALL, "");
+  bindtextdomain (PACKAGE, LOCALEBASEDIR);
+  textdomain (PACKAGE);
+
   if (argc < 3 || argc > 4) {
-    fprintf (stderr, "hivexget regfile path [key]\n");
-    exit (1);
+    fprintf (stderr, _("hivexget regfile path [key]\n"));
+    exit (EXIT_FAILURE);
   }
+
   char *file = argv[1];
   char *path = argv[2];
   char *key = argv[3];          /* could be NULL */
 
   if (path[0] != '\\') {
-    fprintf (stderr, "hivexget: path must start with a \\ character\n");
-    exit (1);
+    fprintf (stderr, _("hivexget: path must start with a \\ character\n"));
+    exit (EXIT_FAILURE);
   }
   if (path[1] == '\\') {
   doubled:
-    fprintf (stderr, "hivexget: %s: \\ characters in path are doubled - are you escaping the path parameter correctly?\n", path);
-    exit (1);
+    fprintf (stderr, _("%s: %s: \\ characters in path are doubled - are you escaping the path parameter correctly?\n"), "hivexget", path);
+    exit (EXIT_FAILURE);
   }
 
   hive_h *h = hivex_open (file, 0);
   if (h == NULL) {
   error:
     perror (file);
-    exit (1);
+    exit (EXIT_FAILURE);
   }
 
   /* Navigate to the desired node. */
@@ -78,9 +96,9 @@ main (int argc, char *argv[])
       if (errno)
         goto error;
       /* else node not found */
-      fprintf (stderr, "hivexget: %s: %s: path element not found\n",
+      fprintf (stderr, _("hivexget: %s: %s: path element not found\n"),
                path, p);
-      exit (2);
+      exit (EXIT_NOT_FOUND);
     }
 
     p = pnext;
@@ -100,8 +118,8 @@ main (int argc, char *argv[])
       if (errno)
         goto error;
       /* else key not found */
-      fprintf (stderr, "hivexget: %s: key not found\n", key);
-      exit (2);
+      fprintf (stderr, _("%s: %s: key not found\n"), "hivexget", key);
+      exit (EXIT_NOT_FOUND);
     }
 
     /* Print the value. */
@@ -262,5 +280,5 @@ main (int argc, char *argv[])
   if (hivex_close (h) == -1)
     goto error;
 
-  exit (0);
+  exit (EXIT_SUCCESS);
 }