Go to the documentation of this file.
23 #include <stdatomic.h>
151 void (*pf_callback)(
void *, bool );
174 const uint8_t *p_signature_issuer );
184 const uint8_t *p_key_data,
size_t i_key_len,
public_key_t *p_key,
185 const uint8_t *p_sig_issuer );
void vlc_cond_broadcast(vlc_cond_t *cond)
Wakes up all threads waiting on a condition variable.
Definition: threads.c:280
void vlc_mutex_init(vlc_mutex_t *mtx)
Initializes a fast mutex.
Definition: threads.c:123
void text_style_Merge(text_style_t *p_dst, const text_style_t *p_src, bool b_override)
Merge two styles using non default values.
Definition: text_style.c:270
@ GENERIC_KEY_SIGNATURE
Definition: update.h:40
#define STYLE_NO_DEFAULTS
Definition: vlc_text_style.h:83
text_style_t * text_style_Create(int i_defaults)
Create a text style.
Definition: text_style.c:213
#define STYLE_HAS_BACKGROUND_ALPHA
Definition: vlc_text_style.h:93
uint8_t hashed_data_len[2]
Definition: update.h:89
struct vlc_object_marker * obj
Definition: vlc_objects.h:48
uint8_t * hashed_data
Definition: update.h:90
static int vlc_stream_GetSize(stream_t *s, uint64_t *size)
Get the size of the stream.
Definition: vlc_stream.h:331
void libvlc_Quit(libvlc_int_t *p_libvlc)
Posts an exit signal to LibVLC instance.
Definition: exit.c:55
void vlc_rwlock_rdlock(vlc_rwlock_t *lock)
Acquires a read/write lock for reading.
Definition: threads.c:394
#define vlc_cleanup_push(routine, arg)
Registers a thread cancellation handler.
Definition: vlc_threads.h:1010
static void vlc_gcrypt_init(void)
Definition: vlc_gcrypt.h:29
void update_Download(update_t *p_update, const char *psz_destdir)
Download the file given in the update_t.
Definition: update.c:499
int strcasecmp(const char *, const char *)
const char * psz_name
Definition: text_style.c:53
const void * owner
Definition: vlc_threads.h:238
Text segment for subtitles.
Definition: vlc_text_style.h:140
#define vlc_dialog_wait_question(a, b, c, d, e, f, g,...)
Definition: vlc_dialog.h:150
struct update_release_t release
Release (version)
Definition: update.h:162
text_segment_t * text_segment_New(const char *psz_text)
This function will create a new text segment.
Definition: text_style.c:372
void vlc_global_mutex(unsigned n, bool acquire)
Internal handler for global mutexes.
Definition: threads.c:43
int verify_signature(signature_packet_t *sign, public_key_packet_t *p_key, uint8_t *p_hash)
Definition: update_crypto.c:588
text_segment_t * text_segment_Copy(text_segment_t *p_src)
This function will copy a text_segment and its chain into a new one.
Definition: text_style.c:444
Definition: vlc_objects.h:114
vlc_thread_t thread
Definition: update.h:148
void vlc_sem_init(vlc_sem_t *sem, unsigned value)
Initializes a semaphore.
Definition: threads.c:442
#define vlc_dialog_display_progress(a, b, c, d, e, f,...)
Definition: vlc_dialog.h:186
#define STYLE_OUTLINE
Definition: vlc_text_style.h:99
uint8_t i_background_alpha
The transparency of the background.
Definition: vlc_text_style.h:89
int i_spacing
The spaceing between glyphs in pixels.
Definition: vlc_text_style.h:75
#define unlikely(p)
Predicted false condition.
Definition: vlc_common.h:227
@ TEXT_SIGNATURE
Definition: update.h:37
text_style_t * text_style_Duplicate(const text_style_t *p_src)
Duplicate a text style.
Definition: text_style.c:309
#define STYLE_HAS_OUTLINE_COLOR
Definition: vlc_text_style.h:88
uint8_t i_outline_alpha
The transparency of the outline.
Definition: vlc_text_style.h:79
@ ISSUER_SUBPACKET
Definition: update.h:48
void(* pf_callback)(void *, bool)
Definition: update.h:151
#define VLC_THREAD_PRIORITY_LOW
Definition: vlc_threads.h:207
#define READER_MASK
Definition: threads.c:384
struct vlc_cond_waiter * next
Definition: threads.c:241
int vlc_atomic_timedwait_daytime(void *addr, unsigned val, time_t deadline)
Definition: thread.c:105
int i_shadow_width
The width of the shadow in pixels.
Definition: vlc_text_style.h:85
#define STYLE_HAS_FONT_COLOR
Definition: vlc_text_style.h:85
uint8_t q[2+256/8]
Definition: update.h:62
#define msg_Info(p_this,...)
Definition: vlc_messages.h:100
uint32_t i_value
Definition: text_style.c:54
Read/write lock.
Definition: vlc_threads.h:532
#define vlc_cancel_addr_prepare(addr)
Definition: threads.c:93
vlc_thread_t thread
Definition: update.h:137
update_download_thread_t * p_download
Definition: update.h:164
bool update_NeedUpgrade(update_t *p_update)
Definition: update.c:433
text_segment_t * p_next
next segment
Definition: vlc_text_style.h:143
static char * size_str(uint64_t l_size)
Convert a long int size in bytes to a string.
Definition: update.c:474
int vlc_atomic_timedwait(void *addr, unsigned val, vlc_tick_t deadline)
Waits on an address with a time-out.
Definition: thread.c:84
#define UPDATE_VLC_STATUS_URL
Definition: update.c:83
update_check_thread_t * p_check
Definition: update.h:165
char * psz_monofontname
The name of the mono font.
Definition: vlc_text_style.h:64
#define STYLE_HAS_FONT_ALPHA
Definition: vlc_text_style.h:86
void vlc_cond_wait(vlc_cond_t *cond, vlc_mutex_t *mutex)
Waits on a condition variable.
Definition: threads.c:340
uint8_t issuer_longid[8]
Definition: update.h:83
uint16_t i_style_flags
Formatting style flags.
Definition: vlc_text_style.h:67
void update_Delete(update_t *p_update)
Delete an update_t struct.
Definition: update.c:133
uint8_t timestamp[4]
Definition: update.h:55
text_style_t * text_style_Copy(text_style_t *p_dst, const text_style_t *p_src)
Copy a text style into another.
Definition: text_style.c:245
static bool GetUpdateFile(update_t *p_update)
Get the update file and parse it p_update has to be locked when calling this function.
Definition: update.c:180
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:106
#define vlc_tick_sleep(d)
Definition: vlc_threads.h:902
#define vlc_stream_NewURL(a, b)
Definition: vlc_stream.h:422
text_segment_t * text_segment_NewInheritStyle(const text_style_t *p_style)
This function will create a new text segment and duplicates the style passed as argument.
Definition: text_style.c:384
#define _(str)
Definition: vlc_fixups.h:374
#define MERGE(var, fflag)
Definition: text_style.c:262
int i_minor
Version minor.
Definition: vlc_update.h:43
public_key_packet_t key
Definition: update.h:123
@ SIGNATURE_PACKET
Definition: update.h:49
uint8_t * psz_username
Definition: update.h:121
#define ARRAY_SIZE(x)
Definition: vlc_arrays.h:178
atomic_uint value
Definition: vlc_threads.h:453
static void vlc_cond_signal_waiter(struct vlc_cond_waiter *waiter)
Definition: threads.c:245
uint8_t p[2+3072/8]
Definition: update.h:61
struct signature_packet_t::@88::@92 rsa
static void * update_CheckReal(void *)
Definition: update.c:413
#define VLC_STATIC_MUTEX
Static initializer for (static) mutex.
Definition: vlc_threads.h:249
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
bool vlc_mutex_held(const vlc_mutex_t *mtx)
Checks if a mutex is locked.
Definition: threads.c:136
@ VLC_ONCE_DONE
Definition: threads.c:514
int asprintf(char **, const char *,...)
void vlc_cancel_addr_clear(atomic_uint *addr)
Definition: thread.c:225
public_key_t * p_pkey
Definition: update.h:163
void vlc_cond_signal(vlc_cond_t *cond)
Wakes up one thread waiting on a condition variable.
Definition: threads.c:253
struct signature_packet_t::@88::@91 dsa
Mutex.
Definition: vlc_threads.h:225
uint8_t digest_algo
Definition: update.h:80
char * psz_rt
Definition: vlc_text_style.h:124
@ PERSONA_KEY_SIGNATURE
Definition: update.h:41
#define vlc_dialog_update_progress_text(a, b, c, d,...)
Definition: vlc_dialog.h:228
void update_Check(update_t *p_update, void(*pf_callback)(void *, bool), void *p_data)
Check for updates.
Definition: update.c:391
uint8_t s[2+256/8]
Definition: update.h:107
int vlc_clone(vlc_thread_t *th, void *(*entry)(void *), void *data, int priority)
Creates and starts a new thread.
Definition: thread.c:144
uint16_t i_features
Feature flags (means non default)
Definition: vlc_text_style.h:66
int i_outline_width
The width of the outline in pixels.
Definition: vlc_text_style.h:80
uint8_t e[2+4096/8]
Definition: update.h:68
void text_segment_ChainDelete(text_segment_t *segment)
This function will destroy a list of text segments allocated by text_segment_New.
Definition: text_style.c:432
unsigned int vlc_html_color(const char *psz_value, bool *ok)
Returns an integer representation of an HTML color.
Definition: text_style.c:473
uint8_t timestamp[4]
Definition: update.h:97
union signature_packet_t::@88 algo_specific
#define msg_Warn(p_this,...)
Definition: vlc_messages.h:104
#define STYLE_HAS_OUTLINE_ALPHA
Definition: vlc_text_style.h:89
#define vlc_assert_unreachable()
Impossible branch assertion.
Definition: vlc_common.h:253
#define STYLE_DEFAULT_REL_FONT_SIZE
Definition: vlc_text_style.h:111
void vlc_mutex_init_recursive(vlc_mutex_t *mtx)
Initializes a recursive mutex.
Definition: threads.c:128
int i_revision
Version revision.
Definition: vlc_update.h:44
FILE * vlc_fopen(const char *filename, const char *mode)
Opens a FILE pointer.
Definition: filesystem.c:49
int vlc_savecancel(void)
Disables thread cancellation.
Definition: thread.c:183
Describes an update VLC release number.
Definition: vlc_update.h:40
vlc_tick_t vlc_tick_now(void)
Precision monotonic clock.
Definition: thread.c:261
#define STYLE_HAS_WRAP_INFO
Definition: vlc_text_style.h:94
int i_font_color
The color of the text 0xRRGGBB (native endianness)
Definition: vlc_text_style.h:72
@ PUBLIC_KEY_PACKET
Definition: update.h:50
struct vlc_cond_waiter ** pprev
Definition: threads.c:241
#define WRITER_BIT
Definition: threads.c:385
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
int i_background_color
The color of the background 0xRRGGBB.
Definition: vlc_text_style.h:88
#define STYLE_FULLY_SET
Definition: vlc_text_style.h:84
@ VLC_DIALOG_QUESTION_NORMAL
Definition: vlc_dialog.h:55
static void EmptyRelease(update_t *p_update)
Empty the release struct.
Definition: update.c:163
uint8_t * hash_from_public_key(public_key_t *p_pkey)
Definition: update_crypto.c:846
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
static const uint8_t videolan_public_key_longid[8]
Definition: vlc_pgpkey.h:18
#define vlc_dialog_is_cancelled(a, b)
Definition: vlc_dialog.h:263
@ USER_ID_PACKET
Definition: update.h:51
static void * update_DownloadReal(void *)
Definition: update.c:525
uint8_t algo
Definition: update.h:56
void() vlc_once(vlc_once_t *restrict once, void(*cb)(void))
Definition: threads.c:518
static text_segment_ruby_t * text_segment_ruby_Duplicate(const text_segment_ruby_t *p_src)
Definition: text_style.c:359
uint8_t version
Definition: update.h:54
void vlc_atomic_notify_all(void *addr)
Wakes up all thread on an address.
Definition: thread.c:72
struct signature_packet_t::@87::@90 v3
int i_font_size
The font size in pixels.
Definition: vlc_text_style.h:71
vlc_mutex_t lock
Definition: rand.c:50
#define STYLE_HAS_SHADOW_COLOR
Definition: vlc_text_style.h:90
void vlc_atomic_notify_one(void *addr)
Wakes up one thread on an address.
Definition: thread.c:67
#define THREAD_SELF
Definition: threads.c:134
void vlc_cancel_addr_set(atomic_uint *addr)
Definition: thread.c:213
text_segment_t * text_segment_FromRuby(text_segment_ruby_t *p_ruby)
This function creates a text segment from a ruby section, and creates fallback string.
Definition: text_style.c:400
text_style_t * text_style_New(void)
Create a default text style.
Definition: text_style.c:208
#define STYLE_ALPHA_OPAQUE
Definition: vlc_text_style.h:79
Thread handle.
Definition: vlc_threads.h:180
char * psz_desc
Release description.
Definition: vlc_update.h:47
void text_segment_Delete(text_segment_t *segment)
Delete a text segment and its content.
Definition: text_style.c:421
uint8_t y[2+3072/8]
Definition: update.h:64
stream_t definition
Definition: vlc_stream.h:46
@ POSITIVE_KEY_SIGNATURE
Definition: update.h:43
#define STYLE_HAS_BACKGROUND_COLOR
Definition: vlc_text_style.h:92
@ VLC_ONCE_CONTEND
Definition: threads.c:514
#define vlc_cleanup_pop()
Unregisters the last cancellation handler.
Definition: vlc_threads.h:1018
void text_style_Delete(text_style_t *p_style)
Delete a text style created by text_style_New or text_style_Duplicate.
Definition: text_style.c:320
uint8_t i_font_alpha
The transparency of the text.
Definition: vlc_text_style.h:74
void * p_data
Definition: update.h:152
#define static_assert
Definition: vlc_fixups.h:370
uint8_t r[2+256/8]
Definition: update.h:106
#define vlc_tick_wait(d)
Definition: vlc_threads.h:903
uint8_t i_shadow_alpha
The transparency of the shadow.
Definition: vlc_text_style.h:84
@ VLC_ONCE_UNDONE
Definition: threads.c:514
static const struct @77 p_html_colors[]
char * psz_url
Download URL.
Definition: vlc_update.h:46
int i_shadow_color
The color of the shadow 0xRRGGBB.
Definition: vlc_text_style.h:83
signature_packet_t sig
Definition: update.h:125
int i_outline_color
The color of the outline 0xRRGGBB.
Definition: vlc_text_style.h:78
atomic_uint recursion
Definition: vlc_threads.h:231
libvlc_int_t * p_libvlc
Definition: update.h:160
#define dialog_FatalWait(p_obj, psz_title, psz_fmt,...)
Definition: update.c:88
ssize_t vlc_stream_Read(stream_t *s, void *buf, size_t len)
Reads data from a byte stream.
Definition: stream.c:485
int i_extra
Version extra.
Definition: vlc_update.h:45
Text style.
Definition: vlc_text_style.h:39
void vlc_rwlock_unlock(vlc_rwlock_t *lock)
Releases a read/write lock.
Definition: threads.c:420
uint8_t public_key_algo
Definition: update.h:79
void vlc_restorecancel(int state)
Restores the cancellation state.
Definition: thread.c:193
text_style_t * style
style applied to this segment
Definition: vlc_text_style.h:142
void vlc_sem_wait(vlc_sem_t *sem)
Waits on a semaphore.
Definition: threads.c:463
VLC object common members.
Definition: vlc_objects.h:43
The update object.
Definition: update.h:158
vlc_mutex_t lock
Definition: vlc_threads.h:352
struct signature_packet_t::@87::@89 v4
text_segment_ruby_t * text_segment_ruby_New(const char *psz_base, const char *psz_rt)
This function will create a ruby section for a text_segment.
Definition: text_style.c:341
Semaphore.
Definition: vlc_threads.h:449
struct public_key_packet_t::@84::@85 dsa
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:472
#define FREENULL(a)
Definition: vlc_common.h:961
char * strdup(const char *)
atomic_uint value
Definition: threads.c:242
char psz_value[8]
Definition: vout_intf.c:99
int vlc_sem_trywait(vlc_sem_t *sem)
Tries to decrement a semaphore.
Definition: threads.c:500
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:117
char * psz_fontname
The name of the font.
Definition: vlc_text_style.h:63
void vlc_mutex_lock(vlc_mutex_t *mtx)
Acquires a mutex.
Definition: threads.c:158
text_segment_ruby_t * p_next
Definition: vlc_text_style.h:125
uint8_t * hash_from_file(const char *psz_file, signature_packet_t *p_sig)
Definition: update_crypto.c:826
char * psz_base
Definition: vlc_text_style.h:123
uint8_t * hash_from_text(const char *psz_text, signature_packet_t *p_sig)
Definition: update_crypto.c:791
#define STYLE_HAS_SHADOW_ALPHA
Definition: vlc_text_style.h:91
Condition variable.
Definition: vlc_threads.h:349
uint8_t g[2+3072/8]
Definition: update.h:63
vlc_mutex_t lock
Definition: update.h:161
static void vlc_cond_wait_prepare(struct vlc_cond_waiter *waiter, vlc_cond_t *cond, vlc_mutex_t *mutex)
Definition: threads.c:299
int download_signature(vlc_object_t *p_this, signature_packet_t *p_sig, const char *psz_url)
Definition: update_crypto.c:996
int vlc_unlink(const char *filename)
Removes a file.
Definition: filesystem.c:183
static void vlc_mutex_init_common(vlc_mutex_t *mtx, bool recursive)
Definition: threads.c:116
int vlc_sem_post(vlc_sem_t *sem)
Increments the value of a semaphore.
Definition: threads.c:447
Non blocking binary download.
Definition: update.h:133
@ CASUAL_KEY_SIGNATURE
Definition: update.h:42
Non blocking update availability verification.
Definition: update.h:146
uint8_t n[2+4096/8]
Definition: update.h:67
struct public_key_packet_t::@84::@86 rsa
void vlc_atomic_wait(void *addr, unsigned val)
Waits on an address.
Definition: thread.c:77
uint8_t longid[8]
Definition: update.h:120
#define STYLE_DEFAULT_FONT_SIZE
Definition: vlc_text_style.h:110
float f_font_relsize
The font size in video height %.
Definition: vlc_text_style.h:70
void vlc_stream_Delete(stream_t *s)
Destroy a stream.
Definition: stream.c:133
One-time initialization.
Definition: vlc_threads.h:579
static void vlc_cond_wait_finish(struct vlc_cond_waiter *waiter, vlc_cond_t *cond, vlc_mutex_t *mutex)
Definition: threads.c:319
atomic_bool aborted
Definition: update.h:138
@ VLC_ONCE_DOING
Definition: threads.c:514
update_t * update_New(vlc_object_t *p_this)
Create a new update VLC struct.
Definition: update.c:103
uint8_t unhashed_data_len[2]
Definition: update.h:91
void text_segment_ruby_ChainDelete(text_segment_ruby_t *p_ruby)
Deletes a ruby sections chain.
Definition: text_style.c:329
#define vlc_object_delete(obj)
Definition: vlc_objects.h:136
void vlc_rwlock_wrlock(vlc_rwlock_t *lock)
Acquires a read/write lock for writing.
Definition: threads.c:410
Text segment ruby for subtitles Each ruby has an anchor to the segment char.
Definition: vlc_text_style.h:121
#define likely(p)
Predicted true condition.
Definition: vlc_common.h:218
int i_major
Version major.
Definition: vlc_update.h:42
struct vlc_cond_waiter * head
Definition: vlc_threads.h:351
uint8_t type
Definition: update.h:78
int vlc_sem_timedwait(vlc_sem_t *sem, vlc_tick_t deadline)
Waits on a semaphore within a deadline.
Definition: threads.c:479
uint8_t version
Definition: update.h:76
#define VLC_OBJECT(x)
Type-safe vlc_object_t cast.
Definition: vlc_objects.h:70
int vlc_mutex_trylock(vlc_mutex_t *mtx)
Tries to acquire a mutex.
Definition: threads.c:178
#define MERGE_SIZE(var)
Definition: text_style.c:266
uint8_t * unhashed_data
Definition: update.h:92
void vlc_rwlock_init(vlc_rwlock_t *lock)
Initializes a read/write lock.
Definition: threads.c:387
text_segment_ruby_t * p_ruby
ruby descriptions
Definition: vlc_text_style.h:144
void vlc_cond_init(vlc_cond_t *cond)
Initializes a condition variable.
Definition: threads.c:234
#define vlc_dialog_release(a, b)
Definition: vlc_dialog.h:252
char * psz_destdir
Definition: update.h:140
uint8_t hash_verification[2]
Definition: update.h:82
int vlc_cond_timedwait(vlc_cond_t *cond, vlc_mutex_t *mutex, vlc_tick_t deadline)
Waits on a condition variable up to a certain date.
Definition: threads.c:349
char * psz_text
text string of the segment
Definition: vlc_text_style.h:141
static const uint8_t videolan_public_key[]
Definition: vlc_pgpkey.h:23
void vlc_join(vlc_thread_t handle, void **result)
Waits for a thread to complete (if needed), then destroys it.
Definition: thread.c:151
atomic_uint value
Definition: vlc_threads.h:230
static _Thread_local char thread_self[1]
Definition: threads.c:133
update_t * p_update
Definition: update.h:139
union signature_packet_t::@87 specific
void vlc_mutex_unlock(vlc_mutex_t *mtx)
Releases a mutex.
Definition: threads.c:209
int vlc_cond_timedwait_daytime(vlc_cond_t *cond, vlc_mutex_t *mutex, time_t deadline)
Definition: threads.c:362
#define vlc_object_instance(o)
Definition: vlc_objects.h:195
union public_key_packet_t::@84 sig
update_t * p_update
Definition: update.h:150
Definition: threads.c:240
#define msg_Err(p_this,...)
Definition: vlc_messages.h:102
void vlc_testcancel(void)
Issues an explicit deferred cancellation point.
Definition: thread.c:201
update_release_t * update_GetRelease(update_t *p_update)
Definition: update.c:753
#define vlc_cancel_addr_finish(addr)
Definition: threads.c:94
@ BINARY_SIGNATURE
Definition: update.h:36
unsigned int value
Definition: threads.c:70
enum text_style_t::@265 e_wrapinfo
@ VLC_MAX_MUTEX
Definition: vlc_threads.h:1093