コード例 #1
0
ファイル: api.c プロジェクト: BATYD-Turksat/tvheadend
void
api_register ( const api_hook_t *hook )
{
  api_link_t *t;
  SKEL_ALLOC(api_skel);
  api_skel->hook = hook;
  t = RB_INSERT_SORTED(&api_hook_tree, api_skel, link, ah_cmp);
  if (t) {
    tvherror("api", "trying to re-register subsystem");
  } else {
    SKEL_USED(api_skel);
  }
}
コード例 #2
0
ファイル: lang_str.c プロジェクト: InuSasha/tvheadend
/* Internal insertion routine */
static int _lang_str_add
  ( lang_str_t *ls, const char *str, const char *lang, int update, int append )
{
  int save = 0;
  lang_str_ele_t *e;

  if (!str) return 0;

  /* Get proper code */
  if (!lang) lang = lang_code_preferred();
  if (!(lang = lang_code_get(lang))) return 0;

  /* Create skel */
  SKEL_ALLOC(lang_str_ele_skel);
  lang_str_ele_skel->lang = lang;

  /* Create */
  e = RB_INSERT_SORTED(ls, lang_str_ele_skel, link, _lang_cmp);
  if (!e) {
    lang_str_ele_skel->str = strdup(str);
    SKEL_USED(lang_str_ele_skel);
    save = 1;

  /* Append */
  } else if (append) {
    e->str = realloc(e->str, strlen(e->str) + strlen(str) + 1);
    strcat(e->str, str);
    save = 1;

  /* Update */
  } else if (update && strcmp(str, e->str)) {
    free(e->str);
    e->str = strdup(str);
    save = 1;
  }
  
  return save;
}