Reply by Will Dean May 12, 20082008-05-12
"larwe" <zwsdotcom@gmail.com> wrote in message 
news:fc35681a-fff1-44fe-b7cd-c9eb10719e08@e53g2000hsa.googlegroups.com...

I should point out that DOSFS was not developed as an in vitro
computer science project; it was originally a very small module in a
much larger piece of firmware in a real product. Without going into
details (as I don't remember them), the uint* declarations all come
from the coding style requirements of the containing project. The
containing project also had no standard library, so part of the
extraction process involved changing over to str* functions.

OK, that makes sense - neither clever nor sinister...

I effectively pushed all the casts up another level, at which point they 
were all unecessary - I can at least feel relaxed that I didn't miss 
anything important in doing that.

Will

Reply by James Beck May 9, 20082008-05-09
In article <48237bd5$0$652$bed64819@news.gradwell.net>, 
will@nospam.demon.co.uk says...
> "Eric Smith" <eric@brouhaha.com> wrote in message > news:m3ve1o37pd.fsf@donnybrook.brouhaha.com... > > "Will Dean" <will@nospam.demon.co.uk> writes: > > > > uint8_t is guaranteed to be an 8-bit type, while char is not. The > > uint8_t type is optional, but if it is provided (in stdint.h), then > > char must be an 8-bit type, though char may be signed or unsigned. > > This kind of rarified argument would impress me a little more if the code > didn't promptly cast all the uint8_t* back to char* to pass to the standard > libary string functions. :-) > > So whatever property is being aimed for by using uint8_t*, it isn't > something which can't survive a simple cast to char*... > > Will >
I guess it depends on the situation. Wouldn't want to make sure that an item who's target was an 8 bit register was in fact 8 bits, so an architecture that could move around bigger words too didn't do the old even/odd thing and attempt to write a mutibyte value to the registers, but the library expects a native word when taking an argument, for stack alignment or some such. I'm not saying that is the case, but it came quickly to mind. As usual, I could be talking out my ass. :) Jim
Reply by larwe May 9, 20082008-05-09
On May 8, 6:16=A0pm, "Will Dean" <w...@nospam.demon.co.uk> wrote:

