Skip to content

Commit 8f990c4

Browse files
committed
Separated var and data directories.
The datadir contains read-only data installed with and used by applications. While the vardir is supposed to hold files being created and modified on run-time. On Windows, the "prepare" project needs to be built in order to create an empty var directory (or just create it manually next to the other subdirs).
1 parent 8465b20 commit 8f990c4

File tree

13 files changed

+72
-19
lines changed

13 files changed

+72
-19
lines changed

Makefile.am

+1
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,4 @@ dox:
3333

3434
install-data-local:
3535
test -d $(DESTDIR)$(logdir) || $(mkinstalldirs) $(DESTDIR)$(logdir)
36+
test -d $(DESTDIR)$(vardir) || $(mkinstalldirs) $(DESTDIR)$(vardir)

build/tools/prepare.vcproj

+4-4
Large diffs are not rendered by default.

build/tools/prepare.vcxproj

+4
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ xcopy "$(SolutionDir)conf\client-profiles\*.xml" "$(SolutionDir)$(Configuration)
103103

104104
if not exist "$(SolutionDir)$(Configuration)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(Configuration)\data\" /Y
105105
if not exist "$(SolutionDir)$(Configuration)\log" mkdir "$(SolutionDir)$(Configuration)\log\"
106+
if not exist "$(SolutionDir)$(Configuration)\var" mkdir "$(SolutionDir)$(Configuration)\var\"
106107
</Command>
107108
</PreBuildEvent>
108109
</ItemDefinitionGroup>
@@ -130,6 +131,7 @@ xcopy "$(SolutionDir)conf\client-profiles\*.xml" "$(SolutionDir)$(Platform)\$(Co
130131

131132
if not exist "$(SolutionDir)$(Platform)\$(Configuration)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(Platform)\$(Configuration)\data\" /Y
132133
if not exist "$(SolutionDir)$(Platform)\$(Configuration)\log" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\log\"
134+
if not exist "$(SolutionDir)$(Platform)\$(Configuration)\var" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\var\"
133135
</Command>
134136
</PreBuildEvent>
135137
<Midl>
@@ -160,6 +162,7 @@ xcopy "$(SolutionDir)conf\client-profiles\*.xml" "$(SolutionDir)$(Configuration)
160162

161163
if not exist "$(SolutionDir)$(Configuration)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(Configuration)\data\" /Y
162164
if not exist "$(SolutionDir)$(Configuration)\log" mkdir "$(SolutionDir)$(Configuration)\log\"
165+
if not exist "$(SolutionDir)$(Configuration)\var" mkdir "$(SolutionDir)$(Configuration)\var\"
163166
</Command>
164167
</PreBuildEvent>
165168
</ItemDefinitionGroup>
@@ -187,6 +190,7 @@ xcopy "$(SolutionDir)conf\client-profiles\*.xml" "$(SolutionDir)$(Platform)\$(Co
187190

188191
if not exist "$(SolutionDir)$(Platform)\$(Configuration)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(Platform)\$(Configuration)\data\" /Y
189192
if not exist "$(SolutionDir)$(Platform)\$(Configuration)\log" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\log\"
193+
if not exist "$(SolutionDir)$(Platform)\$(Configuration)\var" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\var\"
190194
</Command>
191195
</PreBuildEvent>
192196
<Midl>

config.layout

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
datadir: ${prefix}/data
2020
plugindir: ${exec_prefix}/plugin
2121
logdir: ${exec_prefix}/log
22+
vardir: ${exec_prefix}/var
2223
installbuilddir: ${exec_prefix}/build
2324
includedir: ${prefix}/include
2425
localstatedir: ${prefix}

configure.ac

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ sinclude(build/acmacros/lt~obsolete.m4)
2727
AC_PREFIX_DEFAULT(/usr/local/unimrcp)
2828

2929
dnl Define the directory layout.
30-
APR_ENABLE_LAYOUT(classic, [plugindir logdir])
30+
APR_ENABLE_LAYOUT(classic, [plugindir logdir vardir])
3131
AC_SUBST(plugindir)
3232
AC_SUBST(logdir)
33+
AC_SUBST(vardir)
3334

3435
dnl Reparse the configure arguments.
3536
APR_PARSE_ARGUMENTS

libs/apr-toolkit/include/apt_dir_layout.h

+8-2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ struct apt_dir_layout_t {
4141
char *log_dir_path;
4242
/** Path to data dir */
4343
char *data_dir_path;
44+
/** Path to var dir */
45+
char *var_dir_path;
4446
};
4547

4648
/**
@@ -56,13 +58,17 @@ APT_DECLARE(apt_dir_layout_t*) apt_custom_dir_layout_create(
5658
const char *plugin_dir_path,
5759
const char *log_dir_path,
5860
const char *data_dir_path,
61+
const char *var_dir_path,
5962
apr_pool_t *pool);
6063

64+
/** Construct file path relative to conf dir using the file name specified. */
65+
APT_DECLARE(char*) apt_confdir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool);
66+
6167
/** Construct file path relative to data dir using the file name specified. */
6268
APT_DECLARE(char*) apt_datadir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool);
6369

