diff --git a/avrdude/term.c b/avrdude/term.c
index c5ea1aac..5f8a27bf 100644
--- a/avrdude/term.c
+++ b/avrdude/term.c
@@ -196,7 +196,7 @@ int hexdump_buf ( FILE * f, int startaddr, char * buf, int len )
 int cmd_dump ( int fd, struct avrpart * p, int argc, char * argv[] )
 {
   char * e;
-  int i, j;
+  int i, j, l;
   unsigned short daddr;
   char * buf;
   int maxsize;
@@ -213,10 +213,11 @@ int cmd_dump ( int fd, struct avrpart * p, int argc, char * argv[] )
       return -1;
     }
 
-    if (strcmp(argv[1],"flash")==0) {
+    l = strlen(argv[1]);
+    if (strncasecmp(argv[1],"flash",l)==0) {
       memtype = AVR_FLASH;
     }
-    else if (strcmp(argv[1],"eeprom")==0) {
+    else if (strncasecmp(argv[1],"eeprom",l)==0) {
       memtype = AVR_EEPROM;
     }
     else {
@@ -300,7 +301,7 @@ int cmd_dump ( int fd, struct avrpart * p, int argc, char * argv[] )
 int cmd_write ( int fd, struct avrpart * p, int argc, char * argv[] )
 {
   char * e;
-  int i, j;
+  int i, j, l;
   int len, maxsize;
   AVRMEM memtype;
   unsigned short addr, daddr;
@@ -313,11 +314,12 @@ int cmd_write ( int fd, struct avrpart * p, int argc, char * argv[] )
     return -1;
   }
 
-  if (strcmp(argv[1],"flash")==0) {
+  l = strlen(argv[1]);
+  if (strncasecmp(argv[1],"flash",l)==0) {
     memtype = AVR_FLASH;
     maxsize = p->flash_size;
   }
-  else if (strcmp(argv[1],"eeprom")==0) {
+  else if (strncasecmp(argv[1],"eeprom",l)==0) {
     memtype = AVR_EEPROM;
     maxsize = p->eeprom_size;
   }
@@ -592,7 +594,7 @@ int terminal_mode ( int fd, struct avrpart * p )
   rc = 0;
   while ((cmdbuf = readline("avrprog> ")) != NULL) {
     len = strlen(cmdbuf);
-    if (len > 1)
+    if (len >= 1)
       add_history(cmdbuf);
 
     /*