]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Move password-querying (util-version) routines to grub-core/osdep.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 8 Oct 2013 15:51:39 +0000 (17:51 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 8 Oct 2013 15:51:39 +0000 (17:51 +0200)
ChangeLog
Makefile.util.def
grub-core/lib/crypto.c
grub-core/osdep/password.c [new file with mode: 0644]
grub-core/osdep/unix/password.c [new file with mode: 0644]
grub-core/osdep/windows/password.c [new file with mode: 0644]

index 304d27e1beaa642c10048d97fa8d7dd81094eebd..c08a045f3edbbf85039c3a33fd3e5045912dbf0f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-10-08  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Move password-querying (util-version) routines to grub-core/osdep.
+
 2013-10-08  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Move sleep routines to grub-core/osdep.
index 229489a7a93917d5817237bca31b3eb7bf236b6b..9d781be141ecec84e6b9babe269e6212a4a691f9 100644 (file)
@@ -18,6 +18,7 @@ library = {
   common = grub-core/osdep/hostdisk.c;
   common = grub-core/osdep/unix/hostdisk.c;
   common = grub-core/osdep/sleep.c;
+  common = grub-core/osdep/password.c;
   common = grub-core/kern/emu/misc.c;
   common = grub-core/kern/emu/mm.c;
   common = grub-core/kern/env.c;
index dc1cb58cb138362ce45f78fd3c2c7aaaecb540b0..4d360aa6721c7b226d9242810085cf164b01916a 100644 (file)
 #include <grub/i18n.h>
 #include <grub/env.h>
 
-#ifdef GRUB_UTIL
-#if !defined (_WIN32) || defined (__CYGWIN__)
-#include <termios.h>
-#else
-#include <windows.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#endif
-
 GRUB_MOD_LICENSE ("GPLv3+");
 
 struct grub_crypto_hmac_handle
@@ -441,67 +430,11 @@ grub_crypto_memcmp (const void *a, const void *b, grub_size_t n)
   return !!counter;
 }
 
+#ifndef GRUB_UTIL
+
 int
 grub_password_get (char buf[], unsigned buf_size)
 {
-#ifdef GRUB_UTIL
-#if !defined (_WIN32) || defined (__CYGWIN__)
-  FILE *in;
-  struct termios s, t;
-  int tty_changed = 0;
-  char *ptr;
-
-  grub_refresh ();
-
-  /* Disable echoing. Based on glibc.  */
-  in = fopen ("/dev/tty", "w+c");
-  if (in == NULL)
-    in = stdin;
-
-  if (tcgetattr (fileno (in), &t) == 0)
-    {
-      /* Save the old one. */
-      s = t;
-      /* Tricky, tricky. */
-      t.c_lflag &= ~(ECHO|ISIG);
-      tty_changed = (tcsetattr (fileno (in), TCSAFLUSH, &t) == 0);
-    }
-  else
-    tty_changed = 0;
-  fgets (buf, buf_size, stdin);
-  ptr = buf + strlen (buf) - 1;
-  while (buf <= ptr && (*ptr == '\n' || *ptr == '\r'))
-    *ptr-- = 0;
-  /* Restore the original setting.  */
-  if (tty_changed)
-    (void) tcsetattr (fileno (in), TCSAFLUSH, &s);
-
-  grub_xputs ("\n");
-  grub_refresh ();
-
-  return 1;
-#else
-  HANDLE hStdin = GetStdHandle (STD_INPUT_HANDLE); 
-  DWORD mode = 0;
-  char *ptr;
-
-  grub_refresh ();
-  
-  GetConsoleMode (hStdin, &mode);
-  SetConsoleMode (hStdin, mode & (~ENABLE_ECHO_INPUT));
-
-  fgets (buf, buf_size, stdin);
-  ptr = buf + strlen (buf) - 1;
-  while (buf <= ptr && (*ptr == '\n' || *ptr == '\r'))
-    *ptr-- = 0;
-
-  SetConsoleMode (hStdin, mode);
-
-  grub_refresh ();
-
-  return 1;
-#endif
-#else
   unsigned cur_len = 0;
   int key;
 
@@ -536,6 +469,6 @@ grub_password_get (char buf[], unsigned buf_size)
   grub_refresh ();
 
   return (key != '\e');
-#endif
 }
+#endif
 
diff --git a/grub-core/osdep/password.c b/grub-core/osdep/password.c
new file mode 100644 (file)
index 0000000..1a7615e
--- /dev/null
@@ -0,0 +1,5 @@
+#if defined (__MINGW32__) && !defined (__CYGWIN__)
+#include "windows/password.c"
+#else
+#include "unix/password.c"
+#endif
diff --git a/grub-core/osdep/unix/password.c b/grub-core/osdep/unix/password.c
new file mode 100644 (file)
index 0000000..2e647c7
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006
+ *                2007, 2008, 2009, 2010, 2011, 2012, 2013  Free Software Foundation, Inc.
+ *
+ *  GRUB is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  GRUB is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <grub/crypto.h>
+#include <grub/mm.h>
+#include <grub/term.h>
+
+#include <termios.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+int
+grub_password_get (char buf[], unsigned buf_size)
+{
+  FILE *in;
+  struct termios s, t;
+  int tty_changed = 0;
+  char *ptr;
+
+  grub_refresh ();
+
+  /* Disable echoing. Based on glibc.  */
+  in = fopen ("/dev/tty", "w+c");
+  if (in == NULL)
+    in = stdin;
+
+  if (tcgetattr (fileno (in), &t) == 0)
+    {
+      /* Save the old one. */
+      s = t;
+      /* Tricky, tricky. */
+      t.c_lflag &= ~(ECHO|ISIG);
+      tty_changed = (tcsetattr (fileno (in), TCSAFLUSH, &t) == 0);
+    }
+  else
+    tty_changed = 0;
+  fgets (buf, buf_size, stdin);
+  ptr = buf + strlen (buf) - 1;
+  while (buf <= ptr && (*ptr == '\n' || *ptr == '\r'))
+    *ptr-- = 0;
+  /* Restore the original setting.  */
+  if (tty_changed)
+    (void) tcsetattr (fileno (in), TCSAFLUSH, &s);
+
+  grub_xputs ("\n");
+  grub_refresh ();
+
+  return 1;
+}
diff --git a/grub-core/osdep/windows/password.c b/grub-core/osdep/windows/password.c
new file mode 100644 (file)
index 0000000..1d3af0c
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006
+ *                2007, 2008, 2009, 2010, 2011, 2012, 2013  Free Software Foundation, Inc.
+ *
+ *  GRUB is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  GRUB is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <grub/crypto.h>
+#include <grub/mm.h>
+#include <grub/term.h>
+
+#include <windows.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+int
+grub_password_get (char buf[], unsigned buf_size)
+{
+  HANDLE hStdin = GetStdHandle (STD_INPUT_HANDLE); 
+  DWORD mode = 0;
+  char *ptr;
+
+  grub_refresh ();
+  
+  GetConsoleMode (hStdin, &mode);
+  SetConsoleMode (hStdin, mode & (~ENABLE_ECHO_INPUT));
+
+  fgets (buf, buf_size, stdin);
+  ptr = buf + strlen (buf) - 1;
+  while (buf <= ptr && (*ptr == '\n' || *ptr == '\r'))
+    *ptr-- = 0;
+
+  SetConsoleMode (hStdin, mode);
+
+  grub_refresh ();
+
+  return 1;
+}