diff --git a/audio/resampler/audio_resampler.c b/audio/resampler/audio_resampler.c index 6a26bda..9c84f38 100644 --- a/audio/resampler/audio_resampler.c +++ b/audio/resampler/audio_resampler.c @@ -80,36 +80,6 @@ static int find_resampler_driver_index(const char *ident) return -1; } -/** - * audio_resampler_driver_find_handle: - * @idx : index of driver to get handle to. - * - * Returns: handle to audio resampler driver at index. Can be NULL - * if nothing found. - **/ -const void *audio_resampler_driver_find_handle(int idx) -{ - const void *drv = resampler_drivers[idx]; - if (!drv) - return NULL; - return drv; -} - -/** - * audio_resampler_driver_find_ident: - * @idx : index of driver to get handle to. - * - * Returns: Human-readable identifier of audio resampler driver at index. - * Can be NULL if nothing found. - **/ -const char *audio_resampler_driver_find_ident(int idx) -{ - const retro_resampler_t *drv = resampler_drivers[idx]; - if (!drv) - return NULL; - return drv->ident; -} - /** * find_resampler_driver: * @ident : Identifier of resampler driver to find. @@ -154,6 +124,37 @@ static bool resampler_append_plugs(void **re, return true; } + +/** + * audio_resampler_driver_find_handle: + * @idx : index of driver to get handle to. + * + * Returns: handle to audio resampler driver at index. Can be NULL + * if nothing found. + **/ +const void *audio_resampler_driver_find_handle(int idx) +{ + const void *drv = resampler_drivers[idx]; + if (!drv) + return NULL; + return drv; +} + +/** + * audio_resampler_driver_find_ident: + * @idx : index of driver to get handle to. + * + * Returns: Human-readable identifier of audio resampler driver at index. + * Can be NULL if nothing found. + **/ +const char *audio_resampler_driver_find_ident(int idx) +{ + const retro_resampler_t *drv = resampler_drivers[idx]; + if (!drv) + return NULL; + return drv->ident; +} + /** * retro_resampler_realloc: * @re : Resampler handle diff --git a/audio/resampler/drivers/nearest_resampler.c b/audio/resampler/drivers/nearest_resampler.c index fef7014..a0da50b 100644 --- a/audio/resampler/drivers/nearest_resampler.c +++ b/audio/resampler/drivers/nearest_resampler.c @@ -40,11 +40,11 @@ static void resampler_nearest_process( audio_frame_float_t *outp = (audio_frame_float_t*)data->data_out; float ratio = 1.0 / data->ratio; - while(inp != inp_max) + while (inp != inp_max) { - while(re->fraction > 1) + while (re->fraction > 1) { - *outp++ = *inp; + *outp++ = *inp; re->fraction -= ratio; } re->fraction++; diff --git a/encodings/encoding_utf.c b/encodings/encoding_utf.c index fda119e..190264a 100644 --- a/encodings/encoding_utf.c +++ b/encodings/encoding_utf.c @@ -37,6 +37,8 @@ #include #endif +#define UTF8_WALKBYTE(string) (*((*(string))++)) + static unsigned leading_ones(uint8_t c) { unsigned ones = 0; @@ -89,13 +91,14 @@ size_t utf8_conv_utf32(uint32_t *out, size_t out_chars, bool utf16_conv_utf8(uint8_t *out, size_t *out_chars, const uint16_t *in, size_t in_size) { - static uint8_t kUtf8Limits[5] = { 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; - size_t out_pos = 0; - size_t in_pos = 0; + size_t out_pos = 0; + size_t in_pos = 0; + static const + uint8_t utf8_limits[5] = { 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; for (;;) { - unsigned numAdds; + unsigned num_adds; uint32_t value; if (in_pos == in_size) @@ -124,21 +127,21 @@ bool utf16_conv_utf8(uint8_t *out, size_t *out_chars, value = (((value - 0xD800) << 10) | (c2 - 0xDC00)) + 0x10000; } - for (numAdds = 1; numAdds < 5; numAdds++) - if (value < (((uint32_t)1) << (numAdds * 5 + 6))) + for (num_adds = 1; num_adds < 5; num_adds++) + if (value < (((uint32_t)1) << (num_adds * 5 + 6))) break; if (out) - out[out_pos] = (char)(kUtf8Limits[numAdds - 1] - + (value >> (6 * numAdds))); + out[out_pos] = (char)(utf8_limits[num_adds - 1] + + (value >> (6 * num_adds))); out_pos++; do { - numAdds--; + num_adds--; if (out) out[out_pos] = (char)(0x80 - + ((value >> (6 * numAdds)) & 0x3F)); + + ((value >> (6 * num_adds)) & 0x3F)); out_pos++; - }while (numAdds != 0); + }while (num_adds != 0); } *out_chars = out_pos; @@ -166,13 +169,15 @@ size_t utf8cpy(char *d, size_t d_len, const char *s, size_t chars) while (*sb && chars-- > 0) { sb++; - while ((*sb & 0xC0) == 0x80) sb++; + while ((*sb & 0xC0) == 0x80) + sb++; } if ((size_t)(sb - sb_org) > d_len-1 /* NUL */) { sb = sb_org + d_len-1; - while ((*sb & 0xC0) == 0x80) sb--; + while ((*sb & 0xC0) == 0x80) + sb--; } memcpy(d, sb_org, sb-sb_org); @@ -184,14 +189,18 @@ size_t utf8cpy(char *d, size_t d_len, const char *s, size_t chars) const char *utf8skip(const char *str, size_t chars) { const uint8_t *strb = (const uint8_t*)str; + if (!chars) return str; + do { strb++; - while ((*strb & 0xC0)==0x80) strb++; + while ((*strb & 0xC0)==0x80) + strb++; chars--; - } while(chars); + }while (chars); + return (const char*)strb; } @@ -211,24 +220,22 @@ size_t utf8len(const char *string) return ret; } -#define utf8_walkbyte(string) (*((*(string))++)) - /* Does not validate the input, returns garbage if it's not UTF-8. */ uint32_t utf8_walk(const char **string) { - uint8_t first = utf8_walkbyte(string); + uint8_t first = UTF8_WALKBYTE(string); uint32_t ret = 0; if (first < 128) return first; - ret = (ret << 6) | (utf8_walkbyte(string) & 0x3F); + ret = (ret << 6) | (UTF8_WALKBYTE(string) & 0x3F); if (first >= 0xE0) { - ret = (ret << 6) | (utf8_walkbyte(string) & 0x3F); + ret = (ret << 6) | (UTF8_WALKBYTE(string) & 0x3F); if (first >= 0xF0) { - ret = (ret << 6) | (utf8_walkbyte(string) & 0x3F); + ret = (ret << 6) | (UTF8_WALKBYTE(string) & 0x3F); return ret | (first & 7) << 18; } return ret | (first & 15) << 12; @@ -379,13 +386,13 @@ char* local_to_utf8_string_alloc(const char *str) wchar_t* utf8_to_utf16_string_alloc(const char *str) { #ifdef _WIN32 - int len = 0; - int out_len = 0; + int len = 0; + int out_len = 0; #else - size_t len = 0; + size_t len = 0; size_t out_len = 0; #endif - wchar_t *buf = NULL; + wchar_t *buf = NULL; if (!str || !*str) return NULL; diff --git a/file/archive_file.c b/file/archive_file.c index 3fa52b0..659140f 100644 --- a/file/archive_file.c +++ b/file/archive_file.c @@ -648,7 +648,7 @@ bool file_archive_perform_mode(const char *path, const char *valid_exts, { ret = handle.backend->stream_decompress_data_to_file_iterate( handle.stream); - }while(ret == 0); + }while (ret == 0); if (!file_archive_decompress_data_to_file(&handle, ret, path, valid_exts, diff --git a/file/archive_file_zlib.c b/file/archive_file_zlib.c index 7cbc3b8..e2da2d7 100644 --- a/file/archive_file_zlib.c +++ b/file/archive_file_zlib.c @@ -142,7 +142,7 @@ static bool zip_file_decompressed_handle( { ret = handle->backend->stream_decompress_data_to_file_iterate( handle->stream); - }while(ret == 0); + }while (ret == 0); #if 0 handle->real_checksum = handle->backend->stream_crc_calculate(0, @@ -272,7 +272,7 @@ static int zip_file_read( "", zip_file_decompressed, &userdata); if (!returnerr) break; - }while(ret == 0 && !userdata.decomp_state.found); + } while (ret == 0 && !userdata.decomp_state.found); file_archive_parse_file_iterate_stop(&zlib); diff --git a/formats/bmp/rbmp.c b/formats/bmp/rbmp.c index b206fcb..791c28b 100644 --- a/formats/bmp/rbmp.c +++ b/formats/bmp/rbmp.c @@ -735,7 +735,7 @@ static void rbmp_convert_frame(uint32_t *frame, unsigned width, unsigned height) { uint32_t *end = frame + (width * height * sizeof(uint32_t))/4; - while(frame < end) + while (frame < end) { uint32_t pixel = *frame; *frame = (pixel & 0xff00ff00) | ((pixel << 16) & 0x00ff0000) | ((pixel >> 16) & 0xff); diff --git a/formats/image_texture.c b/formats/image_texture.c index 1c4a605..bfd7e78 100644 --- a/formats/image_texture.c +++ b/formats/image_texture.c @@ -220,7 +220,7 @@ static bool image_texture_load_internal( ret = image_transfer_process(img, type, (uint32_t**)&out_img->pixels, len, &out_img->width, &out_img->height); - }while(ret == IMAGE_PROCESS_NEXT); + } while (ret == IMAGE_PROCESS_NEXT); if (ret == IMAGE_PROCESS_ERROR || ret == IMAGE_PROCESS_ERROR_END) goto end; diff --git a/formats/png/rpng.c b/formats/png/rpng.c index 57c26a7..ae94b81 100644 --- a/formats/png/rpng.c +++ b/formats/png/rpng.c @@ -705,10 +705,11 @@ static int png_reverse_filter_adam7_iterate(uint32_t **data_, if (png_reverse_filter_init(&pngp->ihdr, pngp) == -1) return IMAGE_PROCESS_ERROR; - do{ + do + { ret = png_reverse_filter_regular_iterate(&pngp->data, &pngp->ihdr, pngp); - }while(ret == IMAGE_PROCESS_NEXT); + } while (ret == IMAGE_PROCESS_NEXT); if (ret == IMAGE_PROCESS_ERROR || ret == IMAGE_PROCESS_ERROR_END) return IMAGE_PROCESS_ERROR; diff --git a/formats/png/rpng_encode.c b/formats/png/rpng_encode.c index ab071fa..7bbe512 100644 --- a/formats/png/rpng_encode.c +++ b/formats/png/rpng_encode.c @@ -36,7 +36,7 @@ fprintf(stderr, "[RPNG]: Error in line %d.\n", __LINE__); \ ret = false; \ goto end; \ -} while(0) +} while (0) double DEFLATE_PADDING = 1.1; int PNG_ROUGH_HEADER = 100; diff --git a/formats/png/rpng_internal.h b/formats/png/rpng_internal.h index 573b776..3e4dcc9 100644 --- a/formats/png/rpng_internal.h +++ b/formats/png/rpng_internal.h @@ -32,7 +32,7 @@ fprintf(stderr, "[RPNG]: Error in line %d.\n", __LINE__); \ ret = false; \ goto end; \ -} while(0) +} while (0) #ifndef ARRAY_SIZE #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) diff --git a/hash/rhash.c b/hash/rhash.c index 1711592..26d9dfc 100644 --- a/hash/rhash.c +++ b/hash/rhash.c @@ -448,13 +448,13 @@ static void SHA1PadMessage(struct sha1_context *context) if (context->Message_Block_Index > 55) { - while(context->Message_Block_Index < 64) + while (context->Message_Block_Index < 64) context->Message_Block[context->Message_Block_Index++] = 0; SHA1ProcessMessageBlock(context); } - while(context->Message_Block_Index < 56) + while (context->Message_Block_Index < 56) context->Message_Block[context->Message_Block_Index++] = 0; /* Store the message length as the last 8 octets */ @@ -497,7 +497,7 @@ static void SHA1Input(struct sha1_context *context, return; } - while(length-- && !context->Corrupted) + while (length-- && !context->Corrupted) { context->Message_Block[context->Message_Block_Index++] = (*message_array & 0xFF); @@ -544,7 +544,7 @@ int sha1_calculate(const char *path, char *result) goto error; SHA1Input(&sha, buff, rv); - }while(rv); + } while (rv); if (!SHA1Result(&sha)) goto error; diff --git a/include/string/stdstring.h b/include/string/stdstring.h index 4f8e897..07446bf 100644 --- a/include/string/stdstring.h +++ b/include/string/stdstring.h @@ -148,7 +148,7 @@ char *word_wrap(char *buffer, const char *string, * char *str = "1,2,3,4,5,6,7,,,10,"; * char **str_ptr = &str; * char *token = NULL; - * while((token = string_tokenize(str_ptr, ","))) + * while ((token = string_tokenize(str_ptr, ","))) * { * printf("%s\n", token); * free(token); diff --git a/streams/file_stream.c b/streams/file_stream.c index a5da211..2266d3f 100644 --- a/streams/file_stream.c +++ b/streams/file_stream.c @@ -203,9 +203,7 @@ char* filestream_gets(RFILE *stream, char *s, size_t len) int filestream_getc(RFILE *stream) { char c = 0; - if (!stream) - return EOF; - if (filestream_read(stream, &c, 1) == 1) + if (stream && filestream_read(stream, &c, 1) == 1) return (int)(unsigned char)c; return EOF; } @@ -215,7 +213,6 @@ int filestream_scanf(RFILE *stream, const char* format, ...) char buf[4096]; char subfmt[64]; va_list args; - const char * bufiter = buf; int64_t startpos = filestream_tell(stream); int ret = 0; @@ -233,7 +230,6 @@ int filestream_scanf(RFILE *stream, const char* format, ...) if (*format == '%') { int sublen; - char* subfmtiter = subfmt; bool asterisk = false; @@ -243,19 +239,25 @@ int filestream_scanf(RFILE *stream, const char* format, ...) if (*format == '*') { - asterisk = true; + asterisk = true; *subfmtiter++ = *format++; } - while (isdigit(*format)) *subfmtiter++ = *format++; /* width */ + while (isdigit(*format)) + *subfmtiter++ = *format++; /* width */ /* length */ if (*format == 'h' || *format == 'l') { - if (format[1] == format[0]) *subfmtiter++ = *format++; - *subfmtiter++ = *format++; + if (format[1] == format[0]) + *subfmtiter++ = *format++; + *subfmtiter++ = *format++; } - else if (*format == 'j' || *format == 'z' || *format == 't' || *format == 'L') + else if ( + *format == 'j' || + *format == 'z' || + *format == 't' || + *format == 'L') { *subfmtiter++ = *format++; } @@ -263,14 +265,16 @@ int filestream_scanf(RFILE *stream, const char* format, ...) /* specifier - always a single character (except ]) */ if (*format == '[') { - while (*format != ']') *subfmtiter++ = *format++; - *subfmtiter++ = *format++; + while (*format != ']') + *subfmtiter++ = *format++; + *subfmtiter++ = *format++; } - else *subfmtiter++ = *format++; + else + *subfmtiter++ = *format++; - *subfmtiter++ = '%'; - *subfmtiter++ = 'n'; - *subfmtiter++ = '\0'; + *subfmtiter++ = '%'; + *subfmtiter++ = 'n'; + *subfmtiter++ = '\0'; if (sizeof(void*) != sizeof(long*)) abort(); /* all pointers must have the same size */ if (asterisk) diff --git a/string/stdstring.c b/string/stdstring.c index 4beef25..ab8ade2 100644 --- a/string/stdstring.c +++ b/string/stdstring.c @@ -119,18 +119,18 @@ char *string_replace_substring(const char *in, /* Remove leading whitespaces */ char *string_trim_whitespace_left(char *const s) { - if(s && *s) + if (s && *s) { size_t len = strlen(s); char *current = s; - while(*current && isspace((unsigned char)*current)) + while (*current && isspace((unsigned char)*current)) { ++current; --len; } - if(s != current) + if (s != current) memmove(s, current, len + 1); } @@ -140,12 +140,12 @@ char *string_trim_whitespace_left(char *const s) /* Remove trailing whitespaces */ char *string_trim_whitespace_right(char *const s) { - if(s && *s) + if (s && *s) { size_t len = strlen(s); char *current = s + len - 1; - while(current != s && isspace((unsigned char)*current)) + while (current != s && isspace((unsigned char)*current)) { --current; --len; @@ -202,7 +202,7 @@ char *word_wrap(char* buffer, const char *string, int line_width, bool unicode, buffer[i] = string[i]; char_len--; i++; - } while(char_len); + } while (char_len); /* check for newlines embedded in the original input * and reset the index */ @@ -260,7 +260,7 @@ char *word_wrap(char* buffer, const char *string, int line_width, bool unicode, * char *str = "1,2,3,4,5,6,7,,,10,"; * char **str_ptr = &str; * char *token = NULL; - * while((token = string_tokenize(str_ptr, ","))) + * while ((token = string_tokenize(str_ptr, ","))) * { * printf("%s\n", token); * free(token); diff --git a/vfs/vfs_implementation.c b/vfs/vfs_implementation.c index 32b99c1..4afb009 100644 --- a/vfs/vfs_implementation.c +++ b/vfs/vfs_implementation.c @@ -179,7 +179,9 @@ #define RFILE_HINT_UNBUFFERED (1 << 8) -int64_t retro_vfs_file_seek_internal(libretro_vfs_implementation_file *stream, int64_t offset, int whence) +int64_t retro_vfs_file_seek_internal( + libretro_vfs_implementation_file *stream, + int64_t offset, int whence) { if (!stream) return -1; @@ -508,9 +510,7 @@ int retro_vfs_file_close_impl(libretro_vfs_implementation_file *stream) if ((stream->hints & RFILE_HINT_UNBUFFERED) == 0) { if (stream->fp) - { fclose(stream->fp); - } } else { diff --git a/vfs/vfs_implementation_cdrom.c b/vfs/vfs_implementation_cdrom.c index 54d3721..093cd9c 100644 --- a/vfs/vfs_implementation_cdrom.c +++ b/vfs/vfs_implementation_cdrom.c @@ -30,6 +30,7 @@ #include #endif +/* TODO/FIXME - static global variable */ static cdrom_toc_t vfs_cdrom_toc = {0}; const cdrom_toc_t* retro_vfs_file_get_cdrom_toc(void) @@ -37,7 +38,9 @@ const cdrom_toc_t* retro_vfs_file_get_cdrom_toc(void) return &vfs_cdrom_toc; } -int64_t retro_vfs_file_seek_cdrom(libretro_vfs_implementation_file *stream, int64_t offset, int whence) +int64_t retro_vfs_file_seek_cdrom( + libretro_vfs_implementation_file *stream, + int64_t offset, int whence) { const char *ext = path_get_extension(stream->orig_path); @@ -52,68 +55,84 @@ int64_t retro_vfs_file_seek_cdrom(libretro_vfs_implementation_file *stream, int6 stream->cdrom.byte_pos += offset; break; case SEEK_END: - stream->cdrom.byte_pos = (stream->cdrom.cue_len - 1) + offset; + stream->cdrom.byte_pos = (stream->cdrom.cue_len - 1) + offset; break; } #ifdef CDROM_DEBUG - printf("[CDROM] Seek: Path %s Offset %" PRIu64 " is now at %" PRIu64 "\n", stream->orig_path, offset, stream->cdrom.byte_pos); + printf("[CDROM] Seek: Path %s Offset %" PRIu64 " is now at %" PRIu64 "\n", + stream->orig_path, + offset, + stream->cdrom.byte_pos); fflush(stdout); #endif } else if (string_is_equal_noncase(ext, "bin")) { - int lba = (offset / 2352); - unsigned char min = 0; - unsigned char sec = 0; - unsigned char frame = 0; + int lba = (offset / 2352); + unsigned char min = 0; + unsigned char sec = 0; + unsigned char frame = 0; +#ifdef CDROM_DEBUG const char *seek_type = "SEEK_SET"; - - (void)seek_type; +#endif switch (whence) { case SEEK_CUR: - { - unsigned new_lba; - - stream->cdrom.byte_pos += offset; - new_lba = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba + (stream->cdrom.byte_pos / 2352); - seek_type = "SEEK_CUR"; - - cdrom_lba_to_msf(new_lba, &min, &sec, &frame); + { + unsigned new_lba; +#ifdef CDROM_DEBUG + seek_type = "SEEK_CUR"; +#endif + stream->cdrom.byte_pos += offset; + new_lba = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba + (stream->cdrom.byte_pos / 2352); + cdrom_lba_to_msf(new_lba, &min, &sec, &frame); + } break; - } case SEEK_END: - { - ssize_t pregap_lba_len = (vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].audio ? 0 : (vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba - vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba_start)); - ssize_t lba_len = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_size - pregap_lba_len; - - cdrom_lba_to_msf(lba_len + lba, &min, &sec, &frame); - - stream->cdrom.byte_pos = lba_len * 2352; - seek_type = "SEEK_END"; + { + ssize_t pregap_lba_len = (vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].audio + ? 0 + : (vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba - vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba_start)); + ssize_t lba_len = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_size - pregap_lba_len; +#ifdef CDROM_DEBUG + seek_type = "SEEK_END"; +#endif + cdrom_lba_to_msf(lba_len + lba, &min, &sec, &frame); + stream->cdrom.byte_pos = lba_len * 2352; + } break; - } case SEEK_SET: default: - { - seek_type = "SEEK_SET"; - stream->cdrom.byte_pos = offset; - cdrom_lba_to_msf(vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba + (stream->cdrom.byte_pos / 2352), &min, &sec, &frame); + { +#ifdef CDROM_DEBUG + seek_type = "SEEK_SET"; +#endif + stream->cdrom.byte_pos = offset; + cdrom_lba_to_msf(vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba + (stream->cdrom.byte_pos / 2352), &min, &sec, &frame); + } break; - } } - stream->cdrom.cur_min = min; - stream->cdrom.cur_sec = sec; + stream->cdrom.cur_min = min; + stream->cdrom.cur_sec = sec; stream->cdrom.cur_frame = frame; - stream->cdrom.cur_lba = cdrom_msf_to_lba(min, sec, frame); + stream->cdrom.cur_lba = cdrom_msf_to_lba(min, sec, frame); #ifdef CDROM_DEBUG - printf("[CDROM] Seek %s: Path %s Offset %" PRIu64 " is now at %" PRIu64 " (MSF %02u:%02u:%02u) (LBA %u)...\n", seek_type, stream->orig_path, offset, stream->cdrom.byte_pos, (unsigned)stream->cdrom.cur_min, (unsigned)stream->cdrom.cur_sec, (unsigned)stream->cdrom.cur_frame, stream->cdrom.cur_lba); + printf( + "[CDROM] Seek %s: Path %s Offset %" PRIu64 " is now at %" PRIu64 " (MSF %02u:%02u:%02u) (LBA %u)...\n", + seek_type, + stream->orig_path, + offset, + stream->cdrom.byte_pos, + (unsigned)stream->cdrom.cur_min, + (unsigned)stream->cdrom.cur_sec, + (unsigned)stream->cdrom.cur_frame, + stream->cdrom.cur_lba); fflush(stdout); #endif } @@ -128,13 +147,14 @@ void retro_vfs_file_open_cdrom( const char *path, unsigned mode, unsigned hints) { #if defined(__linux__) && !defined(ANDROID) - char cdrom_path[] = "/dev/sg1"; - size_t path_len = strlen(path); - const char *ext = path_get_extension(path); + char cdrom_path[] = "/dev/sg1"; + size_t path_len = strlen(path); + const char *ext = path_get_extension(path); stream->cdrom.cur_track = 1; - if (!string_is_equal_noncase(ext, "cue") && !string_is_equal_noncase(ext, "bin")) + if ( !string_is_equal_noncase(ext, "cue") + && !string_is_equal_noncase(ext, "bin")) return; if (path_len >= STRLEN_CONST("drive1-track01.bin")) @@ -160,7 +180,7 @@ void retro_vfs_file_open_cdrom( { if (path[5] >= '0' && path[5] <= '9') { - cdrom_path[7] = path[5]; + cdrom_path[7] = path[5]; stream->cdrom.drive = path[5]; vfs_cdrom_toc.drive = stream->cdrom.drive; } @@ -184,7 +204,12 @@ void retro_vfs_file_open_cdrom( stream->cdrom.cue_buf = NULL; } - cdrom_write_cue(stream, &stream->cdrom.cue_buf, &stream->cdrom.cue_len, stream->cdrom.drive, &vfs_cdrom_toc.num_tracks, &vfs_cdrom_toc); + cdrom_write_cue(stream, + &stream->cdrom.cue_buf, + &stream->cdrom.cue_len, + stream->cdrom.drive, + &vfs_cdrom_toc.num_tracks, + &vfs_cdrom_toc); cdrom_get_timeouts(stream, &vfs_cdrom_toc.timeouts); #ifdef CDROM_DEBUG @@ -203,10 +228,11 @@ void retro_vfs_file_open_cdrom( #endif #if defined(_WIN32) && !defined(_XBOX) char cdrom_path[] = "\\\\.\\D:"; - size_t path_len = strlen(path); - const char *ext = path_get_extension(path); + size_t path_len = strlen(path); + const char *ext = path_get_extension(path); - if (!string_is_equal_noncase(ext, "cue") && !string_is_equal_noncase(ext, "bin")) + if ( !string_is_equal_noncase(ext, "cue") + && !string_is_equal_noncase(ext, "bin")) return; if (path_len >= STRLEN_CONST("d:/drive-track01.bin")) @@ -229,7 +255,7 @@ void retro_vfs_file_open_cdrom( { if ((path[0] >= 'A' && path[0] <= 'Z') || (path[0] >= 'a' && path[0] <= 'z')) { - cdrom_path[4] = path[0]; + cdrom_path[4] = path[0]; stream->cdrom.drive = path[0]; vfs_cdrom_toc.drive = stream->cdrom.drive; } @@ -240,7 +266,13 @@ void retro_vfs_file_open_cdrom( printf("[CDROM] Open: Path %s URI %s\n", cdrom_path, path); fflush(stdout); #endif - stream->fh = CreateFile(cdrom_path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + stream->fh = CreateFile(cdrom_path, + GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL); if (stream->fh == INVALID_HANDLE_VALUE) return; @@ -253,8 +285,14 @@ void retro_vfs_file_open_cdrom( stream->cdrom.cue_buf = NULL; } - cdrom_write_cue(stream, &stream->cdrom.cue_buf, &stream->cdrom.cue_len, stream->cdrom.drive, &vfs_cdrom_toc.num_tracks, &vfs_cdrom_toc); - cdrom_get_timeouts(stream, &vfs_cdrom_toc.timeouts); + cdrom_write_cue(stream, + &stream->cdrom.cue_buf, + &stream->cdrom.cue_len, + stream->cdrom.drive, + &vfs_cdrom_toc.num_tracks, + &vfs_cdrom_toc); + cdrom_get_timeouts(stream, + &vfs_cdrom_toc.timeouts); #ifdef CDROM_DEBUG if (string_is_empty(stream->cdrom.cue_buf)) @@ -272,17 +310,17 @@ void retro_vfs_file_open_cdrom( #endif if (vfs_cdrom_toc.num_tracks > 1 && stream->cdrom.cur_track) { - stream->cdrom.cur_min = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].min; - stream->cdrom.cur_sec = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].sec; + stream->cdrom.cur_min = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].min; + stream->cdrom.cur_sec = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].sec; stream->cdrom.cur_frame = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].frame; - stream->cdrom.cur_lba = cdrom_msf_to_lba(stream->cdrom.cur_min, stream->cdrom.cur_sec, stream->cdrom.cur_frame); + stream->cdrom.cur_lba = cdrom_msf_to_lba(stream->cdrom.cur_min, stream->cdrom.cur_sec, stream->cdrom.cur_frame); } else { - stream->cdrom.cur_min = vfs_cdrom_toc.track[0].min; - stream->cdrom.cur_sec = vfs_cdrom_toc.track[0].sec; + stream->cdrom.cur_min = vfs_cdrom_toc.track[0].min; + stream->cdrom.cur_sec = vfs_cdrom_toc.track[0].sec; stream->cdrom.cur_frame = vfs_cdrom_toc.track[0].frame; - stream->cdrom.cur_lba = cdrom_msf_to_lba(stream->cdrom.cur_min, stream->cdrom.cur_sec, stream->cdrom.cur_frame); + stream->cdrom.cur_lba = cdrom_msf_to_lba(stream->cdrom.cur_min, stream->cdrom.cur_sec, stream->cdrom.cur_frame); } } @@ -340,9 +378,14 @@ int64_t retro_vfs_file_read_cdrom(libretro_vfs_implementation_file *stream, if (string_is_equal_noncase(ext, "cue")) { - if ((int64_t)len >= (int64_t)stream->cdrom.cue_len - stream->cdrom.byte_pos) len = stream->cdrom.cue_len - stream->cdrom.byte_pos - 1; + if ((int64_t)len >= (int64_t)stream->cdrom.cue_len + - stream->cdrom.byte_pos) + len = stream->cdrom.cue_len - stream->cdrom.byte_pos - 1; #ifdef CDROM_DEBUG - printf("[CDROM] Read: Reading %" PRIu64 " bytes from cuesheet starting at %" PRIu64 "...\n", len, stream->cdrom.byte_pos); + printf( + "[CDROM] Read: Reading %" PRIu64 " bytes from cuesheet starting at %" PRIu64 "...\n", + len, + stream->cdrom.byte_pos); fflush(stdout); #endif memcpy(s, stream->cdrom.cue_buf + stream->cdrom.byte_pos, len); @@ -352,30 +395,52 @@ int64_t retro_vfs_file_read_cdrom(libretro_vfs_implementation_file *stream, } else if (string_is_equal_noncase(ext, "bin")) { - size_t skip = stream->cdrom.byte_pos % 2352; - unsigned char min = 0; - unsigned char sec = 0; - unsigned char frame = 0; - unsigned char rmin = 0; - unsigned char rsec = 0; + unsigned char min = 0; + unsigned char sec = 0; + unsigned char frame = 0; + unsigned char rmin = 0; + unsigned char rsec = 0; unsigned char rframe = 0; + size_t skip = stream->cdrom.byte_pos % 2352; - if (stream->cdrom.byte_pos >= vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes) + if (stream->cdrom.byte_pos >= + vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes) return 0; - if (stream->cdrom.byte_pos + len > vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes) - len -= (stream->cdrom.byte_pos + len) - vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes; + if (stream->cdrom.byte_pos + len > + vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes) + len -= (stream->cdrom.byte_pos + len) + - vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes; cdrom_lba_to_msf(stream->cdrom.cur_lba, &min, &sec, &frame); - cdrom_lba_to_msf(stream->cdrom.cur_lba - vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba, &rmin, &rsec, &rframe); + cdrom_lba_to_msf(stream->cdrom.cur_lba + - vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba, + &rmin, &rsec, &rframe); #ifdef CDROM_DEBUG - printf("[CDROM] Read: Reading %" PRIu64 " bytes from %s starting at byte offset %" PRIu64 " (rMSF %02u:%02u:%02u aMSF %02u:%02u:%02u) (LBA %u) skip %" PRIu64 "...\n", len, stream->orig_path, stream->cdrom.byte_pos, (unsigned)rmin, (unsigned)rsec, (unsigned)rframe, (unsigned)min, (unsigned)sec, (unsigned)frame, stream->cdrom.cur_lba, skip); + printf( + "[CDROM] Read: Reading %" PRIu64 " bytes from %s starting at byte offset %" PRIu64 " (rMSF %02u:%02u:%02u aMSF %02u:%02u:%02u) (LBA %u) skip %" PRIu64 "...\n", + len, + stream->orig_path, + stream->cdrom.byte_pos, + (unsigned)rmin, + (unsigned)rsec, + (unsigned)rframe, + (unsigned)min, + (unsigned)sec, + (unsigned)frame, + stream->cdrom.cur_lba, + skip); fflush(stdout); #endif - rv = cdrom_read(stream, &vfs_cdrom_toc.timeouts, min, sec, frame, s, (size_t)len, skip); - /*rv = cdrom_read_lba(stream, stream->cdrom.cur_lba, s, (size_t)len, skip);*/ +#if 1 + rv = cdrom_read(stream, &vfs_cdrom_toc.timeouts, min, sec, + frame, s, (size_t)len, skip); +#else + rv = cdrom_read_lba(stream, stream->cdrom.cur_lba, s, + (size_t)len, skip); +#endif if (rv) { @@ -387,12 +452,28 @@ int64_t retro_vfs_file_read_cdrom(libretro_vfs_implementation_file *stream, } stream->cdrom.byte_pos += len; - stream->cdrom.cur_lba = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba + (stream->cdrom.byte_pos / 2352); + stream->cdrom.cur_lba = + vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba + + (stream->cdrom.byte_pos / 2352); - cdrom_lba_to_msf(stream->cdrom.cur_lba, &stream->cdrom.cur_min, &stream->cdrom.cur_sec, &stream->cdrom.cur_frame); + cdrom_lba_to_msf(stream->cdrom.cur_lba, + &stream->cdrom.cur_min, + &stream->cdrom.cur_sec, + &stream->cdrom.cur_frame); #ifdef CDROM_DEBUG - printf("[CDROM] read %" PRIu64 " bytes, position is now: %" PRIu64 " (MSF %02u:%02u:%02u) (LBA %u)\n", len, stream->cdrom.byte_pos, (unsigned)stream->cdrom.cur_min, (unsigned)stream->cdrom.cur_sec, (unsigned)stream->cdrom.cur_frame, cdrom_msf_to_lba(stream->cdrom.cur_min, stream->cdrom.cur_sec, stream->cdrom.cur_frame)); + printf( + "[CDROM] read %" PRIu64 " bytes, position is now: %" PRIu64 " (MSF %02u:%02u:%02u) (LBA %u)\n", + len, + stream->cdrom.byte_pos, + (unsigned)stream->cdrom.cur_min, + (unsigned)stream->cdrom.cur_sec, + (unsigned)stream->cdrom.cur_frame, + cdrom_msf_to_lba( + stream->cdrom.cur_min, + stream->cdrom.cur_sec, + stream->cdrom.cur_frame) + ); fflush(stdout); #endif @@ -407,7 +488,8 @@ int retro_vfs_file_error_cdrom(libretro_vfs_implementation_file *stream) return 0; } -const vfs_cdrom_t* retro_vfs_file_get_cdrom_position(const libretro_vfs_implementation_file *stream) +const vfs_cdrom_t* retro_vfs_file_get_cdrom_position( + const libretro_vfs_implementation_file *stream) { return &stream->cdrom; }