7676*/
7777void CFE_ES_StartApplications (uint32 ResetType , const char * StartFilePath )
7878{
79- char ES_AppLoadBuffer [ES_START_BUFF_SIZE ]; /* A buffer of for a line in a file */
79+ char ES_AppLoadBuffer [ES_START_BUFF_SIZE ]; /* A buffer of for a line in a file */
80+ char ScriptFileName [OS_MAX_PATH_LEN ];
8081 const char * TokenList [CFE_ES_STARTSCRIPT_MAX_TOKENS_PER_LINE ];
8182 uint32 NumTokens ;
8283 uint32 BuffLen ; /* Length of the current buffer */
@@ -93,14 +94,20 @@ void CFE_ES_StartApplications(uint32 ResetType, const char *StartFilePath )
9394 if ( ResetType == CFE_PSP_RST_TYPE_PROCESSOR )
9495 {
9596 /*
96- ** Open the file in the volatile disk.
97+ ** First Attempt to parse as file in the volatile disk (temp area) .
9798 */
98- Status = OS_OpenCreate (& AppFile , CFE_PLATFORM_ES_VOLATILE_STARTUP_FILE , OS_FILE_FLAG_NONE , OS_READ_ONLY );
99+ Status = CFE_FS_ParseInputFileName (ScriptFileName , CFE_PLATFORM_ES_VOLATILE_STARTUP_FILE ,
100+ sizeof (ScriptFileName ), CFE_FS_FileCategory_TEMP );
101+
102+ if (Status == CFE_SUCCESS )
103+ {
104+ Status = OS_OpenCreate (& AppFile , ScriptFileName , OS_FILE_FLAG_NONE , OS_READ_ONLY );
105+ }
99106
100107 if ( Status >= 0 )
101108 {
102109 CFE_ES_WriteToSysLog ("ES Startup: Opened ES App Startup file: %s\n" ,
103- CFE_PLATFORM_ES_VOLATILE_STARTUP_FILE );
110+ ScriptFileName );
104111 FileOpened = true;
105112 }
106113 else
@@ -120,11 +127,17 @@ void CFE_ES_StartApplications(uint32 ResetType, const char *StartFilePath )
120127 /*
121128 ** Try to Open the file passed in to the cFE start.
122129 */
123- Status = OS_OpenCreate (& AppFile , StartFilePath , OS_FILE_FLAG_NONE , OS_READ_ONLY );
130+ Status = CFE_FS_ParseInputFileName (ScriptFileName , StartFilePath ,
131+ sizeof (ScriptFileName ), CFE_FS_FileCategory_SCRIPT );
132+
133+ if (Status == CFE_SUCCESS )
134+ {
135+ Status = OS_OpenCreate (& AppFile , ScriptFileName , OS_FILE_FLAG_NONE , OS_READ_ONLY );
136+ }
124137
125138 if ( Status >= 0 )
126139 {
127- CFE_ES_WriteToSysLog ("ES Startup: Opened ES App Startup file: %s\n" ,StartFilePath );
140+ CFE_ES_WriteToSysLog ("ES Startup: Opened ES App Startup file: %s\n" ,ScriptFileName );
128141 FileOpened = true;
129142 }
130143 else
@@ -271,7 +284,7 @@ int32 CFE_ES_ParseFileEntry(const char **TokenList, uint32 NumTokens)
271284 CFE_ES_AppId_t AppId ;
272285 CFE_ES_LibId_t LibId ;
273286 } IdBuf ;
274- int32 CreateStatus = CFE_ES_ERR_APP_CREATE ;
287+ int32 Status ;
275288 CFE_ES_AppStartParams_t ParamBuf ;
276289
277290 /*
@@ -280,7 +293,7 @@ int32 CFE_ES_ParseFileEntry(const char **TokenList, uint32 NumTokens)
280293 if (NumTokens < 8 )
281294 {
282295 CFE_ES_WriteToSysLog ("ES Startup: Invalid ES Startup file entry: %u\n" , (unsigned int )NumTokens );
283- return ( CreateStatus ) ;
296+ return CFE_ES_BAD_ARGUMENT ;
284297 }
285298
286299 /* Get pointers to specific tokens that are simple strings used as-is */
@@ -292,7 +305,14 @@ int32 CFE_ES_ParseFileEntry(const char **TokenList, uint32 NumTokens)
292305 * Both Libraries and Apps use File Name (1) and Symbol Name (2) fields so copy those now
293306 */
294307 memset (& ParamBuf , 0 , sizeof (ParamBuf ));
295- strncpy (ParamBuf .BasicInfo .FileName , TokenList [1 ], sizeof (ParamBuf .BasicInfo .FileName ) - 1 );
308+ Status = CFE_FS_ParseInputFileName (ParamBuf .BasicInfo .FileName , TokenList [1 ],
309+ sizeof (ParamBuf .BasicInfo .FileName ), CFE_FS_FileCategory_DYNAMIC_MODULE );
310+ if (Status != CFE_SUCCESS )
311+ {
312+ CFE_ES_WriteToSysLog ("ES Startup: Invalid ES Startup script file name: %s\n" , TokenList [1 ]);
313+ return Status ;
314+ }
315+
296316 strncpy (ParamBuf .BasicInfo .InitSymbolName , TokenList [2 ], sizeof (ParamBuf .BasicInfo .InitSymbolName ) - 1 );
297317
298318 if (strcmp (EntryType , "CFE_APP" ) == 0 )
@@ -338,7 +358,7 @@ int32 CFE_ES_ParseFileEntry(const char **TokenList, uint32 NumTokens)
338358 /*
339359 ** Now create the application
340360 */
341- CreateStatus = CFE_ES_AppCreate (& IdBuf .AppId , ModuleName , & ParamBuf );
361+ Status = CFE_ES_AppCreate (& IdBuf .AppId , ModuleName , & ParamBuf );
342362 }
343363 else if (strcmp (EntryType , "CFE_LIB" ) == 0 )
344364 {
@@ -347,14 +367,15 @@ int32 CFE_ES_ParseFileEntry(const char **TokenList, uint32 NumTokens)
347367 /*
348368 ** Now load the library
349369 */
350- CreateStatus = CFE_ES_LoadLibrary (& IdBuf .LibId , ModuleName , & ParamBuf .BasicInfo );
370+ Status = CFE_ES_LoadLibrary (& IdBuf .LibId , ModuleName , & ParamBuf .BasicInfo );
351371 }
352372 else
353373 {
354374 CFE_ES_WriteToSysLog ("ES Startup: Unexpected EntryType %s in startup file.\n" , EntryType );
375+ Status = CFE_ES_ERR_APP_CREATE ;
355376 }
356377
357- return (CreateStatus );
378+ return (Status );
358379}
359380
360381/*
0 commit comments