64-
/** Construct file path relative to conf dir using the file name specified. */
65-
APT_DECLARE(char*) apt_confdir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool);
70+
/** Construct file path relative to var dir using the file name specified. */
71+
APT_DECLARE(char*) apt_vardir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool);
6672

6773

6874
APT_END_EXTERN_C

libs/apr-toolkit/src/apt_dir_layout.c

+20-3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ static apt_dir_layout_t* apt_dir_layout_alloc(apr_pool_t *pool)
2626
dir_layout->plugin_dir_path = NULL;
2727
dir_layout->log_dir_path = NULL;
2828
dir_layout->data_dir_path = NULL;
29+
dir_layout->var_dir_path = NULL;
2930
return dir_layout;
3031
}
3132

@@ -37,6 +38,7 @@ APT_DECLARE(apt_dir_layout_t*) apt_default_dir_layout_create(const char *root_di
3738
apr_filepath_merge(&dir_layout->plugin_dir_path,root_dir_path,"plugin",0,pool);
3839
apr_filepath_merge(&dir_layout->log_dir_path,root_dir_path,"log",0,pool);
3940
apr_filepath_merge(&dir_layout->data_dir_path,root_dir_path,"data",0,pool);
41+
apr_filepath_merge(&dir_layout->var_dir_path,root_dir_path,"var",0,pool);
4042
}
4143
return dir_layout;
4244
}
@@ -46,6 +48,7 @@ APT_DECLARE(apt_dir_layout_t*) apt_custom_dir_layout_create(
4648
const char *plugin_dir_path,
4749
const char *log_dir_path,
4850
const char *data_dir_path,
51+
const char *var_dir_path,
4952
apr_pool_t *pool)
5053
{
5154
apt_dir_layout_t *dir_layout = apt_dir_layout_alloc(pool);
@@ -61,9 +64,23 @@ APT_DECLARE(apt_dir_layout_t*) apt_custom_dir_layout_create(
6164
if(data_dir_path) {
6265
dir_layout->data_dir_path = apr_pstrdup(pool,data_dir_path);
6366
}
67+
if(var_dir_path) {
68+
dir_layout->var_dir_path = apr_pstrdup(pool,var_dir_path);
69+
}
6470
return dir_layout;
6571
}
6672

73+
APT_DECLARE(char*) apt_confdir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool)
74+
{
75+
if(dir_layout && dir_layout->conf_dir_path && file_name) {
76+
char *file_path = NULL;
77+
if(apr_filepath_merge(&file_path,dir_layout->conf_dir_path,file_name,0,pool) == APR_SUCCESS) {
78+
return file_path;
79+
}
80+
}
81+
return NULL;
82+
}
83+
6784
APT_DECLARE(char*) apt_datadir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool)
6885
{
6986
if(dir_layout && dir_layout->data_dir_path && file_name) {
@@ -75,11 +92,11 @@ APT_DECLARE(char*) apt_datadir_filepath_get(const apt_dir_layout_t *dir_layout,
7592
return NULL;
7693
}
7794

78-
APT_DECLARE(char*) apt_confdir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool)
95+
APT_DECLARE(char*) apt_vardir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool)
7996
{
80-
if(dir_layout && dir_layout->conf_dir_path && file_name) {
97+
if(dir_layout && dir_layout->var_dir_path && file_name) {
8198
char *file_path = NULL;
82-
if(apr_filepath_merge(&file_path,dir_layout->conf_dir_path,file_name,0,pool) == APR_SUCCESS) {
99+
if(apr_filepath_merge(&file_path,dir_layout->var_dir_path,file_name,0,pool) == APR_SUCCESS) {
83100
return file_path;
84101
}
85102
}

platforms/umc/src/synthsession.cpp

+11-3
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,19 @@ mrcp_message_t* SynthSession::CreateSpeakRequest(mrcp_channel_t* pMrcpChannel)
281281

282282
FILE* SynthSession::GetAudioOut(const mpf_codec_descriptor_t* pDescriptor, apr_pool_t* pool) const
283283
{
284+
FILE* file;
284285
char* pFileName = apr_psprintf(pool,"synth-%dkHz-%s.pcm",pDescriptor->sampling_rate/1000, GetMrcpSessionId());
285286
apt_dir_layout_t* pDirLayout = GetScenario()->GetDirLayout();
286-
char* pFilePath = apt_datadir_filepath_get(pDirLayout,pFileName,pool);
287-
if(!pFilePath)
287+
char* pFilePath = apt_vardir_filepath_get(pDirLayout,pFileName,pool);
288+
if(!pFilePath)
288289
return NULL;
289290

290-
return fopen(pFilePath,"wb");
291+
apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Speech Output File [%s] for Writing",pFilePath);
292+
file = fopen(pFilePath,"wb");
293+
if(!file)
294+
{
295+
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Speech Output File [%s] for Writing",pFilePath);
296+
return NULL;
297+
}
298+
return file;
291299
}

platforms/unimrcp-client/src/demo_synth_application.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,13 @@ static apt_bool_t synth_application_on_channel_add(mrcp_application_t *applicati
223223
char *file_name = apr_psprintf(pool,"synth-%dkHz-%s.pcm",
224224
descriptor->sampling_rate/1000,
225225
id->buf);
226-
char *file_path = apt_datadir_filepath_get(dir_layout,file_name,pool);
226+
char *file_path = apt_vardir_filepath_get(dir_layout,file_name,pool);
227227
if(file_path) {
228+
apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Speech Output File [%s] for Writing",file_path);
228229
synth_channel->audio_out = fopen(file_path,"wb");
230+
if(!synth_channel->audio_out) {
231+
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Utterance Output File [%s] for Writing",file_path);
232+
}
229233
}
230234
}
231235
}

plugins/demo-recog/src/demo_recog_engine.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -289,9 +289,13 @@ static apt_bool_t demo_recog_channel_recognize(mrcp_engine_channel_t *channel, m
289289
char *file_name = apr_psprintf(channel->pool,"utter-%dkHz-%s.pcm",
290290
descriptor->sampling_rate/1000,
291291
request->channel_id.session_id.buf);
292-
char *file_path = apt_datadir_filepath_get(dir_layout,file_name,channel->pool);
292+
char *file_path = apt_vardir_filepath_get(dir_layout,file_name,channel->pool);
293293
if(file_path) {
294+
apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Utterance Output File [%s] for Writing",file_path);
294295
recog_channel->audio_out = fopen(file_path,"wb");
296+
if(!recog_channel->audio_out) {
297+
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Utterance Output File [%s] for Writing",file_path);
298+
}
295299
}
296300
}
297301

plugins/demo-verifier/src/demo_verifier_engine.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -291,9 +291,13 @@ static apt_bool_t demo_verifier_channel_verify(mrcp_engine_channel_t *channel, m
291291
char *file_name = apr_psprintf(channel->pool,"voiceprint-%dkHz-%s.pcm",
292292
descriptor->sampling_rate/1000,
293293
request->channel_id.session_id.buf);
294-
char *file_path = apt_datadir_filepath_get(dir_layout,file_name,channel->pool);
294+
char *file_path = apt_vardir_filepath_get(dir_layout,file_name,channel->pool);
295295
if(file_path) {
296+
apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Utterance Output File [%s] for Writing",file_path);
296297
verifier_channel->audio_out = fopen(file_path,"wb");
298+
if(!verifier_channel->audio_out) {
299+
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Utterance Output File [%s] for Writing",file_path);
300+
}
297301
}
298302
}
299303

plugins/mrcp-recorder/src/mrcp_recorder_engine.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ static apt_bool_t recorder_file_open(recorder_channel_t *recorder_channel, mrcp_
221221
descriptor->sampling_rate/1000,
222222
request->channel_id.session_id.buf,
223223
request->start_line.request_id);
224-
file_path = apt_datadir_filepath_get(dir_layout,file_name,channel->pool);
224+
file_path = apt_vardir_filepath_get(dir_layout,file_name,channel->pool);
225225
if(!file_path) {
226226
return FALSE;
227227
}
@@ -231,8 +231,10 @@ static apt_bool_t recorder_file_open(recorder_channel_t *recorder_channel, mrcp_
231231
recorder_channel->audio_out = NULL;
232232
}
233233

234+
apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Utterance Output File [%s] for Writing",file_path);
234235
recorder_channel->audio_out = fopen(file_path,"wb");
235236
if(!recorder_channel->audio_out) {
237+
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Utterance Output File [%s] for Writing",file_path);
236238
return FALSE;
237239
}
238240

tests/mpftest/src/mpf_suite.c

+3-2
Original file line numberDiff line numberDiff line change
@@ -446,13 +446,14 @@ static mpf_audio_file_descriptor_t* mpf_file_reader_descriptor_create(const mpf_
446446
/** Create file writer descriptor */
447447
static mpf_audio_file_descriptor_t* mpf_file_writer_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session)
448448
{
449-
const char *file_path = apt_datadir_filepath_get(agent->dir_layout,"output-8kHz.pcm",session->pool);
449+
const char *file_path = apt_vardir_filepath_get(agent->dir_layout,"output-8kHz.pcm",session->pool);
450450
mpf_audio_file_descriptor_t *descriptor = apr_palloc(session->pool,sizeof(mpf_audio_file_descriptor_t));
451451
descriptor->mask = FILE_WRITER;
452452
descriptor->max_write_size = 500000; /* ~500Kb */
453+
apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open File [%s] for Writing",file_path);
453454
descriptor->write_handle = fopen(file_path,"wb");
454455
if(!descriptor->write_handle) {
455-
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open File [%s]",file_path);
456+
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open File [%s] for Writing",file_path);
456457
}
457458
descriptor->read_handle = NULL;
458459
descriptor->codec_descriptor = mpf_codec_lpcm_descriptor_create(8000,1,session->pool);

0 commit comments

Comments
 (0)