Go to the documentation of this file.
23 #ifndef LIBVLC_VARIABLES_H
24 # define LIBVLC_VARIABLES_H 1
48 # define vlc_internals(o) ((o)->priv)
49 # define vlc_externals(priv) (abort(), (void *)(priv))
void vlc_cond_broadcast(vlc_cond_t *cond)
Wakes up all threads waiting on a condition variable.
Definition: threads.c:280
void(* pf_free)(vlc_value_t *)
Definition: variables.c:61
static int CmpBool(vlc_value_t v, vlc_value_t w)
Definition: variables.c:103
vlc_callback_t pf_value_callback
Definition: variables.c:72
static void TriggerListCallback(vlc_object_t *obj, variable_t *var, const char *name, int action, vlc_value_t *val)
Definition: variables.c:264
static size_t read_mpi(uint8_t *dst, const uint8_t *buf, size_t buflen, size_t bits)
Definition: update_crypto.c:77
@ GENERIC_KEY_SIGNATURE
Definition: update.h:40
size_t count
Definition: core.c:401
static int varcmp(const void *a, const void *b)
Definition: variables.c:141
int i_type
The type of the variable.
Definition: variables.c:80
int(* pf_cmp)(vlc_value_t, vlc_value_t)
Definition: variables.c:59
@ VLC_VAR_BOOL_TOGGLE
Invert a boolean value (param ignored)
Definition: vlc_variables.h:112
#define TAB_CLEAN(count, tab)
Definition: vlc_arrays.h:61
#define CRC24_POLY
Definition: update_crypto.c:353
char ** var_GetAllNames(vlc_object_t *obj)
Return a list of all variable names.
Definition: variables.c:1155
int() var_Create(vlc_object_t *p_this, const char *psz_name, int i_type)
Creates a VLC object variable.
Definition: variables.c:291
#define VLC_VAR_SETVALUE
Set the value of this variable without triggering any callbacks.
Definition: vlc_variables.h:87
#define VLC_VAR_CLASS
Definition: vlc_variables.h:40
static int vlc_stream_GetSize(stream_t *s, uint64_t *size)
Get the size of the stream.
Definition: vlc_stream.h:331
#define VLC_VAR_CLEARCHOICES
Definition: vlc_variables.h:98
#define packet_header_len(c)
Definition: update_crypto.c:53
public_key_t * download_key(vlc_object_t *p_this, const uint8_t *p_longid, const uint8_t *p_signature_issuer)
Definition: update_crypto.c:931
@ leaf
Definition: vlc_fixups.h:505
int strcasecmp(const char *, const char *)
const char * psz_name
Definition: text_style.c:53
#define ARRAY_APPEND(array, elem)
Definition: vlc_arrays.h:203
#define VLC_VAR_GETCHOICES
Definition: vlc_variables.h:99
void * p_callback
Definition: variables.c:74
int() var_InheritURational(vlc_object_t *object, unsigned *num, unsigned *den, const char *var)
Inherit a string as a fractional value.
Definition: variables.c:1073
#define VLC_VAR_SETTEXT
Definition: vlc_variables.h:89
int32_t x
Definition: vlc_common.h:464
#define unlikely(p)
Predicted false condition.
Definition: vlc_common.h:227
void() var_DelCallback(vlc_object_t *p_this, const char *psz_name, vlc_callback_t pf_callback, void *p_data)
Deregisters a callback from a variable.
Definition: variables.c:854
@ TEXT_SIGNATURE
Definition: update.h:37
char * psz_text
The variable display name, mainly for use by the interfaces.
Definition: variables.c:76
static variable_t * Lookup(vlc_object_t *obj, const char *psz_name)
Definition: variables.c:150
@ ISSUER_SUBPACKET
Definition: update.h:48
struct vlc_res * resources
Definition: variables.h:45
vlc_mutex_t var_lock
Definition: variables.h:42
#define VLC_VAR_DOINHERIT
Creation flag.
Definition: vlc_variables.h:69
void * tdelete(const void *key, void **rootp, int(*cmp)(const void *, const void *))
static void DelCallback(vlc_object_t *p_this, const char *psz_name, const callback_entry_t *restrict match, vlc_callback_type_t i_type)
Definition: variables.c:811
unsigned i_usage
Reference count.
Definition: variables.c:81
int var_Inherit(vlc_object_t *p_this, const char *psz_name, int i_type, vlc_value_t *p_val)
Finds the value of a variable.
Definition: variables.c:1039
static const struct variable_ops_t addr_ops
Definition: variables.c:134
void * var_root
Definition: variables.h:41
static int CmpString(vlc_value_t v, vlc_value_t w)
Definition: variables.c:113
#define VLC_VAR_ADDCHOICE
Definition: vlc_variables.h:96
int() var_GetAndSet(vlc_object_t *p_this, const char *psz_name, int i_action, vlc_value_t *p_val)
Perform an atomic read-modify-write of a variable.
Definition: variables.c:594
bool b_incallback
Set to TRUE if the variable is in a callback.
Definition: variables.c:93
static int verify_signature_dsa(signature_packet_t *sign, public_key_packet_t *p_key, uint8_t *p_hash)
Definition: update_crypto.c:520
void * p_address
Definition: vlc_common.h:463
void() var_AddCallback(vlc_object_t *p_this, const char *psz_name, vlc_callback_t pf_callback, void *p_data)
Registers a callback for a variable.
Definition: variables.c:801
int parse_public_key(const uint8_t *p_key_data, size_t i_key_len, public_key_t *p_key, const uint8_t *p_sig_issuer)
Definition: update_crypto.c:606
void vlc_cond_wait(vlc_cond_t *cond, vlc_mutex_t *mutex)
Waits on a condition variable.
Definition: threads.c:340
#define VLC_VAR_BOOL
Definition: vlc_variables.h:49
uint8_t issuer_longid[8]
Definition: update.h:83
#define VLC_VAR_DELCHOICE
Definition: vlc_variables.h:97
uint8_t timestamp[4]
Definition: update.h:55
Definition: variables.c:45
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:106
#define vlc_stream_NewURL(a, b)
Definition: vlc_stream.h:422
static int CmpAddress(vlc_value_t v, vlc_value_t w)
Definition: variables.c:121
static void CleanupVar(void *var)
Definition: variables.c:410
static const struct variable_ops_t int_ops
Definition: variables.c:137
vlc_list_callback_t pf_list_callback
Definition: variables.c:73
void() var_AddListCallback(vlc_object_t *p_this, const char *psz_name, vlc_list_callback_t pf_callback, void *p_data)
Register a callback for a list variable.
Definition: variables.c:879
static char * var_InheritString(vlc_object_t *obj, const char *name)
Definition: vlc_variables.h:705
int() var_GetChecked(vlc_object_t *p_this, const char *psz_name, int expected_type, vlc_value_t *p_val)
Definition: variables.c:726
@ postorder
Definition: vlc_fixups.h:503
public_key_packet_t key
Definition: update.h:123
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:474
@ SIGNATURE_PACKET
Definition: update.h:49
#define VLC_VAR_ADDRESS
Definition: vlc_variables.h:53
uint8_t * psz_username
Definition: update.h:121
uint8_t * hash_from_text(const char *psz_string, signature_packet_t *p_sig)
Definition: update_crypto.c:791
int() var_SetChecked(vlc_object_t *p_this, const char *psz_name, int expected_type, vlc_value_t val)
Definition: variables.c:676
#define VLC_VAR_INTEGER
Definition: vlc_variables.h:50
#define VLC_VAR_STRING
Definition: vlc_variables.h:51
static void TriggerCallback(vlc_object_t *obj, variable_t *var, const char *name, vlc_value_t prev)
Definition: variables.c:237
#define VLC_VAR_TYPE
Definition: vlc_variables.h:39
#define VLC_VAR_FLOAT
Definition: vlc_variables.h:52
struct signature_packet_t::@88::@92 rsa
void() var_DelListCallback(vlc_object_t *p_this, const char *psz_name, vlc_list_callback_t pf_callback, void *p_data)
Remove a callback from a list variable.
Definition: variables.c:889
@ VLC_VAR_INTEGER_OR
Binary OR over an integer bits field.
Definition: vlc_variables.h:114
VLC_EXPORT bool vlc_ureduce(unsigned *, unsigned *, uint64_t, uint64_t, uint64_t)
static int verify_signature_rsa(signature_packet_t *sign, public_key_packet_t *p_key, uint8_t *p_hash)
Definition: update_crypto.c:467
static int hash_from_binary_file(const char *psz_file, gcry_md_hd_t hd)
Definition: update_crypto.c:725
void() var_Destroy(vlc_object_t *p_this, const char *psz_name)
Destroys a VLC object variable.
Definition: variables.c:382
bool config_IsSafe(const char *)
Definition: core.c:73
int asprintf(char **, const char *,...)
int() var_Change(vlc_object_t *p_this, const char *psz_name, int i_action,...)
Performs a special action on a variable.
Definition: variables.c:423
#define VLC_VAR_GETSTEP
Definition: vlc_variables.h:94
int config_GetType(const char *psz_name)
Gets a configuration item type.
Definition: core.c:48
int64_t i_int
Definition: vlc_common.h:459
struct signature_packet_t::@88::@91 dsa
vlc_value_t * choices
List of choices.
Definition: variables.c:87
Mutex.
Definition: vlc_threads.h:225
vlc_value_t max
Definition: variables.c:84
uint8_t digest_algo
Definition: update.h:80
int() var_Get(vlc_object_t *p_this, const char *psz_name, vlc_value_t *p_val)
Gets a variable value.
Definition: variables.c:755
@ PERSONA_KEY_SIGNATURE
Definition: update.h:41
#define VLC_VAR_SETMINMAX
Definition: vlc_variables.h:102
uint8_t * hash_from_public_key(public_key_t *p_pkey)
Definition: update_crypto.c:846
int(* vlc_callback_t)(vlc_object_t *, char const *, vlc_value_t, vlc_value_t, void *)
Definition: vlc_common.h:493
size_t vlc_b64_decode_binary_to_buffer(void *dst, size_t size, const char *restrict src)
Definition: strings.c:416
struct variable_ops_t variable_ops_t
static void TwalkGetNames(const void *data, const VISIT which, const int depth)
Definition: variables.c:1142
void() var_TriggerCallback(vlc_object_t *p_this, const char *psz_name)
Triggers callbacks on a variable.
Definition: variables.c:864
static void FreeDummy(vlc_value_t *p_val)
Definition: variables.c:129
static long crc_octets(uint8_t *octets, size_t len)
Definition: update_crypto.c:355
#define TAB_ERASE(count, tab, index)
Definition: vlc_arrays.h:92
vlc_object_t * parent
Parent object (or NULL)
Definition: variables.h:37
union signature_packet_t::@88 algo_specific
int32_t y
Definition: vlc_common.h:464
#define VLC_VAR_VOID
Definition: vlc_variables.h:48
bool b_bool
Definition: vlc_common.h:460
#define vlc_assert_unreachable()
Impossible branch assertion.
Definition: vlc_common.h:253
FILE * vlc_fopen(const char *filename, const char *mode)
Opens a FILE pointer.
Definition: filesystem.c:49
static int CmpFloat(vlc_value_t v, vlc_value_t w)
Definition: variables.c:120
void var_OptionParse(vlc_object_t *p_obj, const char *psz_option, bool trusted)
Parse a stringified option This function parse a string option and create the associated object varia...
Definition: variables.c:909
char ** var_GetAllNames(vlc_object_t *)
Return a list of all variable names.
Definition: variables.c:1155
static void FreeString(vlc_value_t *p_val)
Definition: variables.c:130
static size_t parse_signature_v4_packet(signature_packet_t *p_sig, const uint8_t *p_buf, size_t i_sig_len)
Definition: update_crypto.c:181
double us_atof(const char *str)
us_atof() has the same prototype as ANSI C atof() but it expects a dot as decimal separator,...
Definition: charset.c:88
static const struct variable_ops_t bool_ops
Definition: variables.c:135
vlc_callback_type_t
Definition: variables.c:760
void var_DestroyAll(vlc_object_t *obj)
Definition: variables.c:415
@ PUBLIC_KEY_PACKET
Definition: update.h:50
int i_type
Definition: httpd.c:1269
void(* pf_dup)(vlc_value_t *)
Definition: variables.c:60
#define READ_MPI(d, bits)
Definition: update_crypto.c:96
#define ARRAY_INIT(array)
Definition: vlc_arrays.h:189
float f_float
Definition: vlc_common.h:461
static void AddCallback(vlc_object_t *p_this, const char *psz_name, callback_entry_t *restrict entry, vlc_callback_type_t i_type)
Definition: variables.c:766
@ vlc_value_callback
Definition: variables.c:762
static const struct variable_ops_t void_ops
Definition: variables.c:133
vlc_value_t step
Definition: variables.c:84
@ USER_ID_PACKET
Definition: update.h:51
@ vlc_list_callback
Definition: variables.c:763
static uint32_t scalar_number(const uint8_t *p, int header_len)
Definition: update_crypto.c:56
#define VLC_VAR_GETTEXT
Definition: vlc_variables.h:90
#define VLC_VAR_HASCHOICE
Definition: vlc_variables.h:62
vlc_value_t min
If the variable has min/max/step values.
Definition: variables.c:84
uint8_t algo
Definition: update.h:56
#define VLC_VAR_CHOICESCOUNT
Definition: vlc_variables.h:101
uint8_t version
Definition: update.h:54
struct signature_packet_t::@87::@90 v3
#define TAB_APPEND(count, tab, p)
Definition: vlc_arrays.h:79
#define VLC_VAR_ISCOMMAND
Definition: vlc_variables.h:64
callback_entry_t * list_callbacks
Registered list callbacks.
Definition: variables.c:98
float config_GetFloat(const char *psz_name)
Gets a floating point configuration item's value.
Definition: core.c:105
static int parse_signature_packet(signature_packet_t *p_sig, const uint8_t *p_buf, size_t i_packet_len)
Definition: update_crypto.c:277
@ VLC_VAR_INTEGER_NAND
Binary NAND over an integer bits field.
Definition: vlc_variables.h:115
char * psz_string
Definition: vlc_common.h:462
struct vlc_value_t::@193 coords
stream_t definition
Definition: vlc_stream.h:46
#define VLC_VAR_SETSTEP
Definition: vlc_variables.h:80
@ POSITIVE_KEY_SIGNATURE
Definition: update.h:43
char ** choices_text
List of friendly names for the choices.
Definition: variables.c:89
#define vlc_cleanup_pop()
Unregisters the last cancellation handler.
Definition: vlc_threads.h:1018
#define DECL_ARRAY(type)
Definition: vlc_arrays.h:181
#define VLC_ENOOBJ
Object not found.
Definition: vlc_common.h:482
VISIT
Definition: vlc_fixups.h:501
static void WaitUnused(vlc_object_t *obj, variable_t *var)
Waits until the variable is inactive (i.e.
Definition: variables.c:227
char * psz_url
Download URL.
Definition: vlc_update.h:46
static int rsa_pkcs1_encode_sig(gcry_mpi_t *r_result, size_t size, const uint8_t *hash, int algo)
Definition: update_crypto.c:436
signature_packet_t sig
Definition: update.h:125
const variable_ops_t * ops
Definition: variables.c:78
callback_entry_t * value_callbacks
Registered value callbacks.
Definition: variables.c:96
struct callback_entry_t * next
Definition: variables.c:69
ssize_t vlc_stream_Read(stream_t *s, void *buf, size_t len)
Reads data from a byte stream.
Definition: stream.c:485
static void * xmalloc(size_t len)
Definition: vlc_common.h:1175
uint8_t public_key_algo
Definition: update.h:79
size_t choices_count
Definition: variables.c:90
VLC object common members.
Definition: vlc_objects.h:43
char * psz_name
The variable unique name (must be first)
Definition: variables.c:70
#define VLC_ENOMEM
Not enough memory.
Definition: vlc_common.h:476
Definition: variables.c:57
static void CheckValue(variable_t *var, vlc_value_t *val)
Adjusts a value to fit the constraints for a certain variable:
Definition: variables.c:191
int verify_signature(signature_packet_t *sign, public_key_packet_t *p_key, uint8_t *p_hash)
Definition: update_crypto.c:588
static size_t parse_signature_v3_packet(signature_packet_t *p_sig, const uint8_t *p_buf, size_t i_sig_len)
Definition: update_crypto.c:144
void tdestroy(void *root, void(*free_node)(void *nodep))
struct signature_packet_t::@87::@89 v4
struct public_key_packet_t::@84::@85 dsa
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:472
char * strdup(const char *)
int() var_LocationParse(vlc_object_t *obj, const char *mrl, const char *pref)
Parses a string with multiple options.
Definition: variables.c:1010
void * tfind(const void *key, void *const *rootp, int(*cmp)(const void *, const void *))
char psz_value[8]
Definition: vout_intf.c:99
static uint8_t * hash_finish(gcry_md_hd_t hd, signature_packet_t *p_sig)
Definition: update_crypto.c:744
#define VLC_VAR_GETMAX
Definition: vlc_variables.h:93
#define VLC_VAR_COORDS
Definition: vlc_variables.h:54
void vlc_mutex_lock(vlc_mutex_t *mtx)
Acquires a mutex.
Definition: threads.c:158
const char name[16]
Definition: httpd.c:1268
int() var_Type(vlc_object_t *p_this, const char *psz_name)
Get the type of a variable.
Definition: variables.c:655
static uint32_t mpi_len(const uint8_t *mpi)
Definition: update_crypto.c:72
static int pgp_unarmor(const char *p_ibuf, size_t i_ibuf_len, uint8_t *p_obuf, size_t i_obuf_len)
Definition: update_crypto.c:377
Definition: fourcc_gen.c:51
Condition variable.
Definition: vlc_threads.h:349
void * p_data
Definition: variables.c:76
static void Destroy(variable_t *p_var)
Definition: variables.c:160
static void DupString(vlc_value_t *p_val)
Definition: variables.c:124
int64_t config_GetInt(const char *psz_name)
Gets an integer configuration item's value.
Definition: core.c:89
@ CASUAL_KEY_SIGNATURE
Definition: update.h:42
struct public_key_packet_t::@84::@86 rsa
long long int strtoll(const char *, char **, int)
uint8_t longid[8]
Definition: update.h:120
#define VLC_ENOVAR
Variable not found.
Definition: vlc_common.h:484
void vlc_stream_Delete(stream_t *s)
Destroy a stream.
Definition: stream.c:133
void var_DestroyAll(vlc_object_t *)
Definition: variables.c:415
vlc_cond_t wait
Definition: variables.c:100
#define vlc_object_parent(o)
Definition: vlc_objects.h:158
int(* vlc_list_callback_t)(vlc_object_t *, char const *, int, vlc_value_t *, void *)
Definition: vlc_common.h:502
int() var_Set(vlc_object_t *p_this, const char *psz_name, vlc_value_t val)
Sets a variable value.
Definition: variables.c:721
static int CmpInt(vlc_value_t v, vlc_value_t w)
Definition: variables.c:108
vlc_value_t val
The variable's exported value.
Definition: variables.c:73
static uint32_t U32_AT(const void *p)
Reads 32 bits in network byte order.
Definition: vlc_common.h:995
#define likely(p)
Predicted true condition.
Definition: vlc_common.h:218
#define CRC24_INIT
Definition: update_crypto.c:352
void * tsearch(const void *key, void **rootp, int(*cmp)(const void *, const void *))
#define vlc_internals(o)
Definition: variables.h:48
uint8_t type
Definition: update.h:78
uint8_t version
Definition: update.h:76
static const struct variable_ops_t float_ops
Definition: variables.c:136
void twalk(const void *root, void(*action)(const void *nodep, VISIT which, int depth))
uint8_t hash_verification[2]
Definition: update.h:82
static thread_local void * twalk_ctx
Definition: variables.c:1140
#define packet_type(c)
Definition: update_crypto.c:52
static void DupDummy(vlc_value_t *p_val)
Definition: variables.c:123
int download_signature(vlc_object_t *p_this, signature_packet_t *p_sig, const char *psz_url)
Definition: update_crypto.c:996
VLC value structure.
Definition: vlc_common.h:457
The structure describing a variable.
Definition: variables.c:68
union signature_packet_t::@87 specific
#define VLC_VAR_GETMIN
Definition: vlc_variables.h:92
void vlc_mutex_unlock(vlc_mutex_t *mtx)
Releases a mutex.
Definition: threads.c:209
union public_key_packet_t::@84 sig
const char var[sizeof("video")]
Definition: player.c:1732
static int parse_public_key_packet(public_key_packet_t *p_key, const uint8_t *p_buf, size_t i_packet_len)
Definition: update_crypto.c:107
struct callback_entry_t callback_entry_t
#define msg_Err(p_this,...)
Definition: vlc_messages.h:102
static const struct variable_ops_t coords_ops
Definition: variables.c:139
char * config_GetPsz(const char *psz_name)
Gets a string configuration item's value.
Definition: core.c:123
static const struct variable_ops_t string_ops
Definition: variables.c:138
@ VLC_VAR_INTEGER_ADD
Add parameter to an integer value.
Definition: vlc_variables.h:113
uint8_t * hash_from_file(const char *psz_file, signature_packet_t *p_sig)
Definition: update_crypto.c:826
#define mutex_cleanup_push(lock)
Definition: vlc_threads.h:1053
@ BINARY_SIGNATURE
Definition: update.h:36
Definition: variables.h:35