Browse Source

Use -EISDIR instead of -2 in GetFileLength for directories.

master
Reece H. Dunn 8 years ago
parent
commit
df6a2228b7

+ 4
- 0
src/libespeak-ng/readclause.c View File

@@ -847,6 +847,10 @@ static espeak_ng_STATUS LoadSoundFile(const char *fname, int index, espeak_ng_ER
}

length = GetFileLength(fname);
if (length < 0) { // length == -errno
fclose(f);
return create_file_error_context(context, -length, fname);
}
if (fseek(f, 0, SEEK_SET) == -1) {
int error = errno;
fclose(f);

+ 3
- 3
src/libespeak-ng/speech.c View File

@@ -232,14 +232,14 @@ static int check_data_path(const char *path, int allow_directory)
if (!path) return 0;

snprintf(path_home, sizeof(path_home), "%s/espeak-ng-data", path);
if (GetFileLength(path_home) == -2)
if (GetFileLength(path_home) == -EISDIR)
return 1;

if (!allow_directory)
return 0;

snprintf(path_home, sizeof(path_home), "%s", path);
return GetFileLength(path_home) == -2;
return GetFileLength(path_home) == -EISDIR;
}

#pragma GCC visibility push(default)
@@ -284,7 +284,7 @@ int GetFileLength(const char *filename)
return 0;

if (S_ISDIR(statbuf.st_mode))
return -2; // a directory
return -EISDIR;

return statbuf.st_size;
}

+ 2
- 0
src/libespeak-ng/synth_mbrola.c View File

@@ -101,6 +101,8 @@ espeak_ng_STATUS LoadMbrolaTable(const char *mbrola_voice, const char *phtrans,
// read eSpeak's mbrola phoneme translation data, eg. en1_phtrans
sprintf(path, "%s/mbrola_ph/%s", path_home, phtrans);
size = GetFileLength(path);
if (size < 0) // size == -errno
return -size;
if ((f_in = fopen(path, "rb")) == NULL) {
int error = errno;
close_MBR();

+ 2
- 0
src/libespeak-ng/synthdata.c View File

@@ -78,6 +78,8 @@ static espeak_ng_STATUS ReadPhFile(void **ptr, const char *fname, int *size, esp

sprintf(buf, "%s%c%s", path_home, PATHSEP, fname);
length = GetFileLength(buf);
if (length < 0) // length == -errno
return create_file_error_context(context, -length, buf);

if ((f_in = fopen(buf, "rb")) == NULL)
return create_file_error_context(context, errno, buf);

+ 8
- 7
src/libespeak-ng/voices.c View File

@@ -20,6 +20,7 @@
#include "config.h"

#include <ctype.h>
#include <errno.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
@@ -1190,7 +1191,7 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int
}

sprintf(buf, "%s/voices/%s", path_home, language);
if (GetFileLength(buf) == -2) {
if (GetFileLength(buf) == -EISDIR) {
// A subdirectory name has been specified. List all the voices in that subdirectory
language[lang_len++] = PATHSEP;
language[lang_len] = 0;
@@ -1430,11 +1431,11 @@ static void GetVoices(const char *path)
sprintf(fname, "%s%c%s", path, PATHSEP, FindFileData.cFileName);
ftype = GetFileLength(fname);

if (ftype == -2) {
// a sub-sirectory
if (ftype == -EISDIR) {
// a sub-directory
GetVoices(fname);
} else if (ftype > 0) {
// a regular line, add it to the voices list
// a regular file, add it to the voices list
if ((f_voice = fopen(fname, "r")) == NULL)
continue;

@@ -1466,11 +1467,11 @@ static void GetVoices(const char *path)

ftype = GetFileLength(fname);

if (ftype == -2) {
// a sub-sirectory
if (ftype == -EISDIR) {
// a sub-directory
GetVoices(fname);
} else if (ftype > 0) {
// a regular line, add it to the voices list
// a regular file, add it to the voices list
if ((f_voice = fopen(fname, "r")) == NULL)
continue;


Loading…
Cancel
Save