<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 15, 2021 at 8:15 AM Kuan Hsun Chen <<a href="mailto:kuan-hsun.chen@tu-dortmund.de">kuan-hsun.chen@tu-dortmund.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div>
<div dir="ltr">
<div style="font-family:verdana,sans-serif">Hello Ida,</div>
<div style="font-family:verdana,sans-serif"><br>
</div>
<div style="font-family:verdana,sans-serif">It looks nice! Is it possible to highlight the mismatching part in color or suggest the concrete revision? (So that the developer might learn the mistakes).</div>
<div style="font-family:verdana,sans-serif"><br></div></div></div></blockquote><div><br></div><div>I would like the script to be a warning rather than an error. By that, I mean if there is a style mismatch, it should print out there is a mismatch. Maybe, we should have multiple modes, where the default is to cause an error and abort the commit, but provide an override somehow. For example, whitespace warnings work like that (in git-am/git-apply). I believe there are git-config options that can be set to control the behavior.</div><div><br></div><div>I also think there should be two modes of output, a simple one that says "there were X style errors" and a more detailed one that shows the specific errors. We can decide what should be the default behavior later, but these would both be useful. For example, when working on a third-party source code, I don't want to be inundated with style errors on every line of code, and I need to be able to make the commit work to put in a fix.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="ltr"><div style="font-family:verdana,sans-serif">
</div>
<div style="font-family:verdana,sans-serif">Best,<br>
Kuan-Hsun</div>
<div style="font-family:verdana,sans-serif"><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, Jun 15, 2021 at 3:45 PM Ida Delphine <<a href="mailto:idadelm@gmail.com" target="_blank">idadelm@gmail.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">
<div>Hello everyone,</div>
<div><br>
</div>
<div>For this project, I am supposed to write a git pre-commit hook in which runs over a patch checking if the style matches that of RTEMS and aborts in case it doesn't. From the screenshot below you can see what happens in case the style doesn't match in a
 patch. The commit doesn't happen and it outputs the diff first showing what it looked like when committed and how the patch's format is supposed to look like. It does not directly format the patch. I am yet to do more tests to be sure there are no bugs but
 will like to get some feedback if there is a better way it should look like.</div>
<div><br>
</div>
<div><img src="cid:ii_kpy3dhz30" alt="hooks-output.png" width="566" height="341"><br>
<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Fri, Jun 4, 2021 at 10:50 PM Ida Delphine <<a href="mailto:idadelm@gmail.com" target="_blank">idadelm@gmail.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="auto">Okay. I will do that.</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Fri, 4 Jun 2021, 10:48 pm Gedare Bloom, <<a href="mailto:gedare@rtems.org" target="_blank">gedare@rtems.org</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
On Fri, Jun 4, 2021 at 2:57 PM Ida Delphine <<a href="mailto:idadelm@gmail.com" rel="noreferrer" target="_blank">idadelm@gmail.com</a>> wrote:<br>
><br>
> Okay, I will take a look.<br>
><br>
> Regarding me asking a question in the appropriate clang-format mailing list should it be just regarding the parentheses and braces being aligned?<br>
><br>
That would be the right question to ask, if you can't find a way to<br>
align the closing parenthesis.<br>
<br>
You might also follow-up that old thread related to alignment of the pointers.<br>
<br>
> On Fri, Jun 4, 2021 at 8:41 PM Joel Sherrill <<a href="mailto:joel@rtems.org" rel="noreferrer" target="_blank">joel@rtems.org</a>> wrote:<br>
>><br>
>><br>
>><br>
>> On Fri, Jun 4, 2021 at 12:39 PM Gedare Bloom <<a href="mailto:gedare@rtems.org" rel="noreferrer" target="_blank">gedare@rtems.org</a>> wrote:<br>
>>><br>
>>> On Fri, Jun 4, 2021 at 8:47 AM Joel Sherrill <<a href="mailto:joel@rtems.org" rel="noreferrer" target="_blank">joel@rtems.org</a>> wrote:<br>
>>> ><br>
>>> ><br>
>>> ><br>
>>> > On Fri, Jun 4, 2021 at 12:24 AM Ida Delphine <<a href="mailto:idadelm@gmail.com" rel="noreferrer" target="_blank">idadelm@gmail.com</a>> wrote:<br>
>>> >><br>
>>> >> Hello everyone,<br>
>>> >><br>
>>> >> I applied the configuration Sebastian used and ran clang-format on cpukit/score/src/threadqenque.c and so far these are the differences I could notice...<br>
>>> >> Below are some example areas in the code you can spot the differences:<br>
>>> >><br>
>>> >> In line 68, the ")" at the end of the parameter list needs to be in a new row, but this doesn't seem to be supported in clang-format.<br>
>>> ><br>
>>> > If I understand correctly, clang-format does not like:<br>
>>> ><br>
>>> > <a href="https://git.rtems.org/rtems/tree/cpukit/score/src/threadqenqueue.c" rel="noreferrer noreferrer" target="_blank">
https://git.rtems.org/rtems/tree/cpukit/score/src/threadqenqueue.c</a><br>
>>> ><br>
>>> > which has the first parameter on its one line but wants the first parameter<br>
>>> > after the open parenthesis?<br>
>>> ><br>
>>> > The RTEMS style would seem to correspond to AlignAfterOpenBracket being<br>
>>> > set to AlwaysBreak<br>
>>> ><br>
>>> >><br>
>>> >> In line 142, if the function call is split into multiple rows, the ");" should always be in a new row.<br>
>>> ><br>
>>> > Having the closing parenthesis on its own line may end up being something<br>
>>> > we have to change the RTEMS style on. I do not see an option in their<br>
>>> > documentation to do this. Unfortunate, since I like the symmetry between<br>
>>> > braces and parentheses.<br>
>>> ><br>
>>> >  Could you file an issue with them and/or ask a question the appropriate<br>
>>> > mailing list? Please cc Gedara and me. Give them an example. Maybe<br>
>>> > we are missing something.<br>
>>> >><br>
>>> >> In line 201-202, we can see that the "*" of the pointers are not aligned to the right.<br>
>>> ><br>
>>> ><br>
>>> > This seems to be the issue Gedare mentioned which might have a patch.<br>
>>> > Follow up on that.<br>
>>> ><br>
>>> > But I think we had previously discussed this as a point we may have to<br>
>>> > concede and change RTEMS style on.<br>
>>> >><br>
>>> >> You can check out the formatted file here - <a href="https://pastebin.com/nDBrSSCP" rel="noreferrer noreferrer" target="_blank">
https://pastebin.com/nDBrSSCP</a><br>
>>> ><br>
>>> ><br>
>>> > Is it just the website or are blank line differences? It may just be an<br>
>>> > illusion. I think the spacing between the numbered lines is greater<br>
>>> > than in the git view. Just odd.<br>
>>> ><br>
>>> That's just the pastebin having more vertical padding between consecutive lines.<br>
>><br>
>><br>
>> That's what I thought but it did make the code look funny.<br>
>><br>
>> Ida/Gedare.. does this mean there are only 3 style mismatch issues? Or only<br>
>> three in this file?<br>
>><br>
>> Probably should try a few more files and see if there are other discrepancies.<br>
>><br>
>> And obviously work on the integration/automation of using the tools. :)<br>
>><br>
>> --joel<br>
>><br>
>>><br>
>>><br>
>>> > --joel<br>
>>> >><br>
>>> >><br>
>>> >><br>
>>> >> On Tue, Jun 1, 2021 at 5:36 PM Gedare Bloom <<a href="mailto:gedare@rtems.org" rel="noreferrer" target="_blank">gedare@rtems.org</a>> wrote:<br>
>>> >>><br>
>>> >>> On Mon, May 31, 2021 at 2:59 PM Ida Delphine <<a href="mailto:idadelm@gmail.com" rel="noreferrer" target="_blank">idadelm@gmail.com</a>> wrote:<br>
>>> >>> ><br>
>>> >>> > Hi Gedare,<br>
>>> >>> ><br>
>>> >>> > With regards to your comment on discord on me looking for a tool that works on both patches and source files, it turns out clang-format has that functionality already. Here's what I found -
<a href="https://clang.llvm.org/docs/ClangFormat.html#script-for-patch-reformatting" rel="noreferrer noreferrer" target="_blank">
https://clang.llvm.org/docs/ClangFormat.html#script-for-patch-reformatting</a><br>
>>> >>> ><br>
>>> >>> > Does it match what you have in mind?<br>
>>> >>> ><br>
>>> >>> Yes. I think we would want to not use the `-i` option but instead pass<br>
>>> >>> through and check the changes. I don't think we should rewrite the<br>
>>> >>> patches themselves, but instead we want to use a tool that can be used<br>
>>> >>> to check and approve the style of submitted patches. You might need to<br>
>>> >>> write a modified version of the clang-format-diff.py to use as a<br>
>>> >>> "checker" with ability to provide exceptions to the rules.<br>
>>> >>><br>
>>> >>> Gedare<br>
>>> >>><br>
>>> >>> > On Thu, May 13, 2021 at 3:49 PM Gedare Bloom <<a href="mailto:gedare@rtems.org" rel="noreferrer" target="_blank">gedare@rtems.org</a>> wrote:<br>
>>> >>> >><br>
>>> >>> >> On Wed, May 12, 2021 at 2:18 PM Ida Delphine <<a href="mailto:idadelm@gmail.com" rel="noreferrer" target="_blank">idadelm@gmail.com</a>> wrote:<br>
>>> >>> >> ><br>
>>> >>> >> > Hello everyone,<br>
>>> >>> >> > Still waiting for some feedback :)<br>
>>> >>> >> ><br>
>>> >>> >> > Cheers,<br>
>>> >>> >> > Ida.<br>
>>> >>> >> ><br>
>>> >>> >> > On Mon, 10 May 2021, 5:59 am Ida Delphine, <<a href="mailto:idadelm@gmail.com" rel="noreferrer" target="_blank">idadelm@gmail.com</a>> wrote:<br>
>>> >>> >> >><br>
>>> >>> >> >> Hello everyone,<br>
>>> >>> >> >> Went through some previous emails and it turns out Sebastian already came up with a configuration for clang format which works well for RTEMS except for the fact that some configurations haven't been implemented into clang-format yet. Using<br>
>>> >>> >> >><br>
>>> >>> >> >> AlignConsecutiveDeclarations: false<br>
>>> >>> >> >> PointerAlignment: Right<br>
>>> >>> >> >><br>
>>> >>> >> >> Doesn't seem to work.<br>
>>> >>> >> >> For example in the cpukit/score/src/threadq.c file, something like<br>
>>> >>> >> >><br>
>>> >>> >> >> RTEMS_STATIC_ASSERT(<br>
>>> >>> >> >> offsetof( Thread_queue_Syslock_queue, Queue.name )<br>
>>> >>> >> >> == offsetof( struct _Thread_queue_Queue, _name ),<br>
>>> >>> >> >> THREAD_QUEUE_SYSLOCK_QUEUE_NAME<br>
>>> >>> >> >> );<br>
>>> >>> >> >><br>
>>> >>> >> >> RTEMS_STATIC_ASSERT(<br>
>>> >>> >> >> sizeof( Thread_queue_Syslock_queue )<br>
>>> >>> >> >> == sizeof( struct _Thread_queue_Queue ),<br>
>>> >>> >> >> THREAD_QUEUE_SYSLOCK_QUEUE_SIZE<br>
>>> >>> >> >> );<br>
>>> >>> >> >><br>
>>> >>> >> >> #if defined(RTEMS_SMP)<br>
>>> >>> >> >> void _Thread_queue_Do_acquire_critical(<br>
>>> >>> >> >> Thread_queue_Control *the_thread_queue,<br>
>>> >>> >> >> ISR_lock_Context *lock_context<br>
>>> >>> >> >> )<br>
>>> >>> >> >> {<br>
>>> >>> >> >> _Thread_queue_Queue_acquire_critical(<br>
>>> >>> >> >> &the_thread_queue->Queue,<br>
>>> >>> >> >> &the_thread_queue->Lock_stats,<br>
>>> >>> >> >> lock_context<br>
>>> >>> >> >> );<br>
>>> >>> >> >><br>
>>> >>> >> >> becomes this after using the given configuration<br>
>>> >>> >> >><br>
>>> >>> >> >> RTEMS_STATIC_ASSERT(sizeof(Thread_queue_Syslock_queue) ==<br>
>>> >>> >> >> sizeof(struct _Thread_queue_Queue),<br>
>>> >>> >> >> THREAD_QUEUE_SYSLOCK_QUEUE_SIZE);<br>
>>> >>> >> >><br>
>>> >>> >> >> #if defined(RTEMS_SMP)<br>
>>> >>> >> >> void _Thread_queue_Do_acquire_critical(Thread_queue_Control *the_thread_queue,<br>
>>> >>> >> >> ISR_lock_Context *lock_context) {<br>
>>> >>> >> >> _Thread_queue_Queue_acquire_critical(<br>
>>> >>> >> >> &the_thread_queue->Queue, &the_thread_queue->Lock_stats, lock_context);<br>
>>> >>> >> >><br>
>>> >>> >> >> Everything seems manageable except for this alignment issue...<br>
>>> >>> >> >> This also throws more light on the changes using clang-format (<a href="https://lists.rtems.org/pipermail/devel/2018-December/024145.html" rel="noreferrer noreferrer" target="_blank">https://lists.rtems.org/pipermail/devel/2018-December/024145.html</a>)<br>
>>> >>> >> >><br>
>>> >>> >> I think we're willing to concede the pointer alignment. However, it<br>
>>> >>> >> would be worth spending some time to see if<br>
>>> >>> >> <a href="https://reviews.llvm.org/D27651" rel="noreferrer noreferrer" target="_blank">
https://reviews.llvm.org/D27651</a> can be made to work. The current state<br>
>>> >>> >> of the code would need to be compared to the patch on that review<br>
>>> >>> >> board.<br>
>>> >>> >><br>
>>> >>> >> Beyond that, documenting the clang-format options to use is next, and<br>
>>> >>> >> then identifying a plan how to invoke clang-format during a git<br>
>>> >>> >> workflow is needed.<br>
>>> >>> >><br>
>>> >>> >> >> On Thu, May 6, 2021 at 8:05 PM Joel Sherrill <<a href="mailto:joel@rtems.org" rel="noreferrer" target="_blank">joel@rtems.org</a>> wrote:<br>
>>> >>> >> >>><br>
>>> >>> >> >>><br>
>>> >>> >> >>><br>
>>> >>> >> >>> On Thu, May 6, 2021 at 12:47 PM Christian Mauderer <<a href="mailto:oss@c-mauderer.de" rel="noreferrer" target="_blank">oss@c-mauderer.de</a>> wrote:<br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> Hello Ida and Gedare,<br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> On 06/05/2021 06:26, Gedare Bloom wrote:<br>
>>> >>> >> >>>> > hi Ida,<br>
>>> >>> >> >>>> ><br>
>>> >>> >> >>>> > On Wed, May 5, 2021 at 3:21 PM Ida Delphine <<a href="mailto:idadelm@gmail.com" rel="noreferrer" target="_blank">idadelm@gmail.com</a>> wrote:<br>
>>> >>> >> >>>> >><br>
>>> >>> >> >>>> >> Hello everyone,<br>
>>> >>> >> >>>> >><br>
>>> >>> >> >>>> >> Regarding this project (<a href="https://devel.rtems.org/ticket/3860" rel="noreferrer noreferrer" target="_blank">https://devel.rtems.org/ticket/3860</a>) I went with clang-format as we all agreed. I have tested it on some "score" files and
 it made some changes which I don't think are very much in line with the RTEMS coding style. However, it wasn't really clear if we will chage the RTEMS coding style or try to make changes to clang-format to fit the style.<br>
>>> >>> >> >>>> >> Please will love to know the best option.<br>
>>> >>> >> >>>> >><br>
>>> >>> >> >>>> > We will likely need to consider our choices carefully. If we can find<br>
>>> >>> >> >>>> > a suitably close style that is already well-supported by clang, and<br>
>>> >>> >> >>>> > get consensus from the maintainers on a change, then that might be the<br>
>>> >>> >> >>>> > best route forward.<br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> +1<br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> > I think the first thing to do is take the examples<br>
>>> >>> >> >>>> > that have been shown by Sebastian that are "close" but not quite<br>
>>> >>> >> >>>> > perfect, and identify the cases where they differ with RTEMS style in<br>
>>> >>> >> >>>> > order to present for discussion here. If consensus can't be reached to<br>
>>> >>> >> >>>> > change the style, then we would need to have a plan for how to improve<br>
>>> >>> >> >>>> > the existing tools for what we have.<br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> I also found the following tool quite useful to play with the clang<br>
>>> >>> >> >>>> style config:<br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> <a href="https://zed0.co.uk/clang-format-configurator/" rel="noreferrer noreferrer" target="_blank">
https://zed0.co.uk/clang-format-configurator/</a><br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> Maybe it can help a bit to find out what certain options mean.<br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> ><br>
>>> >>> >> >>>> > However, I think there is interest in doing less work on the tool<br>
>>> >>> >> >>>> > side, and more work on how to integrate it into our workflows better.<br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> +1<br>
>>> >>> >> >>><br>
>>> >>> >> >>><br>
>>> >>> >> >>> I agree with all of this from the student perspective. But we will have<br>
>>> >>> >> >>> to come to some agreement on a machine producible format to<br>
>>> >>> >> >>> be able to use the integration. A report on what doesn't match would<br>
>>> >>> >> >>> give us something to chew on while Ida works the integration.<br>
>>> >>> >> >>><br>
>>> >>> >> >>> --joel<br>
>>> >>> >> >>>><br>
>>> >>> >> >>>><br>
>>> >>> >> >>>> ><br>
>>> >>> >> >>>> >> Cheers,<br>
>>> >>> >> >>>> >> Ida.<br>
>>> >>> >> >>>> >> _______________________________________________<br>
>>> >>> >> >>>> >> devel mailing list<br>
>>> >>> >> >>>> >> <a href="mailto:devel@rtems.org" rel="noreferrer" target="_blank">
devel@rtems.org</a><br>
>>> >>> >> >>>> >> <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">
http://lists.rtems.org/mailman/listinfo/devel</a><br>
>>> >>> >> >>>> > _______________________________________________<br>
>>> >>> >> >>>> > devel mailing list<br>
>>> >>> >> >>>> > <a href="mailto:devel@rtems.org" rel="noreferrer" target="_blank">
devel@rtems.org</a><br>
>>> >>> >> >>>> > <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">
http://lists.rtems.org/mailman/listinfo/devel</a><br>
>>> >>> >> >>>> ><br>
>>> >>> >> >>>> _______________________________________________<br>
>>> >>> >> >>>> devel mailing list<br>
>>> >>> >> >>>> <a href="mailto:devel@rtems.org" rel="noreferrer" target="_blank">
devel@rtems.org</a><br>
>>> >>> >> >>>> <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">
http://lists.rtems.org/mailman/listinfo/devel</a><br>
</blockquote>
</div>
</blockquote>
</div>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a></blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">
<div dir="ltr">
<div>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr"><span style="font-family:verdana,sans-serif"></span></div>
<div dir="ltr"><font face="Arial">Dr.-Ing.<br>
Kuan-Hsun Chen <br>
Postdoctoral Researcher <br>
<br>
<strong>Technische Universität Dortmund </strong><br>
Department of Computer Science, Chair 12<br>
Design Automation of Embedded Systems <br>
Otto-Hahn Strasse 16, Room E19<br>
44227 Dortmund <br>
<br>
Tel.: +49 231-755 61 11 <br>
Fax: +49 231-755 61 16 <br>
<a href="mailto:kuan-hsun.chen@tu-dortmund.de" target="_blank">kuan-hsun.chen@tu-dortmund.de
</a><br>
<a href="https://ls12-www.cs.tu-dortmund.de/~khchen" target="_blank">https://ls12-www.cs.tu-dortmund.de/~khchen
</a><br>
<br>
<font size="2"><em>Wichtiger Hinweis: Die Information in dieser E-Mail ist vertraulich. Sie ist ausschließlich für den Adressaten bestimmt. Sollten Sie nicht der für diese E-Mail bestimmte Adressat sein, unterrichten Sie bitte den Absender und vernichten Sie
 diese Mail. Vielen Dank. <br>
Unbeschadet der Korrespondenz per E-Mail, sind unsere Erklärungen ausschließlich final rechtsverbindlich, wenn sie in herkömmlicher Schriftform (mit eigenhändiger Unterschrift) oder durch Übermittlung eines solchen Schriftstücks per Telefax erfolgen.
<br>
<br>
Important note: The information included in this e-mail is confidential. It is solely intended for the recipient. If you are not the intended recipient of this e-mail please contact the sender and delete this message. Thank you. Without prejudice of e-mail
 correspondence, our statements are only legally binding when they are made in the conventional written form (with personal signature) or when such documents are sent by fax. </em></font></font><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<font face="Arial"><br>
<font size="2"><em>Wichtiger Hinweis: Die Information in dieser E-Mail ist vertraulich. Sie ist ausschließlich für den Adressaten bestimmt. Sollten Sie nicht der für diese E-Mail bestimmte Adressat sein, unterrichten Sie bitte den Absender und vernichten Sie
 diese Mail. Vielen Dank. <br>
Unbeschadet der Korrespondenz per E-Mail, sind unsere Erklärungen ausschließlich final rechtsverbindlich, wenn sie in herkömmlicher Schriftform (mit eigenhändiger Unterschrift) oder durch Übermittlung eines solchen Schriftstücks per Telefax erfolgen.
<br>
<br>
Important note: The information included in this e-mail is confidential. It is solely intended for the recipient. If you are not the intended recipient of this e-mail please contact the sender and delete this message. Thank you. Without prejudice of e-mail
 correspondence, our statements are only legally binding when they are made in the conventional written form (with personal signature) or when such documents are sent by fax.
</em></font></font>
</div>

</blockquote></div></div>