Compare commits

..

21 Commits

Author SHA1 Message Date
Martin Fuchs
5b2d8b8a91 move lean-explorer to tree structure independent path step 2
svn path=/branches/lean-explorer/; revision=21193
2006-02-26 11:44:44 +00:00
Martin Fuchs
73e32edc1a lean explorer branch: merge changes of audited repository
------------------------------------------------------------------------
r52 | martinf | 2006-01-30 20:45:40 +0100 (Mo, 30 Jan 2006) | 1 line

Copy Explorer from trunk into lean-explorer branch
------------------------------------------------------------------------
r42 | martinf | 2006-01-30 09:00:18 +0100 (Mo, 30 Jan 2006) | 1 line

set svn:eol-style for Makefiles
------------------------------------------------------------------------
r37 | martinf | 2006-01-29 20:03:05 +0100 (So, 29 Jan 2006) | 1 line

set svn:eolstyle in *.rbuild files
------------------------------------------------------------------------
r36 | martinf | 2006-01-29 16:59:25 +0100 (So, 29 Jan 2006) | 1 line

Explorer: fix Rebar resizing
------------------------------------------------------------------------
r35 | martinf | 2006-01-29 16:28:15 +0100 (So, 29 Jan 2006) | 1 line

explorer: add icon cache mapped by shell paths (PIDLs) to fix GDI handle leaks

svn path=/branches/lean-explorer/; revision=21180
2006-02-21 21:31:12 +00:00
Martin Fuchs
430c117321 eliminate GCC warning about initialization order
svn path=/branches/lean-explorer/; revision=20518
2006-01-01 15:48:03 +00:00
Martin Fuchs
2750367ffd lean explorer: select initial folder in shell namespace
svn path=/branches/lean-explorer/; revision=20513
2006-01-01 14:32:17 +00:00
Martin Fuchs
d1d569ee84 lean explorer: correctly handle path of command line argument in explore mode
svn path=/branches/lean-explorer/; revision=20490
2005-12-31 18:36:39 +00:00
Martin Fuchs
1a3b862c88 flatten Entry/ShellEntry class hierarchy
svn path=/branches/lean-explorer/; revision=20486
2005-12-31 15:54:25 +00:00
Martin Fuchs
ff800b125a lean explorer: remove unused attributes
svn path=/branches/lean-explorer/; revision=20483
2005-12-31 14:33:58 +00:00
Martin Fuchs
6f6ab56356 lean explorer: remove WINFS
svn path=/branches/lean-explorer/; revision=20482
2005-12-31 14:24:43 +00:00
Martin Fuchs
3a70094172 lean explorer:
- simplfy SCAN flags
- disable WINFS in favor to code size using only shell namespace

svn path=/branches/lean-explorer/; revision=20481
2005-12-31 13:37:09 +00:00
Martin Fuchs
2ddb4f28a9 lean explorer:
- correct folder display when using the "/e" command line option
- handle owner draw menu messages in folder pane

svn path=/branches/lean-explorer/; revision=20479
2005-12-31 11:22:44 +00:00
Martin Fuchs
4ea455d560 lean explorer: get and use the parent folder to display correct context menu in all cases
svn path=/branches/lean-explorer/; revision=20406
2005-12-28 22:45:04 +00:00
Martin Fuchs
e3d8ced285 lean explorer:
- merge a few bug fixes from trunk
- display icon overlays in Explorer tree view

svn path=/branches/lean-explorer/; revision=20399
2005-12-28 17:37:37 +00:00
Martin Fuchs
0dc540f4b0 correct command line handling in lean explorer
svn path=/branches/lean-explorer/; revision=20391
2005-12-28 12:27:25 +00:00
Martin Fuchs
faaf2c4f88 fix crash because of NULL command line pointer
svn path=/branches/lean-explorer/; revision=18377
2005-10-09 15:12:01 +00:00
Martin Fuchs
f9d49e97b7 merge command line parser code from trunk into lean-explorer branch
svn path=/branches/lean-explorer/; revision=18346
2005-10-08 17:25:32 +00:00
Martin Fuchs
9dcd94a97a set svn:eol-style of *.dsp/dsw to CRLF
svn path=/branches/lean-explorer/; revision=16988
2005-08-03 05:15:48 +00:00
Martin Fuchs
e6a7596e42 small optimization for the last change
svn path=/branches/lean-explorer/; revision=14956
2005-05-03 09:21:42 +00:00
Martin Fuchs
951f673442 display custom folders in start menu root
svn path=/branches/lean-explorer/; revision=14953
2005-05-03 08:01:18 +00:00
Martin Fuchs
2ded3c5128 context menu interface pointer cleanup
svn path=/branches/lean-explorer/; revision=14952
2005-05-03 08:00:23 +00:00
Martin Fuchs
93eb45cc63 merge mixed case startup menu folders
svn path=/branches/lean-explorer/; revision=14937
2005-05-01 22:26:55 +00:00
Martin Fuchs
de183a0a1f some cleanups in the lean explorer code
svn path=/branches/lean-explorer/; revision=14930
2005-05-01 21:12:50 +00:00
2817 changed files with 19977 additions and 1162237 deletions

0
.gitignore vendored
View File

339
COPYING
View File

@@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@@ -1,23 +0,0 @@
Copyright 2008 ReactOS Portable Systems Group. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and
the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
and the following disclaimer in the documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE REACTOS PORTABLE SYSTEMS GROUP ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REACTOS PORTABLE SYSTEMS GROUP
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those of the authors and
should not be interpreted as representing official policies, either expressed or implied, of the ReactOS
Project.

View File

@@ -1,504 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

674
COPYING3
View File

@@ -1,674 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View File

@@ -1,165 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

80
CREDITS
View File

@@ -1,80 +0,0 @@
ReactOS is available thanks to the work of:
Aleksey Bragin <aleksey at reactos org>
Alex Ionescu <alex.ionescu@reactos.org>
Andrew Greenwood <lists@silverblade.co.uk>
Andrew Munger <waxdragon@gmail.com>
Arindam Das
Art Yerkes <ayerkes@speakeasy.net>
Ariadne
Brandon Turner <turnerb7@msu.edu>
Brian Palmer <brianp@sginet.com>
Cameron M. Gutman <cgutman@reactos.org>
Casper S. Hornstrup <chorns@users.sourceforge.net>
Christoph von Wittich <christoph_vw@reactos.org>
Daniel Reimer <reimer.daniel@freenet.de>
David Welch <welch@cwcom.net>
Dmitry Chapyshev <dmitry@reactos.org>
Emanuele Aliberti <ea@iol.it>
Eric Kohl <ekohl@rz-online.de>
Eugene Ingerman <geneing@myrealbox.com>
Filip Navara <xnavara@volny.cz>
Frederik Leemans
Ge van Geldorp <ge@gse.nl>
Ged Murphy <gedmurphy@reactos.org>
Gregor Brunmar <gregor brunmar at home se>
Gregor Schneider <grschneider@gmail.com>
Guido de Jong
Gunnar Andre' Dalsnes <hardon@online.no>
Hans Kremer
Hartmut Birr <hartmut.birr@gmx.de>
Hernan Ochoa
Herve Poussineau <hpoussin@reactos.com>
Iwan Fatahi <i_fatahi@hotmail.com>
James B. Tabor <jimtabor.rosdev@gmail.com> <jimtabor@adsl-64-217-116-74.dsl.hstntx.swbell.net>
Jason Eager
Jason Filby <jasonfilby@yahoo.com>
Jason Weiler
Jean Michault
Jeffrey Morlan <mrnobo1024@yahoo.com>
Jim Noeth
Johannes Anderwald <johannes.anderwald@student.tugraz.at>
Jonathan Wilson <jonwil@tpgi.com.au>
Jurgen van Gael <jurgen.vangael@student.kuleuven.ac.be>
KJK::Hyperion <noog@libero.it>
Klemens R. Friedl <klemens_friedl@gmx.net>
Maarten Bosma <maarten.paul@bosma.de>
Magnus Olsen <magnus@greatlord.com>
Mark Tempel <mtempel@visi.com>
Mark Weaver <mark@npsl.co.uk>
Martin Fuchs <martin-fuchs@gmx.net>
Marty Dill <mdill@uvic.ca>
Matthias Kupfer <mkupfer@reactos.org>
Matt Pyne
Mike Nordell <"tamlin">
Nathan Woods <npwoods@mess.org>
Pablo Borobia <pborobia@gmail.com>
Paolo Pantaleo <paolopan@freemail.it>
Peter Ward <dralnix@gmail.com>
Pierre Schweitzer <pschweitzer@reactos.org>
Phillip Susi <phreak@iag.net>
Rex Jolliff <rex@lvcablemodem.com>
Richard Campbell <betam4x@gmail.com>
Robert Bergkvist <fragdance@hotmail.com>
Robert Dickenson <robd@reactos.org>
Royce Mitchell III <royce3@ev1.net>
Samuel Serapi<70>n <samdwise51@gmail.com>
Saveliy Tretiakov <saveliyt@mail.ru>
Stefan Ginsberg <stefan__100__@hotmail.com>
Steven Edwards <steven_ed4153@yahoo.com>
Thomas Weidenmueller <w3seek@users.sourceforge.net>
Timo Kreuzer <timo.kreuzer@reactos.org>
Victor Kirhenshtein <sauros@iname.com>
Vizzini <vizzini@plasmic.com>
Graphic Design from
Mindflyer <mf@mufunyo.net>
Tango Desktop Project <http://tango-project.org>
Everaldo <http://everaldo.com>

1518
Doxyfile

File diff suppressed because it is too large Load Diff

80
INSTALL
View File

@@ -1,80 +0,0 @@
1. Build environment
To build the system you need either mingw32 installed on Windows or a mingw32
cross compiler running on unix. You may obtain MinGW binaries that build
ReactOS from http://www.reactos.org/.
2. Building ReactOS
2.1 Building the binaries
To build ReactOS run 'make' (without the quotes) if you are building on Linux
or 'mingw32-make' if you are building on Windows (or ReactOS) from the top
directory. If you are using RosBE, follow on-screen instructions.
2.2 Building a bootable CD image
To build a bootable CD image run 'make bootcd' (without the quotes) if you are
building on Linux or 'mingw32-make bootcd' if you are building on Windows (or
ReactOS) from the top directory. This will create a CD image with a filename,
ReactOS.iso, in the top directory.
3. Installation
ReactOS can only be installed on a machine that has a FAT16 or FAT32 partition
as the active (bootable) partition. The partition on which ReactOS is to be
installed (which may or may not be the bootable partition) must also be
formatted as FAT16 or FAT32. ReactOS Setup can format the partitions if
needed.
ReactOS can be installed from the source distribution or from the bootable CD
distribution. The two ways to install ReactOS are explained below.
3.1 Installation from sources
If you don't have an existing ReactOS installation you want to upgrade, then
build a bootable CD as described above. Burn the CD image, boot from it, and
follow the instructions to install ReactOS.
If you have an existing ReactOS installation you want to upgrade, then to
install ReactOS after building it, type 'make install' or
'mingw32-make install'. This will create the directory 'reactos' in the top
directory. Copy the contents of this directory over the existing installation.
If you don't want to copy the files manually every time you run a
'make install' or 'mingw32-make install', then you can specify the directory
where the files are to be copied to during installation.
Set the ROS_INSTALL environment variable. If you are on Windows this could be
done by:
set ROS_INSTALL=c:\reactos
If you are on Linux this could be done by:
export ROS_INSTALL=/mnt/windows/reactos
Now run 'make install' or 'mingw32-make install' to install the files to the
new location.
3.2 Installation from bootable CD distribution
To install ReactOS from the bootable CD distribution, extract the archive
contents. Then burn the CD image, boot from it, and follow instructions.
5. Help
If you run into problems or have suggestions for making ReactOS better, please
visit the address below. Mailing lists are available for a variety of topics,
bugs should be submitted to bugzilla and general chat takes place in the forums,
or #reactos on freenode
http://www.reactos.org/
ReactOS Development Team

82
Make-rosshell-MinGW Normal file
View File

@@ -0,0 +1,82 @@
#
# ReactOS lean shell
#
# Make-rosshell-MinGW
#
# MinGW Makefile with precompiled header support
#
CC = gcc
CXX = g++
LINK = g++
CFLAGS = -DWIN32 -DROSSHELL -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.
RCFLAGS = -DWIN32 -DROSSHELL -D__WINDRES__
LFLAGS = -Wl,--subsystem,windows
ifdef DEBUG
CFLAGS += -D_DEBUG -g
RCFLAGS += -D_DEBUG
LFLAGS += -g
else
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
RCFLAGS += -DNDEBUG
LFLAGS += -s
endif
ifndef UNICODE
UNICODE = 1
endif
ifeq ($(UNICODE),1)
CFLAGS += -DUNICODE
# LFLAGS+= -Wl,--entry,_wWinMain@16
endif
CXXFLAGS = $(CFLAGS)
EXEC_SUFFIX = .exe
RES_SUFFIX = .coff
VPATH = shell utility taskbar desktop dialogs
PROGRAM = rosshell
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
OBJECTS = \
startup.o \
shellclasses.o \
utility.o \
window.o \
dragdropimpl.o \
shellbrowserimpl.o \
explorer.o \
entries.o \
shellfs.o \
desktop.o \
desktopbar.o \
taskbar.o \
startmenu.o \
traynotify.o \
quicklaunch.o \
settings.o
LIBS = gdi32 comctl32 ole32 uuid
all: precomp.h.gch $(TARGET)
precomp.h.gch: *.h utility/*.h shell/*.h desktop/*.h
$(CXX) $(CFLAGS) precomp.h
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
windres $(RCFLAGS) -o $@ explorer_intres.rc
clean:
rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) precomp.h.gch \
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
ever:

147
Make-rosshell.mak Normal file
View File

@@ -0,0 +1,147 @@
#
# ReactOS lean shell
#
# Makefile
#
# Windows is default host environment
ifeq ($(HOST),)
HOST = mingw32-windows
endif
ifeq ($(HOST),mingw32-linux)
CC = mingw32-gcc
CXX = mingw32-g++
LINK = mingw32-g++
RC = mingw32-windres
CD_PREFIX := ./
PREFIX = mingw32-
EXE_POSTFIX :=
EXE_PREFIX := ./
endif
ifeq ($(HOST),mingw32-windows)
CC = gcc
CXX = g++
LINK = g++
RC = windres
CD_PREFIX :=
PREFIX =
EXE_PREFIX :=
EXE_POSTFIX := .exe
endif
PATH_TO_TOP = ../../..
TOOLS_PATH = $(PATH_TO_TOP)/tools
ifndef UNICODE
UNICODE = 1
endif
CFLAGS = -I./ -DWIN32 -D_ROS_ -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall
RCFLAGS = -DWIN32 -D_ROS_ -D__WINDRES__
LFLAGS = -Wl,--subsystem,windows
ifdef DEBUG
CFLAGS += -D_DEBUG -g
RCFLAGS += -D_DEBUG
LFLAGS += -g
else
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
RCFLAGS += -DNDEBUG
LFLAGS += -s
endif
ifeq ($(UNICODE),1)
CFLAGS += -DUNICODE
# LFLAGS+= -Wl,--entry,_wWinMain@16
RCFLAGS += -DUNICODE
endif
CXXFLAGS = $(CFLAGS)
EXEC_SUFFIX = .exe
RES_SUFFIX = .coff
VPATH = shell utility taskbar desktop dialogs
PROGRAM = rosshell
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
OBJECTS = \
startup.o \
shellclasses.o \
utility.o \
window.o \
dragdropimpl.o \
shellbrowserimpl.o \
explorer.o \
entries.o \
shellfs.o \
desktop.o \
desktopbar.o \
taskbar.o \
startmenu.o \
traynotify.o \
quicklaunch.o \
settings.o
LIBS = gdi32 comctl32 ole32 uuid
.PHONY: all depends implib clean install dist bootcd depends
all: $(TARGET)
ever:
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
$(RC) $(RCFLAGS) -o $@ explorer_intres.rc
clean:
$(TOOLS_PATH)/rdel $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
# Use environment var ROS_INSTALL to override default install dir
ifneq ($(ROS_INSTALL),)
INSTALL_DIR = $(ROS_INSTALL)
else
ifeq ($(HOST),mingw32-windows)
INSTALL_DIR = C:/reactos
else
INSTALL_DIR = $(PATH_TO_TOP)/reactos
endif
endif
implib:
install:
-$(TOOLS_PATH)/rcopy $(TARGET) $(INSTALL_DIR)/$(TARGET)
bootcd:
# dependency scanning
DEP_FILTERED := $(filter-out $(DEP_EXCLUDE_FILTER), $(OBJECTS:.o=.d))
DEP_FILES := $(join $(dir $(DEP_FILTERED)), $(addprefix ., $(notdir $(DEP_FILTERED))))
ifneq ($(MAKECMDGOALS),clean)
-include $(DEP_FILES)
endif
ifeq ($(HOST),mingw32-windows)
DEPENDS_EXE := ..\..\..\tools\depends
else
DEPENDS_EXE := $(TOOLS_PATH)/depends
endif
.%.d: %.c $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
.%.d: %.cpp $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@

720
Makefile
View File

@@ -1,633 +1,149 @@
# Well-known targets:
#
# all (default target)
# This target builds all of ReactOS.
# ReactOS lean shell
#
# module
# These targets builds a single module. Replace module with the name of
# the module you want to build.
#
# bootcd
# This target builds an ISO (ReactOS.iso) from which ReactOS can be booted
# and installed.
#
# livecd
# This target builds an ISO (ReactOS-Live.iso) from which ReactOS can be
# booted, but not installed.
#
# install
# This target installs all of ReactOS to a location specified by the
# ROS_INSTALL environment variable.
#
# module_install
# These targets installs a single module to a location specified by the
# ROS_INSTALL environment variable. Replace module with the name of the
# module you want to install.
#
# clean
# This target cleans (deletes) all files that are generated when building
# ReactOS.
#
# module_clean
# These targets cleans (deletes) files that are generated when building a
# single module. Replace module with the name of the module you want to
# clean.
#
# depends
# This target does a complete dependency check of the ReactOS codebase.
# This can require several minutes to complete. If you only need to check
# dependencies for a single or few modules then you can use the
# module_depends targets instead. This target can also repair a damaged or
# missing makefile-${ROS_ARCH}.auto if needed.
#
# module_depends
# These targets do a dependency check of individual modules. Replace module
# with the name of the module for which you want to check dependencies.
# This is faster than the depends target which does a complete dependency
# check of the ReactOS codebase.
#
#
# Accepted environment variables:
#
# ROS_ARCH
# This variable specifies the name of the architecture to build ReactOS for.
# The variable defaults to i386.
#
# ROS_PREFIX
# This variable specifies the prefix of the MinGW installation. On Windows
# a prefix is usually not needed, but on linux it is usually "mingw32". If
# not present and no executable named "gcc" can be found, then the prefix is
# assumed to be "mingw32". If your gcc is named i386-mingw32-gcc then set
# ROS_PREFIX to i386-mingw32. Don't include the dash (-) before gcc.
#
# ROS_INTERMEDIATE
# This variable controls where to put intermediate files. Intermediate
# files are generated files that are needed to generate the final
# output files. Examples of intermediate files include *.o, *.a, and
# *.coff. N.B. Don't put a path separator at the end. The variable
# defaults to .\obj-{ROS_ARCH}.
#
# ROS_OUTPUT
# This variable controls where to put output files. Output files are
# generated files that makes up the result of the build process.
# Examples of output files include *.exe, *.dll, and *.sys. N.B. Don't
# put a path separator at the end. The variable defaults to .\output-{ROS_ARCH}.
#
# ROS_CDOUTPUT
# This variable controls the name of the ReactOS directory on cdrom.
# The variable defaults to reactos.
# Warning: setting this value may lead to a not bootable/installable cdrom.
#
# ROS_TEMPORARY
# This variable controls where to put temporary files. Temporary files
# are (usually small) generated files that are needed to generate the
# intermediate or final output files. Examples of temporary files include
# *.rci (preprocessed .rc files for wrc), *.tmp, and *.exp. N.B. Don't put
# a path separator at the end. The variable defaults to {ROS_INTERMEDIATE}
# directory.
#
# ROS_INSTALL
# This variable controls where to install output files to when using
# 'make install'. N.B. Don't put a path separator at the end. The variable
# defaults to .\{ROS_CDOUTPUT}.
#
# ROS_BUILDMAP
# This variable controls if map files are to be generated for executable
# output files. Map files have the extension .map. The value can be either
# full (to build map files with assembly code), yes (to build map files
# without source code) or no (to not build any map files). The variable
# defaults to no.
#
# ROS_BUILDNOSTRIP
# This variable controls if non-symbol-stripped versions are to be built
# of executable output files. Non-symbol-stripped executable output files
# have .nostrip added to the filename just before the extension. The value
# can be either yes (to build non-symbol-stripped versions of executable
# output files) or no (to not build non-symbol-stripped versions of
# executable output files). The variable defaults to no.
#
# ROS_LEAN_AND_MEAN
# This variable controls if all binaries should be stripped out of useless
# data added by GCC/LD as well as of RSYM symbol data. Output binary size
# will go from 80 to 40MB, memory usage from 58 to 38MB and the install CD
# from 18 to 13MB. The variable defaults to no.
#
# ROS_GENERATE_RSYM
# This variable controls generation of RSYM symbol data. The value can be
# either yes (to generate symbol data) or no. The variable defaults to yes.
#
# ROS_RBUILDFLAGS
# Pass parameters to rbuild.
# -v Be verbose.
# -c Clean as you go. Delete generated files as soon as they are not needed anymore.
# -dd Disable automatic dependencies.
# -da Enable automatic dependencies.
# -df Enable full dependencies.
# -dm{module} Check only automatic dependencies for this module.
# -hd Disable precompiled headers.
# -mi Let make handle creation of install directories. Rbuild will not generate the directories.
# -ps Generate proxy makefiles in source tree instead of the output tree.
# -ud Disable compilation units.
# -r Input XML
#
# ROS_AUTOMAKE
# Alternate name of makefile-${ROS_ARCH}.auto
#
# ROS_BUILDENGINE
# The Build engine to be used. The variable defaults to rbuild (RBUILD_TARGET)
# Makefile
#
# check for versions of make that don't have features we need...
# the function "eval" is only available in 3.80+, which happens to be the minimum
# version that has the features we use...
# THIS CHECK IS BORROWED FROM THE "GMSL" PROJECT, AND IS COVERED BY THE GPL LICENSE
# YOU CAN FIND OUT MORE ABOUT GMSL - A VERY COOL PROJECT - AT:
# http://gmsl.sourceforge.net/
__gmsl_have_eval :=
__gmsl_ignore := $(eval __gmsl_have_eval := T)
ifndef __gmsl_have_eval
$(error ReactOS's makefiles use GNU Make 3.80+ features, you have $(MAKE_VERSION), you MUST UPGRADE in order to build ReactOS - Sorry)
endif
# END of code borrowed from GMSL ( http://gmsl.sourceforge.net/ )
define NL
endef
.PHONY: all
.PHONY: clean
.PHONY: world
.PHONY: universe
ifneq ($(ROS_ARCH),)
ARCH := $(ROS_ARCH)
else
ARCH := i386
endif
ifeq ($(ROS_AUTOMAKE),)
ROS_AUTOMAKE=makefile-$(ARCH).auto
endif
all: $(ROS_AUTOMAKE)
.SUFFIXES:
# Windows is default host environment
ifeq ($(HOST),)
ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
export OSTYPE = msys
HOST=mingw32-linux
HOST_CFLAGS+=-fshort-wchar
HOST_CPPFLAGS+=-fshort-wchar
else
HOST=mingw32-windows
endif
else
HOST=mingw32-linux
HOST_CFLAGS+=-fshort-wchar
HOST_CPPFLAGS+=-fshort-wchar
endif
HOST = mingw32-windows
endif
# Default to half-verbose mode
ifeq ($(VERBOSE),no)
Q = @
HALFVERBOSEECHO = no
BUILDNO_QUIET = -q
else
ifeq ($(VERBOSE),full)
Q =
HALFVERBOSEECHO = no
BUILDNO_QUIET =
else
Q = @
HALFVERBOSEECHO = yes
BUILDNO_QUIET = -q
endif
endif
ifeq ($(HOST),mingw32-linux)
QUOTE = "
CC = mingw32-gcc
CXX = mingw32-g++
LINK = mingw32-g++
RC = mingw32-windres
CD_PREFIX := ./
PREFIX = mingw32-
EXE_POSTFIX :=
EXE_PREFIX := ./
endif
ifeq ($(HOST),mingw32-windows)
CC = gcc
CXX = g++
LINK = g++
RC = windres
CD_PREFIX :=
PREFIX =
EXE_PREFIX :=
EXE_POSTFIX := .exe
endif
PATH_TO_TOP = ../../..
TOOLS_PATH = $(PATH_TO_TOP)/tools
ifndef UNICODE
UNICODE = 1
endif
CFLAGS = -I./ -DWIN32 -D_ROS_ -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall
RCFLAGS = -DWIN32 -D_ROS_ -D__WINDRES__
LFLAGS = -Wl,--subsystem,windows
ifdef DEBUG
CFLAGS += -D_DEBUG -g
RCFLAGS += -D_DEBUG
LFLAGS += -g
else
QUOTE =
endif
ifeq ($(HALFVERBOSEECHO),yes)
ECHO_CP =@echo $(QUOTE)[COPY] $@$(QUOTE)
ECHO_MKDIR =@echo $(QUOTE)[MKDIR] $@$(QUOTE)
ECHO_BUILDNO =@echo $(QUOTE)[BUILDNO] $@$(QUOTE)
ECHO_INVOKE =@echo $(QUOTE)[INVOKE] $<$(QUOTE)
ECHO_PCH =@echo $(QUOTE)[PCH] $@$(QUOTE)
ECHO_CPP =@echo $(QUOTE)[CPP] $@$(QUOTE)
ECHO_CC =@echo $(QUOTE)[CC] $<$(QUOTE)
ECHO_HOSTCC =@echo $(QUOTE)[HOST-CC] $<$(QUOTE)
ECHO_CL =@echo $(QUOTE)[CL] $<$(QUOTE)
ECHO_AS =@echo $(QUOTE)[AS] $<$(QUOTE)
ECHO_NASM =@echo $(QUOTE)[NASM] $<$(QUOTE)
ECHO_AR =@echo $(QUOTE)[AR] $@$(QUOTE)
ECHO_HOSTAR =@echo $(QUOTE)[HOST-AR] $@$(QUOTE)
ECHO_WINEBLD =@echo $(QUOTE)[WINEBLD] $@$(QUOTE)
ECHO_WRC =@echo $(QUOTE)[WRC] $@$(QUOTE)
ECHO_RC =@echo $(QUOTE)[RC] $@$(QUOTE)
ECHO_CVTRES =@echo $(QUOTE)[CVTRES] $@$(QUOTE)
ECHO_WIDL =@echo $(QUOTE)[WIDL] $@$(QUOTE)
ECHO_BIN2RES =@echo $(QUOTE)[BIN2RES] $<$(QUOTE)
ECHO_IMPLIB =@echo $(QUOTE)[IMPLIB] $@$(QUOTE)
ECHO_LD =@echo $(QUOTE)[LD] $@$(QUOTE)
ECHO_HOSTLD =@echo $(QUOTE)[HOST-LD] $@$(QUOTE)
ECHO_LINK =@echo $(QUOTE)[LINK] $@$(QUOTE)
ECHO_NM =@echo $(QUOTE)[NM] $@$(QUOTE)
ECHO_OBJDUMP =@echo $(QUOTE)[OBJDUMP] $@$(QUOTE)
ECHO_RBUILD =@echo $(QUOTE)[RBUILD] $@$(QUOTE)
ECHO_RSYM =@echo $(QUOTE)[RSYM] $@$(QUOTE)
ECHO_PEFIXUP =@echo $(QUOTE)[PEFIXUP] $@$(QUOTE)
ECHO_WMC =@echo $(QUOTE)[WMC] $@$(QUOTE)
ECHO_NCI =@echo $(QUOTE)[NCI] $@$(QUOTE)
ECHO_CABMAN =@echo $(QUOTE)[CABMAN] $<$(QUOTE)
ECHO_CDMAKE =@echo $(QUOTE)[CDMAKE] $@$(QUOTE)
ECHO_MKHIVE =@echo $(QUOTE)[MKHIVE] $@$(QUOTE)
ECHO_REGTESTS=@echo $(QUOTE)[REGTESTS] $@$(QUOTE)
ECHO_TEST =@echo $(QUOTE)[TEST] $@$(QUOTE)
ECHO_GENDIB =@echo $(QUOTE)[GENDIB] $@$(QUOTE)
ECHO_STRIP =@echo $(QUOTE)[STRIP] $@$(QUOTE)
ECHO_RGENSTAT=@echo $(QUOTE)[RGENSTAT] $@$(QUOTE)
ECHO_DEPENDS =@echo $(QUOTE)[DEPENDS] $<$(QUOTE)
ECHO_RSP =@echo $(QUOTE)[RSP] $@$(QUOTE)
else
ECHO_CP =
ECHO_MKDIR =
ECHO_BUILDNO =
ECHO_INVOKE =
ECHO_PCH =
ECHO_CPP =
ECHO_CC =
ECHO_HOSTCC =
ECHO_AS =
ECHO_NASM =
ECHO_AR =
ECHO_HOSTAR =
ECHO_WINEBLD =
ECHO_WRC =
ECHO_RC =
ECHO_CVTRES =
ECHO_WIDL =
ECHO_BIN2RES =
ECHO_IMPLIB =
ECHO_LD =
ECHO_HOSTLD =
ECHO_NM =
ECHO_OBJDUMP =
ECHO_RBUILD =
ECHO_RSYM =
ECHO_WMC =
ECHO_NCI =
ECHO_CABMAN =
ECHO_CDMAKE =
ECHO_MKHIVE =
ECHO_REGTESTS=
ECHO_TEST =
ECHO_GENDIB =
ECHO_STRIP =
ECHO_RGENSTAT=
ECHO_DEPENDS =
ECHO_RSP =
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
RCFLAGS += -DNDEBUG
LFLAGS += -s
endif
# Set host compiler/linker
ifeq ($(HOST_CC),)
HOST_CC = gcc
endif
ifeq ($(HOST_CPP),)
HOST_CPP = g++
endif
host_gcc = $(Q)$(HOST_CC)
host_gpp = $(Q)$(HOST_CPP)
host_ld = $(Q)ld
host_ar = $(Q)ar
host_objcopy = $(Q)objcopy
# Set target compiler/linker
ifneq ($(ROS_PREFIX),)
PREFIX_ := $(ROS_PREFIX)-
else
ifeq ($(HOST),mingw32-linux)
PREFIX_ := mingw32-
else
PREFIX_ :=
endif
endif
ifeq ($(TARGET_CC),)
TARGET_CC = $(PREFIX_)gcc
endif
ifeq ($(TARGET_CPP),)
TARGET_CPP = $(PREFIX_)g++
endif
gcc = $(Q)$(TARGET_CC)
gpp = $(Q)$(TARGET_CPP)
gas = $(Q)$(TARGET_CC) -x assembler-with-cpp
ld = $(Q)$(PREFIX_)ld
nm = $(Q)$(PREFIX_)nm
objdump = $(Q)$(PREFIX_)objdump
ar = $(Q)$(PREFIX_)ar
objcopy = $(Q)$(PREFIX_)objcopy
dlltool = $(Q)$(PREFIX_)dlltool
strip = $(Q)$(PREFIX_)strip
windres = $(Q)$(PREFIX_)windres
# Set utilities
ifeq ($(OSTYPE),msys)
HOST=mingw32-linux
endif
ifeq ($(HOST),mingw32-linux)
ifeq ($(OSTYPE),msys)
export EXEPOSTFIX = .exe
else
export EXEPOSTFIX =
endif
export SEP = /
mkdir = -$(Q)mkdir -p
checkpoint = $(Q)touch
rm = $(Q)rm -f
cp = $(Q)cp
NUL = /dev/null
else # mingw32-windows
export EXEPOSTFIX = .exe
ROS_EMPTY =
export SEP = \$(ROS_EMPTY)
mkdir = -$(Q)mkdir
checkpoint = $(Q)copy /y NUL
rm = $(Q)del /f /q
cp = $(Q)copy /y
NUL = NUL
ifeq ($(UNICODE),1)
CFLAGS += -DUNICODE
# LFLAGS+= -Wl,--entry,_wWinMain@16
RCFLAGS += -DUNICODE
endif
ifneq ($(ROS_INTERMEDIATE),)
INTERMEDIATE := $(ROS_INTERMEDIATE)
else
INTERMEDIATE := obj-$(ARCH)
endif
INTERMEDIATE_ := $(INTERMEDIATE)$(SEP)
CXXFLAGS = $(CFLAGS)
ifneq ($(ROS_OUTPUT),)
OUTPUT := $(ROS_OUTPUT)
else
OUTPUT := output-$(ARCH)
endif
OUTPUT_ := $(OUTPUT)$(SEP)
EXEC_SUFFIX = .exe
RES_SUFFIX = .coff
ifneq ($(ROS_CDOUTPUT),)
CDOUTPUT := $(ROS_CDOUTPUT)
else
CDOUTPUT := reactos
endif
CDOUTPUT_ := $(CDOUTPUT)$(SEP)
VPATH = shell utility taskbar desktop dialogs
ifneq ($(ROS_TEMPORARY),)
TEMPORARY := $(ROS_TEMPORARY)
else
TEMPORARY := $(INTERMEDIATE)
endif
TEMPORARY_ := $(TEMPORARY)$(SEP)
PROGRAM = explorer
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
OBJECTS = \
startup.o \
shellclasses.o \
utility.o \
window.o \
dragdropimpl.o \
shellbrowserimpl.o \
explorer.o \
entries.o \
shellfs.o \
mainframe.o \
shellbrowser.o \
desktop.o \
desktopbar.o \
taskbar.o \
startmenu.o \
traynotify.o \
quicklaunch.o \
settings.o
LIBS = gdi32 comctl32 ole32 uuid
.PHONY: all depends implib clean install dist bootcd depends
all: $(TARGET)
ever:
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
explorer$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
$(RC) $(RCFLAGS) -o $@ explorer_intres.rc
clean:
$(TOOLS_PATH)/rdel $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
# Use environment var ROS_INSTALL to override default install dir
ifneq ($(ROS_INSTALL),)
INSTALL := $(ROS_INSTALL)
INSTALL_DIR = $(ROS_INSTALL)
else
INSTALL := $(CDOUTPUT)
endif
INSTALL_ := $(INSTALL)$(SEP)
RBUILD_FLAGS := -rReactOS-$(ARCH).rbuild -DARCH=$(ARCH)
$(INTERMEDIATE):
$(ECHO_MKDIR)
${mkdir} $@
ifneq ($(INTERMEDIATE),$(OUTPUT))
$(OUTPUT):
$(ECHO_MKDIR)
${mkdir} $@
endif
ifneq ($(TEMPORARY),$(INTERMEDIATE))
ifneq ($(TEMPORARY),$(OUTPUT))
$(TEMPORARY):
$(ECHO_MKDIR)
${mkdir} $@
ifeq ($(HOST),mingw32-windows)
INSTALL_DIR = C:/reactos
else
INSTALL_DIR = $(PATH_TO_TOP)/reactos
endif
endif
BUILDNO_H = $(INTERMEDIATE_)sdk$(SEP)include$(SEP)reactos$(SEP)buildno.h
implib:
include sdk/libs/lib.mak
include sdk/tools/tools.mak
-include $(ROS_AUTOMAKE)
install:
-$(TOOLS_PATH)/rcopy $(TARGET) $(INSTALL_DIR)/$(TARGET)
PREAUTO := \
$(BIN2C_TARGET) \
$(BIN2RES_TARGET) \
$(BUILDNO_H) \
$(NCI_SERVICE_FILES) \
$(GENDIB_DIB_FILES)
bootcd:
ifeq ($(ARCH),powerpc)
PREAUTO += $(OFW_INTERFACE_SERVICE_FILES) $(PPCMMU_TARGETS)
# dependency scanning
DEP_FILTERED := $(filter-out $(DEP_EXCLUDE_FILTER), $(OBJECTS:.o=.d))
DEP_FILES := $(join $(dir $(DEP_FILTERED)), $(addprefix ., $(notdir $(DEP_FILTERED))))
ifneq ($(MAKECMDGOALS),clean)
-include $(DEP_FILES)
endif
ifeq ($(ROS_BUILDENGINE),)
ROS_BUILDENGINE=$(RBUILD_TARGET)
ifeq ($(HOST),mingw32-windows)
DEPENDS_EXE := ..\..\..\tools\depends
else
DEPENDS_EXE := $(TOOLS_PATH)/depends
endif
$(ROS_AUTOMAKE): $(ROS_BUILDENGINE) $(XMLBUILDFILES) | $(BUILDNO_H)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) mingw
.%.d: %.c $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
world: all bootcd livecd
.%.d: %.cpp $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
universe:
$(MAKE) KDBG=1 DBG=1 \
ROS_AUTOMAKE=makefile-$(ARCH)-kd.auto \
ROS_INSTALL=reactos-$(ARCH)-kd \
ROS_INTERMEDIATE=obj-$(ARCH)-kd \
ROS_OUTPUT=output-$(ARCH)-kd \
world
$(MAKE) KDBG=0 DBG=1 \
ROS_AUTOMAKE=makefile-$(ARCH)-d.auto \
ROS_INSTALL=reactos-$(ARCH)-d \
ROS_INTERMEDIATE=obj-$(ARCH)-d \
ROS_OUTPUT=output-$(ARCH)-d \
world
$(MAKE) KDBG=0 DBG=0 \
ROS_AUTOMAKE=makefile-$(ARCH)-r.auto \
ROS_INSTALL=reactos-$(ARCH)-r \
ROS_INTERMEDIATE=obj-$(ARCH)-r \
ROS_OUTPUT=output-$(ARCH)-r \
world
.PHONY: rgenstat
rgenstat: $(RGENSTAT_TARGET)
$(ECHO_RGENSTAT)
$(Q)$(RGENSTAT_TARGET) apistatus.lst apistatus.xml
.PHONY: cb
cb: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) cb
.PHONY: msbuild
msbuild: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) msbuild
.PHONY: msbuild_clean
msbuild_clean: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c msbuild
.PHONY: depmap
depmap: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) depmap
.PHONY: vreport
vreport:$(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) vreport
.PHONY: msvc
msvc: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) msvc
.PHONY: msvc6
msvc6: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs6.00 -voversionconfiguration msvc
.PHONY: msvc7
msvc7: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.00 -voversionconfiguration msvc
.PHONY: msvc71
msvc71: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.10 -voversionconfiguration msvc
.PHONY: msvc8
msvc8: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs8.00 -voversionconfiguration msvc
.PHONY: msvc9
msvc9: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs9.00 -voversionconfiguration msvc
.PHONY: msvc10
msvc10: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs10.00 -voversionconfiguration msvc
.PHONY: msvc6_clean
msvc6_clean: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs6.00 -voversionconfiguration msvc
.PHONY: msvc7_clean
msvc7_clean: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs7.00 -voversionconfiguration msvc
.PHONY: msvc71_clean
msvc71_clean: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs7.10 -voversionconfiguration msvc
.PHONY: msvc8_clean
msvc8_clean: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs8.00 -voversionconfiguration msvc
.PHONY: msvc9_clean
msvc9_clean: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs9.00 -voversionconfiguration msvc
.PHONY: msvc10_clean
msvc10_clean: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs10.00 -voversionconfiguration msvc
.PHONY: msvc_clean
msvc_clean: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c msvc
.PHONY: msvc_clean_all
msvc_clean_all: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs6.00 -voversionconfiguration msvc
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs7.00 -voversionconfiguration msvc
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs7.10 -voversionconfiguration msvc
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -c -vs8.10 -voversionconfiguration msvc
.PHONY: msvc7_install_debug
msvc7_install_debug: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.00 -vcdebug -voversionconfiguration msvc
.PHONY: msvc7_install_release
msvc7_install_release: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.00 -vcrelease -voversionconfiguration msvc
.PHONY: msvc7_install_speed
msvc7_install_speed: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.00 -vcspeed -voversionconfiguration msvc
.PHONY: msvc71_install_debug
msvc71_install_debug: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.10 -vcdebug -voversionconfiguration msvc
.PHONY: msvc71_install_release
msvc71_install_release: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.10 -vcrelease -voversionconfiguration msvc
.PHONY: msvc71_install_speed
msvc71_install_speed: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs7.10 -vcspeed -voversionconfiguration msvc
.PHONY: msvc8_install_debug
msvc8_install_debug: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs8.00 -vcdebug -voversionconfiguration msvc
.PHONY: msvc8_install_release
msvc8_install_release: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs8.00 -vcrelease -voversionconfiguration msvc
.PHONY: msvc8_install_speed
msvc8_install_speed: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) -vs8.00 -vcspeed -voversionconfiguration msvc
.PHONY: makefile_auto_clean
makefile_auto_clean:
-@$(rm) $(ROS_AUTOMAKE) $(PREAUTO) 2>$(NUL)
.PHONY: clean
clean: makefile_auto_clean
.PHONY: depends
depends: $(ROS_BUILDENGINE)
$(ECHO_RBUILD)
$(Q)$(ROS_BUILDENGINE) $(RBUILD_FLAGS) $(ROS_RBUILDFLAGS) mingw

80
Makefile-MinGW Normal file
View File

@@ -0,0 +1,80 @@
#
# ReactOS lean explorer
#
# Makefile-MinGW
#
CC = gcc
CXX = g++
LINK = g++
CFLAGS = -DWIN32 -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.
RCFLAGS = -DWIN32 -D__WINDRES__
LFLAGS = -Wl,--subsystem,windows
ifdef DEBUG
CFLAGS += -D_DEBUG -g
RCFLAGS += -D_DEBUG
LFLAGS += -g
else
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
RCFLAGS += -DNDEBUG
LFLAGS += -s
endif
ifndef UNICODE
UNICODE = 1
endif
ifeq ($(UNICODE),1)
CFLAGS += -DUNICODE
# LFLAGS+= -Wl,--entry,_wWinMain@16
RCFLAGS += -DUNICODE
endif
CXXFLAGS = $(CFLAGS)
EXEC_SUFFIX = .exe
RES_SUFFIX = .coff
VPATH = shell utility taskbar desktop dialogs
PROGRAM = explorer
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
OBJECTS = \
startup.o \
shellclasses.o \
utility.o \
window.o \
dragdropimpl.o \
shellbrowserimpl.o \
explorer.o \
entries.o \
shellfs.o \
mainframe.o \
shellbrowser.o \
desktop.o \
desktopbar.o \
taskbar.o \
startmenu.o \
traynotify.o \
quicklaunch.o \
settings.o
LIBS = gdi32 comctl32 ole32 uuid
all: $(TARGET)
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
$(PROGRAM)$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
windres $(RCFLAGS) -o $@ $(PROGRAM)_intres.rc
clean:
rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
ever:

400
Makefile-Wine Normal file
View File

@@ -0,0 +1,400 @@
TOPSRCDIR = ../..
TOPOBJDIR = ../..
SRCDIR = .
MODULE = explorer.exe
APPMODE = gui
IMPORTS = shell32 comctl32 msimg32 ole32 user32 gdi32 kernel32 advapi32 oleaut32
EXTRADEFS = -D__WINE__ -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 -D__MINGW32__ -DCINTERFACE
EXTRA_OBJS = notifyhook.dll libexpat.dll
EXTRALIBS = $(LIBUUID)
C_SRCS = \
services/startup.c \
utility/splitpath.c
CPP_SRCS = \
explorer.cpp \
desktop/desktop.cpp \
utility/shellclasses.cpp \
utility/utility.cpp \
utility/window.cpp \
utility/dragdropimpl.cpp \
utility/shellbrowserimpl.cpp \
utility/xmlstorage.cpp \
shell/entries.cpp \
shell/winfs.cpp \
shell/unixfs.cpp \
shell/shellfs.cpp \
shell/mainframe.cpp \
shell/filechild.cpp \
shell/pane.cpp \
shell/shellbrowser.cpp \
shell/ntobjfs.cpp \
shell/regfs.cpp \
shell/fatfs.cpp \
shell/webchild.cpp \
services/shellservices.cpp \
taskbar/desktopbar.cpp \
taskbar/taskbar.cpp \
taskbar/startmenu.cpp \
taskbar/traynotify.cpp \
taskbar/quicklaunch.cpp \
taskbar/favorites.cpp \
dialogs/searchprogram.cpp \
dialogs/settings.cpp
RC_SRCS = explorer_intres.rc
EXTRARCFLAGS = -D__WRC__ -D_WIN32
# Global rules for building a Winelib program -*-Makefile-*-
#
# Each individual makefile should define the following variables:
# MODULE : name of the main module being built
# APPMODE : program mode (cui,gui,cuiw,guiw)
# EXTRALIBS : extra libraries to link in (optional)
# EXTRADEFS : extra symbol definitions, like -DWINELIB (optional)
#
# plus all variables required by the global Make.rules.in
#
DEFS = -D_REENTRANT -fPIC $(EXTRADEFS)
LDDLLFLAGS = -Wl,-Bsymbolic,-z,defs
ALL_OBJS = $(OBJS) $(MODULE).dbg.o
ALL_LIBS = $(LIBWINE) $(EXTRALIBS) $(LIBPORT) $(LDFLAGS) $(LIBS)
BASEMODULE = $(MODULE:.exe=)
TESTIMPORTS = $(DELAYIMPORTS) $(IMPORTS)
RUNTESTFLAGS= -q -P wine -T $(TOPOBJDIR) $(PLTESTPROGRAM:%=-p %)
# Global rules shared by all makefiles -*-Makefile-*-
#
# Each individual makefile must define the following variables:
# TOPSRCDIR : top-level source directory
# TOPOBJDIR : top-level object directory
# SRCDIR : source directory for this module
# MODULE : name of the module being built
#
# Each individual makefile may define the following additional variables:
# C_SRCS : C sources for the module
# CPP_SRCS : C++ sources for the module
# C_SRCS16 : 16-bit C sources for the module
# RC_SRCS : resource source files
# EXTRA_SRCS : extra source files for make depend
# EXTRA_OBJS : extra object files
# IMPORTS : dlls to import
# DELAYIMPORTS : dlls to import in delayed mode
# SUBDIRS : subdirectories that contain a Makefile
# EXTRASUBDIRS : subdirectories that do not contain a Makefile
# INSTALLSUBDIRS : subdirectories to run make install/uninstall into
# First some useful definitions
SHELL = /bin/sh
CC = gcc
CXX = g++
CPP = gcc -E
#CFLAGS = -g -O2
CFLAGS = -g
CPPFLAGS =
LIBS = -lm -lstdc++
YACC = bison -y
LEX = flex
LEXLIB = -lfl
EXEEXT =
OBJEXT = o
LIBEXT = so
DLLEXT = .so
IMPLIBEXT = def
LDSHARED = $(CC) -shared $(SONAME:%=-Wl,-soname,%)
DLLTOOL = false
DLLWRAP =
AR = ar rc
RANLIB = ranlib
STRIP = strip
WINDRES = mingw32-windres
LN = ln
LN_S = ln -s
TOOLSDIR = $(TOPOBJDIR)
AS = as
LD = ld
LDFLAGS =
LDCOMBINE = $(LD) -r
RM = rm -f
MV = mv
LINT =
LINTFLAGS =
INCLUDES = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL)
EXTRACFLAGS = -mpreferred-stack-boundary=2 -fno-strict-aliasing -gstabs+ -Wpointer-arith
ALLCFLAGS = $(INCLUDES) $(DEFS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS)
ALLLINTFLAGS = $(INCLUDES) $(DEFS) $(LINTFLAGS)
MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs -m 755
WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi_check/winapi_check
WINEWRAPPER = $(TOPSRCDIR)/tools/winewrapper
C2MAN = $(TOPSRCDIR)/tools/c2man.pl
RUNTEST = $(TOPSRCDIR)/tools/runtest
WINEBUILD = $(TOOLSDIR)/tools/winebuild/winebuild
MAKEDEP = $(TOOLSDIR)/tools/makedep
WRC = $(TOOLSDIR)/tools/wrc/wrc
WMC = $(TOOLSDIR)/tools/wmc/wmc
WIDL = $(TOOLSDIR)/tools/widl/widl
RC = $(WRC)
RC16 = $(WRC)
RCFLAGS = --nostdinc $(INCLUDES) $(EXTRARCFLAGS)
RC16FLAGS = -O res16 $(RCFLAGS)
LDPATH = LD_LIBRARY_PATH="$(TOOLSDIR)/libs/unicode:$$LD_LIBRARY_PATH"
DLLDIR = $(TOPOBJDIR)/dlls
LIBDIR = $(TOPOBJDIR)/libs
LIBPORT = -L$(TOPOBJDIR)/libs/port -lwine_port
LIBUNICODE = -L$(TOPOBJDIR)/libs/unicode -lwine_unicode
LIBUUID = -L$(TOPOBJDIR)/libs/uuid -lwine_uuid
LIBWINE = -L$(TOPOBJDIR)/libs/wine -lwine
# Installation infos
INSTALL = /usr/bin/install -c $(INSTALL_FLAGS)
INSTALL_PROGRAM = ${INSTALL} $(INSTALL_PROGRAM_FLAGS)
INSTALL_SCRIPT = ${INSTALL} $(INSTALL_SCRIPT_FLAGS)
INSTALL_DATA = ${INSTALL} -m 644 $(INSTALL_DATA_FLAGS)
prefix = /usr/local
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
libdir = ${exec_prefix}/lib
datadir = ${prefix}/share
infodir = ${prefix}/info
mandir = ${prefix}/man
sysconfdir = ${prefix}/etc
includedir = ${prefix}/include/wine
dlldir = ${exec_prefix}/lib/wine
prog_manext = 1
api_manext = 3w
conf_manext = 5
CLEAN_FILES = *.o *.a *.so *.ln *.$(LIBEXT) \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej \
*.flc *.spec.c *.spec.def *.dbg.c y.tab.c y.tab.h lex.yy.c core */*.o
OBJS = $(C_SRCS:.c=.o) $(CPP_SRCS:.cpp=.o) $(EXTRA_OBJS)
RCOBJS = $(RC_SRCS:.rc=.res.o)
LINTS = $(C_SRCS:.c=.ln) $(CPP_SRCS:.cpp=.ln)
# Implicit rules
.SUFFIXES: .mc .rc .mc.rc .res .res.o .coff .spec .spec.c .spec.def .ok
.c.o:
$(CC) -c $(ALLCFLAGS) -o $@ $<
.cpp.o:
$(CXX) -c $(ALLCFLAGS) -o $@ $<
.s.o:
$(AS) -o $@ $<
.mc.mc.rc:
$(LDPATH) $(WMC) -i -U -H /dev/null -o $@ $<
.rc.res:
$(LDPATH) $(RC) $(RCFLAGS) -fo$@ $<
.res.res.o:
$(WINDRES) -i $< -o $@
.rc.coff:
$(WINDRES) -i $< -o $@
.spec.spec.c:
$(WINEBUILD) $(DEFS) -o $@ --main-module $(MODULE) --spec $<
.spec.spec.def:
$(WINEBUILD) $(DEFS) -o $@ --def $<
.c.ln:
$(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 )
.c.ok:
$(RUNTEST) $(RUNTESTFLAGS) $< && touch $@
# 'all' target first in case the enclosing Makefile didn't define any target
all: Makefile
filter:
@$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all
.PHONY: all filter
# Rule for main module debug channels
$(MODULE).dbg.c: $(C_SRCS) $(CPP_SRCS) $(C_SRCS16) $(WINEBUILD)
$(WINEBUILD) $(DEFS) -o $@ --debug -C$(SRCDIR) $(C_SRCS) $(CPP_SRCS) $(C_SRCS16)
# Rule to rebuild the tools
$(MAKEDEP):
cd $(TOOLSDIR)/tools && $(MAKE) `basename $@`
# Rules for makefile
Makefile: Makefile.in $(TOPSRCDIR)/configure
@echo Makefile is older than $?, please rerun $(TOPSRCDIR)/configure
@exit 1
# Rule for linting
$(MODULE).ln : $(LINTS)
if test "$(LINTS)" ; \
then \
$(LINT) $(ALLLINTFLAGS) -o$(MODULE) $(LINTS) ; \
$(MV) llib-l$(MODULE).ln $(MODULE).ln ; \
else \
$(LINT) $(ALLLINTFLAGS) -C$(MODULE) /dev/null ; \
fi
lint:: $(MODULE).ln
# Rules for Windows API checking
winapi_check:: dummy
$(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) .
.PHONY: winapi_check
# Rules for dependencies
$(SUBDIRS:%=%/__depend__): $(MAKEDEP) dummy
cd `dirname $@` && $(MAKE) depend
depend: $(MAKEDEP) $(SUBDIRS:%=%/__depend__)
$(MAKEDEP) $(INCLUDES) -C$(SRCDIR) $(C_SRCS) $(CPP_SRCS) $(C_SRCS16) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) $(IDL_SRCS) $(EXTRA_SRCS)
.PHONY: depend $(SUBDIRS:%=%/__depend__)
# Rules for cleaning
$(SUBDIRS:%=%/__clean__): dummy
cd `dirname $@` && $(MAKE) clean
$(SUBDIRS:%=%/__testclean__): dummy
cd `dirname $@` && $(MAKE) testclean
$(EXTRASUBDIRS:%=%/__clean__): dummy
-cd `dirname $@` && $(RM) $(CLEAN_FILES)
testclean:: $(SUBDIRS:%=%/__testclean__)
clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__)
$(RM) $(CLEAN_FILES) $(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res) $(MC_SRCS:.mc=.mc.rc) $(PROGRAMS)
.PHONY: clean testclean $(SUBDIRS:%=%/__clean__) $(SUBDIRS:%=%/__testclean__) $(EXTRASUBDIRS:%=%/__clean__)
# Rules for installing
$(SUBDIRS:%=%/__install__): dummy
cd `dirname $@` && $(MAKE) install
$(SUBDIRS:%=%/__install-lib__): dummy
cd `dirname $@` && $(MAKE) install-lib
$(SUBDIRS:%=%/__install-dev__): dummy
cd `dirname $@` && $(MAKE) install-dev
$(SUBDIRS:%=%/__uninstall__): dummy
cd `dirname $@` && $(MAKE) uninstall
install:: $(INSTALLSUBDIRS:%=%/__install__)
uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__)
.PHONY: install install-lib install-dev uninstall \
$(SUBDIRS:%=%/__install__) $(SUBDIRS:%=%/__uninstall__) \
$(SUBDIRS:%=%/__install-lib__) $(SUBDIRS:%=%/__install-dev__)
# Rules for checking that no imports are missing
$(SUBDIRS:%=%/__checklink__): dummy
@cd `dirname $@` && $(MAKE) checklink
.PHONY: checklink $(SUBDIRS:%=%/__checklink__)
# Rules for testing
$(SUBDIRS:%=%/__test__): dummy
@cd `dirname $@` && $(MAKE) test
$(SUBDIRS:%=%/__crosstest__): dummy
@cd `dirname $@` && $(MAKE) crosstest
.PHONY: check test crosstest $(SUBDIRS:%=%/__test__) $(SUBDIRS:%=%/__crosstest__)
# Misc. rules
$(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res): $(WRC)
$(MC_SRCS:.mc=.mc.rc): $(WMC)
$(IDL_SRCS:.idl=.h): $(WIDL)
$(SUBDIRS): dummy
@cd $@ && $(MAKE)
dummy:
.PHONY: dummy $(SUBDIRS)
# End of global rules
all: $(MODULE)$(DLLEXT) $(BASEMODULE)$(EXEEXT)
# Rule for main module spec file
$(MODULE).spec.c: $(RC_SRCS:.rc=.res) $(ALL_OBJS) $(WINEBUILD)
$(WINEBUILD) $(DEFS) -o $@ --exe $(MODULE) $(APPMODE:%=--exe-mode %) $(RC_SRCS:.rc=.res) $(ALL_OBJS) -L$(DLLDIR) $(DELAYIMPORTS:%=-d%) $(IMPORTS:%=-l%)
# Rules for .so main module
$(MODULE).so: $(MODULE).spec.o $(ALL_OBJS) Makefile.in
$(LDSHARED) $(LDDLLFLAGS) $(MODULE).spec.o $(ALL_OBJS) -o $@ $(ALL_LIBS) -lc
$(BASEMODULE): $(WINEWRAPPER)
$(RM) $@ && $(LN_S) $(WINEWRAPPER) $@
# Rules for .exe main module
$(MODULE): $(ALL_OBJS) $(RCOBJS) Makefile.in
$(CC) $(ALL_OBJS) $(RCOBJS) -o $@ $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(ALL_LIBS)
# Rules for testing
check test:: $(SUBDIRS:%=%/__test__)
$(TESTRESULTS): $(MODULE)$(DLLEXT)
# Rules for installation
.PHONY: install_prog install_prog.so uninstall_prog uninstall_prog.so
install_prog.so: $(MODULE).so dummy
$(MKINSTALLDIRS) $(dlldir)
$(INSTALL_PROGRAM) $(MODULE).so $(dlldir)/$(MODULE).so
install_prog: $(MODULE) dummy
$(MKINSTALLDIRS) $(bindir)
$(INSTALL_PROGRAM) $(MODULE) $(bindir)/$(MODULE)
uninstall_prog.so: dummy
$(RM) $(dlldir)/$(MODULE).so
uninstall_prog: dummy
$(RM) $(bindir)/$(MODULE)
install:: install_prog$(DLLEXT)
uninstall:: uninstall_prog$(DLLEXT)
clean::
$(RM) $(BASEMODULE) $(MODULE)
### Dependencies:

84
Makefile-precomp Normal file
View File

@@ -0,0 +1,84 @@
#
# ReactOS lean explorer
#
# Makefile-precomp
#
# MinGW Makefile with precompiled header support
#
CC = gcc
CXX = g++
LINK = g++
CFLAGS = -DWIN32 -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.
RCFLAGS = -DWIN32 -D__WINDRES__
LFLAGS = -Wl,--subsystem,windows
ifdef DEBUG
CFLAGS += -D_DEBUG -g
RCFLAGS += -D_DEBUG
LFLAGS += -g
else
CFLAGS += -DNDEBUG -Os -D_NO_CONTEXT
RCFLAGS += -DNDEBUG
LFLAGS += -s
endif
ifndef UNICODE
UNICODE = 1
endif
ifeq ($(UNICODE),1)
CFLAGS += -DUNICODE
# LFLAGS+= -Wl,--entry,_wWinMain@16
endif
CXXFLAGS = $(CFLAGS)
EXEC_SUFFIX = .exe
RES_SUFFIX = .coff
VPATH = shell utility taskbar desktop dialogs
PROGRAM = explorer
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
OBJECTS = \
startup.o \
shellclasses.o \
utility.o \
window.o \
dragdropimpl.o \
shellbrowserimpl.o \
explorer.o \
entries.o \
shellfs.o \
mainframe.o \
shellbrowser.o \
desktop.o \
desktopbar.o \
taskbar.o \
startmenu.o \
traynotify.o \
quicklaunch.o \
settings.o
LIBS = gdi32 comctl32 ole32 uuid
all: precomp.h.gch $(TARGET)
precomp.h.gch: *.h utility/*.h shell/*.h desktop/*.h
$(CXX) $(CFLAGS) precomp.h
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
windres $(RCFLAGS) -o $@ explorer_intres.rc
clean:
rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) precomp.h.gch \
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
ever:

29
README
View File

@@ -1,29 +0,0 @@
========================
ReactOS Version 0.3.x
Updated Dec 16, 2006
========================
1. What is ReactOS?
ReactOS is an Open Source effort to develop a quality operating system
that is compatible with Windows NT applications and drivers.
The ReactOS project, although currently focused on Windows XP/2003
drivers compatibility, is always keeping an eye toward compatibility with
older version of Windows NT family ( NT 4.0, 2000 (NT 5.0)) and new
Windows NT releases (Vista, etc). Applications (Win32 API) compatibility
focus is Windows XP.
More information is available at http://www.reactos.org/.
2. Building ReactOS
See the INSTALL file for more details.
3. More information
See the media\doc subdirectory for some sparse notes.
4. Who is responsible
See the CREDITS file.

View File

@@ -1,113 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<project name="ReactOS" makefile="makefile-amd64.auto" xmlns:xi="http://www.w3.org/2001/XInclude" allowwarnings="true">
<xi:include href="config-amd64.rbuild">
<xi:fallback>
<xi:include href="config-amd64.template.rbuild" />
</xi:fallback>
</xi:include>
<xi:include href="ReactOS-generic.rbuild" />
<define name="_M_AMD64" />
<define name="_AMD64_" />
<define name="_M_AXP64" />
<define name="__x86_64__" />
<!-- define name="_X86AMD64_" / FIXME: what is this used for? -->
<define name="_WIN64" />
<define name="TARGET_amd64" host="true" />
<define name="USE_COMPILER_EXCEPTIONS" />
<define name ="NO_UNDERSCORE_PREFIX" />
<property name="PLATFORM" value="PC"/>
<property name="usewrc" value="false"/>
<property name="WINEBUILD_FLAGS" value="--kill-at"/>
<group compilerset="gcc">
<if property="OPTIMIZE" value="1">
<compilerflag>-ftracer</compilerflag>
<compilerflag>-momit-leaf-frame-pointer</compilerflag>
</if>
<compilerflag>-fms-extensions</compilerflag>
<compilerflag>-mpreferred-stack-boundary=4</compilerflag>
<compilerflag compiler="midl">-m64 --win64</compilerflag>
<!-- compilerflag compiler="cc,cxx">-gstabs+</compilerflag -->
<!-- compilerflag compiler="as">-gstabs+</compilerflag -->
<compilerflag>-U_X86_</compilerflag>
<compilerflag>-UWIN32</compilerflag>
<compilerflag>-Wno-format</compilerflag>
</group>
<group linkerset="ld">
<linkerflag>-disable-stdcall-fixup</linkerflag>
<linkerflag>-file-alignment=0x1000</linkerflag>
<linkerflag>-section-alignment=0x1000</linkerflag>
<linkerflag>--unique=.eh_frame</linkerflag>
<linkerflag>-static</linkerflag>
<linkerflag>--exclude-all-symbols</linkerflag>
</group>
<if property="USERMODE" value="1">
<directory name="base">
<directory name="applications">
<xi:include href="base/applications/applications.rbuild" />
</directory>
<directory name="services">
<xi:include href="base/services/services.rbuild" />
</directory>
<directory name="setup">
<xi:include href="base/setup/setup.rbuild" />
</directory>
<directory name="shell">
<directory name="cmd">
<xi:include href="base/shell/cmd/cmd.rbuild" />
</directory>
<directory name="explorer-new">
<xi:include href="base/shell/explorer-new/explorer.rbuild" />
</directory>
</directory>
<directory name="system">
<xi:include href="base/system/system.rbuild" />
</directory>
</directory>
<directory name="dll">
<xi:include href="dll/dll.rbuild" />
</directory>
</if>
<directory name="boot">
<xi:include href="boot/boot.rbuild" />
</directory>
<directory name="drivers">
<xi:include href="drivers/drivers.rbuild" />
</directory>
<directory name="hal">
<xi:include href="hal/hal.rbuild" />
</directory>
<directory name="include">
<xi:include href="include/directory.rbuild" />
</directory>
<directory name="lib">
<xi:include href="lib/lib.rbuild" />
</directory>
<directory name="media">
<xi:include href="media/media.rbuild" />
</directory>
<directory name="modules">
<xi:include href="modules/directory.rbuild" />
</directory>
<directory name="ntoskrnl">
<xi:include href="ntoskrnl/ntoskrnl.rbuild" />
<if property="BUILD_MP" value="1">
<xi:include href="ntoskrnl/ntkrnlmp.rbuild" />
</if>
</directory>
<directory name="subsystems">
<xi:include href="subsystems/subsystems.rbuild" />
</directory>
<directory name="tools">
<xi:include href="tools/tools.rbuild" />
</directory>
</project>

View File

@@ -1,163 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<project name="ReactOS" makefile="makefile-arm.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="config-arm.rbuild">
<xi:fallback>
<xi:include href="config-arm.template.rbuild" />
</xi:fallback>
</xi:include>
<xi:include href="ReactOS-generic.rbuild" />
<!-- <define name="_M_ARM" /> Already defined by toolchain -->
<define name="_ARM_" />
<define name="__arm__" />
<define name="TARGET_arm" host="true" />
<define name="USE_COMPILER_EXCEPTIONS" />
<property name="WINEBUILD_FLAGS" value="--kill-at"/>
<include>include/reactos/arm</include>
<if property="SARCH" value="versatile">
<define name="BOARD_CONFIG_VERSATILE"/>
</if>
<group compilerset="gcc">
<if property="OPTIMIZE" value="1">
<compilerflag>-ftracer</compilerflag>
</if>
<compilerflag>-fms-extensions</compilerflag>
<compilerflag>-Wno-attributes</compilerflag>
<compilerflag>-U_UNICODE</compilerflag>
<compilerflag>-UUNICODE</compilerflag>
</group>
<define name="__MSVCRT__"/> <!-- DUBIOUS -->
<group linkerset="ld">
<linkerflag>--strip-debug</linkerflag> <!-- INVESTIGATE -->
<linkerflag>-static</linkerflag> <!-- INVESTIGATE -->
<linkerflag>-file-alignment=0x1000</linkerflag>
<linkerflag>-section-alignment=0x1000</linkerflag>
</group>
<directory name="media">
<directory name="nls">
<xi:include href="media/nls/nls.rbuild" />
</directory>
</directory>
<directory name="lib">
<directory name="drivers">
<directory name="csq">
<xi:include href="lib/drivers/csq/csq.rbuild" />
</directory>
</directory>
<directory name="cportlib">
<xi:include href="lib/cportlib/cportlib.rbuild" />
</directory>
<directory name="debugsup">
<xi:include href="lib/debugsup/debugsup.rbuild" />
</directory>
<directory name="3rdparty">
<directory name="zlib">
<xi:include href="lib/3rdparty/zlib/zlib.rbuild" />
</directory>
</directory>
<directory name="rtl">
<xi:include href="lib/rtl/rtl.rbuild" />
</directory>
<directory name="host">
<directory name="wcsfuncs">
<xi:include href="lib/host/wcsfuncs/wcsfuncs.rbuild" />
</directory>
</directory>
<directory name="inflib">
<xi:include href="lib/inflib/inflib.rbuild" />
</directory>
<directory name="newinflib">
<xi:include href="lib/newinflib/inflib.rbuild" />
</directory>
<directory name="cmlib">
<xi:include href="lib/cmlib/cmlib.rbuild" />
</directory>
<directory name="pseh">
<xi:include href="lib/pseh/pseh.rbuild" />
</directory>
<directory name="rossym">
<xi:include href="lib/rossym/rossym.rbuild" />
</directory>
<directory name="sdk">
<directory name="crt">
<xi:include href="lib/sdk/crt/crt.rbuild" />
<xi:include href="lib/sdk/crt/libcntpr.rbuild" />
</directory>
<directory name="ioevent">
<xi:include href="lib/sdk/ioevent/ioevent.rbuild" />
</directory>
<directory name="nt">
<xi:include href="lib/sdk/nt/nt.rbuild" />
</directory>
<directory name="wdmguid">
<xi:include href="lib/sdk/wdmguid/wdmguid.rbuild" />
</directory>
</directory>
<directory name="ntdllsys">
<xi:include href="lib/ntdllsys/ntdllsys.rbuild" />
</directory>
<directory name="smlib">
<xi:include href="lib/smlib/smlib.rbuild" />
</directory>
</directory>
<directory name="include">
<xi:include href="include/directory.rbuild" />
</directory>
<directory name="tools">
<xi:include href="tools/tools.rbuild" />
</directory>
<directory name="ntoskrnl">
<xi:include href="ntoskrnl/ntoskrnl.rbuild" />
</directory>
<directory name="hal">
<xi:include href="hal/hal.rbuild" />
</directory>
<directory name="boot">
<xi:include href="boot/boot.rbuild" />
</directory>
<directory name="drivers">
<directory name="storage">
<directory name="class">
<directory name="ramdisk">
<xi:include href="drivers/storage/class/ramdisk/ramdisk.rbuild" />
</directory>
</directory>
</directory>
<directory name="filesystems">
<directory name="fastfat">
<xi:include href="drivers/filesystems/fastfat/vfatfs.rbuild" />
</directory>
</directory>
<directory name="base">
<directory name="kdcom">
<xi:include href="drivers/base/kdcom/kdcom.rbuild" />
</directory>
<directory name="bootvid">
<xi:include href="drivers/base/bootvid/bootvid.rbuild" />
</directory>
</directory>
</directory>
<directory name="dll">
<directory name="ntdll">
<xi:include href="dll/ntdll/ntdll.rbuild" />
</directory>
</directory>
<directory name="base">
<directory name="system">
<directory name="smss">
<xi:include href="base/system/smss/smss.rbuild" />
</directory>
</directory>
</directory>
</project>

View File

@@ -1,152 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
<group xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="baseaddress.rbuild" />
<define name="__REACTOS__" />
<define name="__REACTOS__" host="true" />
<if property="DBG" value="1">
<define name="DBG">1</define>
<define name="_SEH_ENABLE_TRACE" />
<property name="DBG_OR_KDBG" value="true" />
</if>
<if property="DBG" value="0">
<define name="DBG">0</define>
</if>
<if property="KDBG" value="1">
<define name="KDBG">1</define>
<property name="DBG_OR_KDBG" value="true" />
</if>
<!-- The version target valid values are: Nt4 , NT5 , NT51 -->
<property name="VERSION_TARGET" value="NT52" />
<if property="VERSION_TARGET" value="NT4">
<define name="WINVER">0x400</define>
<define name="_WIN32_IE">0x600</define>
<define name="_WIN32_WINNT">0x400</define>
<define name="_WIN32_WINDOWS">0x400</define>
<define name="_SETUPAPI_VER">0x400</define>
</if>
<if property="VERSION_TARGET" value="NT5">
<define name="WINVER">0x500</define>
<define name="_WIN32_IE">0x600</define>
<define name="_WIN32_WINNT">0x500</define>
<define name="_WIN32_WINDOWS">0x500</define>
<define name="_SETUPAPI_VER">0x500</define>
</if>
<if property="VERSION_TARGET" value="NT51">
<define name="WINVER">0x501</define>
<define name="_WIN32_IE">0x600</define>
<define name="_WIN32_WINNT">0x501</define>
<define name="_WIN32_WINDOWS">0x501</define>
<define name="_SETUPAPI_VER">0x501</define>
</if>
<if property="VERSION_TARGET" value="NT52">
<define name="WINVER">0x502</define>
<define name="_WIN32_IE">0x600</define>
<define name="_WIN32_WINNT">0x502</define>
<define name="_WIN32_WINDOWS">0x502</define>
<define name="_SETUPAPI_VER">0x502</define>
</if>
<if property="VERSION_TARGET" value="NT6">
<define name="WINVER">0x600</define>
<define name="_WIN32_IE">0x600</define>
<define name="_WIN32_WINNT">0x600</define>
<define name="_WIN32_WINDOWS">0x600</define>
<define name="_SETUPAPI_VER">0x600</define>
</if>
<include>sdk/include</include>
<include root="intermediate">sdk/include</include>
<include>sdk/include/psdk</include>
<include root="intermediate">sdk/include/psdk</include>
<include>sdk/include/dxsdk</include>
<include root="intermediate">sdk/include/dxsdk</include>
<include>sdk/include/crt</include>
<include compilerset="gcc">sdk/include/crt/mingw32</include>
<include compilerset="msc">sdk/include/crt/msc</include>
<include>sdk/include/ddk</include>
<include>sdk/include/GL</include>
<include>sdk/include/ndk</include>
<include>sdk/include/reactos</include>
<include root="intermediate">sdk/include/reactos</include>
<include root="intermediate">sdk/include/reactos/mc</include>
<include>sdk/include/reactos/libs</include>
<include host="true">sdk/include</include>
<include host="true" root="intermediate">sdk/include</include>
<include host="true">sdk/include/reactos</include>
<include host="true">sdk/include/reactos/wine</include>
<group compilerset="gcc">
<compilerflag>-Wall</compilerflag>
<compilerflag>-Wno-char-subscripts</compilerflag>
<compilerflag compiler="cxx">-Wno-non-virtual-dtor</compilerflag>
</group>
<group compilerset="msc">
<define name="inline" compiler="cc">__inline</define>
<define name="__STDC__" compiler="cc">1</define>
<compilerflag>/Zl</compilerflag>
<compilerflag>/Zi</compilerflag>
<compilerflag>/W1</compilerflag>
</group>
<group compilerset="gcc">
<if property="OPTIMIZE" value="1">
<compilerflag>-Os</compilerflag>
</if>
<if property="OPTIMIZE" value="2">
<compilerflag>-Os</compilerflag>
</if>
<if property="OPTIMIZE" value="3">
<compilerflag>-O1</compilerflag>
</if>
<if property="OPTIMIZE" value="4">
<compilerflag>-O2</compilerflag>
</if>
<if property="OPTIMIZE" value="5">
<compilerflag>-O3</compilerflag>
</if>
<compilerflag>-fno-strict-aliasing</compilerflag>
<compilerflag>-Wpointer-arith</compilerflag>
<compilerflag>-Wno-multichar</compilerflag>
<compilerflag>-Wno-error=uninitialized</compilerflag>
<!-- compilerflag>-H</compilerflag> enable this for header traces -->
</group>
<group compilerset="msc">
<if property="OPTIMIZE" value="1">
<compilerflag>/O1</compilerflag>
</if>
<if property="OPTIMIZE" value="2">
<compilerflag>/O2</compilerflag>
</if>
<if property="OPTIMIZE" value="3">
<compilerflag>/Ox /GS-</compilerflag>
<compilerflag>/Ot</compilerflag>
</if>
<if property="OPTIMIZE" value="4">
<compilerflag>/Ox /GS-</compilerflag>
<compilerflag>/Os</compilerflag>
</if>
<if property="OPTIMIZE" value="5">
<compilerflag>/Ox /GS-</compilerflag>
<compilerflag>/Os</compilerflag>
<compilerflag>/Ob2</compilerflag>
<compilerflag>/GF</compilerflag>
<compilerflag>/Gy</compilerflag>
</if>
<compilerflag>/GS-</compilerflag>
</group>
</group>

View File

@@ -1,45 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<project name="ReactOS" makefile="makefile-i386.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="config.rbuild">
<xi:fallback>
<xi:include href="config.template.rbuild" />
</xi:fallback>
</xi:include>
<xi:include href="ReactOS-generic.rbuild" />
<define name="_M_IX86" />
<define name="_X86_" />
<define name="__i386__" />
<define name="TARGET_i386" host="true" />
<define name="USE_COMPILER_EXCEPTIONS" />
<define name="_USE_32BIT_TIME_T" />
<property name="PLATFORM" value="PC"/>
<group compilerset="gcc">
<if property="OPTIMIZE" value="1">
<compilerflag>-ftracer</compilerflag>
<compilerflag>-momit-leaf-frame-pointer</compilerflag>
</if>
<compilerflag>-fms-extensions</compilerflag>
<compilerflag>-mpreferred-stack-boundary=2</compilerflag>
<compilerflag compiler="midl">-m32 --win32</compilerflag>
<compilerflag compiler="cc,cxx">-gstabs+</compilerflag>
<compilerflag compiler="cc,cxx">-fno-set-stack-executable</compilerflag>
<compilerflag compiler="cc,cxx">-fno-optimize-sibling-calls</compilerflag>
<compilerflag compiler="as">-gstabs+</compilerflag>
</group>
<group linkerset="ld">
<linkerflag>-disable-stdcall-fixup</linkerflag>
<linkerflag>-file-alignment=0x1000</linkerflag>
<linkerflag>-section-alignment=0x1000</linkerflag>
</group>
<directory name="sdk">
<xi:include href="sdk/sdk.rbuild" />
</directory>
</project>

View File

@@ -1,25 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<project name="ReactOS" makefile="makefile-ppc.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="config-ppc.rbuild">
<xi:fallback>
<xi:include href="config-ppc.template.rbuild" />
</xi:fallback>
</xi:include>
<xi:include href="ReactOS-generic.rbuild" />
<property name="MKHIVE_OPTIONS" value="-be" />
<property name="OFWLDR_LINKFORMAT" value="-L$(INTERMEDIATE)/lib/ppcmmu -lppcmmu_code -nostdlib -nostartfiles -lgcc -Wl,-e,__start -Wl,-Ttext,0xe00000 -N"/>
<property name="NTOSKRNL_SHARED" value="-Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -shared"/>
<define name="__MSVCRT__"/>
<compilerflag>-fshort-wchar</compilerflag>
<compilerflag>-fsigned-char</compilerflag>
<compilerflag>-mfull-toc</compilerflag>
<compilerflag>-meabi</compilerflag>
<compilerflag>-O2</compilerflag>
<compilerflag>-Wno-strict-aliasing</compilerflag>
<compilerflag compiler="cc,cxx">-gstabs+</compilerflag>
<compilerflag compiler="as">-gstabs+</compilerflag>
</project>

View File

@@ -1,30 +0,0 @@
; Format:
; COMPONENT_NAME PATH_TO_COMPONENT_SOURCES
; COMPONENT_NAME - Name of the module. Eg. kernel32.
; PATH_TO_COMPONENT_SOURCES - Relative path to sources (relative to where rgenstat is run from).
advapi32 ../reactos/dll/win32/advapi32
crtdll ../reactos/dll/win32/crtdll
gdi32 ../reactos/dll/win32/gdi32
gdiplus ../reactos/dll/win32/gdiplus
iphlpapi ../reactos/dll/win32/iphlpapi
kernel32 ../reactos/dll/win32/kernel32
msvcrt ../reactos/dll/win32/msvcrt
rasapi32 ../reactos/dll/win32/rasapi32
rasdlg ../reactos/dll/win32/rasdlg
rasman ../reactos/dll/win32/rasman
rpcrt4 ../reactos/dll/win32/rpcrt4
secur32 ../reactos/dll/win32/secur32
snmpapi ../reactos/dll/win32/snmpapi
user32 ../reactos/dll/win32/user32
version ../reactos/dll/win32/version
winspool ../reactos/dll/win32/winspool
ws2_32 ../reactos/dll/win32/ws2_32
wsock32 ../reactos/dll/win32/wsock32
videoprt ../reactos/drivers/video/videoprt
ndis ../reactos/drivers/network/ndis
tdi ../reactos/drivers/network/tdi
scsiport ../reactos/drivers/storage/scsiport
ntoskrnl ../reactos/ntoskrnl
rtl ../reactos/lib/rtl
win32k ../reactos/subsystems/win32/win32k

View File

@@ -1,263 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
<group xmlns:xi="http://www.w3.org/2001/XInclude">
<property name="BASEADDRESS_REGTESTS" value="0x07000000" />
<property name="BASEADDRESS_NOTIFYHOOK" value="0x08000000" />
<property name="BASEADDRESS_FAULTREP" value="0x107A0000" />
<property name="BASEADDRESS_QMGRPRXY" value="0x1f710000" />
<property name="BASEADDRESS_CRYPTDLG" value="0x209c0000" />
<property name="BASEADDRESS_COMCAT" value="0x20a50000" />
<property name="BASEADDRESS_WINDOWSCODECS" value="0x26c40000" />
<property name="BASEADDRESS_DEVENUM" value="0x35670000" />
<property name="BASEADDRESS_RSABASE" value="0x35700000" />
<property name="BASEADDRESS_RSAENH" value="0x35780000" />
<property name="BASEADDRESS_URL" value="0x42ea0000" />
<property name="BASEADDRESS_WLANAPI" value="0x470f0000" />
<property name="BASEADDRESS_PIDGEN" value="0x473e0000" />
<property name="BASEADDRESS_DWMAPI" value="0x4a3f0000" />
<property name="BASEADDRESS_T2EMBED" value="0x4b310000" />
<property name="BASEADDRESS_MSFTEDIT" value="0x4b460000" />
<property name="BASEADDRESS_LOADPERF" value="0x4b920000" />
<property name="BASEADDRESS_MPRAPI" value="0x4c400000" />
<property name="BASEADDRESS_WUAPI" value="0x506a0000" />
<property name="BASEADDRESS_SRCLIENT" value="0x512c0000" />
<property name="BASEADDRESS_PSTOREC" value="0x513d0000" />
<property name="BASEADDRESS_LPK" value="0x516c0000" />
<property name="BASEADDRESS_MSGSM32ACM" value="0x56db0000" />
<property name="BASEADDRESS_MSDVBNP" value="0x58280000" />
<property name="BASEADDRESS_MSG711ACM" value="0x584f0000" />
<property name="BASEADDRESS_IMAADP32ACM" value="0x585e0000" />
<property name="BASEADDRESS_BDAPLGIN" value="0x58600000" />
<property name="BASEADDRESS_TELEPHON" value="0x58750000" />
<property name="BASEADDRESS_PWRCFG" value="0x587e0000" />
<property name="BASEADDRESS_MMSYS" value="0x588a0000" />
<property name="BASEADDRESS_JOY" value="0x589b0000" />
<property name="BASEADDRESS_QMGR" value="0x59620000" />
<property name="BASEADDRESS_MSVIDCTL" value="0x59660000" />
<property name="BASEADDRESS_UXTHEME" value="0x5ad70000" />
<property name="BASEADDRESS_VDMDBG" value="0x5b0d0000" />
<property name="BASEADDRESS_UNTFS" value="0x5b340000" />
<property name="BASEADDRESS_OBJSEL" value="0x5b400000" />
<property name="BASEADDRESS_UFAT" value="0x5b570000" />
<property name="BASEADDRESS_TAPIUI" value="0x5b770000" />
<property name="BASEADDRESS_UEXT2" value="0x5b7a0000" />
<property name="BASEADDRESS_SLAYER" value="0x5c7e0000" />
<property name="BASEADDRESS_USRMGR" value="0x5c900000" />
<property name="BASEADDRESS_SHIMGVW" value="0x5cb00000" />
<property name="BASEADDRESS_COMMCTRL" value="0x5d090000" />
<property name="BASEADDRESS_DPLAYX" value="0x5e080000" />
<property name="BASEADDRESS_INPUT" value="0x5e400000" />
<property name="BASEADDRESS_NTLANMAN" value="0x5f380000" />
<property name="BASEADDRESS_DINPUT" value="0x5f580000" />
<property name="BASEADDRESS_NETID" value="0x5f660000" />
<property name="BASEADDRESS_NTPRINT" value="0x5f6a0000" />
<property name="BASEADDRESS_MSSIP32" value="0x60430000" />
<property name="BASEADDRESS_MSISIP" value="0x60b10000" />
<property name="BASEADDRESS_INSENG" value="0x61000000" />
<property name="BASEADDRESS_QEDIT" value="0x611c0000" />
<property name="BASEADDRESS_MODEMUI" value="0x61650000" />
<property name="BASEADDRESS_MAPI32" value="0x62250000" />
<property name="BASEADDRESS_MCIWAVE" value="0x622a0000" />
<property name="BASEADDRESS_MCISEQ" value="0x622b0000" />
<property name="BASEADDRESS_MCIQTZ32" value="0x622c0000" />
<property name="BASEADDRESS_MCICDA" value="0x622e0000" />
<property name="BASEADDRESS_LOCALUI" value="0x62f70000" />
<property name="BASEADDRESS_HDWWIZ" value="0x64d40000" />
<property name="BASEADDRESS_TIMEDATE" value="0x64da0000" />
<property name="BASEADDRESS_SYSDM" value="0x64dd0000" />
<property name="BASEADDRESS_NCPL" value="0x64ea0000" />
<property name="BASEADDRESS_MAIN" value="0x64f40000" />
<property name="BASEADDRESS_INTL" value="0x64fb0000" />
<property name="BASEADDRESS_DESK" value="0x65080000" />
<property name="BASEADDRESS_APPWIZ" value="0x65100000" />
<property name="BASEADDRESS_MLANG" value="0x65140000" />
<property name="BASEADDRESS_ACCESS" value="0x65180000" />
<property name="BASEADDRESS_ITSS" value="0x66370000" />
<property name="BASEADDRESS_ITIRCL" value="0x663a0000" />
<property name="BASEADDRESS_INETMIB1" value="0x666f0000" />
<property name="BASEADDRESS_INITPKI" value="0x66b00000" />
<property name="BASEADDRESS_WSHTCPIP" value="0x677b0000" />
<property name="BASEADDRESS_CRYPT32" value="0x67ab0000" />
<property name="BASEADDRESS_HTTPAPI" value="0x67ae0000" />
<property name="BASEADDRESS_HID" value="0x688f0000" />
<property name="BASEADDRESS_PSXDLL" value="0x68eb0000" />
<property name="BASEADDRESS_PSAPI" value="0x68f70000" />
<property name="BASEADDRESS_KSPROXY" value="0x68f90000" />
<property name="BASEADDRESS_GETUNAME" value="0x69110000" />
<property name="BASEADDRESS_OLEACC" value="0x69640000" />
<property name="BASEADDRESS_WINMM" value="0x697d0000" />
<property name="BASEADDRESS_MSIMG32" value="0x69cc0000" />
<property name="BASEADDRESS_BROWSEUI" value="0x69cd0000" />
<property name="BASEADDRESS_NETPLWIZ" value="0x6a240000" />
<property name="BASEADDRESS_SHELL32" value="0x6a360000" />
<property name="BASEADDRESS_UNICODE" value="0x6b200000" />
<property name="BASEADDRESS_ADVPACK" value="0x6b300000" />
<property name="BASEADDRESS_CONTROL" value="0x6b310000" />
<property name="BASEADDRESS_NCPA" value="0x6b320000" />
<property name="BASEADDRESS_DBGHELP" value="0x6b330000" />
<property name="BASEADDRESS_DINPUT8" value="0x6b340000" />
<property name="BASEADDRESS_DXDIAGN" value="0x6b350000" />
<property name="BASEADDRESS_DSOUND" value="0x6b360000" />
<property name="BASEADDRESS_GLU32" value="0x6b370000" />
<property name="BASEADDRESS_MESA32" value="0x6b380000" />
<property name="BASEADDRESS_OPENGL32" value="0x6b390000" />
<property name="BASEADDRESS_SECUR32" value="0x6b3a0000" />
<property name="BASEADDRESS_SMDLL" value="0x6b3b0000" />
<property name="BASEADDRESS_URLMON" value="0x6b3c0000" />
<property name="BASEADDRESS_SERIALUI" value="0x6b3d0000" />
<property name="BASEADDRESS_HLINK" value="0x6c6e0000" />
<property name="BASEADDRESS_DESKMON" value="0x6d400000" />
<property name="BASEADDRESS_DESKADP" value="0x6d410000" />
<property name="BASEADDRESS_WLDAP32" value="0x6e130000" />
<property name="BASEADDRESS_SXS" value="0x6e160000" />
<property name="BASEADDRESS_SCHANNEL" value="0x6e360000" />
<property name="BASEADDRESS_CONSOLE" value="0x6e4d0000" />
<property name="BASEADDRESS_COMPSTUI" value="0x6ec10000" />
<property name="BASEADDRESS_HNETCFG" value="0x6edb0000" />
<property name="BASEADDRESS_CLB" value="0x6f2b0000" />
<property name="BASEADDRESS_FONTEXT" value="0x6f7b0000" />
<property name="BASEADDRESS_JSCRIPT" value="0x6fe80000" />
<property name="BASEADDRESS_CARDS" value="0x701a0000" />
<property name="BASEADDRESS_WININET" value="0x70200000" />
<property name="BASEADDRESS_WINHTTP" value="0x70c60000" />
<property name="BASEADDRESS_BATT" value="0x70cb0000" />
<property name="BASEADDRESS_AMSTREAM" value="0x71030000" />
<property name="BASEADDRESS_ACLUI" value="0x71550000" />
<property name="BASEADDRESS_DHCPCSVC" value="0x71650000" />
<property name="BASEADDRESS_SHDOCVW" value="0x71700000" />
<property name="BASEADDRESS_ACTXPRXY" value="0x71800000" />
<property name="BASEADDRESS_MSWSOCK" value="0x71a30000" />
<property name="BASEADDRESS_WSOCK32" value="0x71ab0000" />
<property name="BASEADDRESS_ACLEDIT" value="0x71b70000" />
<property name="BASEADDRESS_NETAPI32" value="0x71c00000" />
<property name="BASEADDRESS_OLESVR32" value="0x71dd0000" />
<property name="BASEADDRESS_OLECLI32" value="0x71df0000" />
<property name="BASEADDRESS_OLETHK32" value="0x71e10000" />
<property name="BASEADDRESS_NETEVENT" value="0x71e70000" />
<property name="BASEADDRESS_DPLAY" value="0x71e80000" />
<property name="BASEADDRESS_SECURITY" value="0x71f10000" />
<property name="BASEADDRESS_MSSIGN32" value="0x720c0000" />
<property name="BASEADDRESS_CRYPTUI" value="0x720d0000" />
<property name="BASEADDRESS_WINFAX" value="0x722c0000" />
<property name="BASEADDRESS_WINSCARD" value="0x723d0000" />
<property name="BASEADDRESS_DEVMGR" value="0x72a90000" />
<property name="BASEADDRESS_MSADP32ACM" value="0x72cb0000" />
<property name="BASEADDRESS_WDMAUD" value="0x72d20000" />
<property name="BASEADDRESS_WINSPOOL" value="0x72f50000" />
<property name="BASEADDRESS_SOFTPUB" value="0x73290000" />
<property name="BASEADDRESS_MSCAT32" value="0x732b0000" />
<property name="BASEADDRESS_MSTASK" value="0x73520000" />
<property name="BASEADDRESS_TRAFFIC" value="0x73550000" />
<property name="BASEADDRESS_MCIAVI32" value="0x73610000" />
<property name="BASEADDRESS_MSVIDC32" value="0x73650000" />
<property name="BASEADDRESS_MSRLE32" value="0x73660000" />
<property name="BASEADDRESS_MSDMO" value="0x73670000" />
<property name="BASEADDRESS_AVICAP32" value="0x739e0000" />
<property name="BASEADDRESS_AVIFIL32" value="0x73ac0000" />
<property name="BASEADDRESS_MSCMS" value="0x73af0000" />
<property name="BASEADDRESS_DCIMAN32" value="0x73b10000" />
<property name="BASEADDRESS_STI" value="0x73b60000" />
<property name="BASEADDRESS_ICCVID" value="0x73bc0000" />
<property name="BASEADDRESS_COREDLL" value="0x73d80000" />
<property name="BASEADDRESS_LZ32" value="0x73d80000" />
<property name="BASEADDRESS_KSUSER" value="0x73ea0000" />
<property name="BASEADDRESS_ICMP" value="0x741f0000" />
<property name="BASEADDRESS_SPOOLSS" value="0x742a0000" />
<property name="BASEADDRESS_MSIMTF" value="0x746b0000" />
<property name="BASEADDRESS_MSCTF" value="0x746e0000" />
<property name="BASEADDRESS_QUARTZ" value="0x747d0000" />
<property name="BASEADDRESS_USERENV" value="0x74850000" />
<property name="BASEADDRESS_SYSSETUP" value="0x74a10000" />
<property name="BASEADDRESS_WS2_32" value="0x74aa0000" />
<property name="BASEADDRESS_POWRPROF" value="0x74ad0000" />
<property name="BASEADDRESS_MSXML3" value="0x74ae0000" />
<property name="BASEADDRESS_PRINTUI" value="0x74b40000" />
<property name="BASEADDRESS_MMDRV" value="0x74c30000" />
<property name="BASEADDRESS_PDH" value="0x74c70000" />
<property name="BASEADDRESS_OLEDLG" value="0x74d00000" />
<property name="BASEADDRESS_SAMSRV" value="0x74f30000" />
<property name="BASEADDRESS_RESUTILS" value="0x75070000" />
<property name="BASEADDRESS_SAMLIB" value="0x750c0000" />
<property name="BASEADDRESS_CABINET" value="0x75120000" />
<property name="BASEADDRESS_NETCFGX" value="0x755f0000" />
<property name="BASEADDRESS_IPHLPAPI" value="0x75700000" />
<property name="BASEADDRESS_NDDEAPI" value="0x75940000" />
<property name="BASEADDRESS_MSGINA" value="0x75970000" />
<property name="BASEADDRESS_LOCALSPL" value="0x75b80000" />
<property name="BASEADDRESS_CRYPTNET" value="0x75e60000" />
<property name="BASEADDRESS_RPCRT4" value="0x76000000" />
<property name="BASEADDRESS_SHLWAPI" value="0x76100000" />
<property name="BASEADDRESS_INETCOMM" value="0x76140000" />
<property name="BASEADDRESS_COMCTL32" value="0x76170000" />
<property name="BASEADDRESS_COMDLG32" value="0x76230000" />
<property name="BASEADDRESS_WINSTA" value="0x762f0000" />
<property name="BASEADDRESS_IMM32" value="0x76320000" />
<property name="BASEADDRESS_D3D8THK" value="0x76340000" />
<property name="BASEADDRESS_RICHED32" value="0x76340000" />
<property name="BASEADDRESS_RICHED20" value="0x76360000" />
<property name="BASEADDRESS_ODBCCP32" value="0x76380000" />
<property name="BASEADDRESS_TWAIN_32" value="0x76380000" />
<property name="BASEADDRESS_NETSHELL" value="0x76390000" />
<property name="BASEADDRESS_LSASRV" value="0x76540000" />
<property name="BASEADDRESS_MIDIMAP" value="0x76600000" />
<property name="BASEADDRESS_WAVEMAP" value="0x76610000" />
<property name="BASEADDRESS_MPR" value="0x76620000" />
<property name="BASEADDRESS_MSHTML" value="0x76650000" />
<property name="BASEADDRESS_ODBC32" value="0x76710000" />
<property name="BASEADDRESS_SETUPAPI" value="0x76730000" />
<property name="BASEADDRESS_CRYPTDLL" value="0x768f0000" />
<property name="BASEADDRESS_SHFOLDER" value="0x76900000" />
<property name="BASEADDRESS_NTDSAPI" value="0x76910000" />
<property name="BASEADDRESS_NTMARTA" value="0x76920000" />
<property name="BASEADDRESS_RASDLG" value="0x76930000" />
<property name="BASEADDRESS_GDIPLUS" value="0x76a70000" />
<property name="BASEADDRESS_ATL" value="0x76ac0000" />
<property name="BASEADDRESS_SFC" value="0x76b50000" />
<property name="BASEADDRESS_CREDUI" value="0x76bf0000" />
<property name="BASEADDRESS_SFC_OS" value="0x76c10000" />
<property name="BASEADDRESS_WINTRUST" value="0x76c30000" />
<property name="BASEADDRESS_IMAGEHLP" value="0x76c90000" />
<property name="BASEADDRESS_CLUSAPI" value="0x76d10000" />
<property name="BASEADDRESS_WMI" value="0x76d20000" />
<property name="BASEADDRESS_DHCPCSVC" value="0x76d80000" />
<property name="BASEADDRESS_FMIFS" value="0x76df0000" />
<property name="BASEADDRESS_OLEAUT32" value="0x76e00000" />
<property name="BASEADDRESS_TAPI32" value="0x76e60000" />
<property name="BASEADDRESS_RASMAN" value="0x76e90000" />
<property name="BASEADDRESS_RASAPI32" value="0x76ee0000" />
<property name="BASEADDRESS_WTSAPI32" value="0x76f50000" />
<property name="BASEADDRESS_MSVFW32" value="0x76f60000" />
<property name="BASEADDRESS_MSACM32" value="0x77400000" />
<property name="BASEADDRESS_CRTDLL" value="0x77630000" />
<property name="BASEADDRESS_AUTHZ" value="0x77690000" />
<property name="BASEADDRESS_CFGMGR32" value="0x77700000" />
<property name="BASEADDRESS_SENSAPI" value="0x77700000" />
<property name="BASEADDRESS_MSAFD" value="0x77780000" />
<property name="BASEADDRESS_PACKET" value="0x77780000" />
<property name="BASEADDRESS_MSI" value="0x77790000" />
<property name="BASEADDRESS_SNMPAPI" value="0x777a0000" />
<property name="BASEADDRESS_USP10" value="0x777b0000" />
<property name="BASEADDRESS_IPRTPRIO" value="0x777c0000" />
<property name="BASEADDRESS_WS2HELP" value="0x777e0000" />
<property name="BASEADDRESS_WSHIRDA" value="0x777f0000" />
<property name="BASEADDRESS_VERSION" value="0x77a40000" />
<property name="BASEADDRESS_OLE32" value="0x77a50000" />
<property name="BASEADDRESS_OLEPRO32" value="0x77b20000" />
<property name="BASEADDRESS_ACTIVEDS" value="0x77cb0000" />
<property name="BASEADDRESS_ADVAPI32" value="0x77dc0000" />
<property name="BASEADDRESS_USER32" value="0x77e50000" />
<property name="BASEADDRESS_GDI32" value="0x77f70000" />
<property name="BASEADDRESS_DNSAPI" value="0x77fb0000" />
<property name="BASEADDRESS_MSVCRT" value="0x78000000" />
<property name="BASEADDRESS_MSVCRT20" value="0x78500000" />
<property name="BASEADDRESS_MSVCRT40" value="0x78700000" />
<property name="BASEADDRESS_MSCOREE" value="0x79000000" />
<property name="BASEADDRESS_FUSION" value="0x79040000" />
<property name="BASEADDRESS_KERNEL32" value="0x7c700000" />
<property name="BASEADDRESS_NTDLL" value="0x7c900000" />
<property name="BASEADDRESS_QUERY" value="0x7d9a0000" />
<property name="BASEADDRESS_HHCTRL" value="0x7e410000" />
<property name="BASEADDRESS_SXS" value="0x7e690000" />
<property name="BASEADDRESS_BEEPMIDI" value="0x7ef00000" />
<property name="BASEADDRESS_FREETYPE" value="0x7f000000" />
</group>

View File

@@ -1,92 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
<group>
<!--
This file is a template used as a starting point for compile-time
configuration of ReactOS. Make a copy of this file and name it config.rbuild.
Then change the options in config.rbuild. If you don't have a config.rbuild file,
then the defaults in this file, config.template.rbuild, will be used instead.
Boolean options can obtain the values 0 (disabled) or 1 (enabled). String
options can obtain any value specified in the comment before it.
-->
<!--
Sub-architecture to build for. Specify one of:
-->
<property name="SARCH" value="" />
<!--
Which CPU ReactOS should be optimized for. Specify one of:
k8 opteron athlon64 athlon-fx
See GCC manual for more CPU names and which CPUs GCC can optimize for.
-->
<property name="OARCH" value="athlon64" />
<!--
What level of optimisation to use.
0 = off (will not work)
1 = Default option, optimize for size (-Os) with some additional options
2 = -Os
3 = -O1
4 = -O2
5 = -O3
-->
<property name="OPTIMIZE" value="1" />
<!--
Whether to compile in the integrated kernel debugger.
-->
<property name="KDBG" value="0" />
<!--
Whether to compile for debugging.
-->
<property name="DBG" value="1" />
<!--
Whether to compile for debugging with GDB. If you don't use GDB, don't
enable this.
-->
<property name="GDB" value="0" />
<!--
Whether to compile apps/libs with features covered software patents or not.
If you live in a country where software patents are valid/apply, don't
enable this (except they/you purchased a license from the patent owner).
This settings is disabled (0) by default.
-->
<property name="NSWPAT" value="1" />
<!--
Whether to compile with the KD protocol. This will disable support for KDBG
as well as rossym and symbol lookups, and allow WinDBG to connect to ReactOS.
This is currently not fully working, and requires kdcom from Windows 2003 or
TinyKRNL. Booting into debug mode with this flag enabled will result in a
failure to enter GUI mode. Do not enable unless you know what you're doing.
-->
<property name="_WINKD_" value="1" />
<!--
Whether to compile support for ELF files. Do not enable unless you know what
you're doing.
-->
<property name="_ELF_" value="0" />
<!--
Whether to compile any usermode parts. This is while kernel mode is under
heavy development and usermode part not relevant for bootcd.
-->
<property name="USERMODE" value="1" />
</group>

View File

@@ -1,93 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
<group>
<!--
This file is a template used as a starting point for compile-time
configuration of ReactOS. Make a copy of this file and name it config.rbuild.
Then change the options in config.rbuild. If you don't have a config.rbuild file,
then the defaults in this file, config.template.rbuild, will be used instead.
Boolean options can obtain the values 0 (disabled) or 1 (enabled). String
options can obtain any value specified in the comment before it.
-->
<!--
Sub-architecture (board) to build for. Specify one of:
kurobox versatile omap3
-->
<property name="SARCH" value="versatile" />
<!--
Generate instructions for this CPU type. Specify one of:
armv5te armv7-a
See GCC manual for more CPU names.
-->
<property name="OARCH" value="armv7-a" />
<!--
Which CPU ReactOS should be optimized for. See GCC manual for CPU names.
-->
<property name="TUNE" value="" />
<!--
What level of optimisation to use.
0 = off (will not work)
1 = Default option, optimize for size (-Os) with some additional options
2 = -Os
3 = -O1
4 = -O2
5 = -O3
-->
<property name="OPTIMIZE" value="1" />
<!--
Whether to compile in the integrated kernel debugger.
-->
<property name="KDBG" value="0" />
<!--
Whether to compile for debugging.
-->
<property name="DBG" value="1" />
<!--
Whether to compile for debugging with GDB. If you don't use GDB, don't
enable this.
-->
<property name="GDB" value="0" />
<!--
Whether to compile apps/libs with features covered software patents or not.
If you live in a country where software patents are valid/apply, don't
enable this (except they/you purchased a license from the patent owner).
This settings is disabled (0) by default.
-->
<property name="NSWPAT" value="0" />
<!--
Whether to compile with the KD protocol. This will disable support for KDBG
as well as rossym and symbol lookups, and allow WinDBG to connect to ReactOS.
This is currently not fully working, and requires kdcom from Windows 2003 or
TinyKRNL. Booting into debug mode with this flag enabled will result in a
failure to enter GUI mode. Do not enable unless you know what you're doing.
-->
<property name="_WINKD_" value="0" />
<!--
Whether to compile support for ELF files. Do not enable unless you know what
you're doing.
-->
<property name="_ELF_" value="0" />
</group>

View File

@@ -1,73 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
<group>
<!--
This file is a template used as a starting point for compile-time
configuration of ReactOS. Make a copy of this file and name it config.rbuild.
Then change the options in config.rbuild. If you don't have a config.rbuild file,
then the defaults in this file, config.template.rbuild, will be used instead.
Boolean options can obtain the values 0 (disabled) or 1 (enabled). String
options can obtain any value specified in the comment before it.
-->
<!--
Sub-architecture to build for. Specify one of:
??
-->
<property name="SARCH" value="" />
<!--
Generate instructions for this CPU type. Specify one of:
??
See GCC manual for more CPU names.
-->
<property name="OARCH" value="" />
<!--
Which CPU ReactOS should be optimized for. See GCC manual for CPU names.
-->
<property name="TUNE" value="" />
<!--
Whether to compile for an uniprocessor or multiprocessor machine.
-->
<property name="MP" value="0" />
<!--
New style kernel debugger
-->
<property name="_WINKD_" value="0" />
<!--
Whether to compile in the integrated kernel debugger.
-->
<property name="KDBG" value="0" />
<!--
Whether to compile for debugging.
-->
<property name="DBG" value="1" />
<!--
Whether to compile apps/libs with features covered software patents or not.
If you live in a country where software patents are valid/apply, don't
enable this (except they/you purchased a license from the patent owner).
This settings is disabled (0) by default.
-->
<property name="NSWPAT" value="0" />
<!--
Whether to compile support for ELF files. Do not enable unless you know what
you're doing.
-->
<property name="_ELF_" value="0" />
</group>

View File

@@ -1,102 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
<group>
<!--
This file is a template used as a starting point for compile-time
configuration of ReactOS. Make a copy of this file and name it config.rbuild.
Then change the options in config.rbuild. If you don't have a config.rbuild file,
then the defaults in this file, config.template.rbuild, will be used instead.
Boolean options can obtain the values 0 (disabled) or 1 (enabled). String
options can obtain any value specified in the comment before it.
-->
<!--
Sub-architecture to build for. Specify one of:
xbox
-->
<property name="SARCH" value="" />
<!--
Generate instructions for this CPU type. Specify one of:
native, i386, i486, pentium, pentium-mmx, pentiumpro, i686,
pentium2, pentium3, pentium-m, pentium4, prescott, nocona,
core2, k6, k6-2, athlon, athlon-xp, opteron, opteron-sse3,
barcelona, winchip-c6, winchip2, c3, c3-2, geode
See GCC manual for more CPU names.
-->
<property name="OARCH" value="pentium" />
<!--
Which CPU ReactOS should be optimized for. Specify one of the above
CPUs or generic. When this option is not used, GCC will optimize for
the processor specified by OARCH.
-->
<property name="TUNE" value="i686" />
<!--
What level of optimisation to use.
0 = off
1 = Default option, optimize for size (-Os) with some additional options
2 = -Os
3 = -O1
4 = -O2
5 = -O3
-->
<property name="OPTIMIZE" value="1" />
<!--
Whether to compile in the integrated kernel debugger.
-->
<property name="KDBG" value="1" />
<!--
Whether to compile for debugging.
-->
<property name="DBG" value="1" />
<!--
Whether to compile for debugging with GDB. If you don't use GDB, don't
enable this.
-->
<property name="GDB" value="0" />
<!--
Whether to compile apps/libs with features covered software patents or not.
If you live in a country where software patents are valid/apply, don't
enable this (except they/you purchased a license from the patent owner).
This settings is disabled (0) by default.
-->
<property name="NSWPAT" value="0" />
<!--
Whether to compile with the KD protocol. This will disable support for KDBG
as well as rossym and symbol lookups, and allow WinDBG to connect to ReactOS.
This is currently not fully working, and requires kdcom from Windows 2003 or
TinyKRNL. Booting into debug mode with this flag enabled will result in a
failure to enter GUI mode. Do not enable unless you know what you're doing.
-->
<property name="_WINKD_" value="0" />
<!--
Whether to compile support for ELF files. Do not enable unless you know what
you're doing.
-->
<property name="_ELF_" value="0" />
<!--
Whether to compile the multi processor versions for ntoskrnl and hal.
-->
<property name="BUILD_MP" value="1" />
</group>

View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>ReactOS Dependency Map</title>
</head>
<body>
<h1>ReactOS Dependency Map</h1>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">Module Name</th>
<th align="left">Module Location</th>
<th align="left">Other Module Usage</th>
<th align="left">Module Re-Usage</th>
</tr>
<xsl:for-each select="components/component">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="base"/></td>
<td><xsl:value-of select="lib_count"/></td>
<td><xsl:value-of select="ref_count"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

558
desktop/desktop.cpp Normal file
View File

@@ -0,0 +1,558 @@
/*
* Copyright 2003, 2004, 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer clone, lean version
//
// desktop.cpp
//
// Martin Fuchs, 09.08.2003
//
#include "precomp.h"
#include "../taskbar/desktopbar.h"
#include "../taskbar/taskbar.h" // for PM_GET_LAST_ACTIVE
#include "../resource.h"
static BOOL (WINAPI*SetShellWindow)(HWND);
static BOOL (WINAPI*SetShellWindowEx)(HWND, HWND);
Desktops::Desktops()
: _current_desktop(0)
{
}
Desktops::~Desktops()
{
// show all hidden windows
for(iterator it_dsk=begin(); it_dsk!=end(); ++it_dsk)
for(WindowSet::iterator it=it_dsk->_windows.begin(); it!=it_dsk->_windows.end(); ++it)
ShowWindowAsync(*it, SW_SHOW);
}
void Desktops::init()
{
resize(DESKTOP_COUNT);
}
static BOOL CALLBACK SwitchDesktopEnumFct(HWND hwnd, LPARAM lparam)
{
WindowSet& windows = *(WindowSet*)lparam;
if (IsWindowVisible(hwnd))
if (hwnd!=g_Globals._hwndDesktopBar && hwnd!=g_Globals._hwndDesktop)
windows.insert(hwnd);
return TRUE;
}
void Desktops::SwitchToDesktop(int idx)
{
if (_current_desktop == idx)
return;
Desktop& old_desktop = (*this)[_current_desktop];
WindowSet& windows = old_desktop._windows;
Desktop& desktop = (*this)[idx];
windows.clear();
// collect window handles of all other desktops
WindowSet other_wnds;
for(const_iterator it1=begin(); it1!=end(); ++it1)
for(WindowSet::const_iterator it2=it1->_windows.begin(); it2!=it1->_windows.end(); ++it2)
other_wnds.insert(*it2);
// save currently visible application windows
EnumWindows(SwitchDesktopEnumFct, (LPARAM)&windows);
old_desktop._hwndForeground = (HWND)SendMessage(g_Globals._hwndDesktopBar, PM_GET_LAST_ACTIVE, 0, 0);
// hide all windows of the previous desktop
for(WindowSet::iterator it=windows.begin(); it!=windows.end(); ++it)
ShowWindowAsync(*it, SW_HIDE);
// show all windows of the new desktop
for(WindowSet::iterator it=desktop._windows.begin(); it!=desktop._windows.end(); ++it)
ShowWindowAsync(*it, SW_SHOW);
if (desktop._hwndForeground)
SetForegroundWindow(desktop._hwndForeground);
// remove the window handles of the other desktops from what we found on the previous desktop
for(WindowSet::const_iterator it=other_wnds.begin(); it!=other_wnds.end(); ++it)
windows.erase(*it);
// We don't need to store the window handles of what's now visible the now current desktop.
desktop._windows.clear();
_current_desktop = idx;
}
static BOOL CALLBACK MinimizeDesktopEnumFct(HWND hwnd, LPARAM lparam)
{
list<MinimizeStruct>& minimized = *(list<MinimizeStruct>*)lparam;
if (IsWindowVisible(hwnd))
if (hwnd!=g_Globals._hwndDesktopBar && hwnd!=g_Globals._hwndDesktop)
if (!IsIconic(hwnd)) {
minimized.push_back(MinimizeStruct(hwnd, GetWindowStyle(hwnd)));
ShowWindowAsync(hwnd, SW_MINIMIZE);
}
return TRUE;
}
/// minimize/restore all windows on the desktop
void Desktops::ToggleMinimize()
{
list<MinimizeStruct>& minimized = (*this)[_current_desktop]._minimized;
if (minimized.empty()) {
EnumWindows(MinimizeDesktopEnumFct, (LPARAM)&minimized);
} else {
for(list<MinimizeStruct>::const_iterator it=minimized.begin(); it!=minimized.end(); ++it)
ShowWindowAsync(it->first, it->second&WS_MAXIMIZE? SW_MAXIMIZE: SW_RESTORE);
minimized.clear();
}
}
BOOL IsAnyDesktopRunning()
{
HINSTANCE hUser32 = GetModuleHandle(TEXT("user32"));
SetShellWindow = (BOOL(WINAPI*)(HWND)) GetProcAddress(hUser32, "SetShellWindow");
SetShellWindowEx = (BOOL(WINAPI*)(HWND,HWND)) GetProcAddress(hUser32, "SetShellWindowEx");
return GetShellWindow() != 0;
}
BackgroundWindow::BackgroundWindow(HWND hwnd)
: super(hwnd)
{
// set background brush for the short moment of displaying the
// background color while moving foreground windows
SetClassLong(hwnd, GCL_HBRBACKGROUND, COLOR_BACKGROUND+1);
_display_version = RegGetDWORDValue(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), TEXT("PaintDesktopVersion"), 1);
}
LRESULT BackgroundWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
{
switch(nmsg) {
case WM_ERASEBKGND:
DrawDesktopBkgnd((HDC)wparam);
return TRUE;
case WM_MBUTTONDBLCLK:
explorer_show_frame(SW_SHOWNORMAL);
break;
case PM_DISPLAY_VERSION:
if (lparam || wparam) {
DWORD or_mask = wparam;
DWORD reset_mask = LOWORD(lparam);
DWORD xor_mask = HIWORD(lparam);
_display_version = ((_display_version&~reset_mask) | or_mask) ^ xor_mask;
InvalidateRect(_hwnd, NULL, TRUE);
}
return _display_version;
default:
return super::WndProc(nmsg, wparam, lparam);
}
return 0;
}
void BackgroundWindow::DrawDesktopBkgnd(HDC hdc)
{
PaintDesktop(hdc);
/* special solid background
HBRUSH bkgndBrush = CreateSolidBrush(RGB(0,32,160)); // dark blue
FillRect(hdc, &rect, bkgndBrush);
DeleteBrush(bkgndBrush);
*/
if (_display_version) {
static const String s_bkgnd_txt = ResString(IDS_EXPLORER_VERSION_STR) + TEXT("\nby Martin Fuchs");
FmtString txt(s_bkgnd_txt, (LPCTSTR)ResString(IDS_VERSION_STR));
ClientRect rect(_hwnd);
rect.left = rect.right - 280;
rect.top = rect.bottom - 80 - DESKTOPBARBAR_HEIGHT;
rect.right = rect.left + 250;
rect.bottom = rect.top + 40;
BkMode bkMode(hdc, TRANSPARENT);
TextColor textColor(hdc, RGB(128,128,192));
DrawText(hdc, txt, -1, &rect, DT_RIGHT);
SetTextColor(hdc, RGB(255,255,255));
--rect.right;
++rect.top;
DrawText(hdc, txt, -1, &rect, DT_RIGHT);
}
}
DesktopWindow::DesktopWindow(HWND hwnd)
: super(hwnd)
{
_pShellView = NULL;
}
DesktopWindow::~DesktopWindow()
{
if (_pShellView)
_pShellView->Release();
}
HWND DesktopWindow::Create()
{
static IconWindowClass wcDesktop(TEXT("Progman"), IDI_REACTOS, CS_DBLCLKS);
/* (disabled because of small ugly temporary artefacts when hiding start menu)
wcDesktop.hbrBackground = (HBRUSH)(COLOR_BACKGROUND+1); */
int width = GetSystemMetrics(SM_CXSCREEN);
int height = GetSystemMetrics(SM_CYSCREEN);
HWND hwndDesktop = Window::Create(WINDOW_CREATOR(DesktopWindow),
WS_EX_TOOLWINDOW, wcDesktop, TEXT("Program Manager"), WS_POPUP|WS_VISIBLE|WS_CLIPCHILDREN,
0, 0, width, height, 0);
// work around to display desktop bar in Wine
ShowWindow(GET_WINDOW(DesktopWindow, hwndDesktop)->_desktopBar, SW_SHOW);
// work around for Windows NT, Win 98, ...
// Without this the desktop has mysteriously only a size of 800x600 pixels.
MoveWindow(hwndDesktop, 0, 0, width, height, TRUE);
return hwndDesktop;
}
LRESULT DesktopWindow::Init(LPCREATESTRUCT pcs)
{
if (super::Init(pcs))
return 1;
HRESULT hr = GetDesktopFolder()->CreateViewObject(_hwnd, IID_IShellView, (void**)&_pShellView);
/* also possible:
SFV_CREATE sfv_create;
sfv_create.cbSize = sizeof(SFV_CREATE);
sfv_create.pshf = GetDesktopFolder();
sfv_create.psvOuter = NULL;
sfv_create.psfvcb = NULL;
HRESULT hr = SHCreateShellFolderView(&sfv_create, &_pShellView);
*/
HWND hWndView = 0;
if (SUCCEEDED(hr)) {
FOLDERSETTINGS fs;
fs.ViewMode = FVM_ICON;
fs.fFlags = FWF_DESKTOP|FWF_NOCLIENTEDGE|FWF_NOSCROLL|FWF_BESTFITWINDOW|FWF_SNAPTOGRID; //|FWF_AUTOARRANGE;
ClientRect rect(_hwnd);
hr = _pShellView->CreateViewWindow(NULL, &fs, this, &rect, &hWndView);
///@todo use IShellBrowser::GetViewStateStream() to restore previous view state -> see SHOpenRegStream()
if (SUCCEEDED(hr)) {
g_Globals._hwndShellView = hWndView;
// subclass shellview window
new DesktopShellView(hWndView, _pShellView);
_pShellView->UIActivate(SVUIA_ACTIVATE_FOCUS);
/*
IShellView2* pShellView2;
hr = _pShellView->QueryInterface(IID_IShellView2, (void**)&pShellView2);
SV2CVW2_PARAMS params;
params.cbSize = sizeof(SV2CVW2_PARAMS);
params.psvPrev = _pShellView;
params.pfs = &fs;
params.psbOwner = this;
params.prcView = &rect;
params.pvid = params.pvid;//@@
hr = pShellView2->CreateViewWindow2(&params);
params.pvid;
*/
/*
IFolderView* pFolderView;
hr = _pShellView->QueryInterface(IID_IFolderView, (void**)&pFolderView);
if (SUCCEEDED(hr)) {
hr = pFolderView->GetAutoArrange();
hr = pFolderView->SetCurrentViewMode(FVM_DETAILS);
}
*/
}
}
if (hWndView && SetShellWindowEx)
SetShellWindowEx(_hwnd, hWndView);
else if (SetShellWindow)
SetShellWindow(_hwnd);
// create the explorer bar
_desktopBar = DesktopBar::Create();
g_Globals._hwndDesktopBar = _desktopBar;
return 0;
}
LRESULT DesktopWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
{
switch(nmsg) {
case WM_LBUTTONDBLCLK:
case WM_RBUTTONDBLCLK:
case WM_MBUTTONDBLCLK:
explorer_show_frame(SW_SHOWNORMAL);
break;
case WM_GETISHELLBROWSER:
return (LRESULT)static_cast<IShellBrowser*>(this);
case WM_DESTROY:
///@todo use IShellBrowser::GetViewStateStream() and _pShellView->SaveViewState() to store view state
if (SetShellWindow)
SetShellWindow(0);
break;
case WM_CLOSE:
ShowExitWindowsDialog(_hwnd);
break;
case WM_SYSCOMMAND:
if (wparam == SC_TASKLIST) {
if (_desktopBar)
SendMessage(_desktopBar, nmsg, wparam, lparam);
}
goto def;
default: def:
return super::WndProc(nmsg, wparam, lparam);
}
return 0;
}
HRESULT DesktopWindow::OnDefaultCommand(LPIDA pida)
{
#ifndef ROSSHELL // in shell-only-mode fall through and let shell32 handle the command
if (MainFrame::OpenShellFolders(pida, 0))
return S_OK;
#endif
return E_NOTIMPL;
}
DesktopShellView::DesktopShellView(HWND hwnd, IShellView* pShellView)
: super(hwnd),
_pShellView(pShellView)
{
_hwndListView = ::GetNextWindow(hwnd, GW_CHILD);
SetWindowStyle(_hwndListView, GetWindowStyle(_hwndListView)&~LVS_ALIGNMASK);//|LVS_ALIGNTOP|LVS_AUTOARRANGE);
// work around for Windows NT, Win 98, ...
// Without this the desktop has mysteriously only a size of 800x600 pixels.
ClientRect rect(hwnd);
MoveWindow(_hwndListView, 0, 0, rect.right, rect.bottom, TRUE);
// subclass background window
new BackgroundWindow(_hwndListView);
InitDragDrop();
}
bool DesktopShellView::InitDragDrop()
{
CONTEXT("DesktopShellView::InitDragDrop()");
_pDropTarget = new DesktopDropTarget(_hwnd);
if (!_pDropTarget)
return false;
_pDropTarget->AddRef();
if (FAILED(RegisterDragDrop(_hwnd, _pDropTarget))) {
_pDropTarget->Release();
_pDropTarget = NULL;
return false;
}
else
_pDropTarget->Release();
FORMATETC ftetc;
ftetc.dwAspect = DVASPECT_CONTENT;
ftetc.lindex = -1;
ftetc.tymed = TYMED_HGLOBAL;
ftetc.cfFormat = CF_HDROP;
_pDropTarget->AddSuportedFormat(ftetc);
return true;
}
LRESULT DesktopShellView::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
{
switch(nmsg) {
case WM_CONTEXTMENU:
if (!DoContextMenu(GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam), _cm_ifs))
DoDesktopContextMenu(GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
break;
case PM_DISPLAY_VERSION:
return SendMessage(_hwndListView, nmsg, wparam, lparam);
default:
return super::WndProc(nmsg, wparam, lparam);
}
return 0;
}
int DesktopShellView::Command(int id, int code)
{
return super::Command(id, code);
}
int DesktopShellView::Notify(int id, NMHDR* pnmh)
{
return super::Notify(id, pnmh);
}
bool DesktopShellView::DoContextMenu(int x, int y, CtxMenuInterfaces& cm_ifs)
{
IDataObject* selection;
HRESULT hr = _pShellView->GetItemObject(SVGIO_SELECTION, IID_IDataObject, (void**)&selection);
if (FAILED(hr))
return false;
PIDList pidList;
hr = pidList.GetData(selection);
if (FAILED(hr)) {
selection->Release();
//CHECKERROR(hr);
return false;
}
LPIDA pida = pidList;
if (!pida->cidl) {
selection->Release();
return false;
}
LPCITEMIDLIST parent_pidl = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[0]);
LPCITEMIDLIST* apidl = (LPCITEMIDLIST*) alloca(pida->cidl*sizeof(LPCITEMIDLIST));
for(int i=pida->cidl; i>0; --i)
apidl[i-1] = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[i]);
hr = ShellFolderContextMenu(ShellFolder(parent_pidl), _hwnd, pida->cidl, apidl, x, y, cm_ifs);
selection->Release();
CHECKERROR(hr);
return true;
}
HRESULT DesktopShellView::DoDesktopContextMenu(int x, int y)
{
IContextMenu* pcm;
HRESULT hr = DesktopFolder()->GetUIObjectOf(_hwnd, 0, NULL, IID_IContextMenu, NULL, (LPVOID*)&pcm);
if (SUCCEEDED(hr)) {
pcm = _cm_ifs.query_interfaces(pcm);
HMENU hmenu = CreatePopupMenu();
if (hmenu) {
hr = pcm->QueryContextMenu(hmenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST-1, CMF_NORMAL|CMF_EXPLORE);
if (SUCCEEDED(hr)) {
AppendMenu(hmenu, MF_SEPARATOR, 0, NULL);
AppendMenu(hmenu, 0, FCIDM_SHVIEWLAST-1, ResString(IDS_ABOUT_EXPLORER));
UINT idCmd = TrackPopupMenu(hmenu, TPM_LEFTALIGN|TPM_RETURNCMD|TPM_RIGHTBUTTON, x, y, 0, _hwnd, NULL);
_cm_ifs.reset();
if (idCmd == FCIDM_SHVIEWLAST-1) {
explorer_about(_hwnd);
} else if (idCmd) {
CMINVOKECOMMANDINFO cmi;
cmi.cbSize = sizeof(CMINVOKECOMMANDINFO);
cmi.fMask = 0;
cmi.hwnd = _hwnd;
cmi.lpVerb = (LPCSTR)(INT_PTR)(idCmd - FCIDM_SHVIEWFIRST);
cmi.lpParameters = NULL;
cmi.lpDirectory = NULL;
cmi.nShow = SW_SHOWNORMAL;
cmi.dwHotKey = 0;
cmi.hIcon = 0;
hr = pcm->InvokeCommand(&cmi);
}
} else
_cm_ifs.reset();
}
pcm->Release();
}
return hr;
}

186
desktop/desktop.h Normal file
View File

@@ -0,0 +1,186 @@
/*
* Copyright 2003, 2004 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer clone, lean version
//
// desktop.h
//
// Martin Fuchs, 09.08.2003
//
#define PM_DISPLAY_VERSION (WM_APP+0x24)
/// subclassed Background window behind the visible desktop window
struct BackgroundWindow : public SubclassedWindow
{
typedef SubclassedWindow super;
BackgroundWindow(HWND hwnd);
protected:
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
void DrawDesktopBkgnd(HDC hdc);
int _display_version;
};
/// Implementation of the Explorer desktop window
struct DesktopWindow : public Window, public IShellBrowserImpl
{
typedef Window super;
DesktopWindow(HWND hwnd);
~DesktopWindow();
static HWND Create();
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND* lphwnd)
{
*lphwnd = _hwnd;
return S_OK;
}
virtual HRESULT STDMETHODCALLTYPE QueryActiveShellView(IShellView** ppshv)
{
_pShellView->AddRef();
*ppshv = _pShellView;
return S_OK;
}
virtual HRESULT STDMETHODCALLTYPE GetControlWindow(UINT id, HWND* lphwnd)
{
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pret)
{
return E_NOTIMPL;
}
protected:
LRESULT Init(LPCREATESTRUCT pcs);
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
IShellView* _pShellView;
WindowHandle _desktopBar;
virtual HRESULT OnDefaultCommand(LPIDA pida);
};
/// OLE drop target for the desktop window
class DesktopDropTarget : public IDropTargetImpl
{
typedef IDropTargetImpl super;
public:
DesktopDropTarget(HWND hTargetWnd) : super(hTargetWnd) {}
virtual bool OnDrop(FORMATETC* pFmtEtc, STGMEDIUM& medium, DWORD *pdwEffect)
{
if (pFmtEtc->cfFormat==CF_HDROP && medium.tymed==TYMED_HGLOBAL) {
HDROP hDrop = (HDROP)GlobalLock(medium.hGlobal);
if (hDrop) {
TCHAR szFileName[MAX_PATH];
UINT cFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
for(UINT i=0; i<cFiles; ++i) {
DragQueryFile(hDrop, i, szFileName, sizeof(szFileName));
if (DROPEFFECT_COPY & *pdwEffect) {
// copy the file or dir
///@todo Add the code to handle Copy
} else if (DROPEFFECT_MOVE & *pdwEffect) {
// move the file or dir
///@todo Add the code to handle Move
}
}
//DragFinish(hDrop); // base class calls ReleaseStgMedium
}
GlobalUnlock(medium.hGlobal);
}
//@@TreeView_SelectDropTarget(m_hTargetWnd, NULL);
return true; //let base free the medium
}
virtual HRESULT STDMETHODCALLTYPE DragOver(
/* [in] */ DWORD grfKeyState,
/* [in] */ POINTL pt,
/* [out][in] */ DWORD __RPC_FAR *pdwEffect)
{
TVHITTESTINFO hit;
hit.pt = (POINT&)pt;
ScreenToClient(m_hTargetWnd, &hit.pt);
hit.flags = TVHT_ONITEM;
/*@@
HTREEITEM hItem = TreeView_HitTest(m_hTargetWnd,&hit);
if (hItem != NULL)
TreeView_SelectDropTarget(m_hTargetWnd, hItem);
*/
return super::DragOver(grfKeyState, pt, pdwEffect);
}
virtual HRESULT STDMETHODCALLTYPE DragLeave(void)
{
//@@ TreeView_SelectDropTarget(m_hTargetWnd, NULL);
return super::DragLeave();
}
};
/// subclassed ShellView window
struct DesktopShellView : public ExtContextMenuHandlerT<SubclassedWindow>
{
typedef ExtContextMenuHandlerT<SubclassedWindow> super;
DesktopShellView(HWND hwnd, IShellView* pShellView);
bool InitDragDrop();
protected:
IShellView* _pShellView;
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
int Command(int id, int code);
int Notify(int id, NMHDR* pnmh);
bool DoContextMenu(int x, int y, CtxMenuInterfaces& cm_ifs);
HRESULT DoDesktopContextMenu(int x, int y);
DesktopDropTarget* _pDropTarget;
HWND _hwndListView;
};

152
dialogs/settings.cpp Normal file
View File

@@ -0,0 +1,152 @@
/*
* Copyright 2004 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer clone, lean version
//
// dialogs/settings.cpp
//
// Explorer dialogs
//
// Martin Fuchs, 18.01.2004
//
#include "precomp.h"
#include "../resource.h"
#include "settings.h"
void ExplorerPropertySheet(HWND hparent)
{
PropertySheetDialog ps(hparent);
ps.dwFlags |= PSH_USEICONID | PSH_PROPTITLE;
ps.pszIcon = MAKEINTRESOURCE(IDI_REACTOS);
ps.pszCaption = TEXT("Explorer");
PropSheetPage psp1(IDD_DESKBAR_DESKTOP, WINDOW_CREATOR(DesktopSettingsDlg));
psp1.dwFlags |= PSP_USETITLE;
psp1.pszTitle = MAKEINTRESOURCE(IDS_DESKTOP);
ps.add(psp1);
PropSheetPage psp2(IDD_DESKBAR_TASKBAR, WINDOW_CREATOR(TaskbarSettingsDlg));
psp2.dwFlags |= PSP_USETITLE;
psp2.pszTitle = MAKEINTRESOURCE(IDS_TASKBAR);
ps.add(psp2);
PropSheetPage psp3(IDD_DESKBAR_STARTMENU, WINDOW_CREATOR(StartmenuSettingsDlg));
psp3.dwFlags |= PSP_USETITLE;
psp3.pszTitle = MAKEINTRESOURCE(IDS_STARTMENU);
ps.add(psp3);
ps.DoModal();
}
DesktopSettingsDlg::DesktopSettingsDlg(HWND hwnd)
: super(hwnd)
{
_display_version_org = SendMessage(g_Globals._hwndShellView, PM_DISPLAY_VERSION, 0, MAKELONG(0,0));
CheckDlgButton(hwnd, ID_DESKTOP_VERSION, _display_version_org? BST_CHECKED: BST_UNCHECKED);
}
#ifndef PSN_QUERYINITIALFOCUS // currently (as of 18.01.2004) missing in MinGW headers
#define PSN_QUERYINITIALFOCUS (-213)
#endif
int DesktopSettingsDlg::Notify(int id, NMHDR* pnmh)
{
switch(pnmh->code) {
case PSN_QUERYINITIALFOCUS:
break;
case PSN_APPLY:
_display_version_org = SendMessage(g_Globals._hwndShellView, PM_DISPLAY_VERSION, 0, MAKELONG(0,0));
break;
case PSN_RESET:
SendMessage(g_Globals._hwndShellView, PM_DISPLAY_VERSION, _display_version_org, MAKELONG(1,0));
break;
default:
return super::Notify(id, pnmh);
}
return 0;
}
int DesktopSettingsDlg::Command(int id, int code)
{
switch(id) {
case ID_DESKTOP_VERSION:
SendMessage(g_Globals._hwndShellView, PM_DISPLAY_VERSION, 0, MAKELONG(0,1)); // toggle version display flag
PropSheet_Changed(GetParent(_hwnd), _hwnd);
break;
default:
return 1;
}
return 0;
}
TaskbarSettingsDlg::TaskbarSettingsDlg(HWND hwnd)
: super(hwnd)
{
}
LRESULT TaskbarSettingsDlg::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
{
switch(nmsg) {
case WM_PAINT: {
PaintCanvas canvas(_hwnd);
FillRect(canvas, &canvas.rcPaint, GetStockBrush(GRAY_BRUSH));
break;}
default:
return super::WndProc(nmsg, wparam, lparam);
}
return 0;
}
StartmenuSettingsDlg::StartmenuSettingsDlg(HWND hwnd)
: super(hwnd)
{
}
LRESULT StartmenuSettingsDlg::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
{
switch(nmsg) {
case WM_PAINT: {
PaintCanvas canvas(_hwnd);
FillRect(canvas, &canvas.rcPaint, GetStockBrush(DKGRAY_BRUSH));
break;}
default:
return super::WndProc(nmsg, wparam, lparam);
}
return 0;
}

68
dialogs/settings.h Normal file
View File

@@ -0,0 +1,68 @@
/*
* Copyright 2004 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer clone, lean version
//
// dialogs/settings.h
//
// Explorer dialogs
//
// Martin Fuchs, 18.01.2004
//
void ExplorerPropertySheet(HWND hparent);
/// "Desktopbar Settings" Property Sheet Dialog
struct DesktopSettingsDlg : public OwnerDrawParent<PropSheetPageDlg>
{
typedef OwnerDrawParent<PropSheetPageDlg> super;
DesktopSettingsDlg(HWND hwnd);
protected:
virtual int Command(int id, int code);
virtual int Notify(int id, NMHDR* pnmh);
int _display_version_org;
};
/// "Taskbar Settings" Property Sheet Dialog
struct TaskbarSettingsDlg : public PropSheetPageDlg
{
typedef PropSheetPageDlg super;
TaskbarSettingsDlg(HWND hwnd);
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
};
/// "Startmenu Settings" Property Sheet Dialog
struct StartmenuSettingsDlg : public PropSheetPageDlg
{
typedef PropSheetPageDlg super;
StartmenuSettingsDlg(HWND hwnd);
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
};

244
explorer-en.rc Normal file
View File

@@ -0,0 +1,244 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUT_EXPLORER DIALOG DISCARDABLE 0, 0, 196, 109
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About ReactOS Explorer"
FONT 10, "MS Sans Serif"
BEGIN
LTEXT "ReactOS Explorer",IDC_ROS_EXPLORER,91,29,90,11
LTEXT "V 0.9",IDC_VERSION_TXT,91,43,98,8
LTEXT "(c) 2003-2006 Martin Fuchs",IDC_STATIC,91,58,79,8
LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,21,84,104,
8
CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
151,90,38,12
END
IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Execute"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "",101,"Static",SS_SIMPLE | SS_NOPREFIX,3,6,162,10
CONTROL "&Command:",-1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,3,
18,60,10
EDITTEXT 201,3,29,134,12,ES_AUTOHSCROLL
CONTROL "As &Symbol",214,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,3,
45,71,12
DEFPUSHBUTTON "&OK",1,158,6,47,14
PUSHBUTTON "&Cancel",2,158,23,47,14
PUSHBUTTON "&Help",254,158,43,47,14
END
IDD_DESKBAR_DESKTOP DIALOG DISCARDABLE 0, 0, 212, 194
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Desktop Properties"
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "Display &Version Number",ID_DESKTOP_VERSION,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,7,177,91,10
END
IDD_DESKBAR_TASKBAR DIALOG DISCARDABLE 0, 0, 210, 194
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Taskbar Properties"
FONT 8, "MS Sans Serif"
BEGIN
END
IDD_DESKBAR_STARTMENU DIALOG DISCARDABLE 0, 0, 210, 194
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Startmenu Properties"
FONT 8, "MS Sans Serif"
BEGIN
END
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_MAINFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "Create Shortcut", ID_FILE_CREATESHORTCUT
, GRAYED
MENUITEM "Delete", ID_FILE_DELETE, GRAYED
MENUITEM "Rename", ID_FILE_RENAME, GRAYED
MENUITEM "Properties", ID_FILE_PROPERTIES, GRAYED
MENUITEM SEPARATOR
MENUITEM "Close", ID_FILE_EXIT
END
POPUP "&Edit"
BEGIN
MENUITEM "Undo", ID_EDIT_UNDO, GRAYED
MENUITEM SEPARATOR
MENUITEM "&Cut", ID_EDIT_CUt, GRAYED
MENUITEM "&Copy", ID_EDIT_COPY, GRAYED
MENUITEM "&Paste", ID_EDIT_PASTE, GRAYED
MENUITEM "&Paste Shortcut", ID_EDIT_PASTE_SHORTCUT
, GRAYED
MENUITEM SEPARATOR
MENUITEM "Copy to Folder", ID_EDIT_COPY_FOLDER, GRAYED
MENUITEM "Move to Folder", ID_EDIT_MOVE_TO_FOLDER
, GRAYED
MENUITEM SEPARATOR
MENUITEM "Select All", ID_EDIT_SELECT_ALL, GRAYED
MENUITEM "Invert Selection", ID_EDIT_INVERT_SELECTION
, GRAYED
END
POPUP "&View"
BEGIN
MENUITEM "&Toolbar", ID_VIEW_TOOL_BAR
MENUITEM "&Status Bar", ID_VIEW_STATUSBAR
END
POPUP "&Window"
BEGIN
MENUITEM "New &Window", ID_WINDOW_NEW
MENUITEM "&Refresh\tF5", ID_REFRESH
END
POPUP "&Tools"
BEGIN
MENUITEM "Map Network Drive", ID_TOOLS_MAP, GRAYED
MENUITEM "Disconnect Network Drive...", ID_TOOLS_DISCONNECT, GRAYED
MENUITEM SEPARATOR
MENUITEM "Folder Options...", ID_TOOLS_OPTIONS, GRAYED
END
POPUP "&Help"
BEGIN
MENUITEM "Explorer &FAQ...", ID_EXPLORER_FAQ
MENUITEM "&About Explorer...", ID_ABOUT_EXPLORER
MENUITEM "About &OS...", ID_ABOUT_WINDOWS
END
END
IDM_DESKTOPBAR MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
MENUITEM "&About Explorer...", ID_ABOUT_EXPLORER
MENUITEM "&Settings...", ID_DESKTOPBAR_SETTINGS
MENUITEM "&Task Manager...", ID_TASKMGR
END
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE MOVEABLE PURE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE MOVEABLE PURE
BEGIN
"#include <windows.h>\r\n"
"\0"
END
3 TEXTINCLUDE MOVEABLE PURE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "Reactos Explorer"
IDS_START "Start"
IDS_LOGOFF "Log Off..."
IDS_SHUTDOWN "Turn Off..."
IDS_LAUNCH "Run..."
IDS_START_HELP "Help"
IDS_SEARCH_FILES "Search..."
IDS_DOCUMENTS "Documents"
IDS_FAVORITES "Favorites"
IDS_PROGRAMS "Programs"
IDS_SETTINGS "Settings"
IDS_EXPLORE "Explore"
IDS_EMPTY "(Empty)"
IDS_RECENT "Recent Documents"
IDS_ADMIN "Administration"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_STARTMENU "Startmenu"
IDS_MINIMIZE_ALL "mimimize all windows"
IDS_DESKTOP_NUM "Desktop %d"
IDS_TERMINATE "Terminate ROS Explorer"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_NETWORK "Network"
IDS_CONNECTIONS "Network Connections"
IDS_DRIVES "Drives"
IDS_SEARCH_COMPUTER "Search Computer..."
IDS_CONTROL_PANEL "Control Panel"
IDS_PRINTERS "Printers"
IDS_ALL_USERS "All Users\\"
IDS_SEARCH "Search"
IDS_ABOUT_EXPLORER "&About Explorer..."
IDS_LAUNCH_MANY_PROGRAMS
"You have selected more than one program.\nAre you sure you want to launch all of them?"
IDS_DESKTOPBAR_SETTINGS "Desktop Settings"
IDS_DESKTOP "Desktop"
IDS_TASKBAR "Taskbar"
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

838
explorer.cpp Normal file
View File

@@ -0,0 +1,838 @@
/*
* Copyright 2003, 2004, 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer clone, lean version
//
// explorer.cpp
//
// Martin Fuchs, 23.07.2003
//
// Credits: Thanks to Leon Finker for his explorer window example
//
#include "precomp.h"
#include "resource.h"
#include <locale.h> // for setlocale()
DynamicLoadLibFct<void(__stdcall*)(BOOL)> g_SHDOCVW_ShellDDEInit(TEXT("SHDOCVW"), 118);
ExplorerGlobals g_Globals;
ExplorerGlobals::ExplorerGlobals()
{
_hInstance = 0;
_cfStrFName = 0;
#ifndef ROSSHELL
_hframeClass = 0;
_hMainWnd = 0;
_desktop_mode = false;
_prescan_nodes = false;
#endif
_log = NULL;
#ifndef __MINGW32__ // SHRestricted() missing in MinGW (as of 29.10.2003)
_SHRestricted = 0;
#endif
_hwndDesktopBar = 0;
_hwndShellView = 0;
_hwndDesktop = 0;
}
void ExplorerGlobals::init(HINSTANCE hInstance)
{
_hInstance = hInstance;
#ifndef __MINGW32__ // SHRestricted() missing in MinGW (as of 29.10.2003)
_SHRestricted = (DWORD(STDAPICALLTYPE*)(RESTRICTIONS)) GetProcAddress(GetModuleHandle(TEXT("SHELL32")), "SHRestricted");
#endif
_icon_cache.init();
}
void _log_(LPCTSTR txt)
{
FmtString msg(TEXT("%s\n"), txt);
if (g_Globals._log)
_fputts(msg, g_Globals._log);
OutputDebugString(msg);
}
const FileTypeInfo& FileTypeManager::operator[](String ext)
{
ext.toLower();
iterator found = find(ext);
if (found != end())
return found->second;
FileTypeInfo& ftype = super::operator[](ext);
ftype._neverShowExt = false;
HKEY hkey;
TCHAR value[MAX_PATH], display_name[MAX_PATH];
LONG valuelen = sizeof(value);
if (!RegQueryValue(HKEY_CLASSES_ROOT, ext, value, &valuelen)) {
ftype._classname = value;
valuelen = sizeof(display_name);
if (!RegQueryValue(HKEY_CLASSES_ROOT, ftype._classname, display_name, &valuelen))
ftype._displayname = display_name;
if (!RegOpenKey(HKEY_CLASSES_ROOT, ftype._classname, &hkey)) {
if (!RegQueryValueEx(hkey, TEXT("NeverShowExt"), 0, NULL, NULL, NULL))
ftype._neverShowExt = true;
RegCloseKey(hkey);
}
}
return ftype;
}
LPCTSTR FileTypeManager::set_type(ShellEntry* entry, bool dont_hide_ext)
{
LPCTSTR ext = _tcsrchr(entry->_data.cFileName, TEXT('.'));
if (ext) {
const FileTypeInfo& type = (*this)[ext];
// hide some file extensions
if (type._neverShowExt && !dont_hide_ext) {
int len = ext - entry->_data.cFileName;
entry->_display_name = (LPTSTR) malloc((len+1)*sizeof(TCHAR));
lstrcpyn(entry->_display_name, entry->_data.cFileName, len + 1);
entry->_display_name[len] = TEXT('\0');
}
}
return ext;
}
Icon::Icon()
: _id(ICID_UNKNOWN),
_itype(IT_STATIC),
_hicon(0)
{
}
Icon::Icon(ICON_ID id, UINT nid)
: _id(id),
_itype(IT_STATIC),
_hicon(SmallIcon(nid))
{
}
Icon::Icon(ICON_TYPE itype, int id, HICON hIcon)
: _id((ICON_ID)id),
_itype(itype),
_hicon(hIcon)
{
}
Icon::Icon(ICON_TYPE itype, int id, int sys_idx)
: _id((ICON_ID)id),
_itype(itype),
_sys_idx(sys_idx)
{
}
void Icon::draw(HDC hdc, int x, int y, int cx, int cy, COLORREF bk_color, HBRUSH bk_brush) const
{
if (_itype == IT_SYSCACHE)
ImageList_DrawEx(g_Globals._icon_cache.get_sys_imagelist(), _sys_idx, hdc, x, y, cx, cy, bk_color, CLR_DEFAULT, ILD_NORMAL);
else
DrawIconEx(hdc, x, y, _hicon, cx, cy, 0, bk_brush, DI_NORMAL);
}
HBITMAP Icon::create_bitmap(COLORREF bk_color, HBRUSH hbrBkgnd, HDC hdc_wnd) const
{
if (_itype == IT_SYSCACHE) {
HIMAGELIST himl = g_Globals._icon_cache.get_sys_imagelist();
int cx, cy;
ImageList_GetIconSize(himl, &cx, &cy);
HBITMAP hbmp = CreateCompatibleBitmap(hdc_wnd, cx, cy);
HDC hdc = CreateCompatibleDC(hdc_wnd);
HBITMAP hbmp_old = SelectBitmap(hdc, hbmp);
ImageList_DrawEx(himl, _sys_idx, hdc, 0, 0, cx, cy, bk_color, CLR_DEFAULT, ILD_NORMAL);
SelectBitmap(hdc, hbmp_old);
DeleteDC(hdc);
return hbmp;
} else
return create_bitmap_from_icon(_hicon, hbrBkgnd, hdc_wnd);
}
HBITMAP create_bitmap_from_icon(HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd)
{
HBITMAP hbmp = CreateCompatibleBitmap(hdc_wnd, 16, 16);
MemCanvas canvas;
BitmapSelection sel(canvas, hbmp);
RECT rect = {0, 0, 16, 16};
FillRect(canvas, &rect, hbrush_bkgnd);
DrawIconEx(canvas, 0, 0, hIcon, 16, 16, 0, hbrush_bkgnd, DI_NORMAL);
return hbmp;
}
int IconCache::s_next_id = ICID_DYNAMIC;
void IconCache::init()
{
_icons[ICID_NONE] = Icon(IT_STATIC, ICID_NONE, (HICON)0);
_icons[ICID_FOLDER] = Icon(ICID_FOLDER, IDI_FOLDER);
//_icons[ICID_DOCUMENT] = Icon(ICID_DOCUMENT, IDI_DOCUMENT);
_icons[ICID_EXPLORER] = Icon(ICID_EXPLORER, IDI_EXPLORER);
_icons[ICID_APP] = Icon(ICID_APP, IDI_APPICON);
_icons[ICID_CONFIG] = Icon(ICID_CONFIG, IDI_CONFIG);
_icons[ICID_DOCUMENTS] = Icon(ICID_DOCUMENTS, IDI_DOCUMENTS);
_icons[ICID_FAVORITES] = Icon(ICID_FAVORITES, IDI_FAVORITES);
_icons[ICID_INFO] = Icon(ICID_INFO, IDI_INFO);
_icons[ICID_APPS] = Icon(ICID_APPS, IDI_APPS);
_icons[ICID_SEARCH] = Icon(ICID_SEARCH, IDI_SEARCH);
_icons[ICID_ACTION] = Icon(ICID_ACTION, IDI_ACTION);
_icons[ICID_SEARCH_DOC] = Icon(ICID_SEARCH_DOC, IDI_SEARCH_DOC);
_icons[ICID_PRINTER] = Icon(ICID_PRINTER, IDI_PRINTER);
_icons[ICID_NETWORK] = Icon(ICID_NETWORK, IDI_NETWORK);
_icons[ICID_COMPUTER] = Icon(ICID_COMPUTER, IDI_COMPUTER);
_icons[ICID_LOGOFF] = Icon(ICID_LOGOFF, IDI_LOGOFF);
}
const Icon& IconCache::extract(const String& path)
{
PathMap::iterator found = _pathMap.find(path);
if (found != _pathMap.end())
return _icons[found->second];
SHFILEINFO sfi;
#if 1 // use system image list
HIMAGELIST himlSys = (HIMAGELIST) SHGetFileInfo(path, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX|SHGFI_SMALLICON);
if (himlSys) {
_himlSys = himlSys;
const Icon& icon = add(sfi.iIcon/*, IT_SYSCACHE*/);
#else
if (SHGetFileInfo(path, 0, &sfi, sizeof(sfi), SHGFI_ICON|SHGFI_SMALLICON)) {
const Icon& icon = add(sfi.hIcon, IT_CACHED);
#endif
///@todo limit cache size
_pathMap[path] = icon;
return icon;
} else
return _icons[ICID_NONE];
}
const Icon& IconCache::extract(LPCTSTR path, int idx)
{
CachePair key(path, idx);
key.first.toLower();
PathIdxMap::iterator found = _pathIdxMap.find(key);
if (found != _pathIdxMap.end())
return _icons[found->second];
HICON hIcon;
if ((int)ExtractIconEx(path, idx, NULL, &hIcon, 1) > 0) {
const Icon& icon = add(hIcon, IT_CACHED);
_pathIdxMap[key] = icon;
return icon;
} else
return _icons[ICID_NONE];
}
const Icon& IconCache::extract(IExtractIcon* pExtract, LPCTSTR path, int idx)
{
HICON hIconLarge = 0;
HICON hIcon;
HRESULT hr = pExtract->Extract(path, idx, &hIconLarge, &hIcon, MAKELONG(0/*GetSystemMetrics(SM_CXICON)*/,GetSystemMetrics(SM_CXSMICON)));
if (hr == NOERROR) {
if (hIconLarge)
DestroyIcon(hIconLarge);
if (hIcon)
return add(hIcon);
}
return _icons[ICID_NONE];
}
const Icon& IconCache::add(HICON hIcon, ICON_TYPE type)
{
int id = ++s_next_id;
return _icons[id] = Icon(type, id, hIcon);
}
const Icon& IconCache::add(int sys_idx/*, ICON_TYPE type=IT_SYSCACHE*/)
{
int id = ++s_next_id;
return _icons[id] = SysCacheIcon(id, sys_idx);
}
const Icon& IconCache::get_icon(int id)
{
return _icons[id];
}
void IconCache::free_icon(int icon_id)
{
IconMap::iterator found = _icons.find(icon_id);
if (found != _icons.end()) {
Icon& icon = found->second;
if (icon.destroy())
_icons.erase(found);
}
}
ResString::ResString(UINT nid)
{
TCHAR buffer[BUFFER_LEN];
int len = LoadString(g_Globals._hInstance, nid, buffer, sizeof(buffer)/sizeof(TCHAR));
super::assign(buffer, len);
}
ResIcon::ResIcon(UINT nid)
{
_hicon = LoadIcon(g_Globals._hInstance, MAKEINTRESOURCE(nid));
}
SmallIcon::SmallIcon(UINT nid)
{
_hicon = (HICON)LoadImage(g_Globals._hInstance, MAKEINTRESOURCE(nid), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
}
ResIconEx::ResIconEx(UINT nid, int w, int h)
{
_hicon = (HICON)LoadImage(g_Globals._hInstance, MAKEINTRESOURCE(nid), IMAGE_ICON, w, h, LR_SHARED);
}
void SetWindowIcon(HWND hwnd, UINT nid)
{
HICON hIcon = ResIcon(nid);
Window_SetIcon(hwnd, ICON_BIG, hIcon);
HICON hIconSmall = SmallIcon(nid);
Window_SetIcon(hwnd, ICON_SMALL, hIconSmall);
}
ResBitmap::ResBitmap(UINT nid)
{
_hBmp = LoadBitmap(g_Globals._hInstance, MAKEINTRESOURCE(nid));
}
#ifndef ROSSHELL
void explorer_show_frame(int cmdShow, LPTSTR lpCmdLine)
{
ExplorerCmd cmd;
if (g_Globals._hMainWnd) {
if (IsIconic(g_Globals._hMainWnd))
ShowWindow(g_Globals._hMainWnd, SW_RESTORE);
else
SetForegroundWindow(g_Globals._hMainWnd);
return;
}
g_Globals._prescan_nodes = false;
// create main window
HWND hMainFrame = MainFrame::Create();
if (hMainFrame) {
g_Globals._hMainWnd = hMainFrame;
ShowWindow(hMainFrame, cmdShow);
UpdateWindow(hMainFrame);
cmd._cmdShow = cmdShow;
// parse command line options
if (lpCmdLine)
cmd.ParseCmdLine(lpCmdLine);
// Open the first child window after initializing the application
if (cmd.IsValidPath()) {
// We use the static s_path variable to store the path string in order
// to avoid accessing prematurely freed memory in the PostMessage handlers.
static String s_path = cmd._path;
PostMessage(hMainFrame, PM_OPEN_WINDOW, cmd._flags, (LPARAM)(LPCTSTR)s_path);
} else
PostMessage(hMainFrame, PM_OPEN_WINDOW, cmd._flags, 0);
}
}
bool ExplorerCmd::ParseCmdLine(LPCTSTR lpCmdLine)
{
bool ok = true;
LPCTSTR b = lpCmdLine;
LPCTSTR p = b;
while(*b) {
// remove leading space
while(_istspace((unsigned)*b))
++b;
p = b;
bool quote = false;
// options are separated by ','
for(; *p; ++p) {
if (*p == '"') // Quote characters may appear at any position in the command line.
quote = !quote;
else if (*p==',' && !quote)
break;
}
if (p > b) {
int l = p - b;
// remove trailing space
while(l>0 && _istspace((unsigned)b[l-1]))
--l;
if (!EvaluateOption(String(b, l)))
ok = false;
if (*p)
++p;
b = p;
}
}
return ok;
}
bool ExplorerCmd::EvaluateOption(LPCTSTR option)
{
String opt_str;
// Remove quote characters, as they are evaluated at this point.
for(; *option; ++option)
if (*option != '"')
opt_str += *option;
option = opt_str;
if (option[0] == '/') {
++option;
// option /e for windows in explorer mode
if (!_tcsicmp(option, TEXT("e")))
_flags |= OWM_EXPLORE;
// option /root for rooted explorer windows
else if (!_tcsicmp(option, TEXT("root")))
_flags |= OWM_ROOTED;
else
return false;
} else {
if (!_path.empty())
return false;
_path = opt_str;
}
return true;
}
bool ExplorerCmd::IsValidPath() const
{
if (!_path.empty()) {
DWORD attribs = GetFileAttributes(_path);
if (attribs!=INVALID_FILE_ATTRIBUTES && (attribs&FILE_ATTRIBUTE_DIRECTORY))
return true; // file system path
else if (*_path==':' && _path.at(1)==':')
return true; // text encoded IDL
}
return false;
}
#else
void explorer_show_frame(int cmdShow, LPTSTR lpCmdLine)
{
if (!lpCmdLine)
lpCmdLine = TEXT("explorer.exe");
launch_file(GetDesktopWindow(), lpCmdLine, cmdShow);
}
#endif
PopupMenu::PopupMenu(UINT nid)
{
HMENU hMenu = LoadMenu(g_Globals._hInstance, MAKEINTRESOURCE(nid));
_hmenu = GetSubMenu(hMenu, 0);
}
/// "About Explorer" Dialog
struct ExplorerAboutDlg : public
CtlColorParent<
OwnerDrawParent<Dialog>
>
{
typedef CtlColorParent<
OwnerDrawParent<Dialog>
> super;
ExplorerAboutDlg(HWND hwnd)
: super(hwnd)
{
SetWindowIcon(hwnd, IDI_REACTOS);
new FlatButton(hwnd, IDOK);
_hfont = CreateFont(20, 0, 0, 0, FW_BOLD, TRUE, 0, 0, 0, 0, 0, 0, 0, TEXT("Sans Serif"));
new ColorStatic(hwnd, IDC_ROS_EXPLORER, RGB(32,32,128), 0, _hfont);
new HyperlinkCtrl(hwnd, IDC_WWW);
FmtString ver_txt(ResString(IDS_EXPLORER_VERSION_STR), (LPCTSTR)ResString(IDS_VERSION_STR));
SetWindowText(GetDlgItem(hwnd, IDC_VERSION_TXT), ver_txt);
CenterWindow(hwnd);
}
~ExplorerAboutDlg()
{
DeleteObject(_hfont);
}
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
{
switch(nmsg) {
case WM_PAINT:
Paint();
break;
default:
return super::WndProc(nmsg, wparam, lparam);
}
return 0;
}
void Paint()
{
PaintCanvas canvas(_hwnd);
HICON hicon = (HICON) LoadImage(g_Globals._hInstance, MAKEINTRESOURCE(IDI_REACTOS_BIG), IMAGE_ICON, 0, 0, LR_SHARED);
DrawIconEx(canvas, 20, 10, hicon, 0, 0, 0, 0, DI_NORMAL);
}
protected:
HFONT _hfont;
};
void explorer_about(HWND hwndParent)
{
Dialog::DoModal(IDD_ABOUT_EXPLORER, WINDOW_CREATOR(ExplorerAboutDlg), hwndParent);
}
static void InitInstance(HINSTANCE hInstance)
{
CONTEXT("InitInstance");
setlocale(LC_COLLATE, ""); // set collating rules to local settings for compareName
#ifndef ROSSHELL
// register frame window class
g_Globals._hframeClass = IconWindowClass(CLASSNAME_FRAME,IDI_EXPLORER);
// register child windows class
WindowClass(CLASSNAME_CHILDWND, CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW).Register();
// register tree windows class
WindowClass(CLASSNAME_WINEFILETREE, CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW).Register();
#endif
g_Globals._cfStrFName = RegisterClipboardFormat(CFSTR_FILENAME);
}
int explorer_main(HINSTANCE hInstance, LPTSTR lpCmdLine, int cmdShow)
{
CONTEXT("explorer_main");
// initialize Common Controls library
CommonControlInit usingCmnCtrl;
try {
InitInstance(hInstance);
} catch(COMException& e) {
HandleException(e, GetDesktopWindow());
return -1;
}
#ifndef ROSSHELL
if (cmdShow != SW_HIDE) {
/* // don't maximize if being called from the ROS desktop
if (cmdShow == SW_SHOWNORMAL)
///@todo read window placement from registry
cmdShow = SW_MAXIMIZE;
*/
explorer_show_frame(cmdShow, lpCmdLine);
}
#endif
return Window::MessageLoop();
}
// MinGW does not provide a Unicode startup routine, so we have to implement an own.
#if defined(__MINGW32__) && defined(UNICODE)
#define _tWinMain wWinMain
int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int);
int main(int argc, char* argv[])
{
CONTEXT("main");
STARTUPINFO startupinfo;
int nShowCmd = SW_SHOWNORMAL;
GetStartupInfo(&startupinfo);
if (startupinfo.dwFlags & STARTF_USESHOWWINDOW)
nShowCmd = startupinfo.wShowWindow;
LPWSTR cmdline = GetCommandLineW();
while(*cmdline && !_istspace((unsigned)*cmdline))
++cmdline;
while(_istspace((unsigned)*cmdline))
++cmdline;
return wWinMain(GetModuleHandle(NULL), 0, cmdline, nShowCmd);
}
#endif // __MINGW && UNICODE
static bool SetShellReadyEvent(LPCTSTR evtName)
{
HANDLE hEvent = OpenEvent(EVENT_MODIFY_STATE, FALSE, evtName);
if (!hEvent)
return false;
SetEvent(hEvent);
CloseHandle(hEvent);
return true;
}
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd)
{
CONTEXT("WinMain()");
BOOL any_desktop_running = IsAnyDesktopRunning();
BOOL startup_desktop;
// strip extended options from the front of the command line
String ext_options;
while(*lpCmdLine == '-') {
while(*lpCmdLine && !_istspace((unsigned)*lpCmdLine))
ext_options += *lpCmdLine++;
while(_istspace((unsigned)*lpCmdLine))
++lpCmdLine;
}
// command line option "-install" to replace previous shell application with ROS Explorer
if (_tcsstr(ext_options,TEXT("-install"))) {
// install ROS Explorer into the registry
TCHAR path[MAX_PATH];
int l = GetModuleFileName(0, path, MAX_PATH);
if (l) {
HKEY hkey;
if (!RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), &hkey)) {
///@todo save previous shell application in config file
RegSetValueEx(hkey, TEXT("Shell"), 0, REG_SZ, (LPBYTE)path, l*sizeof(TCHAR));
RegCloseKey(hkey);
}
}
HWND shellWindow = GetShellWindow();
if (shellWindow) {
DWORD pid;
// terminate shell process for NT like systems
GetWindowThreadProcessId(shellWindow, &pid);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
// On Win 9x it's sufficient to destroy the shell window.
DestroyWindow(shellWindow);
if (TerminateProcess(hProcess, 0))
WaitForSingleObject(hProcess, INFINITE);
CloseHandle(hProcess);
}
startup_desktop = TRUE;
} else {
// create desktop window and task bar only, if there is no other shell and we are
// the first explorer instance
// MS Explorer looks additionally into the registry entry HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell,
// to decide wether it is currently configured as shell application.
startup_desktop = !any_desktop_running;
}
bool autostart = !any_desktop_running;
// disable autostart if the SHIFT key is pressed
if (GetAsyncKeyState(VK_SHIFT) < 0)
autostart = false;
#ifdef _DEBUG //MF: disabled for debugging
autostart = false;
#endif
// If there is given the command line option "-desktop", create desktop window anyways
if (_tcsstr(ext_options,TEXT("-desktop")))
startup_desktop = TRUE;
#ifndef ROSSHELL
else if (_tcsstr(ext_options,TEXT("-nodesktop")))
startup_desktop = FALSE;
// Don't display cabinet window in desktop mode
if (startup_desktop && !_tcsstr(ext_options,TEXT("-explorer")))
nShowCmd = SW_HIDE;
#endif
if (_tcsstr(ext_options,TEXT("-noautostart")))
autostart = false;
else if (_tcsstr(ext_options,TEXT("-autostart")))
autostart = true;
if (startup_desktop) {
// hide the XP login screen (Credit to Nicolas Escuder)
// another undocumented event: "Global\\msgina: ReturnToWelcome"
if (!SetShellReadyEvent(TEXT("msgina: ShellReadyEvent")))
SetShellReadyEvent(TEXT("Global\\msgina: ShellReadyEvent"));
// launch the shell DDE server
if (g_SHDOCVW_ShellDDEInit)
(*g_SHDOCVW_ShellDDEInit)(TRUE);
}
#ifdef ROSSHELL
else
return 0; // no shell to launch, so exit immediatelly
#endif
g_Globals.init(hInstance);
// initialize COM and OLE before creating the desktop window
OleInit usingCOM;
if (startup_desktop) {
g_Globals._desktops.init();
g_Globals._hwndDesktop = DesktopWindow::Create();
/**TODO launching autostart programs can be moved into a background thread. */
if (autostart) {
char* argv[] = {"", "s"}; // call startup routine in SESSION_START mode
startup(2, argv);
}
}
#ifndef ROSSHELL
if (g_Globals._hwndDesktop)
g_Globals._desktop_mode = true;
#endif
int ret = explorer_main(hInstance, lpCmdLine, nShowCmd);
// shutdown the shell DDE server
if (g_SHDOCVW_ShellDDEInit)
(*g_SHDOCVW_ShellDDEInit)(FALSE);
return ret;
}

455
explorer.dsp Normal file
View File

@@ -0,0 +1,455 @@
# Microsoft Developer Studio Project File - Name="explorer" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=explorer - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "explorer.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "explorer.mak" CFG="explorer - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "explorer - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "explorer - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "explorer - Win32 Unicode Release" (based on "Win32 (x86) Console Application")
!MESSAGE "explorer - Win32 Unicode Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "explorer - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GR /GX /O1 /D "NDEBUG" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /Yu"precomp.h" /FD /c
# ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386
# SUBTRACT LINK32 /pdb:none /force
!ELSEIF "$(CFG)" == "explorer - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /FR /Yu"precomp.h" /FD /GZ /c
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# SUBTRACT LINK32 /pdb:none /force
!ELSEIF "$(CFG)" == "explorer - Win32 Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "URelease"
# PROP BASE Intermediate_Dir "URelease"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "URelease"
# PROP Intermediate_Dir "URelease"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D "NDEBUG" /D "UNICODE" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /Yu"precomp.h" /FD /c
# ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386
# SUBTRACT LINK32 /pdb:none /force
!ELSEIF "$(CFG)" == "explorer - Win32 Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "UDebug"
# PROP BASE Intermediate_Dir "UDebug"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "UDebug"
# PROP Intermediate_Dir "UDebug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /FR /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "UNICODE" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /FR /Yu"precomp.h" /FD /GZ /c
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# SUBTRACT LINK32 /pdb:none /force
!ENDIF
# Begin Target
# Name "explorer - Win32 Release"
# Name "explorer - Win32 Debug"
# Name "explorer - Win32 Unicode Release"
# Name "explorer - Win32 Unicode Debug"
# Begin Group "utility"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\utility\dragdropimpl.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\dragdropimpl.h
# End Source File
# Begin Source File
SOURCE=.\utility\shellbrowserimpl.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\shellbrowserimpl.h
# End Source File
# Begin Source File
SOURCE=.\utility\shellclasses.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\shellclasses.h
# End Source File
# Begin Source File
SOURCE=.\utility\treedroptarget.h
# End Source File
# Begin Source File
SOURCE=.\utility\utility.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\utility.h
# End Source File
# Begin Source File
SOURCE=.\utility\window.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\window.h
# End Source File
# End Group
# Begin Group "resources"
# PROP Default_Filter "bmp,ico"
# Begin Source File
SOURCE=.\res\action.ico
# End Source File
# Begin Source File
SOURCE=.\res\appicon.ico
# End Source File
# Begin Source File
SOURCE=.\res\apps.ico
# End Source File
# Begin Source File
SOURCE=.\res\arrow.ico
# End Source File
# Begin Source File
SOURCE=.\res\arrow_dwn.ico
# End Source File
# Begin Source File
SOURCE=.\res\arrow_up.ico
# End Source File
# Begin Source File
SOURCE=.\res\arrowsel.ico
# End Source File
# Begin Source File
SOURCE=.\res\computer.ico
# End Source File
# Begin Source File
SOURCE=.\res\config.ico
# End Source File
# Begin Source File
SOURCE=.\res\documents.ico
# End Source File
# Begin Source File
SOURCE=".\explorer-en.rc"
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\res\explorer.ico
# End Source File
# Begin Source File
SOURCE=.\explorer_intres.h
# End Source File
# Begin Source File
SOURCE=.\explorer_intres.rc
# End Source File
# Begin Source File
SOURCE=.\res\favorites.ico
# End Source File
# Begin Source File
SOURCE=.\res\floating.ico
# End Source File
# Begin Source File
SOURCE=.\res\folder.ico
# End Source File
# Begin Source File
SOURCE=.\res\images.bmp
# End Source File
# Begin Source File
SOURCE=.\res\info.ico
# End Source File
# Begin Source File
SOURCE=.\res\logoff.ico
# End Source File
# Begin Source File
SOURCE=.\res\logov.bmp
# End Source File
# Begin Source File
SOURCE=.\res\logov16.bmp
# End Source File
# Begin Source File
SOURCE=.\res\logov256.bmp
# End Source File
# Begin Source File
SOURCE=.\res\network.ico
# End Source File
# Begin Source File
SOURCE=.\res\printer.ico
# End Source File
# Begin Source File
SOURCE=.\res\reactos.ico
# End Source File
# Begin Source File
SOURCE=".\res\ros-big.ico"
# End Source File
# Begin Source File
SOURCE=".\res\search-doc.ico"
# End Source File
# Begin Source File
SOURCE=.\res\search.ico
# End Source File
# Begin Source File
SOURCE=.\res\startmenu.ico
# End Source File
# Begin Source File
SOURCE=.\res\toolbar.bmp
# End Source File
# End Group
# Begin Group "taskbar"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\taskbar\desktopbar.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\desktopbar.h
# End Source File
# Begin Source File
SOURCE=.\taskbar\quicklaunch.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\quicklaunch.h
# End Source File
# Begin Source File
SOURCE=.\taskbar\startmenu.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\startmenu.h
# End Source File
# Begin Source File
SOURCE=.\taskbar\taskbar.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\taskbar.h
# End Source File
# Begin Source File
SOURCE=.\taskbar\traynotify.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\traynotify.h
# End Source File
# End Group
# Begin Group "desktop"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\desktop\desktop.cpp
# End Source File
# Begin Source File
SOURCE=.\desktop\desktop.h
# End Source File
# End Group
# Begin Group "shell"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\shell\entries.cpp
# End Source File
# Begin Source File
SOURCE=.\shell\entries.h
# End Source File
# Begin Source File
SOURCE=.\shell\mainframe.cpp
# End Source File
# Begin Source File
SOURCE=.\shell\mainframe.h
# End Source File
# Begin Source File
SOURCE=.\shell\shellbrowser.cpp
# End Source File
# Begin Source File
SOURCE=.\shell\shellbrowser.h
# End Source File
# Begin Source File
SOURCE=.\shell\shellfs.cpp
# End Source File
# Begin Source File
SOURCE=.\shell\startup.c
# SUBTRACT CPP /YX /Yc /Yu
# End Source File
# End Group
# Begin Group "dialogs"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\dialogs\settings.cpp
# End Source File
# Begin Source File
SOURCE=.\dialogs\settings.h
# End Source File
# End Group
# Begin Group "main"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\explorer.cpp
# End Source File
# Begin Source File
SOURCE=.\explorer.h
# End Source File
# Begin Source File
SOURCE=.\externals.h
# End Source File
# Begin Source File
SOURCE=.\globals.h
# End Source File
# Begin Source File
SOURCE=.\precomp.cpp
# ADD CPP /Yc"precomp.h"
# End Source File
# Begin Source File
SOURCE=.\precomp.h
# End Source File
# End Group
# End Target
# End Project

View File

@@ -3,7 +3,19 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
###############################################################################
Project: "rbuild"=.\rbuild.dsp - Package Owner=<4>
Project: "explorer"=.\explorer.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "make_explorer"=.\make_explorer.dsp - Package Owner=<4>
Package=<5>
{{{

95
explorer.h Normal file
View File

@@ -0,0 +1,95 @@
/*
* Copyright 2003, 2004, 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer clone, lean version
//
// explorer.h
//
// Martin Fuchs, 23.07.2003
//
#define _LIGHT_STARTMENU
//#define _LAZY_ICONEXTRACT
//#define _SINGLE_ICONEXTRACT
#include "utility/shellclasses.h"
#include "shell/entries.h"
#include "utility/window.h"
#define IDW_STATUSBAR 0x100
#define IDW_TOOLBAR 0x101
#define IDW_FIRST_CHILD 0xC000 /*0x200*/
#define PM_GET_CONTROLWINDOW (WM_APP+0x16)
#define PM_RESIZE_CHILDREN (WM_APP+0x17)
#define PM_GET_WIDTH (WM_APP+0x18)
#define CLASSNAME_FRAME TEXT("CabinetWClass") // same class name for frame window as in MS Explorer
#define CLASSNAME_CHILDWND TEXT("WFS_Child")
#define CLASSNAME_WINEFILETREE TEXT("WFS_Tree")
#include "shell/shellbrowser.h"
#ifndef ROSSHELL
/// Explorer command line parser
// for commands like "/e,/root,c:\"
// or "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}" (launch of control panel)
struct ExplorerCmd
{
ExplorerCmd()
: _flags(0),
_cmdShow(SW_SHOWNORMAL),
_valid_path(false)
{
}
ExplorerCmd(LPCTSTR url)
: _path(url),
_flags(0),
_cmdShow(SW_SHOWNORMAL),
_valid_path(true) //@@
{
}
bool ParseCmdLine(LPCTSTR lpCmdLine);
bool EvaluateOption(LPCTSTR option);
bool IsValidPath() const;
String _path;
int _flags; // OPEN_WINDOW_MODE
int _cmdShow;
bool _valid_path;
};
#include "shell/mainframe.h"
#endif

48
explorer.rbuild Normal file
View File

@@ -0,0 +1,48 @@
<module name="explorer" type="win32gui" installname="explorer.exe" allowwarnings="true">
<linkerflag>-luuid</linkerflag>
<linkerflag>-lstdc++</linkerflag>
<linkerflag>-fexceptions</linkerflag>
<include base="explorer">.</include>
<define name="__USE_W32API" />
<define name="UNICODE" />
<define name="WIN32" />
<define name="_WIN32_IE">0x0501</define>
<define name="_WIN32_WINNT">0x0501</define>
<define name="__WINDRES__" />
<library>kernel32</library>
<library>gdi32</library>
<library>user32</library>
<library>comctl32</library>
<library>ole32</library>
<library>shell32</library>
<pch>precomp.h</pch>
<directory name="desktop">
<file>desktop.cpp</file>
</directory>
<directory name="dialogs">
<file>settings.cpp</file>
</directory>
<directory name="shell">
<file>entries.cpp</file>
<file>shellfs.cpp</file>
<file>mainframe.cpp</file>
<file>shellbrowser.cpp</file>
<file>startup.c</file>
</directory>
<directory name="taskbar">
<file>desktopbar.cpp</file>
<file>taskbar.cpp</file>
<file>startmenu.cpp</file>
<file>traynotify.cpp</file>
<file>quicklaunch.cpp</file>
</directory>
<directory name="utility">
<file>shellclasses.cpp</file>
<file>utility.cpp</file>
<file>window.cpp</file>
<file>dragdropimpl.cpp</file>
<file>shellbrowserimpl.cpp</file>
</directory>
<file>explorer.cpp</file>
<file>explorer.rc</file>
</module>

52
explorer.rc Normal file
View File

@@ -0,0 +1,52 @@
#include <defines.h>
#include <reactos/resource.h>
#include "explorer_intres.rc"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
VS_VERSION_INFO VERSIONINFO
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", RES_STR_COMPANY_NAME
VALUE "FileDescription", "ReactOS Explorer\0"
VALUE "FileVersion", RES_STR_FILE_VERSION
VALUE "InternalName", "explorer\0"
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
VALUE "OriginalFilename", "explorer.exe\0"
VALUE "ProductName", RES_STR_PRODUCT_NAME
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#define IDS_VERSION_STR 5000
#define IDS_EXPLORER_VERSION_STR 5001
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_VERSION_STR RES_STR_PRODUCT_VERSION
IDS_EXPLORER_VERSION_STR "ReactOS %s Lean Explorer"
END

35
explorer.sln Normal file
View File

@@ -0,0 +1,35 @@

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "explorer", "explorer.vcproj", "{724B1B1C-4752-488D-9CC7-A0296F4C91E8}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_explorer", "make_explorer.vcproj", "{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
Unicode Debug|Win32 = Unicode Debug|Win32
Unicode Release|Win32 = Unicode Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Debug|Win32.ActiveCfg = Debug|Win32
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Debug|Win32.Build.0 = Debug|Win32
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Release|Win32.ActiveCfg = Release|Win32
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Release|Win32.Build.0 = Release|Win32
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{724B1B1C-4752-488D-9CC7-A0296F4C91E8}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Debug|Win32.ActiveCfg = Debug|Win32
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Release|Win32.ActiveCfg = Release|Win32
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Release|Win32.Build.0 = Release|Win32
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

1385
explorer.vcproj Normal file

File diff suppressed because it is too large Load Diff

147
explorer_intres.rc Normal file
View File

@@ -0,0 +1,147 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Neutral resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
#ifdef _WIN32
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_LOGOV BITMAP DISCARDABLE "res/logov.bmp"
IDB_LOGOV256 BITMAP DISCARDABLE "res/logov256.bmp"
IDB_LOGOV16 BITMAP DISCARDABLE "res/logov16.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDA_EXPLORER ACCELERATORS DISCARDABLE
BEGIN
"X", ID_FILE_EXIT, VIRTKEY, ALT, NOINVERT
END
IDA_SEARCH_PROGRAM ACCELERATORS DISCARDABLE
BEGIN
VK_F5, ID_REFRESH, VIRTKEY, NOINVERT
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef ROSSHELL\r\n"
"IDB_TOOLBAR BITMAP DISCARDABLE ""res/toolbar.bmp""\r\n"
"#endif\r\n"
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"IDS_VERSION_STR """"\r\n"
"#ifdef UNICODE\r\n"
"IDS_EXPLORER_VERSION_STR ""ROS Lean Explorer""\r\n"
"#else\r\n"
"IDS_EXPLORER_VERSION_STR ""ROS Lean Explorer Ansi""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_REACTOS ICON DISCARDABLE "res/reactos.ico"
IDI_EXPLORER ICON DISCARDABLE "res/explorer.ico"
IDI_STARTMENU ICON DISCARDABLE "res/startmenu.ico"
IDI_LOGOFF ICON DISCARDABLE "res/logoff.ico"
IDI_ARROW ICON DISCARDABLE "res/arrow.ico"
IDI_ARROW_SELECTED ICON DISCARDABLE "res/arrowsel.ico"
IDI_APPICON ICON DISCARDABLE "res/appicon.ico"
IDI_FLOATING ICON DISCARDABLE "res/floating.ico"
IDI_REACTOS_BIG ICON DISCARDABLE "res/ros-big.ico"
IDI_CONFIG ICON DISCARDABLE "res/config.ico"
IDI_DOCUMENTS ICON DISCARDABLE "res/documents.ico"
IDI_FAVORITES ICON DISCARDABLE "res/favorites.ico"
IDI_INFO ICON DISCARDABLE "res/info.ico"
IDI_APPS ICON DISCARDABLE "res/apps.ico"
IDI_SEARCH ICON DISCARDABLE "res/search.ico"
IDI_ACTION ICON DISCARDABLE "res/action.ico"
IDI_FOLDER ICON DISCARDABLE "res/folder.ico"
IDI_SEARCH_DOC ICON DISCARDABLE "res/search-doc.ico"
IDI_PRINTER ICON DISCARDABLE "res/printer.ico"
IDI_NETWORK ICON DISCARDABLE "res/network.ico"
IDI_COMPUTER ICON DISCARDABLE "res/computer.ico"
IDI_ARROW_UP ICON DISCARDABLE "res/arrow_up.ico"
IDI_ARROW_DOWN ICON DISCARDABLE "res/arrow_dwn.ico"
#endif // Neutral resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef ROSSHELL
IDB_TOOLBAR BITMAP DISCARDABLE "res/toolbar.bmp"
#endif
#ifndef _ROS_
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_VERSION_STR ""
#ifdef UNICODE
IDS_EXPLORER_VERSION_STR "ROS Lean Explorer"
#else
IDS_EXPLORER_VERSION_STR "ROS Lean Explorer Ansi"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

55
externals.h Normal file
View File

@@ -0,0 +1,55 @@
/*
* Copyright 2003, 2004 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer clone, lean version
//
// externals.h
//
// Martin Fuchs, 07.06.2003
//
#ifdef __cplusplus
extern "C" {
#endif
// launch start programs
extern int startup(int argc, char *argv[]);
// explorer main routine
extern int explorer_main(HINSTANCE hinstance, LPTSTR lpCmdLine, int cmdshow);
// display explorer/file manager window
extern void explorer_show_frame(int cmdshow, LPTSTR lpCmdLine=NULL);
// display explorer "About" dialog
extern void explorer_about(HWND hwndParent);
// test for already running desktop instance
extern BOOL IsAnyDesktopRunning();
// show shutdown dialog
extern void ShowExitWindowsDialog(HWND hwndOwner);
#ifdef __cplusplus
} // extern "C"
#endif

257
globals.h Normal file
View File

@@ -0,0 +1,257 @@
/*
* Copyright 2003, 2004, 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer clone, lean version
//
// globals.h
//
// Martin Fuchs, 23.07.2003
//
/// management of file types
struct FileTypeInfo {
String _classname;
String _displayname;
bool _neverShowExt;
};
struct FileTypeManager : public map<String, FileTypeInfo>
{
typedef map<String, FileTypeInfo> super;
const FileTypeInfo& operator[](String ext);
LPCTSTR set_type(struct ShellEntry* entry, bool dont_hide_ext=false);
};
enum ICON_TYPE {
IT_STATIC,
IT_CACHED,
IT_DYNAMIC,
IT_SYSCACHE
};
enum ICON_ID {
ICID_UNKNOWN,
ICID_NONE,
ICID_FOLDER,
//ICID_DOCUMENT,
ICID_APP,
ICID_EXPLORER,
ICID_CONFIG,
ICID_DOCUMENTS,
ICID_FAVORITES,
ICID_INFO,
ICID_APPS,
ICID_SEARCH,
ICID_ACTION,
ICID_SEARCH_DOC,
ICID_PRINTER,
ICID_NETWORK,
ICID_COMPUTER,
ICID_LOGOFF,
ICID_DYNAMIC
};
struct Icon {
Icon();
Icon(ICON_ID id, UINT nid);
Icon(ICON_TYPE itype, int id, HICON hIcon);
Icon(ICON_TYPE itype, int id, int sys_idx);
operator ICON_ID() const {return _id;}
void draw(HDC hdc, int x, int y, int cx, int cy, COLORREF bk_color, HBRUSH bk_brush) const;
HBITMAP create_bitmap(COLORREF bk_color, HBRUSH hbrBkgnd, HDC hdc_wnd) const;
int get_sysiml_idx() const {return _itype==IT_SYSCACHE? _sys_idx: -1;}
bool destroy() {if (_itype == IT_DYNAMIC) {DestroyIcon(_hicon); return true;} else return false;}
protected:
ICON_ID _id;
ICON_TYPE _itype;
HICON _hicon;
int _sys_idx;
};
struct SysCacheIcon : public Icon {
SysCacheIcon(int id, int sys_idx)
: Icon(IT_SYSCACHE, id, sys_idx) {}
};
struct IconCache {
IconCache() : _himlSys(0) {}
void init();
const Icon& extract(const String& path);
const Icon& extract(LPCTSTR path, int idx);
const Icon& extract(IExtractIcon* pExtract, LPCTSTR path, int idx);
const Icon& add(HICON hIcon, ICON_TYPE type=IT_DYNAMIC);
const Icon& add(int sys_idx/*, ICON_TYPE type=IT_SYSCACHE*/);
const Icon& get_icon(int icon_id);
HIMAGELIST get_sys_imagelist() const {return _himlSys;}
void free_icon(int icon_id);
protected:
static int s_next_id;
typedef map<int, Icon> IconMap;
IconMap _icons;
typedef map<String, ICON_ID> PathMap;
PathMap _pathMap;
typedef pair<String, int> CachePair;
typedef map<CachePair, ICON_ID> PathIdxMap;
PathIdxMap _pathIdxMap;
HIMAGELIST _himlSys;
};
/// create a bitmap from an icon
extern HBITMAP create_bitmap_from_icon(HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd);
/// desktop management
typedef pair<HWND, DWORD> MinimizeStruct;
struct Desktop
{
set<HWND> _windows;
WindowHandle _hwndForeground;
list<MinimizeStruct> _minimized;
};
typedef Desktop DesktopRef;
#define DESKTOP_COUNT 4
struct Desktops : public vector<DesktopRef>
{
Desktops();
~Desktops();
void init();
void SwitchToDesktop(int idx);
void ToggleMinimize();
int _current_desktop;
};
/// structure containing global variables of Explorer
extern struct ExplorerGlobals
{
ExplorerGlobals();
void init(HINSTANCE hInstance);
HINSTANCE _hInstance;
UINT _cfStrFName;
#ifndef ROSSHELL
ATOM _hframeClass;
HWND _hMainWnd;
bool _desktop_mode;
bool _prescan_nodes;
#endif
FILE* _log;
#ifndef __MINGW32__ // SHRestricted() missing in MinGW (as of 29.10.2003)
DWORD(STDAPICALLTYPE* _SHRestricted)(RESTRICTIONS);
#endif
FileTypeManager _ftype_mgr;
IconCache _icon_cache;
HWND _hwndDesktopBar;
HWND _hwndShellView;
HWND _hwndDesktop;
Desktops _desktops;
} g_Globals;
/// convenient loading of string resources
struct ResString : public String
{
ResString(UINT nid);
};
/// convenient loading of standard (32x32) icon resources
struct ResIcon
{
ResIcon(UINT nid);
operator HICON() const {return _hicon;}
protected:
HICON _hicon;
};
/// convenient loading of small (16x16) icon resources
struct SmallIcon
{
SmallIcon(UINT nid);
operator HICON() const {return _hicon;}
protected:
HICON _hicon;
};
/// convenient loading of icon resources with specified sizes
struct ResIconEx
{
ResIconEx(UINT nid, int w, int h);
operator HICON() const {return _hicon;}
protected:
HICON _hicon;
};
/// set big and small icons out of the resources for a window
extern void SetWindowIcon(HWND hwnd, UINT nid);
/// convenient loading of bitmap resources
struct ResBitmap
{
ResBitmap(UINT nid);
~ResBitmap() {DeleteObject(_hBmp);}
operator HBITMAP() const {return _hBmp;}
protected:
HBITMAP _hBmp;
};

147
make_explorer.dsp Normal file
View File

@@ -0,0 +1,147 @@
# Microsoft Developer Studio Project File - Name="make_explorer" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) External Target" 0x0106
CFG=make_explorer - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "make_explorer.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "make_explorer.mak" CFG="make_explorer - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "make_explorer - Win32 Release" (based on "Win32 (x86) External Target")
!MESSAGE "make_explorer - Win32 Debug" (based on "Win32 (x86) External Target")
!MESSAGE "make_explorer - Win32 Unicode Debug" (based on "Win32 (x86) External Target")
!MESSAGE "make_explorer - Win32 Unicode Release" (based on "Win32 (x86) External Target")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
!IF "$(CFG)" == "make_explorer - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Cmd_Line "NMAKE /f make_explorer.mak"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "make_explorer.exe"
# PROP BASE Bsc_Name "make_explorer.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "explorer.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
!ELSEIF "$(CFG)" == "make_explorer - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Cmd_Line "NMAKE /f make_explorer.mak"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "make_explorer.exe"
# PROP BASE Bsc_Name "make_explorer.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0 DEBUG=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "explorer.exe"
# PROP Bsc_Name "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0 DEBUG=1"
# PROP Target_Dir ""
!ELSEIF "$(CFG)" == "make_explorer - Win32 Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "UDebug"
# PROP BASE Intermediate_Dir "UDebug"
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1 DEBUG=1"
# PROP BASE Rebuild_Opt "clean all"
# PROP BASE Target_File "explorer.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "UDebug"
# PROP Intermediate_Dir "UDebug"
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1 DEBUG=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "explorer.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
!ELSEIF "$(CFG)" == "make_explorer - Win32 Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "URelease"
# PROP BASE Intermediate_Dir "URelease"
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1"
# PROP BASE Rebuild_Opt "clean all"
# PROP BASE Target_File "explorer.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "URelease"
# PROP Intermediate_Dir "URelease"
# PROP Cmd_Line "make -f Makefile-MinGW UNICODE=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "explorer.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
!ENDIF
# Begin Target
# Name "make_explorer - Win32 Release"
# Name "make_explorer - Win32 Debug"
# Name "make_explorer - Win32 Unicode Debug"
# Name "make_explorer - Win32 Unicode Release"
!IF "$(CFG)" == "make_explorer - Win32 Release"
!ELSEIF "$(CFG)" == "make_explorer - Win32 Debug"
!ELSEIF "$(CFG)" == "make_explorer - Win32 Unicode Debug"
!ELSEIF "$(CFG)" == "make_explorer - Win32 Unicode Release"
!ENDIF
# Begin Source File
SOURCE=.\Makefile
# End Source File
# Begin Source File
SOURCE=".\Makefile-MinGW"
# End Source File
# Begin Source File
SOURCE=".\Makefile-precomp"
# End Source File
# End Target
# End Project

125
make_explorer.vcproj Normal file
View File

@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="make_explorer"
ProjectGUID="{2E70E02F-5DAE-453B-BE2C-C35CE8B350D5}"
RootNamespace="make_explorer"
Keyword="MakeFileProj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Unicode Release|Win32"
OutputDirectory=".\URelease"
IntermediateDirectory=".\URelease"
ConfigurationType="0"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="make -f Makefile-MinGW UNICODE=1"
ReBuildCommandLine="make -f Makefile-MinGW UNICODE=1 clean all"
CleanCommandLine=""
Output="explorer.exe"
PreprocessorDefinitions=""
IncludeSearchPath=""
ForcedIncludes=""
AssemblySearchPath=""
ForcedUsingAssemblies=""
CompileAsManaged=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="0"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="msdevfilt -gcc -pipe &quot;perl d:\tools\gSTLFilt.pl&quot; make -f Makefile-MinGW UNICODE=0"
ReBuildCommandLine="msdevfilt -gcc -pipe &quot;perl d:\tools\gSTLFilt.pl&quot; make -f Makefile-MinGW UNICODE=0 clean all"
CleanCommandLine=""
Output="explorer.exe"
PreprocessorDefinitions=""
IncludeSearchPath=""
ForcedIncludes=""
AssemblySearchPath=""
ForcedUsingAssemblies=""
CompileAsManaged=""
/>
</Configuration>
<Configuration
Name="Unicode Debug|Win32"
OutputDirectory=".\UDebug"
IntermediateDirectory=".\UDebug"
ConfigurationType="0"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="msdevfilt -gcc -pipe &quot;perl d:\tools\gSTLFilt.pl&quot; make -f Makefile-MinGW UNICODE=1 DEBUG=1"
ReBuildCommandLine="msdevfilt -gcc -pipe &quot;perl d:\tools\gSTLFilt.pl&quot; make -f Makefile-MinGW UNICODE=1 DEBUG=1 clean all"
CleanCommandLine=""
Output="explorer.exe"
PreprocessorDefinitions=""
IncludeSearchPath=""
ForcedIncludes=""
AssemblySearchPath=""
ForcedUsingAssemblies=""
CompileAsManaged=""
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="0"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCNMakeTool"
BuildCommandLine="msdevfilt -gcc -pipe &quot;perl d:\tools\gSTLFilt.pl&quot; make -f Makefile-MinGW UNICODE=0 DEBUG=1"
ReBuildCommandLine="msdevfilt -gcc -pipe &quot;perl d:\tools\gSTLFilt.pl&quot; make -f Makefile-MinGW UNICODE=0 DEBUG=1 clean all"
CleanCommandLine=""
Output="explorer.exe"
PreprocessorDefinitions=""
IncludeSearchPath=""
ForcedIncludes=""
AssemblySearchPath=""
ForcedUsingAssemblies=""
CompileAsManaged=""
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath="Makefile"
>
</File>
<File
RelativePath="Makefile-MinGW"
>
</File>
<File
RelativePath="Makefile-precomp"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

143
make_rosshell.dsp Normal file
View File

@@ -0,0 +1,143 @@
# Microsoft Developer Studio Project File - Name="make_rosshell" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) External Target" 0x0106
CFG=make_rosshell - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "make_rosshell.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "make_rosshell.mak" CFG="make_rosshell - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "make_rosshell - Win32 Release" (based on "Win32 (x86) External Target")
!MESSAGE "make_rosshell - Win32 Debug" (based on "Win32 (x86) External Target")
!MESSAGE "make_rosshell - Win32 Unicode Debug" (based on "Win32 (x86) External Target")
!MESSAGE "make_rosshell - Win32 Unicode Release" (based on "Win32 (x86) External Target")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
!IF "$(CFG)" == "make_rosshell - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Cmd_Line "NMAKE /f make_rosshell.mak"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "make_rosshell.exe"
# PROP BASE Bsc_Name "make_rosshell.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Make-rosshell-MinGW UNICODE=0"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "explorer.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Cmd_Line "NMAKE /f make_rosshell.mak"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "make_rosshell.exe"
# PROP BASE Bsc_Name "make_rosshell.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Make-rosshell-MinGW UNICODE=0 DEBUG=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "explorer.exe"
# PROP Bsc_Name "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=0 DEBUG=1"
# PROP Target_Dir ""
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "UDebug"
# PROP BASE Intermediate_Dir "UDebug"
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1 DEBUG=1"
# PROP BASE Rebuild_Opt "clean all"
# PROP BASE Target_File "explorer.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "UDebug"
# PROP Intermediate_Dir "UDebug"
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Make-rosshell-MinGW UNICODE=1 DEBUG=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "explorer.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "URelease"
# PROP BASE Intermediate_Dir "URelease"
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-MinGW UNICODE=1"
# PROP BASE Rebuild_Opt "clean all"
# PROP BASE Target_File "explorer.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "URelease"
# PROP Intermediate_Dir "URelease"
# PROP Cmd_Line "make -f Make-rosshell-MinGW UNICODE=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "explorer.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
!ENDIF
# Begin Target
# Name "make_rosshell - Win32 Release"
# Name "make_rosshell - Win32 Debug"
# Name "make_rosshell - Win32 Unicode Debug"
# Name "make_rosshell - Win32 Unicode Release"
!IF "$(CFG)" == "make_rosshell - Win32 Release"
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Debug"
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Unicode Debug"
!ELSEIF "$(CFG)" == "make_rosshell - Win32 Unicode Release"
!ENDIF
# Begin Source File
SOURCE=".\Make-rosshell.mak"
# End Source File
# Begin Source File
SOURCE=".\Make-rosshell-MinGW"
# End Source File
# End Target
# End Project

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2000 Francois Gouget
* Copyright 2004 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -13,13 +13,16 @@
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <winresrc.h>
#ifdef IDC_STATIC
#undef IDC_STATIC
#endif
#define IDC_STATIC (-1)
//
// Explorer clone - precompiled header support
//
// precomp.h
//
// Martin Fuchs, 17.05.2004
//
#include "precomp.h"

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2007 Francois Gouget
* Copyright 2004 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -13,26 +13,25 @@
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __WINE_BCRYPT_H
#define __WINE_BCRYPT_H
#ifndef WINAPI
#define WINAPI __stdcall
#endif
//
// Explorer clone - precompiled header support
//
// precomp.h
//
// Martin Fuchs, 17.05.2004
//
#ifndef IN
#define IN
#endif
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1
#ifndef OUT
#define OUT
#endif
#include "utility/utility.h"
#ifndef OPTIONAL
#define OPTIONAL
#endif
#include "explorer.h"
#include "desktop/desktop.h"
#endif /* __WINE_BCRYPT_H */
#include "globals.h"
#include "externals.h"

View File

@@ -1,21 +0,0 @@
MAKEFLAGS += --no-print-directory
$(DEFAULT):
@$(MAKE) -C $(TOP) $(DEFAULT)
all:
@$(MAKE) -C $(TOP) all
depends:
@$(MAKE) -C $(TOP) $(DEFAULT)_depends
install:
@$(MAKE) -C $(TOP) $(DEFAULT)_install
clean:
@$(MAKE) -C $(TOP) $(DEFAULT)_clean
test:
@$(MAKE) -C $(TOP) $(DEFAULT)_test
$(DEFAULT)_clean: clean

2
readme.txt Normal file
View File

@@ -0,0 +1,2 @@
This is the purist version of explorer without additional bells and whistles.

BIN
res/action.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
res/appicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

BIN
res/apps.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
res/arrow.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

BIN
res/arrow_dwn.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

BIN
res/arrow_up.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

BIN
res/arrowsel.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

BIN
res/computer.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/config.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/documents.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/explorer.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
res/favorites.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/floating.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

BIN
res/folder.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/info.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/logoff.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/logov.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
res/logov16.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
res/logov256.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
res/network.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/printer.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/reactos.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/ros-big.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
res/search-doc.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
res/search.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/startmenu.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
res/toolbar.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

152
resource.h Normal file
View File

@@ -0,0 +1,152 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by explorer_intres.rc
//
#define IDS_TITLE 1
#define IDS_START 2
#define IDS_LOGOFF 3
#define IDS_SHUTDOWN 4
#define IDS_LAUNCH 5
#define IDS_START_HELP 6
#define IDS_SEARCH_FILES 7
#define IDS_DOCUMENTS 8
#define IDS_FAVORITES 9
#define IDS_PROGRAMS 10
#define IDS_SETTINGS 11
#define IDS_EXPLORE 12
#define IDS_EMPTY 13
#define IDS_RECENT 14
#define IDS_ADMIN 15
#define IDS_NETWORK 16
#define IDS_CONNECTIONS 17
#define IDS_DRIVES 18
#define IDS_SEARCH_COMPUTER 19
#define IDS_CONTROL_PANEL 21
#define IDS_PRINTERS 22
#define IDS_SEARCH_PRG 24
#define IDS_ALL_USERS 25
#define IDS_SEARCH 26
#define IDS_ABOUT_EXPLORER 27
#define IDS_LAUNCH_MANY_PROGRAMS 28
#define IDS_DESKTOPBAR_SETTINGS 29
#define IDS_DESKTOP 30
#define IDS_TASKBAR 31
#define IDS_STARTMENU 32
#define IDS_MINIMIZE_ALL 33
#define IDS_DESKTOP_NUM 34
#define IDS_TERMINATE 45
#define IDI_REACTOS 100
#define IDI_EXPLORER 101
#define IDI_STARTMENU 102
#define IDB_TOOLBAR 103
#define IDA_EXPLORER 104
#define ID_ACTIVATE 105
#define IDD_DESKBAR_DESKTOP 106
#define IDD_EXECUTE 108
#define IDR_MAINFRAME 109
#define IDM_MAINFRAME 110
#define ID_EXECUTE 111
#define IDM_WINEFILE 112
#define IDI_LOGOFF 124
#define IDI_FOLDERARROW 125
#define IDI_ARROW 125
#define IDI_ARROW_SELECTED 126
#define IDB_LOGOV 129
#define IDB_LOGOV256 130
#define IDA_SEARCH_PROGRAM 133
#define IDI_APPICON 134
#define IDI_FLOATING 135
#define IDD_ABOUT_EXPLORER 135
#define IDI_REACTOS_BIG 137
#define IDI_DOCUMENTS 138
#define IDI_CONFIG 139
#define IDI_FAVORITES 140
#define IDI_INFO 141
#define IDI_APPS 142
#define IDI_SEARCH 143
#define IDI_ACTION 144
#define IDI_FOLDER 145
#define IDI_SEARCH_DOC 146
#define IDI_PRINTER 147
#define IDI_NETWORK 148
#define IDI_COMPUTER 149
#define IDM_DESKTOPBAR 150
#define IDD_DESKBAR_TASKBAR 153
#define IDB_ICON_ALIGN_0 153
#define IDD_DESKBAR_STARTMENU 154
#define IDB_ICON_ALIGN_1 154
#define IDB_ICON_ALIGN_2 155
#define IDB_ICON_ALIGN_3 156
#define IDB_ICON_ALIGN_4 157
#define IDB_ICON_ALIGN_5 158
#define IDB_ICON_ALIGN_6 159
#define IDB_ICON_ALIGN_7 160
#define IDB_ICON_ALIGN_8 161
#define IDB_ICON_ALIGN_9 162
#define IDB_ICON_ALIGN_10 163
#define IDB_LOGOV16 164
#define IDI_ARROW_UP 166
#define IDI_ARROW_DOWN 167
#define ID_VIEW_NAME 401
#define ID_VIEW_ALL_ATTRIBUTES 402
#define ID_VIEW_SELECTED_ATTRIBUTES 403
#define ID_VIEW_STATUSBAR 503
#define ID_VIEW_TOOL_BAR 508
#define IDC_ROS_EXPLORER 1000
#define ID_DESKTOP_VERSION 1003
#define IDC_WWW 1012
#define IDC_TOPIC 1017
#define IDC_MAILS_FOUND 1018
#define IDC_VERSION_TXT 1029
#define ID_REFRESH 1704
#define ID_ABOUT_WINEFILE 1705
#define IDS_VERSION_STR 5000
#define IDS_EXPLORER_VERSION_STR 5001
#define IDC_FILETREE 10001
#define ID_EXPLORER_FAQ 10002
#define ID_WINDOW_AUTOSORT 0x8003
#define ID_PREFERED_SIZES 0x8005
#define ID_ABOUT_WINDOWS 40002
#define ID_ABOUT_EXPLORER 40003
#define ID_DESKTOPBAR_SETTINGS 40004
#define ID_BROWSE_BACK 40005
#define ID_BROWSE_FORWARD 40006
#define ID_STOP 40009
#define ID_MINIMIZE_ALL 40010
#define ID_EXPLORE 40011
#define ID_TASKMGR 40012
#define ID_BROWSE_UP 40013
#define ID_EDIT_UNDO 40019
#define ID_EDIT_COPY 40020
#define ID_EDIT_CUt 40021
#define ID_TOOLS_MAP 40022
#define ID_EDIT_PASTE 40023
#define ID_EDIT_PASTE_SHORTCUT 40024
#define ID_TOOLS_OPTIONS 40025
#define ID_TOOLS_DISCONNECT 40026
#define ID_EDIT_COPY_FOLDER 40027
#define ID_EDIT_MOVE_TO_FOLDER 40028
#define ID_EDIT_SELECT_ALL 40029
#define ID_EDIT_INVERT_SELECTION 40030
#define ID_FILE_CREATESHORTCUT 40031
#define ID_FILE_DELETE 40032
#define ID_FILE_RENAME 40033
#define ID_FILE_PROPERTIES 40034
#define ID_SWITCH_DESKTOP_1 50000
#define ID_WINDOW_NEW 0xE130
#define ID_EDIT_PROPERTIES 57656
#define ID_FILE_EXIT 0xE141
#define ID_HELP_USING 0xE144
#define ID_HELP 0xE146
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 169
#define _APS_NEXT_COMMAND_VALUE 40024
#define _APS_NEXT_CONTROL_VALUE 1035
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -1,117 +0,0 @@
::
:: This script is called from the Makefile command line within Visual Studio using the following parameters:
::
:: %1 - $(build)
:: %2 - $(target)
::
:: Examples:
::
:: Call build.bat build ntoskrnl
:: Call build.bat clean win32k
::
@echo off
if "%1"=="" goto :err_params
if "%2"=="" goto :err_params
:: Get the RosBE path... ::
:: Set the command we'll use to check if RosBE exists
set _IS_ROSBE_INSTALLED_COMMAND="reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\ReactOS Build Environment for Windows" /v UninstallString"
:: Check the key actually exists !!!!FIXME: Why is this returning 'The system cannot find the path specified.'!!!!
%_IS_ROSBE_INSTALLED_COMMAND%
IF NOT errorlevel 0 goto :err_no_rosbe
:: This is a bit hackish. What we do is look for REG_SZ which is the second token on the second line and dump it into i
:: We then assign all remaining text to the next variable in the sequence, which is j. This leaves us with the path
for /F "tokens=2,* skip=1 delims=\ " %%i in ('%_IS_ROSBE_INSTALLED_COMMAND%') do (
set _ROSBE_UNINSTALL_PATH_=%%j
)
:: Now strip the file name from the end of the path and we should have our RosBE install directory
set _ROSBE_PATH_DIR=
set _ROSBE_PATH_=
for %%i in ("%_ROSBE_UNINSTALL_PATH_%") do set _ROSBE_PATH_DIR=%%~di
for %%i in ("%_ROSBE_UNINSTALL_PATH_%") do set "_ROSBE_PATH_=%%~pi"
set "_ROSBE_FULL_PATH_=%_ROSBE_PATH_DIR%%_ROSBE_PATH_%"
::echo RosBE insall path = %_ROSBE_FULL_PATH_%
:: Set the path which contains our build tools
set _ROSBE_BIN_PATH=%_ROSBE_FULL_PATH_%i386\bin
:: Add the path to the search path
path=%path%;%_ROSBE_BIN_PATH%
:: Set the make path
set _MAKE_COMMAND=""
if exist "%_ROSBE_BIN_PATH%\mingw32-make.exe" (
set _MAKE_COMMAND=mingw32-make.exe
)
if exist "%_ROSBE_BIN_PATH%\make.exe" (
set _MAKE_COMMAND=make.exe
)
if %_MAKE_COMMAND% == "" (
goto err_no_make
)
:: This file is located in the source root
set _ROS_SOURCE_ROOT=%~dp0
:: Change the current dir to the source root
cd %_ROS_SOURCE_ROOT%
:: Run the requested build task
if "%1" == "build" (
goto :build
)
if "%1" == "rebuild" (
goto clean
)
if "%1" == "clean" (
goto :clean
)
goto :err_params
:clean
echo.
echo Cleaning...
echo.
call "%_MAKE_COMMAND%" -j 1 %2%_clean
if "%1" == "rebuild" (
goto :build
)
goto :exit
:build
echo.
echo Building...
echo.
call "%_MAKE_COMMAND%" -j 1 %2%
goto :exit
:err_no_make
echo.
echo Cannot find a make executable
goto :err_no_rosbe
:err_no_rosbe
echo.
echo You need to have RosBE installed to use this configuration
echo.
exit 1
:err_params
echo.
echo Invalid parameters required, Check your command line.
echo.
exit 2
:exit
echo.

460
rosshell.dsp Normal file
View File

@@ -0,0 +1,460 @@
# Microsoft Developer Studio Project File - Name="rosshell" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=rosshell - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "rosshell.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "rosshell.mak" CFG="rosshell - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "rosshell - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "rosshell - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "rosshell - Win32 Unicode Release" (based on "Win32 (x86) Console Application")
!MESSAGE "rosshell - Win32 Unicode Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "rosshell - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GR /GX /O1 /D "NDEBUG" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /Yu"precomp.h" /FD /c
# ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386
# SUBTRACT LINK32 /pdb:none /force
!ELSEIF "$(CFG)" == "rosshell - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /FR /Yu"precomp.h" /FD /GZ /c
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# SUBTRACT LINK32 /pdb:none /force
!ELSEIF "$(CFG)" == "rosshell - Win32 Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "URelease"
# PROP BASE Intermediate_Dir "URelease"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "URelease"
# PROP Intermediate_Dir "URelease"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D "NDEBUG" /D "UNICODE" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /Yu"precomp.h" /FD /c
# ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386
# SUBTRACT LINK32 /pdb:none /force
!ELSEIF "$(CFG)" == "rosshell - Win32 Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "UDebug"
# PROP BASE Intermediate_Dir "UDebug"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "UDebug"
# PROP Intermediate_Dir "UDebug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /FR /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "UNICODE" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /FR /Yu"precomp.h" /FD /GZ /c
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# SUBTRACT LINK32 /pdb:none /force
!ENDIF
# Begin Target
# Name "rosshell - Win32 Release"
# Name "rosshell - Win32 Debug"
# Name "rosshell - Win32 Unicode Release"
# Name "rosshell - Win32 Unicode Debug"
# Begin Group "utility"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\utility\dragdropimpl.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\dragdropimpl.h
# End Source File
# Begin Source File
SOURCE=.\utility\shellbrowserimpl.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\shellbrowserimpl.h
# End Source File
# Begin Source File
SOURCE=.\utility\shellclasses.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\shellclasses.h
# End Source File
# Begin Source File
SOURCE=.\utility\treedroptarget.h
# End Source File
# Begin Source File
SOURCE=.\utility\utility.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\utility.h
# End Source File
# Begin Source File
SOURCE=.\utility\window.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\window.h
# End Source File
# End Group
# Begin Group "resources"
# PROP Default_Filter "bmp,ico"
# Begin Source File
SOURCE=.\res\action.ico
# End Source File
# Begin Source File
SOURCE=.\res\appicon.ico
# End Source File
# Begin Source File
SOURCE=.\res\apps.ico
# End Source File
# Begin Source File
SOURCE=.\res\arrow.ico
# End Source File
# Begin Source File
SOURCE=.\res\arrow_dwn.ico
# End Source File
# Begin Source File
SOURCE=.\res\arrow_up.ico
# End Source File
# Begin Source File
SOURCE=.\res\arrowsel.ico
# End Source File
# Begin Source File
SOURCE=.\res\computer.ico
# End Source File
# Begin Source File
SOURCE=.\res\config.ico
# End Source File
# Begin Source File
SOURCE=.\res\documents.ico
# End Source File
# Begin Source File
SOURCE=".\explorer-en.rc"
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\res\explorer.ico
# End Source File
# Begin Source File
SOURCE=.\explorer_intres.h
# End Source File
# Begin Source File
SOURCE=.\explorer_intres.rc
# End Source File
# Begin Source File
SOURCE=.\res\favorites.ico
# End Source File
# Begin Source File
SOURCE=.\res\floating.ico
# End Source File
# Begin Source File
SOURCE=.\res\folder.ico
# End Source File
# Begin Source File
SOURCE=.\res\images.bmp
# End Source File
# Begin Source File
SOURCE=.\res\info.ico
# End Source File
# Begin Source File
SOURCE=.\res\logoff.ico
# End Source File
# Begin Source File
SOURCE=.\res\logov.bmp
# End Source File
# Begin Source File
SOURCE=.\res\logov16.bmp
# End Source File
# Begin Source File
SOURCE=.\res\logov256.bmp
# End Source File
# Begin Source File
SOURCE=.\res\network.ico
# End Source File
# Begin Source File
SOURCE=.\res\printer.ico
# End Source File
# Begin Source File
SOURCE=.\res\reactos.ico
# End Source File
# Begin Source File
SOURCE=".\res\ros-big.ico"
# End Source File
# Begin Source File
SOURCE=.\res\rosshell.ico
# End Source File
# Begin Source File
SOURCE=".\res\search-doc.ico"
# End Source File
# Begin Source File
SOURCE=.\res\search.ico
# End Source File
# Begin Source File
SOURCE=.\res\startmenu.ico
# End Source File
# Begin Source File
SOURCE=.\res\toolbar.bmp
# End Source File
# End Group
# Begin Group "taskbar"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\taskbar\desktopbar.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\desktopbar.h
# End Source File
# Begin Source File
SOURCE=.\taskbar\quicklaunch.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\quicklaunch.h
# End Source File
# Begin Source File
SOURCE=.\taskbar\startmenu.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\startmenu.h
# End Source File
# Begin Source File
SOURCE=.\taskbar\taskbar.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\taskbar.h
# End Source File
# Begin Source File
SOURCE=.\taskbar\traynotify.cpp
# End Source File
# Begin Source File
SOURCE=.\taskbar\traynotify.h
# End Source File
# End Group
# Begin Group "desktop"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\desktop\desktop.cpp
# End Source File
# Begin Source File
SOURCE=.\desktop\desktop.h
# End Source File
# End Group
# Begin Group "shell"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\shell\entries.cpp
# End Source File
# Begin Source File
SOURCE=.\shell\entries.h
# End Source File
# Begin Source File
SOURCE=.\shell\shellbrowser.h
# End Source File
# Begin Source File
SOURCE=.\shell\shellfs.cpp
# End Source File
# Begin Source File
SOURCE=.\shell\shellfs.h
# End Source File
# Begin Source File
SOURCE=.\shell\startup.c
# SUBTRACT CPP /YX /Yc /Yu
# End Source File
# Begin Source File
SOURCE=.\shell\winfs.cpp
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\shell\winfs.h
# End Source File
# End Group
# Begin Group "dialogs"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\dialogs\settings.cpp
# End Source File
# Begin Source File
SOURCE=.\dialogs\settings.h
# End Source File
# End Group
# Begin Group "main"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\explorer.cpp
# End Source File
# Begin Source File
SOURCE=.\explorer.h
# End Source File
# Begin Source File
SOURCE=.\externals.h
# End Source File
# Begin Source File
SOURCE=.\globals.h
# End Source File
# Begin Source File
SOURCE=.\precomp.cpp
# ADD CPP /Yc"precomp.h"
# End Source File
# Begin Source File
SOURCE=.\precomp.h
# End Source File
# End Group
# End Target
# End Project

41
rosshell.dsw Normal file
View File

@@ -0,0 +1,41 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "rosshell"=.\rosshell.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "make_rosshell"=.\make_rosshell.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

View File

@@ -1,217 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _INC_MINGW
#define _INC_MINGW
#define _INTEGRAL_MAX_BITS 64
#ifndef MINGW64
#define MINGW64
#define MINGW64_VERSION 1.0
#define MINGW64_VERSION_MAJOR 1
#define MINGW64_VERSION_MINOR 0
#define MINGW64_VERSION_STATE "alpha"
#endif
#ifdef _WIN64
#ifdef __stdcall
#undef __stdcall
#endif
#define __stdcall
#endif
#ifdef __GNUC__
/* These compilers do support __declspec */
# if !defined(__MINGW32__) && !defined(__MINGW64__) && !defined(__CYGWIN32__)
# define __declspec(x) __attribute__((x))
# endif
#endif
#ifdef _MSC_VER
#define __restrict__ /* nothing */
#endif
#if defined (__GNUC__) && defined (__GNUC_MINOR__)
#define __MINGW_GNUC_PREREQ(major, minor) \
(__GNUC__ > (major) \
|| (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
#else
#define __MINGW_GNUC_PREREQ(major, minor) 0
#endif
#if defined (_MSC_VER)
#define __MINGW_MSC_PREREQ(major, minor) (_MSC_VER >= (major * 100 + minor * 10))
#else
#define __MINGW_MSC_PREREQ(major, minor) 0
#endif
#define USE___UUIDOF 0
#ifdef __cplusplus
# define __CRT_INLINE inline
#elif defined(_MSC_VER)
# define __CRT_INLINE __inline
#elif defined(__GNUC__)
# if ( __MINGW_GNUC_PREREQ(4, 3) && __STDC_VERSION__ >= 199901L)
# define __CRT_INLINE extern inline __attribute__((__always_inline__,__gnu_inline__))
# else
# define __CRT_INLINE extern __inline__ __attribute__((__always_inline__))
# endif
#endif
#ifdef __cplusplus
# define __UNUSED_PARAM(x)
#else
# ifdef __GNUC__
# define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
# else
# define __UNUSED_PARAM(x) x
# endif
#endif
#ifdef __cplusplus
# define __unaligned
#else
# ifdef __GNUC__
# define __unaligned
# elif defined(_MSC_VER) && !defined(_M_IA64) && !defined(_M_AMD64)
# define __unaligned
# else
# define __unaligned
# endif
#endif
#ifdef __GNUC__
#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
#elif __MINGW_MSC_PREREQ(12, 0)
#define __MINGW_ATTRIB_NORETURN __declspec(noreturn)
#define __MINGW_ATTRIB_CONST
#else
#define __MINGW_ATTRIB_NORETURN
#define __MINGW_ATTRIB_CONST
#endif
#if __MINGW_GNUC_PREREQ (3, 0)
#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
#elif __MINGW_MSC_PREREQ(14, 0)
#define __MINGW_ATTRIB_MALLOC __declspec(noalias) __declspec(restrict)
#define __MINGW_ATTRIB_PURE
#else
#define __MINGW_ATTRIB_MALLOC
#define __MINGW_ATTRIB_PURE
#endif
/* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's
variadiac macro facility, because variadic macros cause syntax
errors with --traditional-cpp. */
#if __MINGW_GNUC_PREREQ (3, 3)
#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
#else
#define __MINGW_ATTRIB_NONNULL(arg)
#endif /* GNUC >= 3.3 */
#ifdef __GNUC__
#define __MINGW_ATTRIB_UNUSED __attribute__ ((__unused__))
#else
#define __MINGW_ATTRIB_UNUSED
#endif /* ATTRIBUTE_UNUSED */
#if __MINGW_GNUC_PREREQ (3, 1)
#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
#elif __MINGW_MSC_PREREQ(12, 0)
#define __MINGW_ATTRIB_DEPRECATED __declspec(deprecated)
#else
#define __MINGW_ATTRIB_DEPRECATED
#endif
#if __MINGW_GNUC_PREREQ (3, 3)
#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
#elif __MINGW_MSC_PREREQ(12, 0) && defined (__cplusplus)
#define __MINGW_NOTHROW __declspec(nothrow)
#else
#define __MINGW_NOTHROW
#endif
/* TODO: Mark (almost) all CRT functions as __MINGW_NOTHROW. This will
allow GCC to optimize away some EH unwind code, at least in DW2 case. */
#ifndef __MINGW_EXTENSION
#if defined(__GNUC__) || defined(__GNUG__)
#define __MINGW_EXTENSION __extension__
#else
#define __MINGW_EXTENSION
#endif
#endif
#ifndef __MSVCRT_VERSION__
/* High byte is the major version, low byte is the minor. */
# define __MSVCRT_VERSION__ 0x0700
#endif
//#ifndef WINVER
//#define WINVER 0x0502
//#endif
//#ifndef _WIN32_WINNT
//#define _WIN32_WINNT 0x502
//#endif
#ifdef __GNUC__
#ifndef __clang__
#define __int8 char
#define __int16 short
#define __int32 int
#define __int64 long long
#endif
#ifdef _WIN64
typedef int __int128 __attribute__ ((mode (TI)));
# endif
# define __ptr32
# define __ptr64
# define __forceinline extern __inline __attribute((always_inline))
#endif
#ifdef __cplusplus
#ifndef __nothrow
#define __nothrow __declspec(nothrow)
#endif
#else
#ifndef __nothrow
#define __nothrow
#endif
#endif
#ifdef _WIN64
#undef USE_MINGW_SETJMP_TWO_ARGS
#define USE_MINGW_SETJMP_TWO_ARGS
#endif
/* Disable deprecation for now! */
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE_CORE
#ifdef __WINESRC__
#define _CRT_NONSTDC_NO_DEPRECATE
#endif
#define __crt_typefix(ctype)
#ifndef _CRT_UNUSED
#define _CRT_UNUSED(x) (void)x
#endif
#ifdef _MSC_VER
#define ATTRIB_NORETURN
#else
#define ATTRIB_NORETURN DECLSPEC_NORETURN
#endif
#include "_mingw_mac.h"
#endif /* !_INC_MINGW */

View File

@@ -1,134 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _INC_CRTDEFS_MACRO
#define _INC_CRTDEFS_MACRO
#define __STRINGIFY(x) #x
#define __MINGW64_STRINGIFY(x) __STRINGIFY(x)
#define __MINGW64_VERSION_MAJOR 1
#define __MINGW64_VERSION_MINOR 1
#define __MINGW64_VERSION_STR __MINGW64_STRINGIFY(__MINGW64_VERSION_MAJOR) "." __MINGW64_STRINGIFY(__MINGW64_VERSION_MINOR)
#define __MINGW64_VERSION_STATE "alpha"
/* mingw.org's version macros: these make gcc to define
MINGW32_SUPPORTS_MT_EH and to use the _CRT_MT global
and the __mingwthr_key_dtor() function from the MinGW
CRT in its private gthr-win32.h header. */
#define __MINGW32_MAJOR_VERSION 3
#define __MINGW32_MINOR_VERSION 11
#ifdef _WIN64
/* MS does not prefix symbols by underscores for 64-bit. */
#ifndef __MINGW_USE_UNDERSCORE_PREFIX
/* As we have to support older gcc version, which are using underscores
as symbol prefix for x64, we have to check here for the user label
prefix defined by gcc. */
#ifdef __USER_LABEL_PREFIX__
#pragma push_macro ("_")
#undef _
#define _ 1
#if (__USER_LABEL_PREFIX__ + 0) != 0
#define __MINGW_USE_UNDERSCORE_PREFIX 1
#else
#define __MINGW_USE_UNDERSCORE_PREFIX 0
#endif
#undef _
#pragma pop_macro ("_")
#else
#define __MINGW_USE_UNDERSCORE_PREFIX 0
#endif
#endif
#else
/* For 32-bits we have always to prefix by underscore. */
#undef __MINGW_USE_UNDERSCORE_PREFIX
#define __MINGW_USE_UNDERSCORE_PREFIX 1
#endif
#if __MINGW_USE_UNDERSCORE_PREFIX == 0
#define __MINGW_IMP_SYMBOL(sym) __imp_##sym
#define __MINGW_USYMBOL(sym) sym
#define __MINGW_LSYMBOL(sym) _##sym
#else
#define __MINGW_IMP_SYMBOL(sym) _imp__##sym
#define __MINGW_USYMBOL(sym) _##sym
#define __MINGW_LSYMBOL(sym) sym
#endif
/* Use alias for msvcr80 export of get/set_output_format. */
#ifndef __USE_MINGW_OUTPUT_FORMAT_EMU
#define __USE_MINGW_OUTPUT_FORMAT_EMU 1
#endif
/* Set VC specific compiler target macros. */
#if defined(__x86_64) && defined(_X86_)
#undef _X86_ /* _X86_ is not for __x86_64 */
#endif
#if defined(_X86_) && !defined(_M_IX86) && !defined(_M_IA64) \
&& !defined(_M_AMD64) && !defined(__x86_64)
#if defined(__i486__)
#define _M_IX86 400
#elif defined(__i586__)
#define _M_IX86 500
#else
/* This gives wrong (600 instead of 300) value if -march=i386 is specified
but we cannot check for__i386__ as it is defined for all 32-bit CPUs. */
#define _M_IX86 600
#endif
#endif
#if defined(__x86_64) && !defined(_M_IX86) && !defined(_M_IA64) \
&& !defined(_M_AMD64)
#define _M_AMD64 100
#define _M_X64 100
#endif
#if defined(__ia64__) && !defined(_M_IX86) && !defined(_M_IA64) \
&& !defined(_M_AMD64) && !defined(_X86_) && !defined(__x86_64)
#define _M_IA64 100
#endif
#ifndef __PTRDIFF_TYPE__
#ifdef _WIN64
#define __PTRDIFF_TYPE__ long long int
#else
#define __PTRDIFF_TYPE__ long int
#endif
#endif
#ifndef __SIZE_TYPE__
#ifdef _WIN64
#define __SIZE_TYPE__ long long unsigned int
#else
#define __SIZE_TYPE__ long unsigned int
#endif
#endif
#ifndef __WCHAR_TYPE__
#define __WCHAR_TYPE__ unsigned short
#endif
#ifndef __WINT_TYPE__
#define __WINT_TYPE__ unsigned short
#endif
#if defined(__GNUC__) || defined(__GNUG__)
#define __MINGW_EXTENSION __extension__
#else
#define __MINGW_EXTENSION
#endif
#ifdef UNICODE
# define __MINGW_NAME_AW(func) func##W
#else
# define __MINGW_NAME_AW(func) func##A
#endif
#define __MINGW_TYPEDEF_AW(type) \
typedef __MINGW_NAME_AW(type) type;
#endif /* _INC_CRTDEFS_MACRO */

View File

@@ -1,40 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef __ASSERT_H_
#define __ASSERT_H_
#include <crtdefs.h>
#ifdef NDEBUG
#ifndef assert
#define assert(_Expression) ((void)0)
#endif
#else /* !NDEBUG */
#ifdef __cplusplus
extern "C" {
#endif
_CRTIMP void __cdecl _assert(const char *_Message,const char *_File,unsigned _Line);
_CRTIMP void __cdecl _wassert(const wchar_t *_Message,const wchar_t *_File,unsigned _Line);
#ifdef __cplusplus
}
#endif
#ifndef assert
#define assert(_Expression) (void)((!!(_Expression)) || (_assert(#_Expression,__FILE__,__LINE__),0))
#endif
#ifndef wassert
#define wassert(_Expression) (void)((!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression),_CRT_WIDE(__FILE__),__LINE__),0))
#endif
#endif
#endif

View File

@@ -1,209 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
/*
* complex.h
*
* This file is part of the Mingw32 package.
*
* Contributors:
* Created by Danny Smith <dannysmith@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef _COMPLEX_H_
#define _COMPLEX_H_
#include <crtdefs.h>
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
|| !defined __STRICT_ANSI__
/* These macros are specified by C99 standard */
#ifndef __cplusplus
#define complex _Complex
#endif
#define _Complex_I (0.0F + 1.0iF)
/* GCC doesn't support _Imaginary type yet, so we don't
define _Imaginary_I */
#define I _Complex_I
#ifdef __cplusplus
extern "C" {
#endif
#ifndef RC_INVOKED
double creal (double _Complex);
double cimag (double _Complex);
double carg (double _Complex);
double cabs (double _Complex);
double _Complex conj (double _Complex);
double _Complex cacos (double _Complex);
double _Complex casin (double _Complex);
double _Complex catan (double _Complex);
double _Complex ccos (double _Complex);
double _Complex csin (double _Complex);
double _Complex ctan (double _Complex);
double _Complex cacosh (double _Complex);
double _Complex casinh (double _Complex);
double _Complex catanh (double _Complex);
double _Complex ccosh (double _Complex);
double _Complex csinh (double _Complex);
double _Complex ctanh (double _Complex);
double _Complex cexp (double _Complex);
double _Complex clog (double _Complex);
double _Complex cpow (double _Complex, double _Complex);
double _Complex csqrt (double _Complex);
double _Complex cproj (double _Complex);
float crealf (float _Complex);
float cimagf (float _Complex);
float cargf (float _Complex);
float cabsf (float _Complex);
float _Complex conjf (float _Complex);
float _Complex cacosf (float _Complex);
float _Complex casinf (float _Complex);
float _Complex catanf (float _Complex);
float _Complex ccosf (float _Complex);
float _Complex csinf (float _Complex);
float _Complex ctanf (float _Complex);
float _Complex cacoshf (float _Complex);
float _Complex casinhf (float _Complex);
float _Complex catanhf (float _Complex);
float _Complex ccoshf (float _Complex);
float _Complex csinhf (float _Complex);
float _Complex ctanhf (float _Complex);
float _Complex cexpf (float _Complex);
float _Complex clogf (float _Complex);
float _Complex cpowf (float _Complex, float _Complex);
float _Complex csqrtf (float _Complex);
float _Complex cprojf (float _Complex);
long double creall (long double _Complex);
long double cimagl (long double _Complex);
long double cargl (long double _Complex);
long double cabsl (long double _Complex);
long double _Complex conjl (long double _Complex);
long double _Complex cacosl (long double _Complex);
long double _Complex casinl (long double _Complex);
long double _Complex catanl (long double _Complex);
long double _Complex ccosl (long double _Complex);
long double _Complex csinl (long double _Complex);
long double _Complex ctanl (long double _Complex);
long double _Complex cacoshl (long double _Complex);
long double _Complex casinhl (long double _Complex);
long double _Complex catanhl (long double _Complex);
long double _Complex ccoshl (long double _Complex);
long double _Complex csinhl (long double _Complex);
long double _Complex ctanhl (long double _Complex);
long double _Complex cexpl (long double _Complex);
long double _Complex clogl (long double _Complex);
long double _Complex cpowl (long double _Complex, long double _Complex);
long double _Complex csqrtl (long double _Complex);
long double _Complex cprojl (long double _Complex);
#ifdef __GNUC__
/* double */
__CRT_INLINE double creal (double _Complex _Z)
{
return __real__ _Z;
}
__CRT_INLINE double cimag (double _Complex _Z)
{
return __imag__ _Z;
}
__CRT_INLINE double _Complex conj (double _Complex _Z)
{
return __extension__ ~_Z;
}
__CRT_INLINE double carg (double _Complex _Z)
{
double res;
__asm__ ("fpatan;"
: "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
return res;
}
/* float */
__CRT_INLINE float crealf (float _Complex _Z)
{
return __real__ _Z;
}
__CRT_INLINE float cimagf (float _Complex _Z)
{
return __imag__ _Z;
}
__CRT_INLINE float _Complex conjf (float _Complex _Z)
{
return __extension__ ~_Z;
}
__CRT_INLINE float cargf (float _Complex _Z)
{
float res;
__asm__ ("fpatan;"
: "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
return res;
}
/* long double */
__CRT_INLINE long double creall (long double _Complex _Z)
{
return __real__ _Z;
}
__CRT_INLINE long double cimagl (long double _Complex _Z)
{
return __imag__ _Z;
}
__CRT_INLINE long double _Complex conjl (long double _Complex _Z)
{
return __extension__ ~_Z;
}
__CRT_INLINE long double cargl (long double _Complex _Z)
{
long double res;
__asm__ ("fpatan;"
: "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
return res;
}
#endif /* __GNUC__ */
#endif /* RC_INVOKED */
#ifdef __cplusplus
}
#endif
#endif /* __STDC_VERSION__ >= 199901L */
#endif /* _COMPLEX_H */

View File

@@ -1,111 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _INC_CONIO
#define _INC_CONIO
#include <crtdefs.h>
#define __need___va_list
#include <stdarg.h>
#ifdef __cplusplus
extern "C" {
#endif
_CRTIMP char * __cdecl _cgets(char *_Buffer);
_CRTIMP int __cdecl _cprintf(const char *_Format,...);
_CRTIMP int __cdecl _cputs(const char *_Str);
_CRT_INSECURE_DEPRECATE(_cscanf_s) _CRTIMP int __cdecl _cscanf(const char *_Format,...);
_CRT_INSECURE_DEPRECATE(_cscanf_s_l) _CRTIMP int __cdecl _cscanf_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _getch(void);
_CRTIMP int __cdecl _getche(void);
_CRTIMP int __cdecl _vcprintf(const char *_Format,va_list _ArgList);
_CRTIMP int __cdecl _cprintf_p(const char *_Format,...);
_CRTIMP int __cdecl _vcprintf_p(const char *_Format,va_list _ArgList);
_CRTIMP int __cdecl _cprintf_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vcprintf_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _cprintf_p_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vcprintf_p_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _kbhit(void);
_CRTIMP int __cdecl _putch(int _Ch);
_CRTIMP int __cdecl _ungetch(int _Ch);
_CRTIMP int __cdecl _getch_nolock(void);
_CRTIMP int __cdecl _getche_nolock(void);
_CRTIMP int __cdecl _putch_nolock(int _Ch);
_CRTIMP int __cdecl _ungetch_nolock(int _Ch);
#if defined(_X86_) && !defined(__x86_64)
int __cdecl _inp(unsigned short);
unsigned short __cdecl _inpw(unsigned short);
unsigned long __cdecl _inpd(unsigned short);
int __cdecl _outp(unsigned short,int);
unsigned short __cdecl _outpw(unsigned short,unsigned short);
unsigned long __cdecl _outpd(unsigned short,unsigned long);
#endif
#ifndef _WCONIO_DEFINED
#define _WCONIO_DEFINED
#ifndef WEOF
#define WEOF (wint_t)(0xFFFF)
#endif
_CRTIMP wchar_t *_cgetws(wchar_t *_Buffer);
_CRTIMP wint_t __cdecl _getwch(void);
_CRTIMP wint_t __cdecl _getwche(void);
_CRTIMP wint_t __cdecl _putwch(wchar_t _WCh);
_CRTIMP wint_t __cdecl _ungetwch(wint_t _WCh);
_CRTIMP int __cdecl _cputws(const wchar_t *_String);
_CRTIMP int __cdecl _cwprintf(const wchar_t *_Format,...);
_CRT_INSECURE_DEPRECATE(_cwscanf_s) _CRTIMP int __cdecl _cwscanf(const wchar_t *_Format,...);
_CRT_INSECURE_DEPRECATE(_cwscanf_s_l) _CRTIMP int __cdecl _cwscanf_l(const wchar_t *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vcwprintf(const wchar_t *_Format,va_list _ArgList);
_CRTIMP int __cdecl _cwprintf_p(const wchar_t *_Format,...);
_CRTIMP int __cdecl _vcwprintf_p(const wchar_t *_Format,va_list _ArgList);
_CRTIMP int __cdecl _cwprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vcwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _cwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vcwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP wint_t __cdecl _putwch_nolock(wchar_t _WCh);
_CRTIMP wint_t __cdecl _getwch_nolock(void);
_CRTIMP wint_t __cdecl _getwche_nolock(void);
_CRTIMP wint_t __cdecl _ungetwch_nolock(wint_t _WCh);
#endif /* _WCONIO_DEFINED */
#ifndef _MT
#define _putwch() _putwch_nolock()
#define _getwch() _getwch_nolock()
#define _getwche() _getwche_nolock()
#define _ungetwch() _ungetwch_nolock()
#endif
#ifndef NO_OLDNAMES
_CRT_NONSTDC_DEPRECATE(_cgets) _CRT_INSECURE_DEPRECATE(_cgets_s) _CRTIMP char *__cdecl cgets(char *_Buffer);
_CRT_NONSTDC_DEPRECATE(_cprintf) _CRTIMP int __cdecl cprintf(const char *_Format,...);
_CRT_NONSTDC_DEPRECATE(_cputs) _CRTIMP int __cdecl cputs(const char *_Str);
_CRT_NONSTDC_DEPRECATE(_cscanf) _CRTIMP int __cdecl cscanf(const char *_Format,...);
_CRT_NONSTDC_DEPRECATE(_getch) _CRTIMP int __cdecl getch(void);
_CRT_NONSTDC_DEPRECATE(_getche) _CRTIMP int __cdecl getche(void);
_CRT_NONSTDC_DEPRECATE(_kbhit) _CRTIMP int __cdecl kbhit(void);
_CRT_NONSTDC_DEPRECATE(_putch) _CRTIMP int __cdecl putch(int _Ch);
_CRT_NONSTDC_DEPRECATE(_ungetch) _CRTIMP int __cdecl ungetch(int _Ch);
#if (defined(_X86_) && !defined(__x86_64))
_CRT_NONSTDC_DEPRECATE(_inp) _CRTIMP int __cdecl inp(unsigned short);
_CRT_NONSTDC_DEPRECATE(_inpw) _CRTIMP unsigned short __cdecl inpw(unsigned short);
_CRT_NONSTDC_DEPRECATE(_outp) _CRTIMP int __cdecl outp(unsigned short,int);
_CRT_NONSTDC_DEPRECATE(_outpw) _CRTIMP unsigned short __cdecl outpw(unsigned short,unsigned short);
#endif
#endif /* !NO_OLDNAMES */
#ifdef __cplusplus
}
#endif
#include <sec_api/conio_s.h>
#endif /* _INC_CONIO */

View File

@@ -1,224 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#include <crtdefs.h>
#ifndef _INC_CRTDBG
#define _INC_CRTDBG
#pragma pack(push,_CRT_PACKING)
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef void *_HFILE;
#define _CRT_WARN 0
#define _CRT_ERROR 1
#define _CRT_ASSERT 2
#define _CRT_ERRCNT 3
#define _CRTDBG_MODE_FILE 0x1
#define _CRTDBG_MODE_DEBUG 0x2
#define _CRTDBG_MODE_WNDW 0x4
#define _CRTDBG_REPORT_MODE -1
#define _CRTDBG_INVALID_HFILE ((_HFILE)-1)
#define _CRTDBG_HFILE_ERROR ((_HFILE)-2)
#define _CRTDBG_FILE_STDOUT ((_HFILE)-4)
#define _CRTDBG_FILE_STDERR ((_HFILE)-5)
#define _CRTDBG_REPORT_FILE ((_HFILE)-6)
typedef int (__cdecl *_CRT_REPORT_HOOK)(int,char *,int *);
typedef int (__cdecl *_CRT_REPORT_HOOKW)(int,wchar_t *,int *);
#define _CRT_RPTHOOK_INSTALL 0
#define _CRT_RPTHOOK_REMOVE 1
#define _HOOK_ALLOC 1
#define _HOOK_REALLOC 2
#define _HOOK_FREE 3
typedef int (__cdecl *_CRT_ALLOC_HOOK)(int,void *,size_t,int,long,const unsigned char *,int);
#define _CRTDBG_ALLOC_MEM_DF 0x01
#define _CRTDBG_DELAY_FREE_MEM_DF 0x02
#define _CRTDBG_CHECK_ALWAYS_DF 0x04
#define _CRTDBG_RESERVED_DF 0x08
#define _CRTDBG_CHECK_CRT_DF 0x10
#define _CRTDBG_LEAK_CHECK_DF 0x20
#define _CRTDBG_CHECK_EVERY_16_DF 0x00100000
#define _CRTDBG_CHECK_EVERY_128_DF 0x00800000
#define _CRTDBG_CHECK_EVERY_1024_DF 0x04000000
#define _CRTDBG_CHECK_DEFAULT_DF 0
#define _CRTDBG_REPORT_FLAG -1
#define _BLOCK_TYPE(block) (block & 0xFFFF)
#define _BLOCK_SUBTYPE(block) (block >> 16 & 0xFFFF)
#define _FREE_BLOCK 0
#define _NORMAL_BLOCK 1
#define _CRT_BLOCK 2
#define _IGNORE_BLOCK 3
#define _CLIENT_BLOCK 4
#define _MAX_BLOCKS 5
typedef void (__cdecl *_CRT_DUMP_CLIENT)(void *,size_t);
struct _CrtMemBlockHeader;
typedef struct _CrtMemState {
struct _CrtMemBlockHeader *pBlockHeader;
size_t lCounts[_MAX_BLOCKS];
size_t lSizes[_MAX_BLOCKS];
size_t lHighWaterCount;
size_t lTotalCount;
} _CrtMemState;
#ifndef _STATIC_ASSERT
#define _STATIC_ASSERT(expr) extern char (*static_assert(void)) [(expr) ? 1 : -1]
#endif
#ifndef _ASSERT
#define _ASSERT(expr) ((void)0)
#endif
#ifndef _ASSERT_WRN
#define _ASSERT_WRN(expr) ((void)0)
#endif
#ifndef _ASSERTE
#define _ASSERTE(expr) ((void)0)
#endif
#ifndef _ASSERTE_WRN
#define _ASSERTE_WRN(expr) ((void)0)
#endif
#ifndef _ASSERT_EXPR
#define _ASSERT_EXPR(expr,expr_str) ((void)0)
#endif
#ifndef _ASSERT_EXPR_WRN
#define _ASSERT_EXPR_WRN(expr,expr_str) ((void)0)
#endif
#ifndef _ASSERT_BASE
#define _ASSERT_BASE _ASSERT_EXPR
#endif
#define _RPT0(rptno,msg)
#define _RPTW0(rptno,msg)
#define _RPT1(rptno,msg,arg1)
#define _RPTW1(rptno,msg,arg1)
#define _RPT2(rptno,msg,arg1,arg2)
#define _RPTW2(rptno,msg,arg1,arg2)
#define _RPT3(rptno,msg,arg1,arg2,arg3)
#define _RPTW3(rptno,msg,arg1,arg2,arg3)
#define _RPT4(rptno,msg,arg1,arg2,arg3,arg4)
#define _RPTW4(rptno,msg,arg1,arg2,arg3,arg4)
#define _RPTF0(rptno,msg)
#define _RPTFW0(rptno,msg)
#define _RPTF1(rptno,msg,arg1)
#define _RPTFW1(rptno,msg,arg1)
#define _RPTF2(rptno,msg,arg1,arg2)
#define _RPTFW2(rptno,msg,arg1,arg2)
#define _RPTF3(rptno,msg,arg1,arg2,arg3)
#define _RPTFW3(rptno,msg,arg1,arg2,arg3)
#define _RPTF4(rptno,msg,arg1,arg2,arg3,arg4)
#define _RPTFW4(rptno,msg,arg1,arg2,arg3,arg4)
#define _malloc_dbg(s,t,f,l) malloc(s)
#define _calloc_dbg(c,s,t,f,l) calloc(c,s)
#define _realloc_dbg(p,s,t,f,l) realloc(p,s)
#define _recalloc_dbg(p,c,s,t,f,l) _recalloc(p,c,s)
#define _expand_dbg(p,s,t,f,l) _expand(p,s)
#define _free_dbg(p,t) free(p)
#define _msize_dbg(p,t) _msize(p)
#define _aligned_malloc_dbg(s,a,f,l) _aligned_malloc(s,a)
#define _aligned_realloc_dbg(p,s,a,f,l) _aligned_realloc(p,s,a)
#define _aligned_recalloc_dbg(p,c,s,a,f,l) _aligned_realloc(p,c,s,a)
#define _aligned_free_dbg(p) _aligned_free(p)
#define _aligned_offset_malloc_dbg(s,a,o,f,l) _aligned_offset_malloc(s,a,o)
#define _aligned_offset_realloc_dbg(p,s,a,o,f,l) _aligned_offset_realloc(p,s,a,o)
#define _aligned_offset_recalloc_dbg(p,c,s,a,o,f,l) _aligned_offset_recalloc(p,c,s,a,o)
#define _malloca_dbg(s,t,f,l) _malloca(s)
#define _freea_dbg(p,t) _freea(p)
#define _strdup_dbg(s,t,f,l) _strdup(s)
#define _wcsdup_dbg(s,t,f,l) _wcsdup(s)
#define _mbsdup_dbg(s,t,f,l) _mbsdup(s)
#define _tempnam_dbg(s1,s2,t,f,l) _tempnam(s1,s2)
#define _wtempnam_dbg(s1,s2,t,f,l) _wtempnam(s1,s2)
#define _fullpath_dbg(s1,s2,le,t,f,l) _fullpath(s1,s2,le)
#define _wfullpath_dbg(s1,s2,le,t,f,l) _wfullpath(s1,s2,le)
#define _getcwd_dbg(s,le,t,f,l) _getcwd(s,le)
#define _wgetcwd_dbg(s,le,t,f,l) _wgetcwd(s,le)
#define _getdcwd_dbg(d,s,le,t,f,l) _getdcwd(d,s,le)
#define _wgetdcwd_dbg(d,s,le,t,f,l) _wgetdcwd(d,s,le)
#define _getdcwd_lk_dbg(d,s,le,t,f,l) _getdcwd_nolock(d,s,le)
#define _wgetdcwd_lk_dbg(d,s,le,t,f,l) _wgetdcwd_nolock(d,s,le)
#define _CrtSetReportHook(f) ((_CRT_REPORT_HOOK)0)
#define _CrtGetReportHook() ((_CRT_REPORT_HOOK)0)
#define _CrtSetReportHook2(t,f) ((int)0)
#define _CrtSetReportHookW2(t,f) ((int)0)
#define _CrtSetReportMode(t,f) ((int)0)
#define _CrtSetReportFile(t,f) ((_HFILE)0)
#define _CrtDbgBreak() ((void)0)
#define _CrtSetBreakAlloc(a) ((long)0)
#define _CrtSetAllocHook(f) ((_CRT_ALLOC_HOOK)0)
#define _CrtGetAllocHook() ((_CRT_ALLOC_HOOK)0)
#define _CrtCheckMemory() ((int)1)
#define _CrtSetDbgFlag(f) ((int)0)
#define _CrtDoForAllClientObjects(f,c) ((void)0)
#define _CrtIsValidPointer(p,n,r) ((int)1)
#define _CrtIsValidHeapPointer(p) ((int)1)
#define _CrtIsMemoryBlock(p,t,r,f,l) ((int)1)
#define _CrtReportBlockType(p) ((int)-1)
#define _CrtSetDumpClient(f) ((_CRT_DUMP_CLIENT)0)
#define _CrtGetDumpClient() ((_CRT_DUMP_CLIENT)0)
#define _CrtMemCheckpoint(s) ((void)0)
#define _CrtMemDifference(s1,s2,s3) ((int)0)
#define _CrtMemDumpAllObjectsSince(s) ((void)0)
#define _CrtMemDumpStatistics(s) ((void)0)
#define _CrtDumpMemoryLeaks() ((int)0)
#define _CrtSetDebugFillThreshold(t) ((size_t)0)
#define _CrtSetCheckCount(f) ((int)0)
#define _CrtGetCheckCount() ((int)0)
#ifdef __cplusplus
}
void *__cdecl operator new[](size_t _Size);
inline void *__cdecl operator new(size_t _Size,int,const char *,int) { return ::operator new(_Size); }
inline void *__cdecl operator new[](size_t _Size,int,const char *,int) { return ::operator new[](_Size); }
void __cdecl operator delete[](void *);
inline void __cdecl operator delete(void *_P,int,const char *,int) { ::operator delete(_P); }
inline void __cdecl operator delete[](void *_P,int,const char *,int) { ::operator delete[](_P); }
#endif
#pragma pack(pop)
#include <sec_api/crtdbg_s.h>
#endif

View File

@@ -1,406 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#include <_mingw.h>
#ifndef _INC_CRTDEFS
#define _INC_CRTDEFS
#ifdef _USE_32BIT_TIME_T
#ifdef _WIN64
#error You cannot use 32-bit time_t (_USE_32BIT_TIME_T) with _WIN64
#undef _USE_32BIT_TIME_T
#endif
#else
#if _INTEGRAL_MAX_BITS < 64
#define _USE_32BIT_TIME_T
#endif
#endif
/* Disable non-ANSI C definitions if compiling with __STDC__ */
//HACK: Disabled
//#if __STDC__
//#define NO_OLDNAMES
//#endif
/** Properties ***************************************************************/
#undef _CRT_PACKING
#define _CRT_PACKING 8
#pragma pack(push,_CRT_PACKING)
#ifndef _CRT_STRINGIZE
#define __CRT_STRINGIZE(_Value) #_Value
#define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
#endif
#ifndef _CRT_WIDE
#define __CRT_WIDE(_String) L ## _String
#define _CRT_WIDE(_String) __CRT_WIDE(_String)
#endif
#ifndef _W64
#if !defined(_midl) && defined(_X86_) && _MSC_VER >= 1300
#define _W64 __w64
#else
#define _W64
#endif
#endif
#ifndef _CRTIMP
#ifdef CRTDLL /* Defined for ntdll, crtdll, msvcrt, etc */
#define _CRTIMP __declspec(dllexport)
#elif defined(_DLL)
#define _CRTIMP __declspec(dllimport)
#else /* !CRTDLL && !_DLL */
#define _CRTIMP
#endif /* CRTDLL || _DLL */
#endif /* !_CRTIMP */
//#define _CRT_ALTERNATIVE_INLINES
#ifndef _CRTIMP_ALT
#ifdef _DLL
#ifdef _CRT_ALTERNATIVE_INLINES
#define _CRTIMP_ALT
#else
#define _CRTIMP_ALT _CRTIMP
#define _CRT_ALTERNATIVE_IMPORTED
#endif
#else
#define _CRTIMP_ALT
#endif
#endif
#ifndef _CRTDATA
#ifdef _M_CEE_PURE
#define _CRTDATA(x) x
#else
#define _CRTDATA(x) _CRTIMP x
#endif
#endif
#ifndef _CRTIMP2
#define _CRTIMP2 _CRTIMP
#endif
#ifndef _CRTIMP_PURE
#define _CRTIMP_PURE _CRTIMP
#endif
#ifndef _CRTIMP_ALTERNATIVE
#define _CRTIMP_ALTERNATIVE _CRTIMP
#define _CRT_ALTERNATIVE_IMPORTED
#endif
#ifndef _CRTIMP_NOIA64
#ifdef __ia64__
#define _CRTIMP_NOIA64
#else
#define _CRTIMP_NOIA64 _CRTIMP
#endif
#endif
#ifndef _MRTIMP2
#define _MRTIMP2 _CRTIMP
#endif
#ifndef _MCRTIMP
#define _MCRTIMP _CRTIMP
#endif
#ifndef _PGLOBAL
#define _PGLOBAL
#endif
#ifndef _AGLOBAL
#define _AGLOBAL
#endif
#ifndef _CONST_RETURN
#define _CONST_RETURN
#endif
#ifndef UNALIGNED
#if defined(__ia64__) || defined(__x86_64)
#define UNALIGNED __unaligned
#else
#define UNALIGNED
#endif
#endif
#ifndef _CRT_ALIGN
#define _CRT_ALIGN(x) __attribute__ ((aligned(x)))
#endif
#ifndef _CRTNOALIAS
#define _CRTNOALIAS
#endif
#ifndef _CRTRESTRICT
#define _CRTRESTRICT
#endif
#ifndef __CRTDECL
#define __CRTDECL __cdecl
#endif
#ifndef _CRT_UNUSED
#define _CRT_UNUSED(x) (void)x
#endif
#ifndef _CONST_RETURN
#ifdef __cplusplus
#define _CONST_RETURN const
#define _CRT_CONST_CORRECT_OVERLOADS
#else
#define _CONST_RETURN
#endif
#endif
#define __crt_typefix(ctype)
/** Deprecated ***************************************************************/
#ifdef __GNUC__
#define _CRT_DEPRECATE_TEXT(_Text) __attribute__ ((deprecated))
#elif defined(_MSC_VER)
#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text))
#else
#define _CRT_DEPRECATE_TEXT(_Text)
#endif
#ifndef __STDC_WANT_SECURE_LIB__
#define __STDC_WANT_SECURE_LIB__ 1
#endif
#ifndef _CRT_INSECURE_DEPRECATE
# ifdef _CRT_SECURE_NO_DEPRECATE
# define _CRT_INSECURE_DEPRECATE(_Replacement)
# else
# define _CRT_INSECURE_DEPRECATE(_Replacement) \
_CRT_DEPRECATE_TEXT("This may be unsafe, Try " #_Replacement " instead!")
# endif
#endif
#ifndef _CRT_INSECURE_DEPRECATE_CORE
# ifdef _CRT_SECURE_NO_DEPRECATE_CORE
# define _CRT_INSECURE_DEPRECATE_CORE(_Replacement)
# else
# define _CRT_INSECURE_DEPRECATE_CORE(_Replacement) \
_CRT_DEPRECATE_TEXT("This may be unsafe, Try " #_Replacement " instead! Enable _CRT_SECURE_NO_DEPRECATE to avoid thie warning.")
# endif
#endif
#ifndef _CRT_NONSTDC_DEPRECATE
# ifdef _CRT_NONSTDC_NO_DEPRECATE
# define _CRT_NONSTDC_DEPRECATE(_Replacement)
# else
# define _CRT_NONSTDC_DEPRECATE(_Replacement) \
_CRT_DEPRECATE_TEXT("Deprecated POSIX name, Try " #_Replacement " instead!")
# endif
#endif
#ifndef _CRT_INSECURE_DEPRECATE_MEMORY
#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
#endif
#ifndef _CRT_INSECURE_DEPRECATE_GLOBALS
#define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement)
#endif
#ifndef _CRT_MANAGED_HEAP_DEPRECATE
#define _CRT_MANAGED_HEAP_DEPRECATE
#endif
#ifndef _CRT_OBSOLETE
#define _CRT_OBSOLETE(_NewItem)
#endif
/** Constants ****************************************************************/
#define _ARGMAX 100
#ifndef _TRUNCATE
#define _TRUNCATE ((size_t)-1)
#endif
#define __STDC_SECURE_LIB__ 200411L
#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
#define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
/** Type definitions *********************************************************/
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _SIZE_T_DEFINED
#define _SIZE_T_DEFINED
#undef size_t
#ifdef _WIN64
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
typedef unsigned int size_t __attribute__ ((mode (DI)));
#else
__MINGW_EXTENSION typedef unsigned __int64 size_t;
#endif
#else
typedef unsigned int size_t;
#endif
#endif
#ifndef _INTPTR_T_DEFINED
#define _INTPTR_T_DEFINED
#ifndef __intptr_t_defined
#define __intptr_t_defined
#undef intptr_t
#ifdef _WIN64
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
typedef int intptr_t __attribute__ ((mode (DI)));
#else
__MINGW_EXTENSION typedef __int64 intptr_t;
#endif
#else
typedef int intptr_t;
#endif
#endif
#endif
#ifndef _UINTPTR_T_DEFINED
#define _UINTPTR_T_DEFINED
#ifndef __uintptr_t_defined
#define __uintptr_t_defined
#undef uintptr_t
#ifdef _WIN64
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
typedef unsigned int uintptr_t __attribute__ ((mode (DI)));
#else
__MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
#endif
#else
typedef unsigned int uintptr_t;
#endif
#endif
#endif
#ifndef _PTRDIFF_T_DEFINED
#define _PTRDIFF_T_DEFINED
#ifndef _PTRDIFF_T_
#undef ptrdiff_t
#ifdef _WIN64
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
typedef int ptrdiff_t __attribute__ ((mode (DI)));
#else
__MINGW_EXTENSION typedef __int64 ptrdiff_t;
#endif
#else
typedef int ptrdiff_t;
#endif
#endif
#endif
#ifndef _WCHAR_T_DEFINED
#define _WCHAR_T_DEFINED
#ifndef __cplusplus
typedef unsigned short wchar_t;
#endif
#endif
#ifndef _WCTYPE_T_DEFINED
#define _WCTYPE_T_DEFINED
typedef unsigned short wint_t;
typedef unsigned short wctype_t;
#endif
#ifndef _ERRCODE_DEFINED
#define _ERRCODE_DEFINED
typedef int errcode;
typedef int errno_t;
#endif
#ifndef _TIME32_T_DEFINED
#define _TIME32_T_DEFINED
typedef long __time32_t;
#endif
#ifndef _TIME64_T_DEFINED
#define _TIME64_T_DEFINED
#if _INTEGRAL_MAX_BITS >= 64
__MINGW_EXTENSION typedef __int64 __time64_t;
#endif
#endif
#ifndef _TIME_T_DEFINED
#define _TIME_T_DEFINED
#ifdef _USE_32BIT_TIME_T
typedef __time32_t time_t;
#else
typedef __time64_t time_t;
#endif
#endif
struct threadlocaleinfostruct;
typedef struct threadlocaleinfostruct *pthreadlocinfo;
struct threadmbcinfostruct;
typedef struct threadmbcinfostruct *pthreadmbcinfo;
struct __lc_time_data;
typedef struct localeinfo_struct {
pthreadlocinfo locinfo;
pthreadmbcinfo mbcinfo;
} _locale_tstruct,*_locale_t;
#ifndef _TAGLC_ID_DEFINED
#define _TAGLC_ID_DEFINED
typedef struct tagLC_ID {
unsigned short wLanguage;
unsigned short wCountry;
unsigned short wCodePage;
} LC_ID,*LPLC_ID;
#endif
#ifndef _THREADLOCALEINFO
#define _THREADLOCALEINFO
typedef struct threadlocaleinfostruct {
int refcount;
unsigned int lc_codepage;
unsigned int lc_collate_cp;
unsigned long lc_handle[6];
LC_ID lc_id[6];
struct {
char *locale;
wchar_t *wlocale;
int *refcount;
int *wrefcount;
} lc_category[6];
int lc_clike;
int mb_cur_max;
int *lconv_intl_refcount;
int *lconv_num_refcount;
int *lconv_mon_refcount;
struct lconv *lconv;
int *ctype1_refcount;
unsigned short *ctype1;
const unsigned short *pctype;
const unsigned char *pclmap;
const unsigned char *pcumap;
struct __lc_time_data *lc_time_curr;
} threadlocinfo;
#endif
#ifdef __cplusplus
}
#endif
#pragma pack(pop)
#endif /* !_INC_CRTDEFS */

View File

@@ -1,260 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _INC_CTYPE
#define _INC_CTYPE
#include <crtdefs.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef WEOF
#define WEOF (wint_t)(0xFFFF)
#endif
#ifndef _CRT_CTYPEDATA_DEFINED
# define _CRT_CTYPEDATA_DEFINED
# ifndef _CTYPE_DISABLE_MACROS
# ifndef __PCTYPE_FUNC
# ifdef _DLL
# define __PCTYPE_FUNC __pctype_func()
# else
# define __PCTYPE_FUNC _pctype
# endif
# endif /* !__PCTYPE_FUNC */
_CRTIMP const unsigned short * __cdecl __pctype_func(void);
# ifndef _M_CEE_PURE
_CRTDATA(extern const unsigned short *_pctype);
# else
# define _pctype (__pctype_func())
# endif /* !_M_CEE_PURE */
# endif /* !_CTYPE_DISABLE_MACROS */
#endif /* !_CRT_CTYPEDATA_DEFINED */
#ifndef _CRT_WCTYPEDATA_DEFINED
#define _CRT_WCTYPEDATA_DEFINED
# ifndef _CTYPE_DISABLE_MACROS
_CRTDATA(extern const unsigned short _wctype[]);
_CRTIMP const wctype_t * __cdecl __pwctype_func(void);
# ifndef _M_CEE_PURE
_CRTDATA(extern const wctype_t *_pwctype);
# else
# define _pwctype (__pwctype_func())
# endif /* !_M_CEE_PURE */
# endif /* !_CTYPE_DISABLE_MACROS */
#endif /* !_CRT_WCTYPEDATA_DEFINED */
/* CRT stuff */
#if 1
extern const unsigned char __newclmap[];
extern const unsigned char __newcumap[];
extern pthreadlocinfo __ptlocinfo;
extern pthreadmbcinfo __ptmbcinfo;
extern int __globallocalestatus;
extern int __locale_changed;
extern struct threadlocaleinfostruct __initiallocinfo;
extern _locale_tstruct __initiallocalestructinfo;
pthreadlocinfo __cdecl __updatetlocinfo(void);
pthreadmbcinfo __cdecl __updatetmbcinfo(void);
#endif
#define _UPPER 0x1
#define _LOWER 0x2
#define _DIGIT 0x4
#define _SPACE 0x8
#define _PUNCT 0x10
#define _CONTROL 0x20
#define _BLANK 0x40
#define _HEX 0x80
#define _LEADBYTE 0x8000
#define _ALPHA (0x0100|_UPPER|_LOWER)
#ifndef _CTYPE_DEFINED
#define _CTYPE_DEFINED
_CRTIMP int __cdecl _isctype(int _C,int _Type);
_CRTIMP int __cdecl _isctype_l(int _C,int _Type,_locale_t _Locale);
_CRTIMP int __cdecl isalpha(int _C);
_CRTIMP int __cdecl _isalpha_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl isupper(int _C);
_CRTIMP int __cdecl _isupper_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl islower(int _C);
_CRTIMP int __cdecl _islower_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl isdigit(int _C);
_CRTIMP int __cdecl _isdigit_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl isxdigit(int _C);
_CRTIMP int __cdecl _isxdigit_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl isspace(int _C);
_CRTIMP int __cdecl _isspace_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl ispunct(int _C);
_CRTIMP int __cdecl _ispunct_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl isalnum(int _C);
_CRTIMP int __cdecl _isalnum_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl isprint(int _C);
_CRTIMP int __cdecl _isprint_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl isgraph(int _C);
_CRTIMP int __cdecl _isgraph_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl iscntrl(int _C);
_CRTIMP int __cdecl _iscntrl_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl toupper(int _C);
_CRTIMP int __cdecl tolower(int _C);
_CRTIMP int __cdecl _tolower(int _C);
_CRTIMP int __cdecl _tolower_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl _toupper(int _C);
_CRTIMP int __cdecl _toupper_l(int _C,_locale_t _Locale);
_CRTIMP int __cdecl __isascii(int _C);
_CRTIMP int __cdecl __toascii(int _C);
_CRTIMP int __cdecl __iscsymf(int _C);
_CRTIMP int __cdecl __iscsym(int _C);
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
_CRTIMP int __cdecl isblank(int _C);
#endif
#endif /* !_CTYPE_DEFINED */
#ifndef _WCTYPE_DEFINED
#define _WCTYPE_DEFINED
_CRTIMP int __cdecl iswalpha(wint_t _C);
_CRTIMP int __cdecl _iswalpha_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswupper(wint_t _C);
_CRTIMP int __cdecl _iswupper_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswlower(wint_t _C);
_CRTIMP int __cdecl _iswlower_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswdigit(wint_t _C);
_CRTIMP int __cdecl _iswdigit_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswxdigit(wint_t _C);
_CRTIMP int __cdecl _iswxdigit_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswspace(wint_t _C);
_CRTIMP int __cdecl _iswspace_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswpunct(wint_t _C);
_CRTIMP int __cdecl _iswpunct_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswalnum(wint_t _C);
_CRTIMP int __cdecl _iswalnum_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswprint(wint_t _C);
_CRTIMP int __cdecl _iswprint_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswgraph(wint_t _C);
_CRTIMP int __cdecl _iswgraph_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswcntrl(wint_t _C);
_CRTIMP int __cdecl _iswcntrl_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswascii(wint_t _C);
_CRTIMP int __cdecl isleadbyte(int _C);
_CRTIMP int __cdecl _isleadbyte_l(int _C,_locale_t _Locale);
_CRTIMP wint_t __cdecl towupper(wint_t _C);
_CRTIMP wint_t __cdecl _towupper_l(wint_t _C,_locale_t _Locale);
_CRTIMP wint_t __cdecl towlower(wint_t _C);
_CRTIMP wint_t __cdecl _towlower_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl iswctype(wint_t _C,wctype_t _Type);
_CRTIMP int __cdecl _iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale);
_CRTIMP int __cdecl __iswcsymf(wint_t _C);
_CRTIMP int __cdecl _iswcsymf_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl __iswcsym(wint_t _C);
_CRTIMP int __cdecl _iswcsym_l(wint_t _C,_locale_t _Locale);
_CRTIMP int __cdecl is_wctype(wint_t _C,wctype_t _Type);
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
_CRTIMP int __cdecl iswblank(wint_t _C);
#endif
#endif
#ifndef _CTYPE_DISABLE_MACROS
#ifndef MB_CUR_MAX
#define MB_CUR_MAX ___mb_cur_max_func()
#ifndef __mb_cur_max
#ifdef _MSVCRT_
extern int __mb_cur_max;
#else
#define __mb_cur_max (*_imp____mb_cur_max)
extern int *_imp____mb_cur_max;
#endif
#endif
#ifdef _MSVCRT_
#define ___mb_cur_max_func() (__mb_cur_max)
#else
#define ___mb_cur_max_func() (*_imp____mb_cur_max)
#endif
#endif
#define __chvalidchk(a,b) (__PCTYPE_FUNC[(a)] & (b))
#define _chvalidchk_l(_Char,_Flag,_Locale) (!_Locale ? __chvalidchk(_Char,_Flag) : ((_locale_t)_Locale)->locinfo->pctype[_Char] & (_Flag))
#define _ischartype_l(_Char,_Flag,_Locale) (((_Locale)!=NULL && (((_locale_t)(_Locale))->locinfo->mb_cur_max) > 1) ? _isctype_l(_Char,(_Flag),_Locale) : _chvalidchk_l(_Char,_Flag,_Locale))
#define _isalpha_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA,_Locale)
#define _isupper_l(_Char,_Locale) _ischartype_l(_Char,_UPPER,_Locale)
#define _islower_l(_Char,_Locale) _ischartype_l(_Char,_LOWER,_Locale)
#define _isdigit_l(_Char,_Locale) _ischartype_l(_Char,_DIGIT,_Locale)
#define _isxdigit_l(_Char,_Locale) _ischartype_l(_Char,_HEX,_Locale)
#define _isspace_l(_Char,_Locale) _ischartype_l(_Char,_SPACE,_Locale)
#define _ispunct_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT,_Locale)
#define _isalnum_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA|_DIGIT,_Locale)
#define _isprint_l(_Char,_Locale) _ischartype_l(_Char,_BLANK|_PUNCT|_ALPHA|_DIGIT,_Locale)
#define _isgraph_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT|_ALPHA|_DIGIT,_Locale)
#define _iscntrl_l(_Char,_Locale) _ischartype_l(_Char,_CONTROL,_Locale)
#define _tolower(_Char) ((_Char)-'A'+'a')
#define _toupper(_Char) ((_Char)-'a'+'A')
#define __isascii(_Char) ((unsigned)(_Char) < 0x80)
#define __toascii(_Char) ((_Char) & 0x7f)
#ifndef _WCTYPE_INLINE_DEFINED
#define _WCTYPE_INLINE_DEFINED
#undef _CRT_WCTYPE_NOINLINE
#ifndef __cplusplus
#define iswalpha(_c) (iswctype(_c,_ALPHA))
#define iswupper(_c) (iswctype(_c,_UPPER))
#define iswlower(_c) (iswctype(_c,_LOWER))
#define iswdigit(_c) (iswctype(_c,_DIGIT))
#define iswxdigit(_c) (iswctype(_c,_HEX))
#define iswspace(_c) (iswctype(_c,_SPACE))
#define iswpunct(_c) (iswctype(_c,_PUNCT))
#define iswalnum(_c) (iswctype(_c,_ALPHA|_DIGIT))
#define iswprint(_c) (iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT))
#define iswgraph(_c) (iswctype(_c,_PUNCT|_ALPHA|_DIGIT))
#define iswcntrl(_c) (iswctype(_c,_CONTROL))
#define iswascii(_c) ((unsigned)(_c) < 0x80)
#define _iswalpha_l(_c,_p) (_iswctype_l(_c,_ALPHA,_p))
#define _iswupper_l(_c,_p) (_iswctype_l(_c,_UPPER,_p))
#define _iswlower_l(_c,_p) (_iswctype_l(_c,_LOWER,_p))
#define _iswdigit_l(_c,_p) (_iswctype_l(_c,_DIGIT,_p))
#define _iswxdigit_l(_c,_p) (_iswctype_l(_c,_HEX,_p))
#define _iswspace_l(_c,_p) (_iswctype_l(_c,_SPACE,_p))
#define _iswpunct_l(_c,_p) (_iswctype_l(_c,_PUNCT,_p))
#define _iswalnum_l(_c,_p) (_iswctype_l(_c,_ALPHA|_DIGIT,_p))
#define _iswprint_l(_c,_p) (_iswctype_l(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT,_p))
#define _iswgraph_l(_c,_p) (_iswctype_l(_c,_PUNCT|_ALPHA|_DIGIT,_p))
#define _iswcntrl_l(_c,_p) (_iswctype_l(_c,_CONTROL,_p))
#endif
#endif
#define __iscsymf(_c) (isalpha(_c) || ((_c)=='_'))
#define __iscsym(_c) (isalnum(_c) || ((_c)=='_'))
#define __iswcsymf(_c) (iswalpha(_c) || ((_c)=='_'))
#define __iswcsym(_c) (iswalnum(_c) || ((_c)=='_'))
#define _iscsymf_l(_c,_p) (_isalpha_l(_c,_p) || ((_c)=='_'))
#define _iscsym_l(_c,_p) (_isalnum_l(_c,_p) || ((_c)=='_'))
#define _iswcsymf_l(_c,_p) (_iswalpha_l(_c,_p) || ((_c)=='_'))
#define _iswcsym_l(_c,_p) (_iswalnum_l(_c,_p) || ((_c)=='_'))
#endif
#ifndef NO_OLDNAMES
#ifndef _CTYPE_DEFINED
_CRTIMP _CRT_NONSTDC_DEPRECATE(__isascii) _CRTIMP int __cdecl isascii(int _C);
_CRTIMP _CRT_NONSTDC_DEPRECATE(__toascii) _CRTIMP int __cdecl toascii(int _C);
_CRTIMP _CRT_NONSTDC_DEPRECATE(__iscsymf) _CRTIMP int __cdecl iscsymf(int _C);
_CRTIMP _CRT_NONSTDC_DEPRECATE(__iscsym) _CRTIMP int __cdecl iscsym(int _C);
#else
#define isascii __isascii
#define toascii __toascii
#define iscsymf __iscsymf
#define iscsym __iscsym
#endif
#endif
#ifdef __cplusplus
}
#endif
#endif /* !_INC_CTYPE */

View File

@@ -1,68 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _INC_DIRECT
#define _INC_DIRECT
#include <crtdefs.h>
#include <io.h>
#pragma pack(push,_CRT_PACKING)
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _DISKFREE_T_DEFINED
#define _DISKFREE_T_DEFINED
struct _diskfree_t {
unsigned total_clusters;
unsigned avail_clusters;
unsigned sectors_per_cluster;
unsigned bytes_per_sector;
};
#endif
_CRTIMP char *__cdecl _getcwd(char *_DstBuf,int _SizeInBytes);
_CRTIMP char *__cdecl _getdcwd(int _Drive,char *_DstBuf,int _SizeInBytes);
char *__cdecl _getdcwd_nolock(int _Drive,char *_DstBuf,int _SizeInBytes);
_CRTIMP int __cdecl _chdir(const char *_Path);
_CRTIMP int __cdecl _mkdir(const char *_Path);
_CRTIMP int __cdecl _rmdir(const char *_Path);
_CRTIMP int __cdecl _chdrive(int _Drive);
_CRTIMP int __cdecl _getdrive(void);
_CRTIMP unsigned long __cdecl _getdrives(void);
#ifndef _GETDISKFREE_DEFINED
#define _GETDISKFREE_DEFINED
_CRTIMP unsigned __cdecl _getdiskfree(unsigned _Drive,struct _diskfree_t *_DiskFree);
#endif
#ifndef _WDIRECT_DEFINED
#define _WDIRECT_DEFINED
_CRTIMP wchar_t *__cdecl _wgetcwd(wchar_t *_DstBuf,int _SizeInWords);
_CRTIMP wchar_t *__cdecl _wgetdcwd(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
wchar_t *__cdecl _wgetdcwd_nolock(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
_CRTIMP int __cdecl _wchdir(const wchar_t *_Path);
_CRTIMP int __cdecl _wmkdir(const wchar_t *_Path);
_CRTIMP int __cdecl _wrmdir(const wchar_t *_Path);
#endif
#ifndef NO_OLDNAMES
#define diskfree_t _diskfree_t
_CRTIMP char *__cdecl getcwd(char *_DstBuf,int _SizeInBytes);
_CRTIMP int __cdecl chdir(const char *_Path);
_CRTIMP int __cdecl mkdir(const char *_Path);
_CRTIMP int __cdecl rmdir(const char *_Path);
#endif
#ifdef __cplusplus
}
#endif
#pragma pack(pop)
#endif

View File

@@ -1,134 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#include <crtdefs.h>
#ifndef __STRICT_ANSI__
#ifndef _DIRENT_H_
#define _DIRENT_H_
#pragma pack(push,_CRT_PACKING)
#include <io.h>
#ifndef RC_INVOKED
#ifdef __cplusplus
extern "C" {
#endif
struct dirent
{
long d_ino; /* Always zero. */
unsigned short d_reclen; /* Always zero. */
unsigned short d_namlen; /* Length of name in d_name. */
char* d_name; /* File name. */
/* NOTE: The name in the dirent structure points to the name in the
* finddata_t structure in the DIR. */
};
/*
* This is an internal data structure. Good programmers will not use it
* except as an argument to one of the functions below.
* dd_stat field is now int (was short in older versions).
*/
typedef struct
{
/* disk transfer area for this dir */
struct _finddata_t dd_dta;
/* dirent struct to return from dir (NOTE: this makes this thread
* safe as long as only one thread uses a particular DIR struct at
* a time) */
struct dirent dd_dir;
/* _findnext handle */
long dd_handle;
/*
* Status of search:
* 0 = not started yet (next entry to read is first entry)
* -1 = off the end
* positive = 0 based index of next entry
*/
int dd_stat;
/* given path for dir with search pattern (struct is extended) */
char dd_name[1];
} DIR;
DIR* __cdecl opendir (const char*);
struct dirent* __cdecl readdir (DIR*);
int __cdecl closedir (DIR*);
void __cdecl rewinddir (DIR*);
long __cdecl telldir (DIR*);
void __cdecl seekdir (DIR*, long);
/* wide char versions */
struct _wdirent
{
long d_ino; /* Always zero. */
unsigned short d_reclen; /* Always zero. */
unsigned short d_namlen; /* Length of name in d_name. */
wchar_t* d_name; /* File name. */
/* NOTE: The name in the dirent structure points to the name in the * wfinddata_t structure in the _WDIR. */
};
/*
* This is an internal data structure. Good programmers will not use it
* except as an argument to one of the functions below.
*/
typedef struct
{
/* disk transfer area for this dir */
struct _wfinddata_t dd_dta;
/* dirent struct to return from dir (NOTE: this makes this thread
* safe as long as only one thread uses a particular DIR struct at
* a time) */
struct _wdirent dd_dir;
/* _findnext handle */
long dd_handle;
/*
* Status of search:
* 0 = not started yet (next entry to read is first entry)
* -1 = off the end
* positive = 0 based index of next entry
*/
int dd_stat;
/* given path for dir with search pattern (struct is extended) */
wchar_t dd_name[1];
} _WDIR;
_WDIR* __cdecl _wopendir (const wchar_t*);
struct _wdirent* __cdecl _wreaddir (_WDIR*);
int __cdecl _wclosedir (_WDIR*);
void __cdecl _wrewinddir (_WDIR*);
long __cdecl _wtelldir (_WDIR*);
void __cdecl _wseekdir (_WDIR*, long);
#ifdef __cplusplus
}
#endif
#endif /* Not RC_INVOKED */
#pragma pack(pop)
#endif /* Not _DIRENT_H_ */
#endif /* Not __STRICT_ANSI__ */

View File

@@ -1,55 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _INC_DOS
#define _INC_DOS
#include <crtdefs.h>
#include <io.h>
#pragma pack(push,_CRT_PACKING)
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _DISKFREE_T_DEFINED
#define _DISKFREE_T_DEFINED
struct _diskfree_t {
unsigned total_clusters;
unsigned avail_clusters;
unsigned sectors_per_cluster;
unsigned bytes_per_sector;
};
#endif
#define _A_NORMAL 0x00
#define _A_RDONLY 0x01
#define _A_HIDDEN 0x02
#define _A_SYSTEM 0x04
#define _A_SUBDIR 0x10
#define _A_ARCH 0x20
#ifndef _GETDISKFREE_DEFINED
#define _GETDISKFREE_DEFINED
_CRTIMP unsigned __cdecl _getdiskfree(unsigned _Drive,struct _diskfree_t *_DiskFree);
#endif
#if (defined(_X86_) && !defined(__x86_64))
void __cdecl _disable(void);
void __cdecl _enable(void);
#endif
#ifndef NO_OLDNAMES
#define diskfree_t _diskfree_t
#endif
#ifdef __cplusplus
}
#endif
#pragma pack(pop)
#endif

View File

@@ -1,843 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _DVEC_H_INCLUDED
#define _DVEC_H_INCLUDED
#ifndef RC_INVOKED
#if !defined __cplusplus
#error This file is only supported in C++ compilations!
#endif
#include <emmintrin.h>
#include <assert.h>
#include <fvec.h>
#include <crtdefs.h>
#pragma pack(push,_CRT_PACKING)
#if defined(_ENABLE_VEC_DEBUG)
#include <iostream>
#endif
#pragma pack(push,16)
#define EXPLICIT explicit
class I8vec16;
class Is8vec16;
class Iu8vec16;
class I16vec8;
class Is16vec8;
class Iu16vec8;
class I32vec4;
class Is32vec4;
class Iu32vec4;
class I64vec2;
class I128vec1;
#define _MM_16UB(element,vector) (*((unsigned char*)&##vector + ##element))
#define _MM_16B(element,vector) (*((signed char*)&##vector + ##element))
#define _MM_8UW(element,vector) (*((unsigned short*)&##vector + ##element))
#define _MM_8W(element,vector) (*((short*)&##vector + ##element))
#define _MM_4UDW(element,vector) (*((unsigned int*)&##vector + ##element))
#define _MM_4DW(element,vector) (*((int*)&##vector + ##element))
#define _MM_2QW(element,vector) (*((__int64*)&##vector + ##element))
inline const __m128i get_mask128()
{
static const __m128i mask128 = _mm_set1_epi64(M64(0xffffffffffffffffi64));
return mask128;
}
class M128
{
protected:
__m128i vec;
public:
M128() { }
M128(__m128i mm) { vec = mm; }
operator __m128i() const { return vec; }
M128& operator&=(const M128 &a) { return *this = (M128) _mm_and_si128(vec,a); }
M128& operator|=(const M128 &a) { return *this = (M128) _mm_or_si128(vec,a); }
M128& operator^=(const M128 &a) { return *this = (M128) _mm_xor_si128(vec,a); }
};
inline M128 operator&(const M128 &a,const M128 &b) { return _mm_and_si128(a,b); }
inline M128 operator|(const M128 &a,const M128 &b) { return _mm_or_si128(a,b); }
inline M128 operator^(const M128 &a,const M128 &b) { return _mm_xor_si128(a,b); }
inline M128 andnot(const M128 &a,const M128 &b) { return _mm_andnot_si128(a,b); }
class I128vec1 : public M128
{
public:
I128vec1() { }
I128vec1(__m128i mm) : M128(mm) { }
I128vec1& operator= (const M128 &a) { return *this = (I128vec1) a; }
I128vec1& operator&=(const M128 &a) { return *this = (I128vec1) _mm_and_si128(vec,a); }
I128vec1& operator|=(const M128 &a) { return *this = (I128vec1) _mm_or_si128(vec,a); }
I128vec1& operator^=(const M128 &a) { return *this = (I128vec1) _mm_xor_si128(vec,a); }
};
class I64vec2 : public M128
{
public:
I64vec2() { }
I64vec2(__m128i mm) : M128(mm) { }
I64vec2(__m64 q1,__m64 q0)
{
_MM_2QW(0,vec) = *(__int64*)&q0;
_MM_2QW(1,vec) = *(__int64*)&q1;
}
I64vec2& operator= (const M128 &a) { return *this = (I64vec2) a; }
I64vec2& operator&=(const M128 &a) { return *this = (I64vec2) _mm_and_si128(vec,a); }
I64vec2& operator|=(const M128 &a) { return *this = (I64vec2) _mm_or_si128(vec,a); }
I64vec2& operator^=(const M128 &a) { return *this = (I64vec2) _mm_xor_si128(vec,a); }
I64vec2& operator +=(const I64vec2 &a) { return *this = (I64vec2) _mm_add_epi64(vec,a); }
I64vec2& operator -=(const I64vec2 &a) { return *this = (I64vec2) _mm_sub_epi64(vec,a); }
I64vec2 operator<<(const I64vec2 &a) { return _mm_sll_epi64(vec,a); }
I64vec2 operator<<(int count) { return _mm_slli_epi64(vec,count); }
I64vec2& operator<<=(const I64vec2 &a) { return *this = (I64vec2) _mm_sll_epi64(vec,a); }
I64vec2& operator<<=(int count) { return *this = (I64vec2) _mm_slli_epi64(vec,count); }
I64vec2 operator>>(const I64vec2 &a) { return _mm_srl_epi64(vec,a); }
I64vec2 operator>>(int count) { return _mm_srli_epi64(vec,count); }
I64vec2& operator>>=(const I64vec2 &a) { return *this = (I64vec2) _mm_srl_epi64(vec,a); }
I64vec2& operator>>=(int count) { return *this = (I64vec2) _mm_srli_epi64(vec,count); }
const __int64& operator[](int i)const
{
assert(static_cast<unsigned int>(i) < 2);
return _MM_2QW(i,vec);
}
__int64& operator[](int i)
{
assert(static_cast<unsigned int>(i) < 2);
return _MM_2QW(i,vec);
}
};
inline I64vec2 unpack_low(const I64vec2 &a,const I64vec2 &b) {return _mm_unpacklo_epi64(a,b); }
inline I64vec2 unpack_high(const I64vec2 &a,const I64vec2 &b) {return _mm_unpackhi_epi64(a,b); }
class I32vec4 : public M128
{
public:
I32vec4() { }
I32vec4(__m128i mm) : M128(mm) { }
I32vec4& operator= (const M128 &a) { return *this = (I32vec4) a; }
I32vec4& operator&=(const M128 &a) { return *this = (I32vec4) _mm_and_si128(vec,a); }
I32vec4& operator|=(const M128 &a) { return *this = (I32vec4) _mm_or_si128(vec,a); }
I32vec4& operator^=(const M128 &a) { return *this = (I32vec4) _mm_xor_si128(vec,a); }
I32vec4& operator +=(const I32vec4 &a) { return *this = (I32vec4)_mm_add_epi32(vec,a); }
I32vec4& operator -=(const I32vec4 &a) { return *this = (I32vec4)_mm_sub_epi32(vec,a); }
I32vec4 operator<<(const I32vec4 &a) { return _mm_sll_epi32(vec,a); }
I32vec4 operator<<(int count) { return _mm_slli_epi32(vec,count); }
I32vec4& operator<<=(const I32vec4 &a) { return *this = (I32vec4)_mm_sll_epi32(vec,a); }
I32vec4& operator<<=(int count) { return *this = (I32vec4)_mm_slli_epi32(vec,count); }
};
inline I32vec4 cmpeq(const I32vec4 &a,const I32vec4 &b) { return _mm_cmpeq_epi32(a,b); }
inline I32vec4 cmpneq(const I32vec4 &a,const I32vec4 &b) { return _mm_andnot_si128(_mm_cmpeq_epi32(a,b),get_mask128()); }
inline I32vec4 unpack_low(const I32vec4 &a,const I32vec4 &b) { return _mm_unpacklo_epi32(a,b); }
inline I32vec4 unpack_high(const I32vec4 &a,const I32vec4 &b) { return _mm_unpackhi_epi32(a,b); }
class Is32vec4 : public I32vec4
{
public:
Is32vec4() { }
Is32vec4(__m128i mm) : I32vec4(mm) { }
Is32vec4(int i3,int i2,int i1,int i0)
{
_MM_4DW(0,vec) = i0;
_MM_4DW(1,vec) = i1;
_MM_4DW(2,vec) = i2;
_MM_4DW(3,vec) = i3;
}
Is32vec4& operator= (const M128 &a) { return *this = (Is32vec4) a; }
Is32vec4& operator&=(const M128 &a) { return *this = (Is32vec4) _mm_and_si128(vec,a); }
Is32vec4& operator|=(const M128 &a) { return *this = (Is32vec4) _mm_or_si128(vec,a); }
Is32vec4& operator^=(const M128 &a) { return *this = (Is32vec4) _mm_xor_si128(vec,a); }
Is32vec4& operator +=(const I32vec4 &a) { return *this = (Is32vec4)_mm_add_epi32(vec,a); }
Is32vec4& operator -=(const I32vec4 &a) { return *this = (Is32vec4)_mm_sub_epi32(vec,a); }
Is32vec4 operator<<(const M128 &a) { return _mm_sll_epi32(vec,a); }
Is32vec4 operator<<(int count) { return _mm_slli_epi32(vec,count); }
Is32vec4& operator<<=(const M128 &a) { return *this = (Is32vec4)_mm_sll_epi32(vec,a); }
Is32vec4& operator<<=(int count) { return *this = (Is32vec4)_mm_slli_epi32(vec,count); }
Is32vec4 operator>>(const M128 &a) { return _mm_sra_epi32(vec,a); }
Is32vec4 operator>>(int count) { return _mm_srai_epi32(vec,count); }
Is32vec4& operator>>=(const M128 &a) { return *this = (Is32vec4) _mm_sra_epi32(vec,a); }
Is32vec4& operator>>=(int count) { return *this = (Is32vec4) _mm_srai_epi32(vec,count); }
#if defined(_ENABLE_VEC_DEBUG)
friend std::ostream& operator<< (std::ostream &os,const Is32vec4 &a)
{
os << "[3]:" << _MM_4DW(3,a)
<< " [2]:" << _MM_4DW(2,a)
<< " [1]:" << _MM_4DW(1,a)
<< " [0]:" << _MM_4DW(0,a);
return os;
}
#endif
const int& operator[](int i)const
{
assert(static_cast<unsigned int>(i) < 4);
return _MM_4DW(i,vec);
}
int& operator[](int i)
{
assert(static_cast<unsigned int>(i) < 4);
return _MM_4DW(i,vec);
}
};
inline Is32vec4 cmpeq(const Is32vec4 &a,const Is32vec4 &b) { return _mm_cmpeq_epi32(a,b); }
inline Is32vec4 cmpneq(const Is32vec4 &a,const Is32vec4 &b) { return _mm_andnot_si128(_mm_cmpeq_epi32(a,b),get_mask128()); }
inline Is32vec4 cmpgt(const Is32vec4 &a,const Is32vec4 &b) { return _mm_cmpgt_epi32(a,b); }
inline Is32vec4 cmplt(const Is32vec4 &a,const Is32vec4 &b) { return _mm_cmpgt_epi32(b,a); }
inline Is32vec4 unpack_low(const Is32vec4 &a,const Is32vec4 &b) { return _mm_unpacklo_epi32(a,b); }
inline Is32vec4 unpack_high(const Is32vec4 &a,const Is32vec4 &b) { return _mm_unpackhi_epi32(a,b); }
class Iu32vec4 : public I32vec4
{
public:
Iu32vec4() { }
Iu32vec4(__m128i mm) : I32vec4(mm) { }
Iu32vec4(unsigned int ui3,unsigned int ui2,unsigned int ui1,unsigned int ui0)
{
_MM_4UDW(0,vec) = ui0;
_MM_4UDW(1,vec) = ui1;
_MM_4UDW(2,vec) = ui2;
_MM_4UDW(3,vec) = ui3;
}
Iu32vec4& operator= (const M128 &a) { return *this = (Iu32vec4) a; }
Iu32vec4& operator&=(const M128 &a) { return *this = (Iu32vec4) _mm_and_si128(vec,a); }
Iu32vec4& operator|=(const M128 &a) { return *this = (Iu32vec4) _mm_or_si128(vec,a); }
Iu32vec4& operator^=(const M128 &a) { return *this = (Iu32vec4) _mm_xor_si128(vec,a); }
Iu32vec4& operator +=(const I32vec4 &a) { return *this = (Iu32vec4)_mm_add_epi32(vec,a); }
Iu32vec4& operator -=(const I32vec4 &a) { return *this = (Iu32vec4)_mm_sub_epi32(vec,a); }
Iu32vec4 operator<<(const M128 &a) { return _mm_sll_epi32(vec,a); }
Iu32vec4 operator<<(int count) { return _mm_slli_epi32(vec,count); }
Iu32vec4& operator<<=(const M128 &a) { return *this = (Iu32vec4)_mm_sll_epi32(vec,a); }
Iu32vec4& operator<<=(int count) { return *this = (Iu32vec4)_mm_slli_epi32(vec,count); }
Iu32vec4 operator>>(const M128 &a) { return _mm_srl_epi32(vec,a); }
Iu32vec4 operator>>(int count) { return _mm_srli_epi32(vec,count); }
Iu32vec4& operator>>=(const M128 &a) { return *this = (Iu32vec4) _mm_srl_epi32(vec,a); }
Iu32vec4& operator>>=(int count) { return *this = (Iu32vec4) _mm_srli_epi32(vec,count); }
#if defined(_ENABLE_VEC_DEBUG)
friend std::ostream& operator<< (std::ostream &os,const Iu32vec4 &a)
{
os << "[3]:" << _MM_4UDW(3,a)
<< " [2]:" << _MM_4UDW(2,a)
<< " [1]:" << _MM_4UDW(1,a)
<< " [0]:" << _MM_4UDW(0,a);
return os;
}
#endif
const unsigned int& operator[](int i)const
{
assert(static_cast<unsigned int>(i) < 4);
return _MM_4UDW(i,vec);
}
unsigned int& operator[](int i)
{
assert(static_cast<unsigned int>(i) < 4);
return _MM_4UDW(i,vec);
}
};
inline I64vec2 operator*(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_mul_epu32(a,b); }
inline Iu32vec4 cmpeq(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_cmpeq_epi32(a,b); }
inline Iu32vec4 cmpneq(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_andnot_si128(_mm_cmpeq_epi32(a,b),get_mask128()); }
inline Iu32vec4 unpack_low(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_unpacklo_epi32(a,b); }
inline Iu32vec4 unpack_high(const Iu32vec4 &a,const Iu32vec4 &b) { return _mm_unpackhi_epi32(a,b); }
class I16vec8 : public M128
{
public:
I16vec8() { }
I16vec8(__m128i mm) : M128(mm) { }
I16vec8& operator= (const M128 &a) { return *this = (I16vec8) a; }
I16vec8& operator&=(const M128 &a) { return *this = (I16vec8) _mm_and_si128(vec,a); }
I16vec8& operator|=(const M128 &a) { return *this = (I16vec8) _mm_or_si128(vec,a); }
I16vec8& operator^=(const M128 &a) { return *this = (I16vec8) _mm_xor_si128(vec,a); }
I16vec8& operator +=(const I16vec8 &a) { return *this = (I16vec8) _mm_add_epi16(vec,a); }
I16vec8& operator -=(const I16vec8 &a) { return *this = (I16vec8) _mm_sub_epi16(vec,a); }
I16vec8& operator *=(const I16vec8 &a) { return *this = (I16vec8) _mm_mullo_epi16(vec,a); }
I16vec8 operator<<(const M128 &a) { return _mm_sll_epi16(vec,a); }
I16vec8 operator<<(int count) { return _mm_slli_epi16(vec,count); }
I16vec8& operator<<=(const M128 &a) { return *this = (I16vec8)_mm_sll_epi16(vec,a); }
I16vec8& operator<<=(int count) { return *this = (I16vec8)_mm_slli_epi16(vec,count); }
};
inline I16vec8 operator*(const I16vec8 &a,const I16vec8 &b) { return _mm_mullo_epi16(a,b); }
inline I16vec8 cmpeq(const I16vec8 &a,const I16vec8 &b) { return _mm_cmpeq_epi16(a,b); }
inline I16vec8 cmpneq(const I16vec8 &a,const I16vec8 &b) { return _mm_andnot_si128(_mm_cmpeq_epi16(a,b),get_mask128()); }
inline I16vec8 unpack_low(const I16vec8 &a,const I16vec8 &b) { return _mm_unpacklo_epi16(a,b); }
inline I16vec8 unpack_high(const I16vec8 &a,const I16vec8 &b) { return _mm_unpackhi_epi16(a,b); }
class Is16vec8 : public I16vec8
{
public:
Is16vec8() { }
Is16vec8(__m128i mm) : I16vec8(mm) { }
Is16vec8(signed short s7,signed short s6,signed short s5,signed short s4,signed short s3,signed short s2,signed short s1,signed short s0)
{
_MM_8W(0,vec) = s0;
_MM_8W(1,vec) = s1;
_MM_8W(2,vec) = s2;
_MM_8W(3,vec) = s3;
_MM_8W(4,vec) = s4;
_MM_8W(5,vec) = s5;
_MM_8W(6,vec) = s6;
_MM_8W(7,vec) = s7;
}
Is16vec8& operator= (const M128 &a) { return *this = (Is16vec8) a; }
Is16vec8& operator&=(const M128 &a) { return *this = (Is16vec8) _mm_and_si128(vec,a); }
Is16vec8& operator|=(const M128 &a) { return *this = (Is16vec8) _mm_or_si128(vec,a); }
Is16vec8& operator^=(const M128 &a) { return *this = (Is16vec8) _mm_xor_si128(vec,a); }
Is16vec8& operator +=(const I16vec8 &a) { return *this = (Is16vec8) _mm_add_epi16(vec,a); }
Is16vec8& operator -=(const I16vec8 &a) { return *this = (Is16vec8) _mm_sub_epi16(vec,a); }
Is16vec8& operator *=(const I16vec8 &a) { return *this = (Is16vec8) _mm_mullo_epi16(vec,a); }
Is16vec8 operator<<(const M128 &a) { return _mm_sll_epi16(vec,a); }
Is16vec8 operator<<(int count) { return _mm_slli_epi16(vec,count); }
Is16vec8& operator<<=(const M128 &a) { return *this = (Is16vec8)_mm_sll_epi16(vec,a); }
Is16vec8& operator<<=(int count) { return *this = (Is16vec8)_mm_slli_epi16(vec,count); }
Is16vec8 operator>>(const M128 &a) { return _mm_sra_epi16(vec,a); }
Is16vec8 operator>>(int count) { return _mm_srai_epi16(vec,count); }
Is16vec8& operator>>=(const M128 &a) { return *this = (Is16vec8)_mm_sra_epi16(vec,a); }
Is16vec8& operator>>=(int count) { return *this = (Is16vec8)_mm_srai_epi16(vec,count); }
#if defined(_ENABLE_VEC_DEBUG)
friend std::ostream& operator<< (std::ostream &os,const Is16vec8 &a)
{
os << "[7]:" << _MM_8W(7,a)
<< " [6]:" << _MM_8W(6,a)
<< " [5]:" << _MM_8W(5,a)
<< " [4]:" << _MM_8W(4,a)
<< " [3]:" << _MM_8W(3,a)
<< " [2]:" << _MM_8W(2,a)
<< " [1]:" << _MM_8W(1,a)
<< " [0]:" << _MM_8W(0,a);
return os;
}
#endif
const signed short& operator[](int i)const
{
assert(static_cast<unsigned int>(i) < 8);
return _MM_8W(i,vec);
}
signed short& operator[](int i)
{
assert(static_cast<unsigned int>(i) < 8);
return _MM_8W(i,vec);
}
};
inline Is16vec8 operator*(const Is16vec8 &a,const Is16vec8 &b) { return _mm_mullo_epi16(a,b); }
inline Is16vec8 cmpeq(const Is16vec8 &a,const Is16vec8 &b) { return _mm_cmpeq_epi16(a,b); }
inline Is16vec8 cmpneq(const Is16vec8 &a,const Is16vec8 &b) { return _mm_andnot_si128(_mm_cmpeq_epi16(a,b),get_mask128()); }
inline Is16vec8 cmpgt(const Is16vec8 &a,const Is16vec8 &b) { return _mm_cmpgt_epi16(a,b); }
inline Is16vec8 cmplt(const Is16vec8 &a,const Is16vec8 &b) { return _mm_cmpgt_epi16(b,a); }
inline Is16vec8 unpack_low(const Is16vec8 &a,const Is16vec8 &b) { return _mm_unpacklo_epi16(a,b); }
inline Is16vec8 unpack_high(const Is16vec8 &a,const Is16vec8 &b) { return _mm_unpackhi_epi16(a,b); }
inline Is16vec8 mul_high(const Is16vec8 &a,const Is16vec8 &b) { return _mm_mulhi_epi16(a,b); }
inline Is32vec4 mul_add(const Is16vec8 &a,const Is16vec8 &b) { return _mm_madd_epi16(a,b);}
inline Is16vec8 sat_add(const Is16vec8 &a,const Is16vec8 &b) { return _mm_adds_epi16(a,b); }
inline Is16vec8 sat_sub(const Is16vec8 &a,const Is16vec8 &b) { return _mm_subs_epi16(a,b); }
inline Is16vec8 simd_max(const Is16vec8 &a,const Is16vec8 &b) { return _mm_max_epi16(a,b); }
inline Is16vec8 simd_min(const Is16vec8 &a,const Is16vec8 &b) { return _mm_min_epi16(a,b); }
class Iu16vec8 : public I16vec8
{
public:
Iu16vec8() { }
Iu16vec8(__m128i mm) : I16vec8(mm) { }
Iu16vec8(unsigned short s7,unsigned short s6,unsigned short s5,unsigned short s4,unsigned short s3,unsigned short s2,unsigned short s1,unsigned short s0)
{
_MM_8UW(0,vec) = s0;
_MM_8UW(1,vec) = s1;
_MM_8UW(2,vec) = s2;
_MM_8UW(3,vec) = s3;
_MM_8UW(4,vec) = s4;
_MM_8UW(5,vec) = s5;
_MM_8UW(6,vec) = s6;
_MM_8UW(7,vec) = s7;
}
Iu16vec8& operator= (const M128 &a) { return *this = (Iu16vec8) a; }
Iu16vec8& operator&=(const M128 &a) { return *this = (Iu16vec8) _mm_and_si128(vec,a); }
Iu16vec8& operator|=(const M128 &a) { return *this = (Iu16vec8) _mm_or_si128(vec,a); }
Iu16vec8& operator^=(const M128 &a) { return *this = (Iu16vec8) _mm_xor_si128(vec,a); }
Iu16vec8& operator +=(const I16vec8 &a) { return *this = (Iu16vec8) _mm_add_epi16(vec,a); }
Iu16vec8& operator -=(const I16vec8 &a) { return *this = (Iu16vec8) _mm_sub_epi16(vec,a); }
Iu16vec8& operator *=(const I16vec8 &a) { return *this = (Iu16vec8) _mm_mullo_epi16(vec,a); }
Iu16vec8 operator<<(const M128 &a) { return _mm_sll_epi16(vec,a); }
Iu16vec8 operator<<(int count) { return _mm_slli_epi16(vec,count); }
Iu16vec8& operator<<=(const M128 &a) { return *this = (Iu16vec8)_mm_sll_epi16(vec,a); }
Iu16vec8& operator<<=(int count) { return *this = (Iu16vec8)_mm_slli_epi16(vec,count); }
Iu16vec8 operator>>(const M128 &a) { return _mm_srl_epi16(vec,a); }
Iu16vec8 operator>>(int count) { return _mm_srli_epi16(vec,count); }
Iu16vec8& operator>>=(const M128 &a) { return *this = (Iu16vec8) _mm_srl_epi16(vec,a); }
Iu16vec8& operator>>=(int count) { return *this = (Iu16vec8) _mm_srli_epi16(vec,count); }
#if defined(_ENABLE_VEC_DEBUG)
friend std::ostream& operator << (std::ostream &os,const Iu16vec8 &a)
{
os << "[7]:" << unsigned short(_MM_8UW(7,a))
<< " [6]:" << unsigned short(_MM_8UW(6,a))
<< " [5]:" << unsigned short(_MM_8UW(5,a))
<< " [4]:" << unsigned short(_MM_8UW(4,a))
<< " [3]:" << unsigned short(_MM_8UW(3,a))
<< " [2]:" << unsigned short(_MM_8UW(2,a))
<< " [1]:" << unsigned short(_MM_8UW(1,a))
<< " [0]:" << unsigned short(_MM_8UW(0,a));
return os;
}
#endif
const unsigned short& operator[](int i)const
{
assert(static_cast<unsigned int>(i) < 8);
return _MM_8UW(i,vec);
}
unsigned short& operator[](int i)
{
assert(static_cast<unsigned int>(i) < 8);
return _MM_8UW(i,vec);
}
};
inline Iu16vec8 operator*(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_mullo_epi16(a,b); }
inline Iu16vec8 cmpeq(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_cmpeq_epi16(a,b); }
inline Iu16vec8 cmpneq(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_andnot_si128(_mm_cmpeq_epi16(a,b),get_mask128()); }
inline Iu16vec8 unpack_low(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_unpacklo_epi16(a,b); }
inline Iu16vec8 unpack_high(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_unpackhi_epi16(a,b); }
inline Iu16vec8 sat_add(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_adds_epu16(a,b); }
inline Iu16vec8 sat_sub(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_subs_epu16(a,b); }
inline Iu16vec8 simd_avg(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_avg_epu16(a,b); }
inline I16vec8 mul_high(const Iu16vec8 &a,const Iu16vec8 &b) { return _mm_mulhi_epu16(a,b); }
class I8vec16 : public M128
{
public:
I8vec16() { }
I8vec16(__m128i mm) : M128(mm) { }
I8vec16& operator= (const M128 &a) { return *this = (I8vec16) a; }
I8vec16& operator&=(const M128 &a) { return *this = (I8vec16) _mm_and_si128(vec,a); }
I8vec16& operator|=(const M128 &a) { return *this = (I8vec16) _mm_or_si128(vec,a); }
I8vec16& operator^=(const M128 &a) { return *this = (I8vec16) _mm_xor_si128(vec,a); }
I8vec16& operator +=(const I8vec16 &a) { return *this = (I8vec16) _mm_add_epi8(vec,a); }
I8vec16& operator -=(const I8vec16 &a) { return *this = (I8vec16) _mm_sub_epi8(vec,a); }
};
inline I8vec16 cmpeq(const I8vec16 &a,const I8vec16 &b) { return _mm_cmpeq_epi8(a,b); }
inline I8vec16 cmpneq(const I8vec16 &a,const I8vec16 &b) { return _mm_andnot_si128(_mm_cmpeq_epi8(a,b),get_mask128()); }
inline I8vec16 unpack_low(const I8vec16 &a,const I8vec16 &b) { return _mm_unpacklo_epi8(a,b); }
inline I8vec16 unpack_high(const I8vec16 &a,const I8vec16 &b) { return _mm_unpackhi_epi8(a,b); }
class Is8vec16 : public I8vec16
{
public:
Is8vec16() { }
Is8vec16(__m128i mm) : I8vec16(mm) { }
Is8vec16& operator= (const M128 &a) { return *this = (Is8vec16) a; }
Is8vec16& operator&=(const M128 &a) { return *this = (Is8vec16) _mm_and_si128(vec,a); }
Is8vec16& operator|=(const M128 &a) { return *this = (Is8vec16) _mm_or_si128(vec,a); }
Is8vec16& operator^=(const M128 &a) { return *this = (Is8vec16) _mm_xor_si128(vec,a); }
Is8vec16& operator +=(const I8vec16 &a) { return *this = (Is8vec16) _mm_add_epi8(vec,a); }
Is8vec16& operator -=(const I8vec16 &a) { return *this = (Is8vec16) _mm_sub_epi8(vec,a); }
#if defined(_ENABLE_VEC_DEBUG)
friend std::ostream& operator << (std::ostream &os,const Is8vec16 &a)
{
os << "[15]:" << short(_MM_16B(15,a))
<< " [14]:" << short(_MM_16B(14,a))
<< " [13]:" << short(_MM_16B(13,a))
<< " [12]:" << short(_MM_16B(12,a))
<< " [11]:" << short(_MM_16B(11,a))
<< " [10]:" << short(_MM_16B(10,a))
<< " [9]:" << short(_MM_16B(9,a))
<< " [8]:" << short(_MM_16B(8,a))
<< " [7]:" << short(_MM_16B(7,a))
<< " [6]:" << short(_MM_16B(6,a))
<< " [5]:" << short(_MM_16B(5,a))
<< " [4]:" << short(_MM_16B(4,a))
<< " [3]:" << short(_MM_16B(3,a))
<< " [2]:" << short(_MM_16B(2,a))
<< " [1]:" << short(_MM_16B(1,a))
<< " [0]:" << short(_MM_16B(0,a));
return os;
}
#endif
const signed char& operator[](int i)const
{
assert(static_cast<unsigned int>(i) < 16);
return _MM_16B(i,vec);
}
signed char& operator[](int i)
{
assert(static_cast<unsigned int>(i) < 16);
return _MM_16B(i,vec);
}
};
inline Is8vec16 cmpeq(const Is8vec16 &a,const Is8vec16 &b) { return _mm_cmpeq_epi8(a,b); }
inline Is8vec16 cmpneq(const Is8vec16 &a,const Is8vec16 &b) { return _mm_andnot_si128(_mm_cmpeq_epi8(a,b),get_mask128()); }
inline Is8vec16 cmpgt(const Is8vec16 &a,const Is8vec16 &b) { return _mm_cmpgt_epi8(a,b); }
inline Is8vec16 cmplt(const Is8vec16 &a,const Is8vec16 &b) { return _mm_cmplt_epi8(a,b); }
inline Is8vec16 unpack_low(const Is8vec16 &a,const Is8vec16 &b) { return _mm_unpacklo_epi8(a,b); }
inline Is8vec16 unpack_high(const Is8vec16 &a,const Is8vec16 &b) { return _mm_unpackhi_epi8(a,b); }
inline Is8vec16 sat_add(const Is8vec16 &a,const Is8vec16 &b) { return _mm_adds_epi8(a,b); }
inline Is8vec16 sat_sub(const Is8vec16 &a,const Is8vec16 &b) { return _mm_subs_epi8(a,b); }
class Iu8vec16 : public I8vec16
{
public:
Iu8vec16() { }
Iu8vec16(__m128i mm) : I8vec16(mm) { }
Iu8vec16& operator= (const M128 &a) { return *this = (Iu8vec16) a; }
Iu8vec16& operator&=(const M128 &a) { return *this = (Iu8vec16) _mm_and_si128(vec,a); }
Iu8vec16& operator|=(const M128 &a) { return *this = (Iu8vec16) _mm_or_si128(vec,a); }
Iu8vec16& operator^=(const M128 &a) { return *this = (Iu8vec16) _mm_xor_si128(vec,a); }
Iu8vec16& operator +=(const I8vec16 &a) { return *this = (Iu8vec16) _mm_add_epi8(vec,a); }
Iu8vec16& operator -=(const I8vec16 &a) { return *this = (Iu8vec16) _mm_sub_epi8(vec,a); }
#if defined(_ENABLE_VEC_DEBUG)
friend std::ostream& operator << (std::ostream &os,const Iu8vec16 &a)
{
os << "[15]:" << unsigned short(_MM_16UB(15,a))
<< " [14]:" << unsigned short(_MM_16UB(14,a))
<< " [13]:" << unsigned short(_MM_16UB(13,a))
<< " [12]:" << unsigned short(_MM_16UB(12,a))
<< " [11]:" << unsigned short(_MM_16UB(11,a))
<< " [10]:" << unsigned short(_MM_16UB(10,a))
<< " [9]:" << unsigned short(_MM_16UB(9,a))
<< " [8]:" << unsigned short(_MM_16UB(8,a))
<< " [7]:" << unsigned short(_MM_16UB(7,a))
<< " [6]:" << unsigned short(_MM_16UB(6,a))
<< " [5]:" << unsigned short(_MM_16UB(5,a))
<< " [4]:" << unsigned short(_MM_16UB(4,a))
<< " [3]:" << unsigned short(_MM_16UB(3,a))
<< " [2]:" << unsigned short(_MM_16UB(2,a))
<< " [1]:" << unsigned short(_MM_16UB(1,a))
<< " [0]:" << unsigned short(_MM_16UB(0,a));
return os;
}
#endif
const unsigned char& operator[](int i)const
{
assert(static_cast<unsigned int>(i) < 16);
return _MM_16UB(i,vec);
}
unsigned char& operator[](int i)
{
assert(static_cast<unsigned int>(i) < 16);
return _MM_16UB(i,vec);
}
};
inline Iu8vec16 cmpeq(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_cmpeq_epi8(a,b); }
inline Iu8vec16 cmpneq(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_andnot_si128(_mm_cmpeq_epi8(a,b),get_mask128()); }
inline Iu8vec16 unpack_low(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_unpacklo_epi8(a,b); }
inline Iu8vec16 unpack_high(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_unpackhi_epi8(a,b); }
inline Iu8vec16 sat_add(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_adds_epu8(a,b); }
inline Iu8vec16 sat_sub(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_subs_epu8(a,b); }
inline I64vec2 sum_abs(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_sad_epu8(a,b); }
inline Iu8vec16 simd_avg(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_avg_epu8(a,b); }
inline Iu8vec16 simd_max(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_max_epu8(a,b); }
inline Iu8vec16 simd_min(const Iu8vec16 &a,const Iu8vec16 &b) { return _mm_min_epu8(a,b); }
inline Is16vec8 pack_sat(const Is32vec4 &a,const Is32vec4 &b) { return _mm_packs_epi32(a,b); }
inline Is8vec16 pack_sat(const Is16vec8 &a,const Is16vec8 &b) { return _mm_packs_epi16(a,b); }
inline Iu8vec16 packu_sat(const Is16vec8 &a,const Is16vec8 &b) { return _mm_packus_epi16(a,b);}
#define IVEC128_LOGICALS(vect,element) inline I##vect##vec##element operator& (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_and_si128(a,b); } inline I##vect##vec##element operator| (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_or_si128(a,b); } inline I##vect##vec##element operator^ (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_xor_si128(a,b); } inline I##vect##vec##element andnot (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_andnot_si128(a,b); }
IVEC128_LOGICALS(8,16)
IVEC128_LOGICALS(u8,16)
IVEC128_LOGICALS(s8,16)
IVEC128_LOGICALS(16,8)
IVEC128_LOGICALS(u16,8)
IVEC128_LOGICALS(s16,8)
IVEC128_LOGICALS(32,4)
IVEC128_LOGICALS(u32,4)
IVEC128_LOGICALS(s32,4)
IVEC128_LOGICALS(64,2)
IVEC128_LOGICALS(128,1)
#undef IVEC128_LOGICALS
#define IVEC128_ADD_SUB(vect,element,opsize) inline I##vect##vec##element operator+ (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_add_##opsize(a,b); } inline I##vect##vec##element operator- (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_sub_##opsize(a,b); }
IVEC128_ADD_SUB(8,16,epi8)
IVEC128_ADD_SUB(u8,16,epi8)
IVEC128_ADD_SUB(s8,16,epi8)
IVEC128_ADD_SUB(16,8,epi16)
IVEC128_ADD_SUB(u16,8,epi16)
IVEC128_ADD_SUB(s16,8,epi16)
IVEC128_ADD_SUB(32,4,epi32)
IVEC128_ADD_SUB(u32,4,epi32)
IVEC128_ADD_SUB(s32,4,epi32)
IVEC128_ADD_SUB(64,2,epi64)
#undef IVEC128_ADD_SUB
#define IVEC128_SELECT(vect12,vect34,element,selop,arg1,arg2) inline I##vect34##vec##element select_##selop (const I##vect12##vec##element &a,const I##vect12##vec##element &b,const I##vect34##vec##element &c,const I##vect34##vec##element &d) { I##vect12##vec##element mask = cmp##selop(a,b); return(I##vect34##vec##element ((mask & arg1) | I##vect12##vec##element ((_mm_andnot_si128(mask,arg2))))); }
IVEC128_SELECT(8,s8,16,eq,c,d)
IVEC128_SELECT(8,u8,16,eq,c,d)
IVEC128_SELECT(8,8,16,eq,c,d)
IVEC128_SELECT(8,s8,16,neq,c,d)
IVEC128_SELECT(8,u8,16,neq,c,d)
IVEC128_SELECT(8,8,16,neq,c,d)
IVEC128_SELECT(16,s16,8,eq,c,d)
IVEC128_SELECT(16,u16,8,eq,c,d)
IVEC128_SELECT(16,16,8,eq,c,d)
IVEC128_SELECT(16,s16,8,neq,c,d)
IVEC128_SELECT(16,u16,8,neq,c,d)
IVEC128_SELECT(16,16,8,neq,c,d)
IVEC128_SELECT(32,s32,4,eq,c,d)
IVEC128_SELECT(32,u32,4,eq,c,d)
IVEC128_SELECT(32,32,4,eq,c,d)
IVEC128_SELECT(32,s32,4,neq,c,d)
IVEC128_SELECT(32,u32,4,neq,c,d)
IVEC128_SELECT(32,32,4,neq,c,d)
IVEC128_SELECT(s8,s8,16,gt,c,d)
IVEC128_SELECT(s8,u8,16,gt,c,d)
IVEC128_SELECT(s8,8,16,gt,c,d)
IVEC128_SELECT(s8,s8,16,lt,c,d)
IVEC128_SELECT(s8,u8,16,lt,c,d)
IVEC128_SELECT(s8,8,16,lt,c,d)
IVEC128_SELECT(s16,s16,8,gt,c,d)
IVEC128_SELECT(s16,u16,8,gt,c,d)
IVEC128_SELECT(s16,16,8,gt,c,d)
IVEC128_SELECT(s16,s16,8,lt,c,d)
IVEC128_SELECT(s16,u16,8,lt,c,d)
IVEC128_SELECT(s16,16,8,lt,c,d)
#undef IVEC128_SELECT
class F64vec2
{
protected:
__m128d vec;
public:
F64vec2() {}
F64vec2(__m128d m) { vec = m;}
F64vec2(double d1,double d0) { vec= _mm_set_pd(d1,d0); }
EXPLICIT F64vec2(double d) { vec = _mm_set1_pd(d); }
operator __m128d() const { return vec; }
friend F64vec2 operator &(const F64vec2 &a,const F64vec2 &b) { return _mm_and_pd(a,b); }
friend F64vec2 operator |(const F64vec2 &a,const F64vec2 &b) { return _mm_or_pd(a,b); }
friend F64vec2 operator ^(const F64vec2 &a,const F64vec2 &b) { return _mm_xor_pd(a,b); }
friend F64vec2 operator +(const F64vec2 &a,const F64vec2 &b) { return _mm_add_pd(a,b); }
friend F64vec2 operator -(const F64vec2 &a,const F64vec2 &b) { return _mm_sub_pd(a,b); }
friend F64vec2 operator *(const F64vec2 &a,const F64vec2 &b) { return _mm_mul_pd(a,b); }
friend F64vec2 operator /(const F64vec2 &a,const F64vec2 &b) { return _mm_div_pd(a,b); }
F64vec2& operator +=(F64vec2 &a) { return *this = _mm_add_pd(vec,a); }
F64vec2& operator -=(F64vec2 &a) { return *this = _mm_sub_pd(vec,a); }
F64vec2& operator *=(F64vec2 &a) { return *this = _mm_mul_pd(vec,a); }
F64vec2& operator /=(F64vec2 &a) { return *this = _mm_div_pd(vec,a); }
F64vec2& operator &=(F64vec2 &a) { return *this = _mm_and_pd(vec,a); }
F64vec2& operator |=(F64vec2 &a) { return *this = _mm_or_pd(vec,a); }
F64vec2& operator ^=(F64vec2 &a) { return *this = _mm_xor_pd(vec,a); }
friend double add_horizontal(F64vec2 &a)
{
F64vec2 ftemp = _mm_add_sd(a,_mm_shuffle_pd(a,a,1));
return ftemp[0];
}
friend F64vec2 andnot(const F64vec2 &a,const F64vec2 &b) { return _mm_andnot_pd(a,b); }
friend F64vec2 sqrt(const F64vec2 &a) { return _mm_sqrt_pd(a); }
#define F64vec2_COMP(op) friend F64vec2 cmp##op (const F64vec2 &a,const F64vec2 &b) { return _mm_cmp##op##_pd(a,b); }
F64vec2_COMP(eq)
F64vec2_COMP(lt)
F64vec2_COMP(le)
F64vec2_COMP(gt)
F64vec2_COMP(ge)
F64vec2_COMP(ngt)
F64vec2_COMP(nge)
F64vec2_COMP(neq)
F64vec2_COMP(nlt)
F64vec2_COMP(nle)
#undef F64vec2_COMP
friend F64vec2 simd_min(const F64vec2 &a,const F64vec2 &b) { return _mm_min_pd(a,b); }
friend F64vec2 simd_max(const F64vec2 &a,const F64vec2 &b) { return _mm_max_pd(a,b); }
#define F64vec2_COMI(op) friend int comi##op (const F64vec2 &a,const F64vec2 &b) { return _mm_comi##op##_sd(a,b); }
F64vec2_COMI(eq)
F64vec2_COMI(lt)
F64vec2_COMI(le)
F64vec2_COMI(gt)
F64vec2_COMI(ge)
F64vec2_COMI(neq)
#undef F64vec2_COMI
#define F64vec2_UCOMI(op) friend int ucomi##op (const F64vec2 &a,const F64vec2 &b) { return _mm_ucomi##op##_sd(a,b); }
F64vec2_UCOMI(eq)
F64vec2_UCOMI(lt)
F64vec2_UCOMI(le)
F64vec2_UCOMI(gt)
F64vec2_UCOMI(ge)
F64vec2_UCOMI(neq)
#undef F64vec2_UCOMI
#if defined(_ENABLE_VEC_DEBUG)
friend std::ostream & operator<<(std::ostream & os,const F64vec2 &a) {
double *dp = (double*)&a;
os << " [1]:" << *(dp+1)
<< " [0]:" << *dp;
return os;
}
#endif
const double &operator[](int i) const {
assert((0 <= i) && (i <= 1));
double *dp = (double*)&vec;
return *(dp+i);
}
double &operator[](int i) {
assert((0 <= i) && (i <= 1));
double *dp = (double*)&vec;
return *(dp+i);
}
};
inline F64vec2 unpack_low(const F64vec2 &a,const F64vec2 &b) { return _mm_unpacklo_pd(a,b); }
inline F64vec2 unpack_high(const F64vec2 &a,const F64vec2 &b) { return _mm_unpackhi_pd(a,b); }
inline int move_mask(const F64vec2 &a) { return _mm_movemask_pd(a); }
inline void loadu(F64vec2 &a,double *p) { a = _mm_loadu_pd(p); }
inline void storeu(double *p,const F64vec2 &a) { _mm_storeu_pd(p,a); }
inline void store_nta(double *p,F64vec2 &a) { _mm_stream_pd(p,a); }
#define F64vec2_SELECT(op) inline F64vec2 select_##op (const F64vec2 &a,const F64vec2 &b,const F64vec2 &c,const F64vec2 &d) { F64vec2 mask = _mm_cmp##op##_pd(a,b); return((mask & c) | F64vec2((_mm_andnot_pd(mask,d)))); }
F64vec2_SELECT(eq)
F64vec2_SELECT(lt)
F64vec2_SELECT(le)
F64vec2_SELECT(gt)
F64vec2_SELECT(ge)
F64vec2_SELECT(neq)
F64vec2_SELECT(nlt)
F64vec2_SELECT(nle)
#undef F64vec2_SELECT
inline int F64vec2ToInt(const F64vec2 &a) { return _mm_cvttsd_si32(a); }
inline F64vec2 F32vec4ToF64vec2(const F32vec4 &a) { return _mm_cvtps_pd(a); }
inline F32vec4 F64vec2ToF32vec4(const F64vec2 &a) { return _mm_cvtpd_ps(a); }
inline F64vec2 IntToF64vec2(const F64vec2 &a,int b) { return _mm_cvtsi32_sd(a,b); }
#pragma pack(pop)
#pragma pack(pop)
#endif
#endif

View File

@@ -1,40 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#include <crtdefs.h>
#ifndef _EH_H_
#define _EH_H_
#ifndef RC_INVOKED
#pragma pack(push,_CRT_PACKING)
#ifndef __cplusplus
#error eh.h is only for C++!
#endif
typedef void (__cdecl *terminate_function)();
typedef void (__cdecl *terminate_handler)();
typedef void (__cdecl *unexpected_function)();
typedef void (__cdecl *unexpected_handler)();
struct _EXCEPTION_POINTERS;
typedef void (__cdecl *_se_translator_function)(unsigned int,struct _EXCEPTION_POINTERS *);
_CRTIMP __declspec(noreturn) void __cdecl terminate(void);
_CRTIMP void __cdecl unexpected(void);
_CRTIMP int __cdecl _is_exception_typeof(const type_info &_Type,struct _EXCEPTION_POINTERS *_ExceptionPtr);
_CRTIMP terminate_function __cdecl set_terminate(terminate_function _NewPtFunc);
extern "C" _CRTIMP terminate_function __cdecl _get_terminate(void);
_CRTIMP unexpected_function __cdecl set_unexpected(unexpected_function _NewPtFunc);
extern "C" _CRTIMP unexpected_function __cdecl _get_unexpected(void);
_CRTIMP _se_translator_function __cdecl _set_se_translator(_se_translator_function _NewPtFunc);
_CRTIMP bool __cdecl __uncaught_exception();
#pragma pack(pop)
#endif
#endif /* End _EH_H_ */

View File

@@ -1,75 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _INC_ERRNO
#define _INC_ERRNO
#include <crtdefs.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _CRT_ERRNO_DEFINED
#define _CRT_ERRNO_DEFINED
_CRTIMP extern int *__cdecl _errno(void);
#define errno (*_errno())
errno_t __cdecl _set_errno(int _Value);
errno_t __cdecl _get_errno(int *_Value);
#endif
#define EPERM 1
#define ENOENT 2
#define ESRCH 3
#define EINTR 4
#define EIO 5
#define ENXIO 6
#define E2BIG 7
#define ENOEXEC 8
#define EBADF 9
#define ECHILD 10
#define EAGAIN 11
#define ENOMEM 12
#define EACCES 13
#define EFAULT 14
#define EBUSY 16
#define EEXIST 17
#define EXDEV 18
#define ENODEV 19
#define ENOTDIR 20
#define EISDIR 21
#define ENFILE 23
#define EMFILE 24
#define ENOTTY 25
#define EFBIG 27
#define ENOSPC 28
#define ESPIPE 29
#define EROFS 30
#define EMLINK 31
#define EPIPE 32
#define EDOM 33
#define EDEADLK 36
#define ENAMETOOLONG 38
#define ENOLCK 39
#define ENOSYS 40
#define ENOTEMPTY 41
#ifndef RC_INVOKED
#if !defined(_SECURECRT_ERRCODE_VALUES_DEFINED)
#define _SECURECRT_ERRCODE_VALUES_DEFINED
#define EINVAL 22
#define ERANGE 34
#define EILSEQ 42
#define STRUNCATE 80
#endif
#endif
#define EDEADLOCK EDEADLK
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,129 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _INC_EXCPT
#define _INC_EXCPT
#include <crtdefs.h>
#pragma pack(push,_CRT_PACKING)
#ifdef __cplusplus
extern "C" {
#endif
typedef enum _EXCEPTION_DISPOSITION
{
ExceptionContinueExecution,
ExceptionContinueSearch,
ExceptionNestedException,
ExceptionCollidedUnwind,
} EXCEPTION_DISPOSITION;
#if (defined(_X86_) && !defined(__x86_64))
struct _EXCEPTION_RECORD;
struct _CONTEXT;
EXCEPTION_DISPOSITION __cdecl _except_handler(struct _EXCEPTION_RECORD *_ExceptionRecord,void *_EstablisherFrame,struct _CONTEXT *_ContextRecord,void *_DispatcherContext);
#elif defined(__ia64__)
typedef struct _EXCEPTION_POINTERS *Exception_info_ptr;
struct _EXCEPTION_RECORD;
struct _CONTEXT;
struct _DISPATCHER_CONTEXT;
__MINGW_EXTENSION _CRTIMP EXCEPTION_DISPOSITION __cdecl __C_specific_handler (struct _EXCEPTION_RECORD *_ExceptionRecord,unsigned __int64 _MemoryStackFp,unsigned __int64 _BackingStoreFp,struct _CONTEXT *_ContextRecord,struct _DISPATCHER_CONTEXT *_DispatcherContext,unsigned __int64 _GlobalPointer);
#elif defined(__x86_64)
struct _EXCEPTION_RECORD;
struct _CONTEXT;
struct _DISPATCHER_CONTEXT;
_CRTIMP EXCEPTION_DISPOSITION __cdecl __C_specific_handler (struct _EXCEPTION_RECORD *_ExceptionRecord,void *_EstablisherFrame,struct _CONTEXT *_ContextRecord,struct _DISPATCHER_CONTEXT *_DispatcherContext);
#endif
#ifdef _MSC_VER // HACK!!!
#define GetExceptionCode _exception_code
#define exception_code _exception_code
#define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info
#define exception_info (struct _EXCEPTION_POINTERS *)_exception_info
#define AbnormalTermination _abnormal_termination
#define abnormal_termination _abnormal_termination
#endif
unsigned long __cdecl _exception_code(void);
void *__cdecl _exception_info(void);
int __cdecl _abnormal_termination(void);
#define EXCEPTION_EXECUTE_HANDLER 1
#define EXCEPTION_CONTINUE_SEARCH 0
#define EXCEPTION_CONTINUE_EXECUTION -1
#if 0
/* CRT stuff */
typedef void (__cdecl * _PHNDLR)(int);
struct _XCPT_ACTION {
unsigned long XcptNum;
int SigNum;
_PHNDLR XcptAction;
};
extern struct _XCPT_ACTION _XcptActTab[];
extern int _XcptActTabCount;
extern int _XcptActTabSize;
extern int _First_FPE_Indx;
extern int _Num_FPE;
int __cdecl __CppXcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr);
int __cdecl _XcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr);
/*
* The type of function that is expected as an exception handler to be
* installed with _try1.
*/
typedef EXCEPTION_DISPOSITION (*PEXCEPTION_HANDLER)(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
#ifndef HAVE_NO_SEH
/*
* This is not entirely necessary, but it is the structure installed by
* the _try1 primitive below.
*/
typedef struct _EXCEPTION_REGISTRATION {
struct _EXCEPTION_REGISTRATION *prev;
EXCEPTION_DISPOSITION (*handler)(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
} EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION;
typedef EXCEPTION_REGISTRATION EXCEPTION_REGISTRATION_RECORD;
typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD;
#endif
#if (defined(_X86_) && !defined(__x86_64))
#define __try1(pHandler) \
__asm__ ("pushl %0;pushl %%fs:0;movl %%esp,%%fs:0;" : : "g" (pHandler));
#define __except1 \
__asm__ ("movl (%%esp),%%eax;movl %%eax,%%fs:0;addl $8,%%esp;" \
: : : "%eax");
#elif defined(__x86_64)
#define __try1(pHandler) \
__asm__ ("pushq %0;pushq %%gs:0;movq %%rsp,%%gs:0;" : : "g" (pHandler));
#define __except1 \
__asm__ ("movq (%%rsp),%%rax;movq %%rax,%%gs:0;addq $16,%%rsp;" \
: : : "%rax");
#else
#define __try1(pHandler)
#define __except1
#endif
#endif // 0
#ifdef __cplusplus
}
#endif
#pragma pack(pop)
#endif

View File

@@ -1,50 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#include <crtdefs.h>
#ifndef _INC_FCNTL
#define _INC_FCNTL
#define _O_RDONLY 0x0000
#define _O_WRONLY 0x0001
#define _O_RDWR 0x0002
#define _O_APPEND 0x0008
#define _O_CREAT 0x0100
#define _O_TRUNC 0x0200
#define _O_EXCL 0x0400
#define _O_TEXT 0x4000
#define _O_BINARY 0x8000
#define _O_WTEXT 0x10000
#define _O_U16TEXT 0x20000
#define _O_U8TEXT 0x40000
#define _O_ACCMODE (_O_RDONLY|_O_WRONLY|_O_RDWR)
#define _O_RAW _O_BINARY
#define _O_NOINHERIT 0x0080
#define _O_TEMPORARY 0x0040
#define _O_SHORT_LIVED 0x1000
#define _O_SEQUENTIAL 0x0020
#define _O_RANDOM 0x0010
#if !defined(NO_OLDNAMES) || defined(_POSIX)
#define O_RDONLY _O_RDONLY
#define O_WRONLY _O_WRONLY
#define O_RDWR _O_RDWR
#define O_APPEND _O_APPEND
#define O_CREAT _O_CREAT
#define O_TRUNC _O_TRUNC
#define O_EXCL _O_EXCL
#define O_TEXT _O_TEXT
#define O_BINARY _O_BINARY
#define O_RAW _O_BINARY
#define O_TEMPORARY _O_TEMPORARY
#define O_NOINHERIT _O_NOINHERIT
#define O_SEQUENTIAL _O_SEQUENTIAL
#define O_RANDOM _O_RANDOM
#define O_ACCMODE _O_ACCMODE
#endif
#endif

View File

@@ -1,106 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _FENV_H_
#define _FENV_H_
/* FPU status word exception flags */
#define FE_INVALID 0x01
#define FE_DENORMAL 0x02
#define FE_DIVBYZERO 0x04
#define FE_OVERFLOW 0x08
#define FE_UNDERFLOW 0x10
#define FE_INEXACT 0x20
#define FE_ALL_EXCEPT (FE_INVALID | FE_DENORMAL | FE_DIVBYZERO \
| FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
/* FPU control word rounding flags */
#define FE_TONEAREST 0x0000
#define FE_DOWNWARD 0x0400
#define FE_UPWARD 0x0800
#define FE_TOWARDZERO 0x0c00
/* The MXCSR exception flags are the same as the
FE flags. */
#define __MXCSR_EXCEPT_FLAG_SHIFT 0
/* How much to shift FE status word exception flags
to get MXCSR rounding flags, */
#define __MXCSR_ROUND_FLAG_SHIFT 3
#ifndef RC_INVOKED
/*
For now, support only for the basic abstraction of flags that are
either set or clear. fexcept_t could be structure that holds more
info about the fp environment.
*/
typedef unsigned short fexcept_t;
/* This 32-byte struct represents the entire floating point
environment as stored by fnstenv or fstenv, augmented by
the contents of the MXCSR register, as stored by stmxcsr
(if CPU supports it). */
typedef struct
{
unsigned short __control_word;
unsigned short __unused0;
unsigned short __status_word;
unsigned short __unused1;
unsigned short __tag_word;
unsigned short __unused2;
unsigned int __ip_offset; /* instruction pointer offset */
unsigned short __ip_selector;
unsigned short __opcode;
unsigned int __data_offset;
unsigned short __data_selector;
unsigned short __unused3;
unsigned int __mxcsr; /* contents of the MXCSR register */
} fenv_t;
/*The C99 standard (7.6.9) allows us to define implementation-specific macros for
different fp environments */
/* The default Intel x87 floating point environment (64-bit mantissa) */
#define FE_PC64_ENV ((const fenv_t *)-1)
/* The floating point environment set by MSVCRT _fpreset (53-bit mantissa) */
#define FE_PC53_ENV ((const fenv_t *)-2)
/* The FE_DFL_ENV macro is required by standard.
fesetenv will use the environment set at app startup.*/
#define FE_DFL_ENV ((const fenv_t *) 0)
#ifdef __cplusplus
extern "C" {
#endif
/*TODO: Some of these could be inlined */
/* 7.6.2 Exception */
extern int __cdecl feclearexcept (int);
extern int __cdecl fegetexceptflag (fexcept_t * flagp, int excepts);
extern int __cdecl feraiseexcept (int excepts );
extern int __cdecl fesetexceptflag (const fexcept_t *, int);
extern int __cdecl fetestexcept (int excepts);
/* 7.6.3 Rounding */
extern int __cdecl fegetround (void);
extern int __cdecl fesetround (int mode);
/* 7.6.4 Environment */
extern int __cdecl fegetenv(fenv_t * envp);
extern int __cdecl fesetenv(const fenv_t * );
extern int __cdecl feupdateenv(const fenv_t *);
extern int __cdecl feholdexcept(fenv_t *);
#ifdef __cplusplus
}
#endif
#endif /* Not RC_INVOKED */
#endif /* ndef _FENV_H */

Some files were not shown because too many files have changed in this diff Show More