static int isom_read_minimum_chapter( FILE *chapter, isom_chapter_entry_t *data ) { char buff[CHAPTER_BUFSIZE]; if( isom_lumber_line( buff, CHAPTER_BUFSIZE, chapter ) < 0 ) /* read newline */ return LSMASH_ERR_NAMELESS; char *p_buff = &buff[ !memcmp( buff, UTF8_BOM, UTF8_BOM_LENGTH ) ? UTF8_BOM_LENGTH : 0 ]; /* BOM detection */ if( isom_get_start_time( p_buff, data ) < 0 ) /* get start_time */ return LSMASH_ERR_INVALID_DATA; /* get chapter_name */ char *chapter_name = strchr( buff, ' ' ); /* find separator */ if( !chapter_name++ ) return LSMASH_ERR_INVALID_DATA; int len = LSMASH_MIN( 255, strlen( chapter_name ) ); /* We support length of chapter_name up to 255 */ data->chapter_name = (char *)lsmash_malloc( len + 1 ); if( !data->chapter_name ) return LSMASH_ERR_MEMORY_ALLOC; memcpy( data->chapter_name, chapter_name, len ); data->chapter_name[len] = '\0'; return 0; }
static int isom_read_minimum_chapter( FILE *chapter, isom_chapter_entry_t *data ) { char buff[CHAPTER_BUFSIZE]; int len; if( isom_lumber_line( buff, CHAPTER_BUFSIZE, chapter ) ) /* read newline */ return -1; char *p_buff = !memcmp( buff, UTF8_BOM, UTF8_BOM_LENGTH ) ? &buff[UTF8_BOM_LENGTH] : &buff[0]; /* BOM detection */ if( isom_get_start_time( p_buff, data ) ) /* get start_time */ return -1; /* get chapter_name */ char *chapter_name = strchr( buff, ' ' ); /* find separator */ if( !chapter_name++ ) return -1; len = LSMASH_MIN( 255, strlen( chapter_name ) ); /* We support length of chapter_name up to 255 */ data->chapter_name = (char *)malloc( len + 1 ); if( !data->chapter_name ) return -1; memcpy( data->chapter_name, chapter_name, len ); data->chapter_name[len] = '\0'; return 0; }
static int isom_read_simple_chapter( FILE *chapter, isom_chapter_entry_t *data ) { char buff[CHAPTER_BUFSIZE]; /* get start_time */ if( isom_lumber_line( buff, CHAPTER_BUFSIZE, chapter ) < 0 ) return LSMASH_ERR_NAMELESS; char *chapter_time = strchr( buff, '=' ); /* find separator */ if( !chapter_time++ ) return LSMASH_ERR_INVALID_DATA; if( isom_get_start_time( chapter_time, data ) < 0 ) return LSMASH_ERR_INVALID_DATA; if( isom_lumber_line( buff, CHAPTER_BUFSIZE, chapter ) < 0 ) /* get chapter_name */ return LSMASH_ERR_NAMELESS; char *chapter_name = strchr( buff, '=' ); /* find separator */ if( !chapter_name++ ) return LSMASH_ERR_INVALID_DATA; int len = LSMASH_MIN( 255, strlen( chapter_name ) ); /* We support length of chapter_name up to 255 */ data->chapter_name = (char *)lsmash_malloc( len + 1 ); if( !data->chapter_name ) return LSMASH_ERR_MEMORY_ALLOC; memcpy( data->chapter_name, chapter_name, len ); data->chapter_name[len] = '\0'; return 0; }
static int isom_read_simple_chapter( FILE *chapter, isom_chapter_entry_t *data ) { char buff[CHAPTER_BUFSIZE]; int len; /* get start_time */ if( isom_lumber_line( buff, CHAPTER_BUFSIZE, chapter ) ) return -1; char *chapter_time = strchr( buff, '=' ); /* find separator */ if( !chapter_time++ || isom_get_start_time( chapter_time, data ) || isom_lumber_line( buff, CHAPTER_BUFSIZE, chapter ) ) /* get chapter_name */ return -1; char *chapter_name = strchr( buff, '=' ); /* find separator */ if( !chapter_name++ ) return -1; len = LSMASH_MIN( 255, strlen( chapter_name ) ); /* We support length of chapter_name up to 255 */ data->chapter_name = (char *)malloc( len + 1 ); if( !data->chapter_name ) return -1; memcpy( data->chapter_name, chapter_name, len ); data->chapter_name[len] = '\0'; return 0; }