hFILE *hopen(const char *fname, const char *mode, ...) { const struct hFILE_scheme_handler *handler = find_scheme_handler(fname); if (handler) { if (strchr(mode, ':') == NULL) return handler->open(fname, mode); else if (handler->priority >= 2000 && handler->vopen) { hFILE *fp; va_list arg; va_start(arg, mode); fp = handler->vopen(fname, mode, arg); va_end(arg); return fp; } else { errno = ENOTSUP; return NULL; } } else if (strcmp(fname, "-") == 0) return hopen_fd_stdinout(mode); else return hopen_fd(fname, mode); }
int hisremote(const char *fname) { const struct hFILE_scheme_handler *handler = find_scheme_handler(fname); return handler? handler->isremote(fname) : 0; }