]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
main : check if input files exist before proceeding (#1872)
authorDavidson Francis <redacted>
Mon, 19 Feb 2024 08:51:26 +0000 (05:51 -0300)
committerGitHub <redacted>
Mon, 19 Feb 2024 08:51:26 +0000 (10:51 +0200)
Until the most recent commit (3d42463), the main.cpp sample file does
not check whether the input files exist or not. Consequently, the
model is loaded first before reporting whether there was a failure or
not when processing a file. In environments with HDD, this can take
about 50 seconds or more, depending on the loaded model.

This commit addresses this issue by checking in advance whether the
input files exist or not.

examples/main/main.cpp

index 8abb27fc4e7909199c57410e49e0a7456289e0b5..da4ba6a71ed3f541882bcaf0a0f52438aeb7486a 100644 (file)
@@ -10,6 +10,8 @@
 #include <vector>
 #include <cstring>
 
+#include <sys/stat.h>
+
 #if defined(_MSC_VER)
 #pragma warning(disable: 4244 4267) // possible loss of data
 #endif
@@ -841,6 +843,20 @@ int main(int argc, char ** argv) {
         return 1;
     }
 
+    // remove non-existent files
+    for (auto it = params.fname_inp.begin(); it != params.fname_inp.end();) {
+        struct stat st;
+        const auto fname_inp = it->c_str();
+
+        if (stat(fname_inp, &st) == -1) {
+            fprintf(stderr, "error: input file not found '%s'\n", fname_inp);
+            it = params.fname_inp.erase(it);
+            continue;
+        }
+
+        it++;
+    }
+
     if (params.fname_inp.empty()) {
         fprintf(stderr, "error: no input files specified\n");
         whisper_print_usage(argc, argv, params);