📄 entry.c
字号:
case VLC_CONFIG_VALUE: { if (IsConfigIntegerType (item->i_type)) { item->orig.i = item->saved.i = item->value.i = va_arg (ap, int); ret = 0; } else if (IsConfigFloatType (item->i_type)) { item->orig.f = item->saved.f = item->value.f = va_arg (ap, double); ret = 0; } else if (IsConfigStringType (item->i_type)) { const char *value = va_arg (ap, const char *); item->value.psz = value ? strdup (value) : NULL; item->orig.psz = value ? strdup (value) : NULL; item->saved.psz = value ? strdup (value) : NULL; ret = 0; } break; } case VLC_CONFIG_RANGE: { if (IsConfigIntegerType (item->i_type)) { item->min.i = va_arg (ap, int); item->max.i = va_arg (ap, int); ret = 0; } else if (IsConfigFloatType (item->i_type)) { item->min.f = va_arg (ap, double); item->max.f = va_arg (ap, double); ret = 0; } break; } case VLC_CONFIG_ADVANCED: item->b_advanced = true; ret = 0; break; case VLC_CONFIG_VOLATILE: item->b_unsaveable = true; ret = 0; break; case VLC_CONFIG_PERSISTENT: item->b_autosave = true; ret = 0; break; case VLC_CONFIG_RESTART: item->b_restart = true; ret = 0; break; case VLC_CONFIG_PRIVATE: item->b_internal = true; ret = 0; break; case VLC_CONFIG_REMOVED: item->b_removed = true; ret = 0; break; case VLC_CONFIG_CAPABILITY: { const char *cap = va_arg (ap, const char *); item->psz_type = cap ? strdup (cap) : NULL; ret = 0; break; } case VLC_CONFIG_SHORTCUT: item->i_short = va_arg (ap, int); ret = 0; break; case VLC_CONFIG_LIST_NODOMAIN: { size_t len = va_arg (ap, size_t); if (IsConfigIntegerType (item->i_type)) { const int *src = va_arg (ap, const int *); const char *const *text = va_arg (ap, const char *const *); ret = vlc_config_set (item, VLC_CONFIG_LIST, NULL, len, src, text); } else if (IsConfigStringType (item->i_type)) { const char *const *src = va_arg (ap, const char *const *); const char *const *text = va_arg (ap, const char *const *); ret = vlc_config_set (item, VLC_CONFIG_LIST, NULL, len, src, text); } break; } case VLC_CONFIG_ADD_ACTION_NODOMAIN: { vlc_callback_t cb = va_arg (ap, vlc_callback_t); const char *name = va_arg (ap, const char *); ret = vlc_config_set (item, VLC_CONFIG_ADD_ACTION, NULL, cb, name); break; } case VLC_CONFIG_OLDNAME: { const char *oldname = va_arg (ap, const char *); item->psz_oldname = oldname ? strdup (oldname) : NULL; ret = 0; break; } case VLC_CONFIG_SAFE: item->b_safe = true; ret = 0; break; case VLC_CONFIG_DESC: { const char *domain = va_arg (ap, const char *); const char *text = va_arg (ap, const char *); const char *longtext = va_arg (ap, const char *); if (domain == NULL) domain = PACKAGE; item->psz_text = text ? strdup (dgettext (domain, text)) : NULL; item->psz_longtext = longtext ? strdup (dgettext (domain, longtext)) : NULL; ret = 0; break; } case VLC_CONFIG_LIST: { const char *domain = va_arg (ap, const char *); size_t len = va_arg (ap, size_t); char **dtext = malloc (sizeof (char *) * (len + 1)); if (dtext == NULL) break; /* Copy values */ if (IsConfigIntegerType (item->i_type)) { const int *src = va_arg (ap, const int *); int *dst = malloc (sizeof (int) * (len + 1)); if (dst != NULL) { memcpy (dst, src, sizeof (int) * len); dst[len] = 0; } item->pi_list = dst; } else#if 0 if (IsConfigFloatType (item->i_type)) { const float *src = va_arg (ap, const float *); float *dst = malloc (sizeof (float) * (len + 1)); if (dst != NULL) { memcpy (dst, src, sizeof (float) * len); dst[len] = 0.; } item->pf_list = dst; } else#endif if (IsConfigStringType (item->i_type)) { const char *const *src = va_arg (ap, const char *const *); char **dst = malloc (sizeof (char *) * (len + 1)); if (dst != NULL) { for (size_t i = 0; i < len; i++) dst[i] = src[i] ? strdup (src[i]) : NULL; dst[len] = NULL; } item->ppsz_list = dst; } else break; /* Copy textual descriptions */ if (domain == NULL) domain = PACKAGE; const char *const *text = va_arg (ap, const char *const *); if (text != NULL) { for (size_t i = 0; i < len; i++) dtext[i] = text[i] ? strdup (dgettext (domain, text[i])) : NULL; dtext[len] = NULL; item->ppsz_list_text = dtext; } else { free (dtext); item->ppsz_list_text = NULL; } item->i_list = len; item->pf_update_list = va_arg (ap, vlc_callback_t); ret = 0; break; } case VLC_CONFIG_ADD_ACTION: { const char *domain = va_arg (ap, const char *); vlc_callback_t cb = va_arg (ap, vlc_callback_t), *tabcb; const char *name = va_arg (ap, const char *); char **tabtext; tabcb = realloc (item->ppf_action, (item->i_action + 2) * sizeof (cb)); if (tabcb == NULL) break; item->ppf_action = tabcb; tabcb[item->i_action] = cb; tabcb[item->i_action + 1] = NULL; tabtext = realloc (item->ppsz_action_text, (item->i_action + 2) * sizeof (name)); if (tabtext == NULL) break; item->ppsz_action_text = tabtext; if (domain == NULL) domain = PACKAGE; if (name) tabtext[item->i_action] = strdup (dgettext (domain, name)); else tabtext[item->i_action] = NULL; tabtext[item->i_action + 1] = NULL; item->i_action++; ret = 0; break; } } va_end (ap); return ret;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -