[U-Boot] [PATCH 1/1]: filesystems : add "file exists" cmd
Sergey Kubushyn
ksi at koi8.net
Sun Oct 9 08:04:12 CEST 2016
On Sat, 8 Oct 2016, Sergey Kubushyn wrote:
> On Sat, 8 Oct 2016, Tom Rini wrote:
>
>> On Wed, Oct 05, 2016 at 12:38:01PM -0700, Sergey Kubushyn wrote:
>>
>> > This adds "file exists" commands to generic FS as well as to FAT, EXT4,
>> > and UBIFS. Also adds "file size" command to UBIFS.
>> >
>> > The return value for "file exists" commands is REVERSED i.e. they
>> > return 1 if file exists and 0 otherwise. This is a deliberate decision
>> > because those commands are supposed to be used almost exclusively in
>> > scripts and TRUE value is _not_ zero while FALSE is zero.
>> >
>> > As of now the only way to check for a file existence is to attempt a
>> > read on that file (aka load.) That works but it makes an unnecessary
>> > read, overwrites memory at destination address if file not a zero
>> > length one, and outputs unnecessary messages to the console in any
>> > case.
>> >
>> > Checking file existence in scripts is a valuable feature that allows
>> > the higher level software (e.g. Linux) to interact with U-Boot by
>> > creating some semaphore files and rebooting. We do use it quite
>> > extensively for system setup at manufacturing time and for other
>> > purposes (e.g. our Android "recovery" is implemented this way.)
>> >
>> > Signed-off-by: Sergey Kubushyn <ksi at koi8.net>
>>
>> Can you please do this in at least two patches? file size to ubi should
>> be its own patch. Also:
>
> Sure, will do later today.
>
>> > +int do_ext4_file_exists(cmd_tbl_t *cmdtp, int flag, int argc,
>> > + char *const argv[])
>> > +{
>> > + int ret;
>> > +
>> > + ret = do_file_exists(cmdtp, flag, argc, argv, FS_TYPE_EXT);
>> > + + if (ret == 0) return 1;
>> > + if (ret == 1) return 0;
>> > + return ret;
>> > +}
>>
>> I can only assume this hasn't been compile tested in a while, and you
>> should simplify the code into a single if/else and a comment on what we
>> want/mean. Thanks!
>
> The problem is do_file_exists() can return not just 0 if file exists or
> 1 if it doesn't but also a negative value for "I don't know" i.e. when
> e.g. FS mount failed.
>
> I don't know if those return codes are somehow processed further up (too
> much time to dig everything to the bare metal) so I decided to return
> that value as-is if it happened. Sure it could be done like e.g.
>
> return (ret == 0);
>
> even without any if-elses and it is probably the proper way to do it but
> I fell victim of perfectionism :))
>
> Will re-do it with the above construction and split in 2 parts. Will also
> send it with git send-email so it won't end up garbled.
OK, please disregard this patch altogether. I somehow missed "test -e"
command that has been implemented something like 2 years ago and that
command makes this entire patch unnecessary.
I will rewrite my scripts with "test -e" before submitting new boards.
---
******************************************************************
* KSI at home KOI8 Net < > The impossible we do immediately. *
* Las Vegas NV, USA < > Miracles require 24-hour notice. *
******************************************************************
More information about the U-Boot
mailing list