diff --git a/libbb/get_console.c b/libbb/get_console.c
index 9eb4190..0dc24cb 100644
--- a/libbb/get_console.c
+++ b/libbb/get_console.c
@@ -2,8 +2,8 @@
 /*
  * Utility routines.
  *
- * Copyright (C) many different people.  
- * If you wrote this, please acknowledge your work.
+ * Copyright (C) many different people.  If you wrote this, please
+ * acknowledge your work.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -29,27 +29,15 @@
 
 
 
-
-
 /* From <linux/kd.h> */ 
 static const int KDGKBTYPE = 0x4B33;  /* get keyboard type */
-static const int KB_84 = 0x01;
-static const int KB_101 = 0x02;    /* this is what we always answer */
 
-static int is_a_console(int fd)
-{
-	char arg;
 
-	arg = 0;
-	return (ioctl(fd, KDGKBTYPE, &arg) == 0
-			&& ((arg == KB_101) || (arg == KB_84)));
-}
-
-static int open_a_console(char *fnam)
+static int open_a_console(const char *fnam)
 {
 	int fd;
 
-	/* try read-only */
+	/* try read-write */
 	fd = open(fnam, O_RDWR);
 
 	/* if failed, try read-only */
@@ -60,17 +48,6 @@
 	if (fd < 0 && errno == EACCES)
 		fd = open(fnam, O_WRONLY);
 
-	/* if failed, fail */
-	if (fd < 0)
-		return -1;
-
-	/* if not a console, fail */
-	if (!is_a_console(fd)) {
-		close(fd);
-		return -1;
-	}
-
-	/* success */
 	return fd;
 }
 
@@ -78,32 +55,37 @@
  * Get an fd for use with kbd/console ioctls.
  * We try several things because opening /dev/console will fail
  * if someone else used X (which does a chown on /dev/console).
- *
- * if tty_name is non-NULL, try this one instead.
  */
 
 int get_console_fd(void)
 {
 	int fd;
 
-	fd = open_a_console(CURRENT_TTY);
-	if (fd >= 0)
-		return fd;
+	static const char * const choise_console_names[] = {
+		CONSOLE_DEV, CURRENT_VC, CURRENT_TTY
+	};
 
-	fd = open_a_console(CURRENT_VC);
-	if (fd >= 0)
-		return fd;
+	for (fd = 2; fd >= 0; fd--) {
+		int fd4name;
+		int choise_fd;
+		char arg;
 
-	fd = open_a_console(CONSOLE_DEV);
-	if (fd >= 0)
-		return fd;
+		fd4name = open_a_console(choise_console_names[fd]);
+	chk_std:
+		choise_fd = fd4name >= 0 ? fd4name : fd;
 
-	for (fd = 0; fd < 3; fd++)
-		if (is_a_console(fd))
-			return fd;
+		arg = 0;
+		if (ioctl(choise_fd, KDGKBTYPE, &arg) == 0)
+			return choise_fd;
+		if(fd4name >= 0) {
+			close(fd4name);
+			fd4name = -1;
+			goto chk_std;
+		}
+	}
 
 	bb_error_msg("Couldn't get a file descriptor referring to the console");
-	return -1;					/* total failure */
+	return fd;                      /* total failure */
 }
 
 
diff --git a/shell/ash.c b/shell/ash.c
index ec33a10..521d65a 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -5628,7 +5628,7 @@
 	char *start;
 	char *endname;
 	int metaflag;
-	struct stat64 statb;
+	struct stat statb;
 	DIR *dirp;
 	struct dirent *dp;
 	int atend;
@@ -5671,7 +5671,7 @@
 				p++;
 			*enddir++ = *p;
 		} while (*p++);
-		if (metaflag == 0 || lstat64(expdir, &statb) >= 0)
+		if (metaflag == 0 || lstat(expdir, &statb) >= 0)
 			addfname(expdir);
 		return;
 	}
