Пример #1
0
static int
be_file_open(prop_t *page, const char *url)
{
  struct fa_stat fs;
  char errbuf[200];

  if(fa_stat(url, &fs, errbuf, sizeof(errbuf)))
    return nav_open_error(page, errbuf);

  return fs.fs_type == CONTENT_DIR ? 
    file_open_dir(page, url) : file_open_file(page, url, &fs);
}
Пример #2
0
static int
be_file_open(prop_t *page, const char *url, int sync)
{
  struct fa_stat fs;
  char errbuf[200];

  if(fa_stat(url, &fs, errbuf, sizeof(errbuf))) {
    nav_open_error(page, errbuf);
  } else if(fs.fs_type == CONTENT_DIR) {
    file_open_dir(page, url, fs.fs_mtime);
  } else {
    file_open_file(page, url, &fs);
  }
  return 0;
}
Пример #3
0
static int
file_open_file(prop_t *page, const char *url, struct fa_stat *fs)
{
  char redir[URL_MAX];
  char errbuf[200];
  int c;
  prop_t *meta;

  meta = prop_create_root("metadata");

  c = fa_probe(meta, url, redir, sizeof(redir), errbuf, sizeof(errbuf), fs, 1);

  switch(c) {
  case CONTENT_ARCHIVE:
  case CONTENT_ALBUM:
    prop_destroy(meta);
    return file_open_dir(page, redir);

  case CONTENT_AUDIO:
    if(!file_open_audio(page, url)) {
      prop_destroy(meta);
      return 0;
    }

    playqueue_play(url, meta, 0);
    return playqueue_open(page);

  case CONTENT_VIDEO:
  case CONTENT_DVD:
    prop_destroy(meta);
    return backend_open_video(page, url);

  case CONTENT_IMAGE:
    return file_open_image(page, meta);

  case CONTENT_PLUGIN:
    plugin_open_file(page, url);
    return 0;

  default:
    prop_destroy(meta);
    return nav_open_error(page, errbuf);
  }
}