+ buf[2048 + 1] = '\0';
+
+ /* Use prefilter_cmd if set */
+ if (prefilter_cmd == NULL) {
+ fp = fopen(fname, mode == OS_BINARY ? "rb" : "r");
+ if (!fp) {
+ return (-1);
+ }
+ } else {
+ char cmd[OS_MAXSTR];
+ size_t target_length = strlen(prefilter_cmd) + 1 + strlen(fname);
+ int res = snprintf(cmd, sizeof(cmd), "%s %s", prefilter_cmd, fname);
+ if (res < 0 || (unsigned int)res != target_length) {
+ return (-1);
+ }
+ fp = popen(cmd, "r");
+ if (!fp) {
+ return (-1);
+ }
+ }