+ u32_t padding = ((drec->name.len + sizeof(drec->name)) % 2) != 0;
+ u32_t su_offset = drec->name.len + sizeof(struct iso_drecord) + padding;
+ int su_len = drec_len - su_offset - 2, i = 0;
+
+ while (i < su_len) {
+ struct isosu_base* su_entry =
+ (struct isosu_base*)((void*)drec + su_offset + i);
+ switch (su_entry->signature) {
+ case ISORR_NM:
+ i += isorr_parse_nm(cache, (void*)su_entry);
+ break;
+ case ISORR_PX:
+ i += isorr_parse_px(cache, (void*)su_entry);
+ break;
+ case ISORR_TF:
+ i += isorr_parse_tf(cache, (void*)su_entry);
+ break;
+ case ISOSU_ST:
+ goto done;
+ default:
+ i += su_entry->length;
+ break;
+ }
+ }
+
+done:
+ if (cache->name.len) {
+ return;
+ }
+
+ // Load ISO9660 file id if no NM found.
+
+ ;
+ char name_val = drec->name.content[0];