+/**\r
+ Rename a specified file.\r
+\r
+ @param[in] FileName Name of the file to rename.\r
+ @param[in] NewFileName The new name of the file.\r
+\r
+ @retval RETURN_SUCCESS File Renamed\r
+ @retval RETURN_INVALID_PARAMETER Either the current or the new name is not specified\r
+ @retval RETURN_ABORTED Rename failed\r
+\r
+**/\r
+RETURN_STATUS\r
+SemihostFileRename(\r
+ IN CHAR8 *FileName,\r
+ IN CHAR8 *NewFileName\r
+ )\r
+{\r
+ SEMIHOST_FILE_RENAME_BLOCK RenameBlock;\r
+ INT32 Result;\r
+\r
+ if ((FileName == NULL) || (NewFileName == NULL)) {\r
+ return RETURN_INVALID_PARAMETER;\r
+ }\r
+\r
+ RenameBlock.FileName = FileName;\r
+ RenameBlock.FileNameLength = AsciiStrLen (FileName);\r
+ RenameBlock.NewFileName = NewFileName;\r
+ RenameBlock.NewFileNameLength = AsciiStrLen (NewFileName);\r
+\r
+ Result = Semihost_SYS_RENAME (&RenameBlock);\r
+\r
+ if (Result != 0) {\r
+ return RETURN_ABORTED;\r
+ } else {\r
+ return RETURN_SUCCESS;\r
+ }\r
+}\r
+\r