Some changes related to "-f -"
[oweals/nmrpflash.git] / nmrp.c
diff --git a/nmrp.c b/nmrp.c
index 0614f14d51225a780d275505f6565560ad808d7b..66c166713a988646f0cc3d44dee56fb16ab26903 100644 (file)
--- a/nmrp.c
+++ b/nmrp.c
@@ -290,7 +290,7 @@ int nmrp_do(struct nmrpd_args *args)
                return 1;
        }
 
-       if (access(args->filename, R_OK) == -1) {
+       if (strcmp(args->filename, "-") && access(args->filename, R_OK) == -1) {
                fprintf(stderr, "Error accessing file '%s'.\n", args->filename);
                return 1;
        }
@@ -417,14 +417,27 @@ int nmrp_do(struct nmrpd_args *args)
                                        break;
                                }
 
-                               if (!args->tftpcmd) {
-                                       printf("Uploading %s ... ", args->filename);
-                                       fflush(stdout);
-                                       err = tftp_put(args);
-                               } else {
-                                       printf("Running %s ... ", args->tftpcmd);
+                               err = 0;
+
+                               if (args->tftpcmd) {
+                                       printf("Executing '%s' ... ", args->tftpcmd);
                                        fflush(stdout);
                                        err = system(args->tftpcmd);
+                                       if (!err) {
+                                               printf("OK\n");
+                                       } else {
+                                               printf("ERR\n");
+                                       }
+                               }
+
+                               if (!err && args->filename) {
+                                       if (!strcmp(args->filename, "-")) {
+                                               printf("Uploading from stdin ... ");
+                                       } else {
+                                               printf("Uploading %s ... ", args->filename);
+                                       }
+                                       fflush(stdout);
+                                       err = tftp_put(args);
                                }
 
                                if (!err) {
@@ -482,6 +495,8 @@ int nmrp_do(struct nmrpd_args *args)
 
        err = 0;
 
+       printf("Reboot your device now.\n");
+
 out:
        signal(SIGINT, sigh_orig);
        gsock = NULL;