From 7d8344f3637d59b982c2ca0b1d8fd2889ec5d4a6 Mon Sep 17 00:00:00 2001 From: Wiimm Date: Sun, 25 Dec 2022 08:25:56 +0100 Subject: SZS v2.32a --- project/src/lib-ledis.h | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) (limited to 'project/src/lib-ledis.h') diff --git a/project/src/lib-ledis.h b/project/src/lib-ledis.h index c6220ab..485271f 100644 --- a/project/src/lib-ledis.h +++ b/project/src/lib-ledis.h @@ -91,12 +91,17 @@ #define LE_MTCAT_MAGIC8 "#MTCAT03" #define LE_MTCAT_MAGIC8_NUM 0x234d544341543033ull +#define LE_CT_SHA1_MAGIC8 "#CT-SHA1" +#define LE_CT_SHA1_MAGIC8_NUM 0x2343542d53484131ull + #define LE_MAX_TRACKS (MKW_MAX_TRACK_SLOT+1) #define LE_TRACK_STRING_MAX 500 //----------------------------------------------------------------------------- typedef u16 le_group_t; +typedef u16 track_slot_t; +typedef u16 cup_slot_t; typedef struct le_track_t le_track_t; typedef struct le_distrib_t le_distrib_t; @@ -369,6 +374,9 @@ static inline void SetOptionsLSP ( le_strpar_t *par, le_options_t opt ) { if (par) par->opt = opt; } char * ScanLSP ( le_strpar_t *par, ccp arg, enumError *ret_err ); +char * ScanOptionalLSP + ( le_strpar_t *par, ccp arg, le_track_text_t fallback, enumError *ret_err ); + ccp GetNameLSP ( const le_strpar_t *par ); ccp GetOptionsLSP ( const le_strpar_t *par, le_options_t mask ); enumError ScanOptionsLSP ( le_strpar_t *par, ccp arg, ccp err_info ); @@ -465,8 +473,8 @@ typedef struct le_track_t { // keep it small! - u16 track_slot; // index of le_distrib_t, 0..MKW_MAX_TRACK_SLOT - u16 cup_slot; // 0 or 'cup * 10 + tidx' + track_slot_t track_slot; // index of le_distrib_t, 0..MKW_MAX_TRACK_SLOT + cup_slot_t cup_slot; // 0 or 'cup * 10 + tidx' le_track_status_t track_status; // LTS_INVALID | LTS_VALID | LTS_ACTIVE | LTS_EXPORT le_track_type_t track_type; // LTTY_NONE | LTTY_ARENA | LTTY_TRACK | LTTY_RANDOM @@ -476,6 +484,7 @@ typedef struct le_track_t le_property_t property; // property le_music_t music; // music slot le_flags_t flags; // flags + DistribFlags_t distrib_flags; // distribution flags (G_DTA_*) u8 lap_count; // number of laps, valid if >0.0 float speed_factor; // speed factor, valid if >0.0 @@ -528,6 +537,9 @@ static inline bool IsExportLT ( const le_track_t *lt ) static inline bool IsVisibleLT ( const le_track_t *lt ) { return lt && lt->track_status >= LTS_ACTIVE && !IsHiddenLEFL(lt->flags); } +static inline bool IsTitleLT ( const le_track_t *lt ) + { return lt && lt->track_status >= LTS_ACTIVE && IsTitleLEFL(lt->flags); } + //----------------------------------------------------------------------------- // SetListLT(), SetText*LT(): use 'opt & LEO_LTT_SELECTOR' to select text // recognized options: LEO_M_HOW | LEO_IN_* @@ -557,6 +569,8 @@ void SetTextOptLT ( le_track_t *lt, ccp text, le_options_t opt ); ccp * GetPtrLT ( const le_track_t *lt, const le_strpar_t *par ); ccp * GetPtrOptLT ( const le_track_t *lt, le_options_t opt, bool allow_d ); +const u8 * GetSha1BinLT ( const le_track_t *lt, bool use_d ); + ccp GetSha1LT ( const le_track_t *lt, bool use_d, ccp return_on_empty ); ccp GetIdentLT ( const le_track_t *lt, bool use_d, bool use_sha1, ccp return_on_empty ); ccp GetFileLT ( const le_track_t *lt, ccp return_on_empty ); @@ -600,6 +614,8 @@ ccp GetSlotNameLT ( const le_track_t *lt ); ccp GetCupLT ( const le_track_t *lt, ccp return_on_empty ); ccp GetCupAlignLT ( const le_track_t *lt ); +DistribFlags_t GetDistribFlagsLT ( const le_track_t *lt, bool use_d ); + // /////////////////////////////////////////////////////////////////////////////// /////////////// struct le_track_arch_t /////////////// @@ -678,7 +694,7 @@ typedef struct le_group_info_t { uint group; // group number - u16 *list; // list of group members + track_slot_t *list; // list of group members uint used; // number of group members uint size; // alloced elements of 'list' @@ -722,7 +738,7 @@ typedef struct le_distrib_t //-- this is a reference list, setup by e.g. Sort*() - //-- the list is termianted by a NULL pointer. + //-- the list is terminated by a NULL pointer. le_track_t **reflist; // reference list, terminated by NULL uint reflist_used; // used elements in 'tlist' @@ -749,6 +765,18 @@ typedef struct le_distrib_t } le_distrib_t; +//----------------------------------------------------------------------------- +// [[ld_out_param_t]] + +typedef struct ld_out_param_t +{ + ccp fname; + FILE *f; + const ColorSet_t *colset; + le_distrib_t *ld; +} +ld_out_param_t; + //----------------------------------------------------------------------------- void InitializeLD ( le_distrib_t *ld ); @@ -947,10 +975,12 @@ enumError CreateLeDefLD ( FILE *f, le_distrib_t *ld ); enumError CreateLecodeLD ( FILE *f, le_distrib_t *ld, le_region_t region ); enumError CreateLparLD ( FILE *f, le_distrib_t *ld, bool print_full ); enumError CreateBmgLD ( FILE *f, le_distrib_t *ld, bool bmg_text ); -enumError CreateCupIconsLD ( FILE *f, le_distrib_t *ld, ccp fname, mem_t par_opt, bool print_info ); +enumError CreateCupIconsLD ( FILE *f, le_distrib_t *ld, ccp fname, const le_strpar_t *src, + mem_t mem_opt, bool print_info ); enumError CreateLeInfoLD ( FILE *f, const le_distrib_t *ld, bool list_only ); enumError CreateDebugLD ( FILE *f, const le_distrib_t *ld ); +enumError CreateReportLD ( ld_out_param_t *lop, mem_t mem_opt ); enumError CreateLecode4LD ( ccp fname, le_distrib_t *ld ); @@ -975,6 +1005,7 @@ enumError TransferFilesLD ( le_distrib_t *ld, bool logit, bool testmode ); void UpdateDistribLD ( le_distrib_t *ld, bool overwrite ); bool AddDistribParamLD ( le_distrib_t *ld, ccp src, ccp end ); +bool SortTracksLD ( le_distrib_t *ld, const le_strpar_t *src, mem_t mem_opt ); enumError ImportDistribLD ( le_distrib_t *ld, cvp data, uint size ); enumError ImportDistribSTLD ( le_distrib_t *ld, ScanText_t *st ); -- cgit v1.3.1