Hello everybody,
I've uploaded a "patch" to bugzilla that adds support for Swiss German
keyboards (kbdsg.dll) to ReactOS.
http://www.reactos.com/bugzilla/show_bug.cgi?id=509
(The zip-file I uploaded contains the content of .../lib/kbdsg)
I've tested it on qemu and on real hardware and as far as I can tell it
works great. It would be great if it were included into the official
ReactOS sources. If you need any further information (or files) please let
me know.
kind regards
Roman Hoegg
roman.hoegg(a)unisg.ch
romanh(a)unisg.ch
P.S. I'm sorry if you have received this email twice. I tried to send this
information to the mailinglist yesterday but it didn't seem to get
through.
------------------------------------------
Roman Högg
Research Assistant
=mcm institute
for Media and Communications Management
University of St. Gallen, Switzerland
Blumenbergplatz 9, 9000 St. Gallen
Phone +41 (0)71 224 34 39
Mobile +41 (0)79 418 59 13
e-mail roman.hoegg(a)unisg.ch
http://www.mcm.unisg.ch
Hi,
I am experiencing problems building current source as follows
gdi32: [LD] gdi32.nostrip.dll
objects/brush.o(.text+0x52): In function `CreateDIBPatternBrush':
I:/reactos/lib/gdi32/objects/brush.c:41: undefined reference to
`NtGdiCreateDIBBrush@16'
objects/brush.o(.text+0xc7): In function `CreateDIBPatternBrushPt':
I:/reactos/lib/gdi32/objects/brush.c:71: undefined reference to
`NtGdiCreateDIBBrush@16'
collect2: ld returned 1 exit status
make[1]: *** [gdi32.nostrip.dll] Error 1
make: *** [gdi32] Error 2
I have made sure I am fully current with the source and have tried a full
"clean" but to no avail.
Can anyone throw some light onto this problem.
Mike Lerwill
Hi,
I guess that the implementation of strtoull is slightly wrong.
The current function prototype is:
unsigned long
strtoull(const char *nptr, char **endptr, int base)
But (IMHO) it should be:
unsigned long long
strtoull(const char *nptr, char **endptr, int base)
A patch is attached. This patch tries to determine the macro that
defines the maximum value for an unsigned long long and the
corresponding type. It tests for the existance of several macros and
optionally falls back to an unsigned long (you might want to remove this
"feature" - don't know if it's useful). The header file
<internal/file.h> is added to make it compilable without warning. I
changed both strtoull.c files but it seems that neither of them is
compiled/used, therefore I added strtoull.o to the lib/crt/makefile.
The existance of the sources below lib/crtdll/ is very confusing because
these sources arent't compiled at all. What's the cause to keep them in
the repository?
BTW: Where's the definition of strtoll? Is it required? Or was my work
useless at all?
Regards,
Mark
Index: lib/crt/stdlib/strtoull.c
===================================================================
--- lib/crt/stdlib/strtoull.c (revision 14631)
+++ lib/crt/stdlib/strtoull.c (working copy)
@@ -4,21 +4,49 @@
#include <ctype.h>
#include <errno.h>
#include <stdlib.h>
-//#include <msvcrt/unconst.h>
+/* #include <msvcrt/unconst.h> */
+/* required to get prototype for __set_errno() */
+#include <internal/file.h>
+
+#if defined(LONG_LONG_MAX)
+/* GCC-style constant */
+#define ROS_LLONG_MAX LONG_LONG_MAX
+#define ROS_ULLONG_MAX ULONG_LONG_MAX
+typedef long long ros_ll;
+typedef unsigned long long ros_ull;
+#elif defined(_I64_MAX)
+/* MSVC-style constant */
+#define ROS_LLONG_MAX _I64_MAX
+#define ROS_ULLONG_MAX _UI64_MAX
+typedef __int64 ros_ll;
+typedef unsigned __int64 ros_ull;
+#elif defined(LLONG_MAX)
+/* C9x-style constant */
+#define ROS_LLONG_MAX LLONG_MAX
+#define ROS_ULLONG_MAX ULLONG_MAX
+#include <stdint.h>
+typedef int64_t ros_ll;
+typedef uint64_t ros_ull;
+#else
+#define ROS_LLONG_MAX LONG_MAX
+#define ROS_ULLONG_MAX ULONG_MAX
+typedef long ros_ll;
+typedef unsigned long ros_ull;
+#endif
+
/*
* Convert a string to an unsigned long integer.
*
* Ignores `locale' stuff. Assumes that the upper and lower case
* alphabets and digits are each contiguous.
*/
-unsigned long
+ros_ull
strtoull(const char *nptr, char **endptr, int base)
{
const char *s = nptr;
- unsigned long acc;
+ ros_ull acc, cutoff;
int c;
- unsigned long cutoff;
int neg = 0, any, cutlim;
/*
@@ -43,8 +71,8 @@
}
if (base == 0)
base = c == '0' ? 8 : 10;
- cutoff = (unsigned long)ULONG_MAX / base;
- cutlim = (unsigned long)ULONG_MAX % base;
+ cutoff = (ros_ull)ROS_ULLONG_MAX / base;
+ cutlim = (int) ((ros_ull)ROS_ULLONG_MAX % base);
for (acc = 0, any = 0;; c = *s++)
{
if (isdigit(c))
@@ -65,7 +93,7 @@
}
if (any < 0)
{
- acc = ULONG_MAX;
+ acc = ROS_ULLONG_MAX;
__set_errno ( ERANGE );
}
else if (neg)
Index: lib/crt/makefile
===================================================================
--- lib/crt/makefile (revision 14631)
+++ lib/crt/makefile (working copy)
@@ -369,6 +369,7 @@
stdlib/strtod.o \
stdlib/strtol.o \
stdlib/strtoul.o \
+ stdlib/strtoull.o \
stdlib/swab.o \
stdlib/wcstod.o \
stdlib/wcstol.o \
Index: lib/crtdll/stdlib/strtoull.c
===================================================================
--- lib/crtdll/stdlib/strtoull.c (revision 14631)
+++ lib/crtdll/stdlib/strtoull.c (working copy)
@@ -4,21 +4,46 @@
#include <msvcrt/ctype.h>
#include <msvcrt/errno.h>
#include <msvcrt/stdlib.h>
-//#include <msvcrt/unconst.h>
+/* #include <msvcrt/unconst.h> */
+#if defined(LONG_LONG_MAX)
+/* GCC-style constant */
+#define ROS_LLONG_MAX LONG_LONG_MAX
+#define ROS_ULLONG_MAX ULONG_LONG_MAX
+typedef long long ros_ll;
+typedef unsigned long long ros_ull;
+#elif defined(_I64_MAX)
+/* MSVC-style constant */
+#define ROS_LLONG_MAX _I64_MAX
+#define ROS_ULLONG_MAX _UI64_MAX
+typedef __int64 ros_ll;
+typedef unsigned __int64 ros_ull;
+#elif defined(LLONG_MAX)
+/* C9x-style constant */
+#define ROS_LLONG_MAX LLONG_MAX
+#define ROS_ULLONG_MAX ULLONG_MAX
+#include <stdint.h>
+typedef int64_t ros_ll;
+typedef uint64_t ros_ull;
+#else
+#define ROS_LLONG_MAX LONG_MAX
+#define ROS_ULLONG_MAX ULONG_MAX
+typedef long ros_ll;
+typedef unsigned long ros_ull;
+#endif
+
/*
* Convert a string to an unsigned long integer.
*
* Ignores `locale' stuff. Assumes that the upper and lower case
* alphabets and digits are each contiguous.
*/
-unsigned long
+ros_ull
strtoull(const char *nptr, char **endptr, int base)
{
const char *s = nptr;
- unsigned long acc;
+ ros_ull acc, cutoff;
int c;
- unsigned long cutoff;
int neg = 0, any, cutlim;
/*
@@ -43,8 +68,8 @@
}
if (base == 0)
base = c == '0' ? 8 : 10;
- cutoff = (unsigned long)ULONG_MAX / base;
- cutlim = (unsigned long)ULONG_MAX % base;
+ cutoff = (ros_ull)ROS_ULLONG_MAX / base;
+ cutlim = (int) ((ros_ull)ROS_ULLONG_MAX % base);
for (acc = 0, any = 0;; c = *s++)
{
if (isdigit(c))
@@ -65,7 +90,7 @@
}
if (any < 0)
{
- acc = ULONG_MAX;
+ acc = ROS_ULLONG_MAX;
errno = ERANGE;
}
else if (neg)
And you said you were too busy with school...... :p
Ged
-----Original Message-----
From: ion(a)svn.reactos.com [mailto:ion@svn.reactos.com]
Sent: 15 April 2005 07:25
To: ros-svn(a)reactos.com
Subject: [ros-svn] [ion] 14625: Implemented Guarded Mutex, a drop-in
replacement for Fast Mutex (the correct one, not the one ROS incorrectly
implements) on NT 5.2. Not fully tested yet, so nothing switched to it and
probably not usable. Also made KeGetCurrentThre
Implemented Guarded Mutex, a drop-in replacement for Fast Mutex (the correct
one, not the one ROS incorrectly implements) on NT 5.2. Not fully tested
yet, so nothing switched to it and probably not usable. Also made
KeGetCurrentThread/Irql become inlined, since this should create quite a
speed boost. Made KeLeaveCriticalRegion deliver APCs if possible, and made
Crit regions macros usable from outside ntoskrnl thanks to a new NT 5.2 API
(KiCheckForKernelApcDelivery). Guarded Mutex code based on Filip Navara.
Updated files:
trunk/reactos/drivers/storage/diskdump/diskdump.c
trunk/reactos/hal/hal/hal.c
trunk/reactos/hal/halx86/generic/fmutex.c
trunk/reactos/hal/halx86/generic/irql.c
trunk/reactos/include/ddk/kedef.h
trunk/reactos/include/ddk/kefuncs.h
trunk/reactos/include/ddk/ketypes.h
trunk/reactos/ntoskrnl/Makefile
trunk/reactos/ntoskrnl/ex/i386/interlck.c
trunk/reactos/ntoskrnl/include/internal/i386/ke.h
trunk/reactos/ntoskrnl/include/internal/i386/ps.h
trunk/reactos/ntoskrnl/include/internal/ke.h
trunk/reactos/ntoskrnl/include/internal/ps.h
trunk/reactos/ntoskrnl/ke/apc.c
trunk/reactos/ntoskrnl/ke/gmutex.c
trunk/reactos/ntoskrnl/ntoskrnl.def
trunk/reactos/ntoskrnl/ps/thread.c
trunk/reactos/w32api/include/ddk/winddk.h
_______________________________________________
Ros-svn mailing list
Ros-svn(a)reactos.com
http://reactos.com:8080/mailman/listinfo/ros-svn
************************************************************************
The information contained in this message or any of its
attachments is confidential and is intended for the exclusive
use of the addressee. The information may also be legally
privileged. The views expressed may not be company policy,
but the personal views of the originator. If you are not the
addressee, any disclosure, reproduction, distribution or other
dissemination or use of this communication is strictly prohibited.
If you have received this message in error, please contact
postmaster(a)exideuk.co.uk
<mailto:postmaster@exideuk.co.uk> and then delete this message.
Exide Technologies is an industrial and transportation battery
producer and recycler with operations in 89 countries.
Further information can be found at www.exide.com
I've just managed to get hold of a copy of VMWare 5.0 through work.
I'll install a copy tonight and see how that goes.
Ged.
-----Original Message-----
From: ea [mailto:ea@iol.it]
Sent: 14 April 2005 23:18
To: Jason Filby; ReactOS Development List
Subject: Re: [ros-dev] crash on ROS vmware install
On the 13th, in QEmu I had a stop due to serial.sys
http://users.libero.it/ea/ros/qemu-ros-200504130002.jpg
On IRC, Hervé said he's working on it.
Jason Filby wrote:
>Hi
>
>I'm getting a similar crash under QEmu.
>
>Cheers
>Jason
>
>On 4/14/05, Gedi <gedi(a)ntlworld.com> wrote:
>
>
>>Source taken from HEAD just before Casper took it down for the rebuild.
>>
>>Initially it was hanging just after the splash so I rebuilt with DGB to
>>see if I could glean more info.
>>
>>Now it crashes upon install, just before it goes to the GUI config.
>>
>>Here is a sceenshot of the crash
>>http://homepage.ntlworld.com/gedmurphy/crash.jpg
>>
>>I have attached the map files for smss. I would have stuck on one for
>>ntoskrnl too, but it's a little large.
>>
>>
The map file is for the production SM: the one in the blue screen is the
1st stage (text) setup program (in the boot disk it get renamed to be
run by ntoskrnl with no changes).
Emanuele
_______________________________________________
Ros-dev mailing list
Ros-dev(a)reactos.com
http://reactos.com:8080/mailman/listinfo/ros-dev
************************************************************************
The information contained in this message or any of its
attachments is confidential and is intended for the exclusive
use of the addressee. The information may also be legally
privileged. The views expressed may not be company policy,
but the personal views of the originator. If you are not the
addressee, any disclosure, reproduction, distribution or other
dissemination or use of this communication is strictly prohibited.
If you have received this message in error, please contact
postmaster(a)exideuk.co.uk
<mailto:postmaster@exideuk.co.uk> and then delete this message.
Exide Technologies is an industrial and transportation battery
producer and recycler with operations in 89 countries.
Further information can be found at www.exide.com
Since two days I released the RC2 to sf.net
What's our plan for the next release (candidate)?
As you may see, I went to RAR concerning sources and map files. I don't
know whether this is such a good idea. At least the size relation
convinced me. Map: 17MB vs. 30MB or Src: 15MB vs. 27MB
I think for people still working with modem this is an advance (even if
they have to search to unrar). The difference in sizes seems to me is
the solid kind of archive. Thus tarbz2 should do the same
Comments?
Thanks Dmitry, I'm cc'ing our dev team on this :)
Cheers
Jason
On 4/13/05, Dmitry Viktorovich Long <dvd.long(a)gmail.com> wrote:
> Yes.
> ReactOS is the most f**king BEST product I've ever seen. Great thanks
> to all of you. Do not ever stop, don't even think it.
>
> Best regards, ReactOS fan.
>
I've been doing a bit of work on the usetup code and came to realize
that we have a bit of a widespread problem in a lot of code. There is a
great deal of code that looks basically like this pseudo code:
NSTATUS DoSomething()
{
NSTATUS Status;
...
Status = NtXXX();
if( !NT_SUCCESS( Status ) )
return Status;
Status = NtYYY();
if( !NT_SUCCESS( Status ) )
{
cleanupXXX();
return Status;
}
Status = NtZZZ();
if( !NT_SUCCESS( Status ) )
{
cleanupYYY();
cleanupXXX();
return Status;
}
// yay, everything worked
cleanupZZZ();
cleanupYYY();
cleanupXXX();
return STATUS_SUCCESS;
}
This type of error handling is absolutely horrible. Just look at all of
the duplicate code! There are 3 different return points and each one
duplicates all of the code from the previous, and adds one more line.
Maintaining code like this becomes very hard, and it produces a larger,
slower executing binary.
Now ideally all of those NtXXX functions would be throwing a SEH
exception on failure instead of returning the failure code, and we could
just write that code like so:
void do_something()
{
__try {
NtXXX();
NtYYY();
NtZZZ();
// manipulate the stuff you allocated
}
__finally {
cleanupZZZ();
cleanupYYY();
cleanupXXX();
}
}
But sadly, I don't think that is ever going to happen. Instead, I
propose that we use goto to eliminate the duplicate points of return,
and wrap the goto in a nice macro. So far I've come up with this macro:
#define NTCALL(target, function) if( Status = function ) goto target;
And you use it like this:
NTSTATUS do_something()
{
NTSTATUS Status;
NTCALL( done, NtXXX(...) );
NTCALL( cleanXXX, NtYYY(...) );
NTCALL( cleanYYY, NtZZZ(...) );
// manipulate x, y, and z here
cleanZZZ:
cleanupZZZ();
cleanYYY:
cleanupYYY();
cleanXXX:
cleanupXXX();
done:
return Status;
}
Now that code is more compact and maintainable than the original, and
will produce a leaner binary. I'm still trying to improve on it a bit
but I like this basic idea, so I'm throwing it out for comments. Last
night I came up with this macro and in about 10 minutes I rewrote the
file copy routine in usetup to use memory mapping instead of allocating
a huge buffer, reading in the source file, then writing it out to the
destination. The new code involves making several more system calls
than the old code, but since the error handling has been greatly cleaned
up, the new code is more compact and easier to maintain.