diff --git a/Makefile b/Makefile
index 1bd9e676..69b01fe2 100644
--- a/Makefile
+++ b/Makefile
@@ -1,23 +1,34 @@
+#------------------------------------------------------------------------
 #
 # $Id$
 #
+# Makefile
+#
 
-TARGET = avrprog
+TARGET      = avrprog
 
-DEST   = ${HOME}/bin/0.${ARCH}
+PREFIX      ?= /usr/local
+BINDIR       = ${PREFIX}/bin
 
-all : ${TARGET}
+INSTALL      = /usr/bin/install -c -o root -g wheel
 
-CFLAGS = -Wall --pedantic -g
+CFLAGS += -Wall --pedantic
 
-${TARGET} : avrprog.c
-	${CC} ${CFLAGS} -o ${TARGET} avrprog.c
+INSTALL_PROGRAM = ${INSTALL} -m 555 -s
+INSTALL_DATA    = ${INSTALL} -m 444
+INSTALL_MANUAL  = ${INSTALL_DATA}
+
+
+all : $(TARGET)
+
+$(TARGET) : avrprog.c
+	$(CC) $(CFLAGS) -o $(TARGET) $<
 
 clean :
-	rm -f *.o ${TARGET} *~
+	rm -f *~ *.core $(TARGET)
 
-install : ${DEST}/${TARGET}
+install : ${BINDIR}/$(TARGET)
 
-${DEST}/${TARGET} : ${TARGET}
-	cp -p ${TARGET} $@
+${BINDIR}/$(TARGET) : $(TARGET)
+	${INSTALL_PROGRAM} $(TARGET) ${BINDIR}
 
diff --git a/avrprog.c b/avrprog.c
index 02e89de3..aad8b43c 100644
--- a/avrprog.c
+++ b/avrprog.c
@@ -468,6 +468,8 @@ int avr_read ( int fd, struct avrpart * p, AVRMEM memtype )
   unsigned char * buf;
   int bufsize;
 
+  start = 0;
+
   switch (memtype) {
     case AVR_FLASH  :
       memt    = AVR_FLASH_LO;
@@ -1009,6 +1011,10 @@ int fileio_rbin ( struct fioparms * fio,
     case FIO_WRITE:
       rc = fwrite(buf, 1, size, f);
       break;
+    default:
+      fprintf(stderr, "%s: fileio: invalid operation=%d\n",
+              progname, fio->op);
+      return -1;
   }
 
   if (rc < size) {
@@ -1697,6 +1703,7 @@ int go_interactive ( int fd, struct avrpart * p )
   int     argc;
   char ** argv;
 
+  rc = 0;
   fprintf(stdout, "avrprog> ");
   while (fgets(cmdbuf, MAX_LINE_LEN, stdin) != NULL) {
     len = strlen(cmdbuf);
@@ -1722,7 +1729,6 @@ int go_interactive ( int fd, struct avrpart * p )
       fprintf(stdout, "%s ", argv[i]);
     fprintf(stdout, "\n");
 
-#if 1
     /* run the command */
     rc = do_cmd(fd, p, argc, argv);
     free(argv);
@@ -1730,7 +1736,6 @@ int go_interactive ( int fd, struct avrpart * p )
       rc = 0;
       break;
     }
-#endif
 
     fprintf(stdout, "avrprog> ");
   }