return h_live;
}
-extern void hb_get_temporary_directory(char path[512]);
-
gchar*
ghb_get_tmp_dir()
{
- char dir[512];
-
- hb_get_temporary_directory(dir);
- return g_strdup(dir);
+ return hb_get_temporary_directory();
}
void
ghb_hb_cleanup(gboolean partial)
{
- char dir[512];
+ char * dir;
- hb_get_temporary_directory(dir);
+ dir = hb_get_temporary_directory();
del_tree(dir, !partial);
+ free(dir);
}
gint
tmp_dir = ghb_get_tmp_dir();
name = g_strdup_printf("%s/live%02d", tmp_dir, ud->preview->frame);
+ free(tmp_dir);
if (ud->preview->current)
g_free(ud->preview->current);
ud->preview->current = name;
if( job->pass_id == HB_PASS_ENCODE_1ST ||
job->pass_id == HB_PASS_ENCODE_2ND )
{
- char filename[1024]; memset( filename, 0, 1024 );
- hb_get_tempory_filename( job->h, filename, "ffmpeg.log" );
+ char * filename = hb_get_temporary_filename("ffmpeg.log");
if( job->pass_id == HB_PASS_ENCODE_1ST )
{
pv->file = hb_fopen(filename, "wb");
- if (!pv->file) {
+ if (!pv->file)
+ {
if (strerror_r(errno, reason, 79) != 0)
strcpy(reason, "unknown -- strerror_r() failed");
hb_error("encavcodecInit: Failed to open %s (reason: %s)", filename, reason);
+ free(filename);
ret = 1;
goto done;
}
strcpy(reason, "unknown -- strerror_r() failed");
hb_error("encavcodecInit: Failed to open %s (reason: %s)", filename, reason);
+ free(filename);
ret = 1;
goto done;
}
strcpy(reason, "unknown -- strerror_r() failed");
hb_error( "encavcodecInit: Failed to read %s (reason: %s)" , filename, reason);
+ free(filename);
ret = 1;
fclose( pv->file );
pv->file = NULL;
context->flags |= AV_CODEC_FLAG_PASS2;
context->stats_in = log;
}
+ free(filename);
}
if (hb_avcodec_open(context, codec, &av_opts, HB_FFMPEG_THREADS_AUTO))
{
hb_log( "encavcodecInit: avcodec_open failed" );
- return 1;
+ ret = 1;
+ goto done;
}
if (job->pass_id == HB_PASS_ENCODE_1ST &&
if( job->pass_id == HB_PASS_ENCODE_1ST ||
job->pass_id == HB_PASS_ENCODE_2ND )
{
- char filename[1024];
- memset( filename, 0, 1024 );
- hb_get_tempory_filename( job->h, filename, "theroa.log" );
+ char * filename;
+ filename = hb_get_temporary_filename("theroa.log");
if ( job->pass_id == HB_PASS_ENCODE_1ST )
{
pv->file = hb_fopen(filename, "wb");
{
pv->file = hb_fopen(filename, "rb");
}
+ free(filename);
}
th_info ti;
hb_chapter_queue_t * chapter_queue;
- char filename[1024];
+ char * filename;
// Multiple bit-depth
const x264_api_t * api;
if( job->pass_id == HB_PASS_ENCODE_1ST ||
job->pass_id == HB_PASS_ENCODE_2ND )
{
- memset( pv->filename, 0, 1024 );
- hb_get_tempory_filename( job->h, pv->filename, "x264.log" );
+ pv->filename = hb_get_temporary_filename("x264.log");
}
switch( job->pass_id )
{
hb_chapter_queue_close(&pv->chapter_queue);
pv->api->encoder_close( pv->x264 );
+ free( pv->filename );
free( pv );
w->private_data = NULL;
}
int64_t duration;
} frame_info[FRAME_INFO_SIZE];
- char csvfn[1024];
+ char * csvfn;
// Multiple bit-depth
const x265_api * api;
if (job->pass_id == HB_PASS_ENCODE_1ST ||
job->pass_id == HB_PASS_ENCODE_2ND)
{
- char stats_file[1024] = "";
- char pass[2];
+ char * stats_file;
+ char pass[2];
snprintf(pass, sizeof(pass), "%d", job->pass_id);
- hb_get_tempory_filename(job->h, stats_file, "x265.log");
+ stats_file = hb_get_temporary_filename("x265.log");
if (param_parse(pv, param, "stats", stats_file) ||
param_parse(pv, param, "pass", pass))
{
+ free(stats_file);
goto fail;
}
+ free(stats_file);
if (job->pass_id == HB_PASS_ENCODE_1ST)
{
char slowfirstpass[2];
}
/* statsfile (but not 2-pass) */
- memset(pv->csvfn, 0, sizeof(pv->csvfn));
if (param->logLevel >= X265_LOG_DEBUG)
{
if (param->csvfn == NULL)
{
- hb_get_tempory_filename(job->h, pv->csvfn, "x265.csv");
- param->csvfn = pv->csvfn;
+ pv->csvfn = hb_get_temporary_filename("x265.csv");
+ param->csvfn = strdup(pv->csvfn);
}
else
{
- strncpy(pv->csvfn, param->csvfn, sizeof(pv->csvfn));
+ pv->csvfn = strdup(param->csvfn);
}
}
pv->api->param_free(pv->param);
pv->api->encoder_close(pv->x265);
+ free(pv->csvfn);
free(pv);
w->private_data = NULL;
}
*/
void hb_remove_previews( hb_handle_t * h )
{
- char filename[1024];
- char dirname[1024];
+ char * filename;
+ char * dirname;
hb_title_t * title;
int i, count, len;
DIR * dir;
struct dirent * entry;
- memset( dirname, 0, 1024 );
- hb_get_temporary_directory( dirname );
+ dirname = hb_get_temporary_directory();
dir = opendir( dirname );
- if (dir == NULL) return;
+ if (dir == NULL)
+ {
+ free(dirname);
+ return;
+ }
count = hb_list_count( h->title_set.list_title );
while( ( entry = readdir( dir ) ) )
for( i = 0; i < count; i++ )
{
title = hb_list_item( h->title_set.list_title, i );
+ filename = hb_strdup_printf("%d_%d", h->id, title->index);
len = snprintf( filename, 1024, "%d_%d", h->id, title->index );
if (strncmp(entry->d_name, filename, len) == 0)
{
- snprintf( filename, 1024, "%s/%s", dirname, entry->d_name );
+ free(filename);
+ filename = hb_strdup_printf("%s/%s", dirname, entry->d_name);
unlink( filename );
+ free(filename);
break;
}
+ free(filename);
}
}
+ free(dirname);
closedir( dir );
}
int hb_save_preview( hb_handle_t * h, int title, int preview, hb_buffer_t *buf )
{
FILE * file;
- char filename[1024];
+ char * filename;
char reason[80];
- hb_get_tempory_filename( h, filename, "%d_%d_%d",
- hb_get_instance_id(h), title, preview );
+ filename = hb_get_temporary_filename("%d_%d_%d", hb_get_instance_id(h),
+ title, preview );
file = hb_fopen(filename, "wb");
- if( !file )
+ if (file == NULL)
{
if (strerror_r(errno, reason, 79) != 0)
strcpy(reason, "unknown -- strerror_r() failed");
- hb_error( "hb_save_preview: Failed to open %s (reason: %s)", filename, reason );
+ hb_error("hb_save_preview: Failed to open %s (reason: %s)",
+ filename, reason);
+ free(filename);
return -1;
}
if (strerror_r(errno, reason, 79) != 0)
strcpy(reason, "unknown -- strerror_r() failed");
- hb_error( "hb_save_preview: Failed to write line %d to %s (reason: %s). Preview will be incomplete.",
+ hb_error( "hb_save_preview: Failed to write line %d to %s "
+ "(reason: %s). Preview will be incomplete.",
hh, filename, reason );
goto done;
}
}
done:
+ free(filename);
fclose( file );
return 0;
hb_buffer_t * hb_read_preview(hb_handle_t * h, hb_title_t *title, int preview)
{
FILE * file;
- char filename[1024];
+ char * filename;
char reason[80];
- hb_get_tempory_filename(h, filename, "%d_%d_%d",
- hb_get_instance_id(h), title->index, preview);
+ filename = hb_get_temporary_filename("%d_%d_%d", hb_get_instance_id(h),
+ title->index, preview);
file = hb_fopen(filename, "rb");
- if (!file)
+ if (file == NULL)
{
if (strerror_r(errno, reason, 79) != 0)
strcpy(reason, "unknown -- strerror_r() failed");
- hb_error( "hb_read_preview: Failed to open %s (reason: %s)", filename, reason );
+ hb_error("hb_read_preview: Failed to open %s (reason: %s)",
+ filename, reason);
+ free(filename);
return NULL;
}
if (strerror_r(errno, reason, 79) != 0)
strcpy(reason, "unknown -- strerror_r() failed");
- hb_error( "hb_read_preview: Failed to read line %d from %s (reason: %s). Preview will be incomplete.",
- hh, filename, reason );
+ hb_error("hb_read_preview: Failed to read line %d from %s "
+ "(reason: %s). Preview will be incomplete.",
+ hh, filename, reason );
goto done;
}
}
}
done:
+ free(filename);
fclose(file);
return buf;
*/
void hb_global_close()
{
- char dirname[1024];
- DIR * dir;
+ char * dirname;
+ DIR * dir;
struct dirent * entry;
hb_presets_free();
/* Find and remove temp folder */
- memset( dirname, 0, 1024 );
- hb_get_temporary_directory( dirname );
+ dirname = hb_get_temporary_directory();
dir = opendir( dirname );
if (dir)
{
while( ( entry = readdir( dir ) ) )
{
- char filename[1024];
+ char * filename;
if( entry->d_name[0] == '.' )
{
continue;
}
- memset( filename, 0, 1024 );
- snprintf( filename, 1023, "%s/%s", dirname, entry->d_name );
+ filename = hb_strdup_printf("%s/%s", dirname, entry->d_name);
unlink( filename );
+ free(filename);
}
closedir( dir );
rmdir( dirname );
}
+ free(dirname);
}
/**
static void thread_func( void * _h )
{
hb_handle_t * h = (hb_handle_t *) _h;
- char dirname[1024];
+ char * dirname;
h->pid = getpid();
/* Create folder for temporary files */
- memset( dirname, 0, 1024 );
- hb_get_temporary_directory( dirname );
+ dirname = hb_get_temporary_directory();
hb_mkdir( dirname );
+ free(dirname);
while( !h->die )
{
/************************************************************************
* Get a temporary directory for HB
***********************************************************************/
-void hb_get_temporary_directory( char path[512] )
+char * hb_get_temporary_directory()
{
- char base[512];
- char *p;
+ char * path, * base, * p;
/* Create the base */
#if defined( SYS_CYGWIN ) || defined( SYS_MINGW )
- int i_size = GetTempPath( 512, base );
- if( i_size <= 0 || i_size >= 512 )
+ base = malloc(MAX_PATH);
+ int i_size = GetTempPath( MAX_PATH, base );
+ if( i_size <= 0 || i_size >= MAX_PATH )
{
- if( getcwd( base, 512 ) == NULL )
+ if( getcwd( base, MAX_PATH ) == NULL )
strcpy( base, "c:" ); /* Bad fallback but ... */
}
*p = '/';
#else
if( (p = getenv( "TMPDIR" ) ) != NULL ||
- (p = getenv( "TEMP" ) ) != NULL )
- strcpy( base, p );
+ (p = getenv( "TEMP" ) ) != NULL )
+ base = strdup(p);
else
- strcpy( base, "/tmp" );
+ base = strdup("/tmp");
#endif
/* I prefer to remove evntual last '/' (for cygwin) */
if( base[strlen(base)-1] == '/' )
base[strlen(base)-1] = '\0';
- snprintf(path, 512, "%s/hb.%d", base, (int)getpid());
+ path = hb_strdup_printf("%s/hb.%d", base, (int)getpid());
+ free(base);
+
+ return path;
}
/************************************************************************
* Get a tempory filename for HB
***********************************************************************/
-void hb_get_tempory_filename( hb_handle_t * h, char name[1024],
- char *fmt, ... )
+char * hb_get_temporary_filename( char *fmt, ... )
{
- va_list args;
-
- hb_get_temporary_directory( name );
- strcat( name, "/" );
+ va_list args;
+ char * name, * path;
+ char * dir = hb_get_temporary_directory();
va_start( args, fmt );
- vsnprintf( &name[strlen(name)], 1024 - strlen(name), fmt, args );
+ name = hb_strdup_vaprintf(fmt, args);
va_end( args );
+
+ path = hb_strdup_printf("%s/%s", dir, name);
+ free(dir);
+ free(name);
+
+ return path;
}
/************************************************************************
FILE * hb_fopen(const char *path, const char *mode);
char * hb_strr_dir_sep(const char *path);
+/************************************************************************
+ * File utils
+ ***********************************************************************/
+char * hb_get_temporary_directory(void);
+char * hb_get_temporary_filename( char *fmt, ... );
+
#ifdef __LIBHB__
// Convert utf8 string to current code page.
***********************************************************************/
int hb_dvd_region(char *device, int *region_mask);
-/************************************************************************
- * File utils
- ***********************************************************************/
-void hb_get_temporary_directory( char path[512] );
-void hb_get_tempory_filename( hb_handle_t *, char name[1024],
- char * fmt, ... );
-
#if defined( SYS_DARWIN )
int osx_get_user_config_directory( char path[512] );
#endif