Пример #1
0
int
metadata_folder_to_season(const char *s,
			  int *seasonp, rstr_t **titlep)
{
  int i;
  for(i = 0; folder_to_season[i] != NULL; i++) {
    hts_regex_t re;
    if(!hts_regcomp(&re, folder_to_season[i])) {
      hts_regmatch_t matches[8];
      if(!hts_regexec(&re, s, 8, matches, 0)) {
	hts_regfree(&re);
	if(seasonp != NULL)
	  *seasonp = atoi(s + matches[2].rm_so);
	if(titlep != NULL) {
	  int l = matches[1].rm_eo - matches[1].rm_so;
	  if(l > 0)
	    *titlep = rstr_allocl(s + matches[i].rm_so, l);
	  else
	    *titlep = NULL;
	}
	return 0;
      }
      hts_regfree(&re);
    }
  }
  return -1;
}
Пример #2
0
static void
es_route_destroy(es_resource_t *eres)
{
  es_route_t *er = (es_route_t *)eres;

  es_root_unregister(eres->er_ctx->ec_duk, eres);

  hts_mutex_lock(&route_mutex);
  LIST_REMOVE(er, er_link);
  hts_mutex_unlock(&route_mutex);

  free(er->er_pattern);
  hts_regfree(&er->er_regex);

  es_resource_unlink(&er->super);
}