X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faccess_filter%2Fdump.c;h=50ccf9aa58b96cf5deaf05380f4cc81028f166d2;hb=bc9cdb46d3524d3481b0fca431fdae58d9089e8e;hp=0ac4fb4ca95785ff29caa79664651021968219d4;hpb=5e2537971a6e4870333667628e014cfe2e7381e8;p=vlc diff --git a/modules/access_filter/dump.c b/modules/access_filter/dump.c index 0ac4fb4ca9..50ccf9aa58 100644 --- a/modules/access_filter/dump.c +++ b/modules/access_filter/dump.c @@ -21,17 +21,20 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include -#include -#include #include #include #include -#include "vlc_access.h" -#include "vlc_block.h" -#include "charset.h" +#include + +#include #include "vlc_keys.h" #define DEFAULT_MARGIN 32 // megabytes @@ -48,21 +51,21 @@ static int Open (vlc_object_t *); static void Close (vlc_object_t *); vlc_module_begin (); - set_shortname (_("Dump")); - set_description (_("Dump")); + set_shortname (N_("Dump")); + set_description (N_("Dump")); set_category (CAT_INPUT); set_subcategory (SUBCAT_INPUT_ACCESS_FILTER); set_capability ("access_filter", 0); add_shortcut ("dump"); set_callbacks (Open, Close); - add_bool ("dump-force", VLC_FALSE, NULL, FORCE_TEXT, - FORCE_LONGTEXT, VLC_FALSE); + add_bool ("dump-force", false, NULL, FORCE_TEXT, + FORCE_LONGTEXT, false); add_integer ("dump-margin", DEFAULT_MARGIN, NULL, MARGIN_TEXT, - MARGIN_LONGTEXT, VLC_FALSE); + MARGIN_LONGTEXT, false); vlc_module_end(); -static int Read (access_t *access, uint8_t *buffer, int len); +static ssize_t Read (access_t *access, uint8_t *buffer, size_t len); static block_t *Block (access_t *access); static int Seek (access_t *access, int64_t offset); static int Control (access_t *access, int cmd, va_list ap); @@ -88,8 +91,8 @@ static int Open (vlc_object_t *obj) if (!var_CreateGetBool (access, "dump-force")) { - vlc_bool_t b; - if ((access2_Control (src, ACCESS_CAN_FASTSEEK, &b) == 0) && b) + bool b; + if ((access_Control (src, ACCESS_CAN_FASTSEEK, &b) == 0) && b) { msg_Dbg (obj, "dump filter useless"); return VLC_EGENERIC; @@ -113,13 +116,13 @@ static int Open (vlc_object_t *obj) if ((p_sys->stream = tmpfile ()) == NULL) { - msg_Err (access, "cannot create temporary file: %s", strerror (errno)); + msg_Err (access, "cannot create temporary file: %m"); free (p_sys); return VLC_EGENERIC; } p_sys->tmp_max = ((int64_t)var_CreateGetInteger (access, "dump-margin")) << 20; - var_AddCallback (access->p_libvlc, "key-pressed", KeyHandler, access); + var_AddCallback (access->p_libvlc, "key-action", KeyHandler, access); return VLC_SUCCESS; } @@ -133,7 +136,7 @@ static void Close (vlc_object_t *obj) access_t *access = (access_t *)obj; access_sys_t *p_sys = access->p_sys; - var_DelCallback (access->p_libvlc, "key-pressed", KeyHandler, access); + var_DelCallback (access->p_libvlc, "key-action", KeyHandler, access); if (p_sys->stream != NULL) fclose (p_sys->stream); @@ -169,7 +172,7 @@ static void Dump (access_t *access, const uint8_t *buffer, size_t len) assert (len > 0); if (fwrite (buffer, len, 1, stream) != 1) { - msg_Err (access, "cannot write to file: %s", strerror (errno)); + msg_Err (access, "cannot write to file: %m"); goto error; } @@ -182,7 +185,7 @@ error: } -static int Read (access_t *access, uint8_t *buffer, int len) +static ssize_t Read (access_t *access, uint8_t *buffer, size_t len) { access_t *src = access->p_source; @@ -242,26 +245,6 @@ static int Seek (access_t *access, int64_t offset) return ret; } - -#ifndef HAVE_LOCALTIME_R -static inline struct tm *localtime_r (const time_t *now, struct tm *res) -{ - struct tm *unsafe = localtime (now); - /* - * This is not thread-safe. Blame your C library. - * On Win32 there SHOULD be _localtime_s instead, but of course - * Cygwin and Mingw32 don't know about it. You're on your own if you - * this platform. - */ - if (unsafe == NULL) - return NULL; - - memcpy (res, unsafe, sizeof (*res)); - return res; -} -#endif - - static void Trigger (access_t *access) { access_sys_t *p_sys = access->p_sys; @@ -284,7 +267,7 @@ static void Trigger (access_t *access) // and there is an off-by-one in the following sprintf(). return; - const char *home = access->p_libvlc->psz_homedir; + const char *home = config_GetHomeDir(); /* Hmm what about the extension?? */ char filename[strlen (home) + sizeof ("/vlcdump-YYYYYYYYY-MM-DD-HH-MM-SS.ts")]; @@ -293,11 +276,10 @@ static void Trigger (access_t *access) msg_Info (access, "dumping media to \"%s\"...", filename); - FILE *newstream = fopen (filename, "wb"); + FILE *newstream = utf8_fopen (filename, "wb"); if (newstream == NULL) { - msg_Err (access, "cannot create dump file \"%s\": %s", filename, - strerror (errno)); + msg_Err (access, "cannot create dump file \"%s\": %m", filename); return; } @@ -313,8 +295,7 @@ static void Trigger (access_t *access) { if (ferror (oldstream)) { - msg_Err (access, "cannot read temporary file: %s", - strerror (errno)); + msg_Err (access, "cannot read temporary file: %m"); break; } @@ -327,7 +308,7 @@ static void Trigger (access_t *access) if (fwrite (buf, len, 1, newstream) != 1) { - msg_Err (access, "cannot write dump file: %s", strerror (errno)); + msg_Err (access, "cannot write dump file: %m"); break; } } @@ -344,19 +325,11 @@ static int KeyHandler (vlc_object_t *obj, char const *varname, { access_t *access = data; + (void)varname; (void)oldval; (void)obj; - for (struct hotkey *key = access->p_libvlc->p_hotkeys; - key->psz_action != NULL; key++) - { - if (key->i_key == newval.i_int) - { - if (key->i_action == ACTIONID_DUMP) - Trigger ((access_t *)data); - break; - } - } - + if (newval.i_int == ACTIONID_DUMP) + Trigger (access); return VLC_SUCCESS; }