Again, for those who use Keil's middleware - FAT frename function
has a nasty bug:
if new name contains path (for example "M:\name.txt") the whole
string will be used as new name.
In this particular case, file will be renamed to M:\name.txt - and
now it's not accesible anymore
since it contains forbidden characters ':' and '\'. Behaviour is
completely wrong. If the path
is specified, frename should copy old file to specified destination.
In my case, I've created
a wrapper function that corrects this issue, which I call instead of
The rename() function does move a file, so the destination name
may specify a path to another directory.
But are you sure that the Keil function frename() should move the
file, and that it isn't just specified as renaming the file?
The documentation only mentions that the "oldname" string may
specify a drive and a path.
It is up to you to care about what characters to use.
And you don't seem to have a promise in the documentation that a
move to a different directory should be an expected behaviour.
Sorry to dig up a 7 year old thread, but I can't get frename() to move a file to another directory. If I supply a path to a different directory/filename I get and fsInvalidPath error when I call frename(). What's the bests way to move a file?
TdeP said:I can't get frename() to move a file
Is it supposed to?
The linked documentation doesn't say that it should do a move.
no it's not supposed to, I just tried it. Seems like the only way to move a file is to open a file to move to, and fread() from the current file and fwrite() to the new file. Kind of a pain.
View all questions in Keil forum