* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#if HAVE_CONFIG_H
# include <config.h>
#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include "FLAC/assert.h"
#include "FLAC/metadata.h"
#include "FLAC/stream_decoder.h"
+#include "share/compat.h"
typedef struct {
FLAC__int32 **pcm;
#undef RNDFUNC
}
-static off_t get_filesize_(const char *srcpath)
+static FLAC__off_t get_filesize_(const char *srcpath)
{
+#if defined _MSC_VER || defined __MINGW32__
+ struct _stat64 srcstat;
+
+ if(0 == _stat64(srcpath, &srcstat))
+#else
struct stat srcstat;
if(0 == stat(srcpath, &srcstat))
+#endif
return srcstat.st_size;
else
return -1;
FILE *f;
unsigned channels = 0, bps = 0, samples, i, j;
- off_t rawfilesize = get_filesize_(rawfilename);
+ FLAC__off_t rawfilesize = get_filesize_(rawfilename);
if (rawfilesize < 0) {
fprintf(stderr, "ERROR: can't determine filesize for %s\n", rawfilename);
return false;
return false;
}
for(i = 0; i < channels; i++) {
- if(0 == (pcm[i] = (FLAC__int32*)malloc(sizeof(FLAC__int32)*samples))) {
+ if(0 == (pcm[i] = malloc(sizeof(FLAC__int32)*samples))) {
printf("ERROR: allocating space for PCM samples\n");
return false;
}
signed char c;
for(i = 0; i < samples; i++) {
for(j = 0; j < channels; j++) {
- fread(&c, 1, 1, f);
- pcm[j][i] = c;
+ if (fread(&c, 1, 1, f) == 1)
+ pcm[j][i] = c;
}
}
}
unsigned char c[2];
for(i = 0; i < samples; i++) {
for(j = 0; j < channels; j++) {
- fread(&c, 1, 2, f);
- pcm[j][i] = ((int)((signed char)c[0])) << 8 | (int)c[1];
+ if (fread(&c, 1, 2, f) == 2)
+ pcm[j][i] = ((int)((signed char)c[0])) << 8 | (int)c[1];
}
}
}
* 1 - read 2 frames
* 2 - read until end
*/
-static FLAC__bool seek_barrage(FLAC__bool is_ogg, const char *filename, off_t filesize, unsigned count, FLAC__int64 total_samples, unsigned read_mode, FLAC__int32 **pcm)
+static FLAC__bool seek_barrage(FLAC__bool is_ogg, const char *filename, FLAC__off_t filesize, unsigned count, FLAC__int64 total_samples, unsigned read_mode, FLAC__int32 **pcm)
{
FLAC__StreamDecoder *decoder;
DecoderClientData decoder_client_data;
const char *flacfilename, *rawfilename = 0;
unsigned count = 0, read_mode;
FLAC__int64 samples = -1;
- off_t flacfilesize;
+ FLAC__off_t flacfilesize;
FLAC__int32 *pcm[2] = { 0, 0 };
FLAC__bool ok = true;
static const char * const usage = "usage: test_seeking file.flac [#seeks] [#samples-in-file.flac] [file.raw]\n";
if (argc < 2 || argc > 5) {
- fprintf(stderr, usage);
+ fputs(usage, stderr);
return 1;
}