> So whatever property is being aimed for by using uint8_t*, it isn't > something which can't survive a simple cast to char*...
I should point out that DOSFS was not developed as an in vitro computer science project; it was originally a very small module in a much larger piece of firmware in a real product. Without going into details (as I don't remember them), the uint* declarations all come from the coding style requirements of the containing project. The containing project also had no standard library, so part of the extraction process involved changing over to str* functions.
Reply by Marco May 9, 20082008-05-09
On May 8, 10:21 am, larwe <zwsdot...@gmail.com> wrote:
> On May 8, 10:10 am, "Will Dean" <w...@nospam.demon.co.uk> wrote: > > > I think Larwe himeself has moved on to other things now, which is fair > > enough - it's generous enough to have made it available in the first place, > > he certainly doesn't owe me free support. > > It's not that I've moved on to other things so much as I haven't had > time to go through all the effort and testing that's required to do a > full release. Just rolling in some anonymously received patches is one > thing - putting my name on it is a rather different story. There are > about half a dozen patches waiting to be publicized. There is also the > fast file I/O support (perhaps better called "more deterministic"), > which I have scheduled for public release at the end of May; obviously > that release will include bugfixes that I'm aware of to date.
Maybe you could put them on a website and let others decide how to use them.
Reply by Will Dean May 8, 20082008-05-08
"larwe" <zwsdotcom@gmail.com> wrote in message 
news:ae1917ad-a4bc-472f-a883-0d5ed8beb003@k13g2000hse.googlegroups.com...
On May 8, 10:10 am, "Will Dean" <w...@nospam.demon.co.uk> wrote:

{snip}
> which I have scheduled for public release at the end of May; obviously > that release will include bugfixes that I'm aware of to date.
Thanks for the reply - that's great to hear that you're still thinking about it. I suspect that by the time you release this version, my source will be so far from the original that there will be little benefit in merging, but it will still be useful to compare. As someone else mentioned, your use of 'div' might be playing somewhat fast-and-loose with signed/unsigned issues - C++ compilers in particular are not very happy with that code - I also suspect on a some platforms the div() ends up doing a lot of unused work too, because either the / or the % isn't used from any one call. Regards, Will
Reply by Will Dean May 8, 20082008-05-08
"Eric Smith" <eric@brouhaha.com> wrote in message 
news:m3ve1o37pd.fsf@donnybrook.brouhaha.com...
> "Will Dean" <will@nospam.demon.co.uk> writes: > > uint8_t is guaranteed to be an 8-bit type, while char is not. The > uint8_t type is optional, but if it is provided (in stdint.h), then > char must be an 8-bit type, though char may be signed or unsigned.
This kind of rarified argument would impress me a little more if the code didn't promptly cast all the uint8_t* back to char* to pass to the standard libary string functions. :-) So whatever property is being aimed for by using uint8_t*, it isn't something which can't survive a simple cast to char*... Will
Reply by Eric Smith May 8, 20082008-05-08
"Will Dean" <will@nospam.demon.co.uk> writes:
> Minor irritants are a lack of const-correctness and the use of uint8_t > instead of char (though I'm sure there was a good reason for that).
uint8_t is guaranteed to be an 8-bit type, while char is not. The uint8_t type is optional, but if it is provided (in stdint.h), then char must be an 8-bit type, though char may be signed or unsigned. On an unrelated note, I just noticed that the between paragraphs 4 and 6 of section 6.2.5 of ISO/IEC 9899:1999, it appears that the correct way to designate an unsigned character type should be "unsigned signed char". Paragraph 4 defines "signed char" as one of the five standard signed integer types, and paragraph 6 says "For each of the signed integer types, there is a (but different) unsigned integer type (designated with the keyword unsigned) [...]". It does not state that any part of the designation of the signed integer type can be dropped as part of the construction of the designation of the corresponding unsigned integer type.
Reply by Andrew Jackson May 8, 20082008-05-08
Will

> Are there many people around on the group who are actually using LARWE's > dosfs in real apps?
Yes, I've used it.
> I rather like its general style, and the code seems pretty good quality, > but I'm actually starting to suspect it's pretty buggy.
I found a number of faults in the FAT12 code which I fixed and reported to Larwe (though I was never sure that he received them because of his email filtering service). I found also found faults in some code using div (rather than ldiv) as well as in some pointer incrementing.
> I think I'm going to persist with it, but if there were other users > who'd fixed problems, I would be interested in shared experiences.
It all worked quite well in the end. Andrew
Reply by larwe May 8, 20082008-05-08
On May 8, 10:10=A0am, "Will Dean" <w...@nospam.demon.co.uk> wrote:

> I think Larwe himeself has moved on to other things now, which is fair > enough - it's generous enough to have made it available in the first place=
,
> he certainly doesn't owe me free support.
It's not that I've moved on to other things so much as I haven't had time to go through all the effort and testing that's required to do a full release. Just rolling in some anonymously received patches is one thing - putting my name on it is a rather different story. There are about half a dozen patches waiting to be publicized. There is also the fast file I/O support (perhaps better called "more deterministic"), which I have scheduled for public release at the end of May; obviously that release will include bugfixes that I'm aware of to date. There are definitely a couple of FAT12 bugs. I don't think my test data set is adequate to flush them out. FAT12 is very much the poor cousin :)
Reply by msg May 8, 20082008-05-08
Will Dean wrote:

> Hi, > > Are there many people around on the group who are actually using LARWE's > dosfs in real apps?
I modified it a bit and posted a link to the results in this N.G. some time ago, as described from this snippet of an email to Lewin:
> The attached diffs document some trivial patches to permit > mixed-case pathnames and FAT16 < 16MB support. There are > also changes to DFS_OpenFile I needed to make to permit > working with files in the root directory; without them > a pointer to the filename backed-up one character too many > and there was no detection for a pathname without a separator.
I use it to inspect oddball FAT partitions on drives from certain embedded devices, and have plans to use it in some current projects of mine. Michael