2017-09-12 15:13 UTC Viktor Szakats (vszakats users.noreply.github.com)
* bin/check.hb
* config/*/*.mk
* contrib/gtwvg/wvgwing.c
* contrib/hbcomm/comm.prg
* contrib/hbfbird/tfirebrd.prg
* contrib/hbfimage/fi_wrp.c
* contrib/hbformat/hbfmtcls.prg
* contrib/hbformat/utils/hbformat.prg
* contrib/hbhttpd/core.prg
* contrib/hbnetio/utils/hbnetio/hbnetio.prg
* contrib/hbnetio/utils/hbnetio/netiomgm.hb
* contrib/hbsqlit3/hdbc.prg
* contrib/hbwin/win_bmp.c
* contrib/xhb/htmutil.prg
* contrib/xhb/thtm.prg
* contrib/xhb/xhbarr.c
* contrib/xhb/xhbtedit.prg
* ChangeLog.txt
* debian/control
* debian/copyright
* doc/*.txt
* LICENSE.txt
* package/harbour.spec
* README.md
* src/compiler/hbusage.c
* src/pp/hbpp.c
* src/rtl/memoedit.prg
* src/rtl/teditor.prg
* src/rtl/tget.prg
* src/rtl/version.c
* utils/hbi18n/hbi18n.prg
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/po/hbmk2.hu.po
* utils/hbtest/hbtest.prg
* sync with 3.4 fork (no change in functionality)
CC3 -> CC4 license, copyright banners, some strings, minor
code changes, doc folder, TOFIX -> FIXME
This commit is contained in:
1501
ChangeLog.txt
1501
ChangeLog.txt
File diff suppressed because it is too large
Load Diff
742
LICENSE.txt
742
LICENSE.txt
@@ -24,7 +24,7 @@ THE HARBOUR PROJECT LIBRARY LICENSE
|
|||||||
===================================
|
===================================
|
||||||
|
|
||||||
Note: This license applies to most of the files in the include directory,
|
Note: This license applies to most of the files in the include directory,
|
||||||
source directory, and subdirectories.
|
/src, /contrib, /extras directories, and their subdirectories.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -85,14 +85,14 @@ Note: This license applies to the files where the content
|
|||||||
explicitly indicates so.
|
explicitly indicates so.
|
||||||
|
|
||||||
These works are licensed under the Creative Commons Attribution-ShareAlike
|
These works are licensed under the Creative Commons Attribution-ShareAlike
|
||||||
License. To view a copy of this license, visit
|
4.0 International License. To view a copy of this license, visit
|
||||||
http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to
|
https://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
|
||||||
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
|
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
|
||||||
USA. A summary of the license and the full legal text is included
|
USA. A summary of the license and the full legal text is included
|
||||||
after this text. If you wish to distribute some or all of these works
|
after this text. If you wish to distribute some or all of these works
|
||||||
under different terms, please contact respective author(s).
|
under different terms, please contact respective author(s).
|
||||||
|
|
||||||
License summary: Creative Commons Attribution-ShareAlike 3.0 Unported
|
License summary: Creative Commons Attribution-ShareAlike 4.0 International
|
||||||
|
|
||||||
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
|
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
|
||||||
|
|
||||||
@@ -123,421 +123,431 @@ Under the following conditions:
|
|||||||
|
|
||||||
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
|
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
|
||||||
|
|
||||||
Creative Commons Legal Code: Attribution-ShareAlike 3.0 Unported
|
Attribution-ShareAlike 4.0 International
|
||||||
|
|
||||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
=======================================================================
|
||||||
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
|
|
||||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
|
||||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
|
||||||
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
|
|
||||||
DAMAGES RESULTING FROM ITS USE.
|
|
||||||
|
|
||||||
License:
|
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||||
|
does not provide legal services or legal advice. Distribution of
|
||||||
|
Creative Commons public licenses does not create a lawyer-client or
|
||||||
|
other relationship. Creative Commons makes its licenses and related
|
||||||
|
information available on an "as-is" basis. Creative Commons gives no
|
||||||
|
warranties regarding its licenses, any material licensed under their
|
||||||
|
terms and conditions, or any related information. Creative Commons
|
||||||
|
disclaims all liability for damages resulting from their use to the
|
||||||
|
fullest extent possible.
|
||||||
|
|
||||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
|
Using Creative Commons Public Licenses
|
||||||
CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
|
|
||||||
PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
|
|
||||||
WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
|
|
||||||
PROHIBITED.
|
|
||||||
|
|
||||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
|
Creative Commons public licenses provide a standard set of terms and
|
||||||
AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS
|
conditions that creators and other rights holders may use to share
|
||||||
LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU
|
original works of authorship and other material subject to copyright
|
||||||
THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH
|
and certain other rights specified in the public license below. The
|
||||||
TERMS AND CONDITIONS.
|
following considerations are for informational purposes only, are not
|
||||||
|
exhaustive, and do not form part of our licenses.
|
||||||
|
|
||||||
1. Definitions
|
Considerations for licensors: Our public licenses are
|
||||||
|
intended for use by those authorized to give the public
|
||||||
|
permission to use material in ways otherwise restricted by
|
||||||
|
copyright and certain other rights. Our licenses are
|
||||||
|
irrevocable. Licensors should read and understand the terms
|
||||||
|
and conditions of the license they choose before applying it.
|
||||||
|
Licensors should also secure all rights necessary before
|
||||||
|
applying our licenses so that the public can reuse the
|
||||||
|
material as expected. Licensors should clearly mark any
|
||||||
|
material not subject to the license. This includes other CC-
|
||||||
|
licensed material, or material used under an exception or
|
||||||
|
limitation to copyright. More considerations for licensors:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensors
|
||||||
|
|
||||||
a. "Adaptation" means a work based upon the Work, or upon the Work
|
Considerations for the public: By using one of our public
|
||||||
and other pre-existing works, such as a translation, adaptation,
|
licenses, a licensor grants the public permission to use the
|
||||||
derivative work, arrangement of music or other alterations of a
|
licensed material under specified terms and conditions. If
|
||||||
literary or artistic work, or phonogram or performance and
|
the licensor's permission is not necessary for any reason--for
|
||||||
includes cinematographic adaptations or any other form in which
|
example, because of any applicable exception or limitation to
|
||||||
the Work may be recast, transformed, or adapted including in any
|
copyright--then that use is not regulated by the license. Our
|
||||||
form recognizably derived from the original, except that a work
|
licenses grant only permissions under copyright and certain
|
||||||
that constitutes a Collection will not be considered an
|
other rights that a licensor has authority to grant. Use of
|
||||||
Adaptation for the purpose of this License. For the avoidance of
|
the licensed material may still be restricted for other
|
||||||
doubt, where the Work is a musical work, performance or
|
reasons, including because others have copyright or other
|
||||||
phonogram, the synchronization of the Work in timed-relation
|
rights in the material. A licensor may make special requests,
|
||||||
with a moving image ("synching") will be considered an
|
such as asking that all changes be marked or described.
|
||||||
Adaptation for the purpose of this License.
|
Although not required by our licenses, you are encouraged to
|
||||||
|
respect those requests where reasonable. More_considerations
|
||||||
|
for the public:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensees
|
||||||
|
|
||||||
b. "Collection" means a collection of literary or artistic works,
|
=======================================================================
|
||||||
such as encyclopedias and anthologies, or performances,
|
|
||||||
phonograms or broadcasts, or other works or subject matter other
|
|
||||||
than works listed in Section 1(f) below, which, by reason of the
|
|
||||||
selection and arrangement of their contents, constitute
|
|
||||||
intellectual creations, in which the Work is included in its
|
|
||||||
entirety in unmodified form along with one or more other
|
|
||||||
contributions, each constituting separate and independent works
|
|
||||||
in themselves, which together are assembled into a collective
|
|
||||||
whole. A work that constitutes a Collection will not be
|
|
||||||
considered an Adaptation (as defined below) for the purposes of
|
|
||||||
this License.
|
|
||||||
|
|
||||||
c. "Creative Commons Compatible License" means a license that is
|
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||||
listed at http://creativecommons.org/compatiblelicenses that has
|
License
|
||||||
been approved by Creative Commons as being essentially
|
|
||||||
equivalent to this License, including, at a minimum, because
|
|
||||||
that license: (i) contains terms that have the same purpose,
|
|
||||||
meaning and effect as the License Elements of this License; and,
|
|
||||||
(ii) explicitly permits the relicensing of adaptations of works
|
|
||||||
made available under that license under this License or a
|
|
||||||
Creative Commons jurisdiction license with the same License
|
|
||||||
Elements as this License.
|
|
||||||
|
|
||||||
d. "Distribute" means to make available to the public the original
|
By exercising the Licensed Rights (defined below), You accept and agree
|
||||||
and copies of the Work or Adaptation, as appropriate, through
|
to be bound by the terms and conditions of this Creative Commons
|
||||||
sale or other transfer of ownership.
|
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||||
|
License"). To the extent this Public License may be interpreted as a
|
||||||
|
contract, You are granted the Licensed Rights in consideration of Your
|
||||||
|
acceptance of these terms and conditions, and the Licensor grants You
|
||||||
|
such rights in consideration of benefits the Licensor receives from
|
||||||
|
making the Licensed Material available under these terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
e. "License Elements" means the following high-level license
|
|
||||||
attributes as selected by Licensor and indicated in the title of
|
|
||||||
this License: Attribution, ShareAlike.
|
|
||||||
|
|
||||||
f. "Licensor" means the individual, individuals, entity or entities
|
Section 1 -- Definitions.
|
||||||
that offer(s) the Work under the terms of this License.
|
|
||||||
|
|
||||||
g. "Original Author" means, in the case of a literary or artistic
|
a. Adapted Material means material subject to Copyright and Similar
|
||||||
work, the individual, individuals, entity or entities who
|
Rights that is derived from or based upon the Licensed Material
|
||||||
created the Work or if no individual or entity can be
|
and in which the Licensed Material is translated, altered,
|
||||||
identified, the publisher; and in addition (i) in the case of a
|
arranged, transformed, or otherwise modified in a manner requiring
|
||||||
performance the actors, singers, musicians, dancers, and other
|
permission under the Copyright and Similar Rights held by the
|
||||||
persons who act, sing, deliver, declaim, play in, interpret or
|
Licensor. For purposes of this Public License, where the Licensed
|
||||||
otherwise perform literary or artistic works or expressions of
|
Material is a musical work, performance, or sound recording,
|
||||||
folklore; (ii) in the case of a phonogram the producer being the
|
Adapted Material is always produced where the Licensed Material is
|
||||||
person or legal entity who first fixes the sounds of a
|
synched in timed relation with a moving image.
|
||||||
performance or other sounds; and, (iii) in the case of
|
|
||||||
broadcasts, the organization that transmits the broadcast.
|
|
||||||
|
|
||||||
h. "Work" means the literary and/or artistic work offered under the
|
b. Adapter's License means the license You apply to Your Copyright
|
||||||
terms of this License including without limitation any
|
and Similar Rights in Your contributions to Adapted Material in
|
||||||
production in the literary, scientific and artistic domain,
|
accordance with the terms and conditions of this Public License.
|
||||||
whatever may be the mode or form of its expression including
|
|
||||||
digital form, such as a book, pamphlet and other writing; a
|
|
||||||
lecture, address, sermon or other work of the same nature; a
|
|
||||||
dramatic or dramatico-musical work; a choreographic work or
|
|
||||||
entertainment in dumb show; a musical composition with or
|
|
||||||
without words; a cinematographic work to which are assimilated
|
|
||||||
works expressed by a process analogous to cinematography; a work
|
|
||||||
of drawing, painting, architecture, sculpture, engraving or
|
|
||||||
lithography; a photographic work to which are assimilated works
|
|
||||||
expressed by a process analogous to photography; a work of
|
|
||||||
applied art; an illustration, map, plan, sketch or
|
|
||||||
three-dimensional work relative to geography, topography,
|
|
||||||
architecture or science; a performance; a broadcast; a
|
|
||||||
phonogram; a compilation of data to the extent it is protected
|
|
||||||
as a copyrightable work; or a work performed by a variety or
|
|
||||||
circus performer to the extent it is not otherwise considered a
|
|
||||||
literary or artistic work.
|
|
||||||
|
|
||||||
i. "You" means an individual or entity exercising rights under this
|
c. BY-SA Compatible License means a license listed at
|
||||||
License who has not previously violated the terms of this
|
creativecommons.org/compatiblelicenses, approved by Creative
|
||||||
License with respect to the Work, or who has received express
|
Commons as essentially the equivalent of this Public License.
|
||||||
permission from the Licensor to exercise rights under this
|
|
||||||
License despite a previous violation.
|
|
||||||
|
|
||||||
j. "Publicly Perform" means to perform public recitations of the
|
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||||
Work and to communicate to the public those public recitations,
|
closely related to copyright including, without limitation,
|
||||||
by any means or process, including by wire or wireless means or
|
performance, broadcast, sound recording, and Sui Generis Database
|
||||||
public digital performances; to make available to the public
|
Rights, without regard to how the rights are labeled or
|
||||||
Works in such a way that members of the public may access these
|
categorized. For purposes of this Public License, the rights
|
||||||
Works from a place and at a place individually chosen by them;
|
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||||
to perform the Work to the public by any means or process and
|
Rights.
|
||||||
the communication to the public of the performances of the Work,
|
|
||||||
including by public digital performance; to broadcast and
|
|
||||||
rebroadcast the Work by any means including signs, sounds or
|
|
||||||
images.
|
|
||||||
|
|
||||||
k. "Reproduce" means to make copies of the Work by any means
|
e. Effective Technological Measures means those measures that, in the
|
||||||
including without limitation by sound or visual recordings and
|
absence of proper authority, may not be circumvented under laws
|
||||||
the right of fixation and reproducing fixations of the Work,
|
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||||
including storage of a protected performance or phonogram in
|
Treaty adopted on December 20, 1996, and/or similar international
|
||||||
digital form or other electronic medium.
|
agreements.
|
||||||
|
|
||||||
2. Fair Dealing Rights.
|
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||||
|
any other exception or limitation to Copyright and Similar Rights
|
||||||
|
that applies to Your use of the Licensed Material.
|
||||||
|
|
||||||
Nothing in this License is intended to reduce, limit, or restrict
|
g. License Elements means the license attributes listed in the name
|
||||||
any uses free from copyright or rights arising from limitations or
|
of a Creative Commons Public License. The License Elements of this
|
||||||
exceptions that are provided for in connection with the copyright
|
Public License are Attribution and ShareAlike.
|
||||||
protection under copyright law or other applicable laws.
|
|
||||||
|
|
||||||
3. License Grant.
|
h. Licensed Material means the artistic or literary work, database,
|
||||||
|
or other material to which the Licensor applied this Public
|
||||||
|
License.
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, Licensor
|
i. Licensed Rights means the rights granted to You subject to the
|
||||||
hereby grants You a worldwide, royalty-free, non-exclusive,
|
terms and conditions of this Public License, which are limited to
|
||||||
perpetual (for the duration of the applicable copyright) license to
|
all Copyright and Similar Rights that apply to Your use of the
|
||||||
exercise the rights in the Work as stated below:
|
Licensed Material and that the Licensor has authority to license.
|
||||||
|
|
||||||
a. to Reproduce the Work, to incorporate the Work into one or more
|
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||||
Collections, and to Reproduce the Work as incorporated in the
|
under this Public License.
|
||||||
Collections;
|
|
||||||
|
|
||||||
b. to create and Reproduce Adaptations provided that any such
|
k. Share means to provide material to the public by any means or
|
||||||
Adaptation, including any translation in any medium, takes
|
process that requires permission under the Licensed Rights, such
|
||||||
reasonable steps to clearly label, demarcate or otherwise
|
as reproduction, public display, public performance, distribution,
|
||||||
identify that changes were made to the original Work. For
|
dissemination, communication, or importation, and to make material
|
||||||
example, a translation could be marked "The original work was
|
available to the public including in ways that members of the
|
||||||
translated from English to Spanish," or a modification could
|
public may access the material from a place and at a time
|
||||||
indicate "The original work has been modified.";
|
individually chosen by them.
|
||||||
|
|
||||||
c. to Distribute and Publicly Perform the Work including as
|
l. Sui Generis Database Rights means rights other than copyright
|
||||||
incorporated in Collections; and,
|
resulting from Directive 96/9/EC of the European Parliament and of
|
||||||
|
the Council of 11 March 1996 on the legal protection of databases,
|
||||||
|
as amended and/or succeeded, as well as other essentially
|
||||||
|
equivalent rights anywhere in the world.
|
||||||
|
|
||||||
d. to Distribute and Publicly Perform Adaptations.
|
m. You means the individual or entity exercising the Licensed Rights
|
||||||
|
under this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
e. For the avoidance of doubt:
|
|
||||||
|
|
||||||
i. Non-waivable Compulsory License Schemes. In those
|
Section 2 -- Scope.
|
||||||
jurisdictions in which the right to collect royalties
|
|
||||||
through any statutory or compulsory licensing scheme
|
|
||||||
cannot be waived, the Licensor reserves the exclusive
|
|
||||||
right to collect such royalties for any exercise by You of
|
|
||||||
the rights granted under this License;
|
|
||||||
|
|
||||||
ii. Waivable Compulsory License Schemes. In those
|
a. License grant.
|
||||||
jurisdictions in which the right to collect royalties
|
|
||||||
through any statutory or compulsory licensing scheme can
|
|
||||||
be waived, the Licensor waives the exclusive right to
|
|
||||||
collect such royalties for any exercise by You of the
|
|
||||||
rights granted under this License; and,
|
|
||||||
|
|
||||||
iii. Voluntary License Schemes. The Licensor waives the right
|
1. Subject to the terms and conditions of this Public License,
|
||||||
to collect royalties, whether individually or, in the
|
the Licensor hereby grants You a worldwide, royalty-free,
|
||||||
event that the Licensor is a member of a collecting
|
non-sublicensable, non-exclusive, irrevocable license to
|
||||||
society that administers voluntary licensing schemes, via
|
exercise the Licensed Rights in the Licensed Material to:
|
||||||
that society, from any exercise by You of the rights
|
|
||||||
granted under this License.
|
|
||||||
|
|
||||||
The above rights may be exercised in all media and formats whether
|
a. reproduce and Share the Licensed Material, in whole or
|
||||||
now known or hereafter devised. The above rights include the right
|
in part; and
|
||||||
to make such modifications as are technically necessary to exercise
|
|
||||||
the rights in other media and formats. Subject to Section 8(f), all
|
|
||||||
rights not expressly granted by Licensor are hereby reserved.
|
|
||||||
|
|
||||||
4. Restrictions.
|
b. produce, reproduce, and Share Adapted Material.
|
||||||
|
|
||||||
The license granted in Section 3 above is expressly made subject to
|
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||||
and limited by the following restrictions:
|
Exceptions and Limitations apply to Your use, this Public
|
||||||
|
License does not apply, and You do not need to comply with
|
||||||
|
its terms and conditions.
|
||||||
|
|
||||||
a. You may Distribute or Publicly Perform the Work only under the
|
3. Term. The term of this Public License is specified in Section
|
||||||
terms of this License. You must include a copy of, or the
|
6(a).
|
||||||
Uniform Resource Identifier (URI) for, this License with every
|
|
||||||
copy of the Work You Distribute or Publicly Perform. You may not
|
|
||||||
offer or impose any terms on the Work that restrict the terms of
|
|
||||||
this License or the ability of the recipient of the Work to
|
|
||||||
exercise the rights granted to that recipient under the terms of
|
|
||||||
the License. You may not sublicense the Work. You must keep
|
|
||||||
intact all notices that refer to this License and to the
|
|
||||||
disclaimer of warranties with every copy of the Work You
|
|
||||||
Distribute or Publicly Perform. When You Distribute or Publicly
|
|
||||||
Perform the Work, You may not impose any effective technological
|
|
||||||
measures on the Work that restrict the ability of a recipient of
|
|
||||||
the Work from You to exercise the rights granted to that
|
|
||||||
recipient under the terms of the License. This Section 4(a)
|
|
||||||
applies to the Work as incorporated in a Collection, but this
|
|
||||||
does not require the Collection apart from the Work itself to be
|
|
||||||
made subject to the terms of this License. If You create a
|
|
||||||
Collection, upon notice from any Licensor You must, to the
|
|
||||||
extent practicable, remove from the Collection any credit as
|
|
||||||
required by Section 4(c), as requested. If You create an
|
|
||||||
Adaptation, upon notice from any Licensor You must, to the
|
|
||||||
extent practicable, remove from the Adaptation any credit as
|
|
||||||
required by Section 4(c), as requested.
|
|
||||||
|
|
||||||
b. You may Distribute or Publicly Perform an Adaptation only under
|
4. Media and formats; technical modifications allowed. The
|
||||||
the terms of: (i) this License; (ii) a later version of this
|
Licensor authorizes You to exercise the Licensed Rights in
|
||||||
License with the same License Elements as this License; (iii) a
|
all media and formats whether now known or hereafter created,
|
||||||
Creative Commons jurisdiction license (either this or a later
|
and to make technical modifications necessary to do so. The
|
||||||
license version) that contains the same License Elements as this
|
Licensor waives and/or agrees not to assert any right or
|
||||||
License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative
|
authority to forbid You from making technical modifications
|
||||||
Commons Compatible License. If you license the Adaptation under
|
necessary to exercise the Licensed Rights, including
|
||||||
one of the licenses mentioned in (iv), you must comply with the
|
technical modifications necessary to circumvent Effective
|
||||||
terms of that license. If you license the Adaptation under the
|
Technological Measures. For purposes of this Public License,
|
||||||
terms of any of the licenses mentioned in (i), (ii) or (iii)
|
simply making modifications authorized by this Section 2(a)
|
||||||
(the "Applicable License"), you must comply with the terms of
|
(4) never produces Adapted Material.
|
||||||
the Applicable License generally and the following provisions:
|
|
||||||
(I) You must include a copy of, or the URI for, the Applicable
|
|
||||||
License with every copy of each Adaptation You Distribute or
|
|
||||||
Publicly Perform; (II) You may not offer or impose any terms on
|
|
||||||
the Adaptation that restrict the terms of the Applicable License
|
|
||||||
or the ability of the recipient of the Adaptation to exercise
|
|
||||||
the rights granted to that recipient under the terms of the
|
|
||||||
Applicable License; (III) You must keep intact all notices that
|
|
||||||
refer to the Applicable License and to the disclaimer of
|
|
||||||
warranties with every copy of the Work as included in the
|
|
||||||
Adaptation You Distribute or Publicly Perform; (IV) when You
|
|
||||||
Distribute or Publicly Perform the Adaptation, You may not
|
|
||||||
impose any effective technological measures on the Adaptation
|
|
||||||
that restrict the ability of a recipient of the Adaptation from
|
|
||||||
You to exercise the rights granted to that recipient under the
|
|
||||||
terms of the Applicable License. This Section 4(b) applies to
|
|
||||||
the Adaptation as incorporated in a Collection, but this does
|
|
||||||
not require the Collection apart from the Adaptation itself to
|
|
||||||
be made subject to the terms of the Applicable License.
|
|
||||||
|
|
||||||
c. If You Distribute, or Publicly Perform the Work or any
|
5. Downstream recipients.
|
||||||
Adaptations or Collections, You must, unless a request has been
|
|
||||||
made pursuant to Section 4(a), keep intact all copyright notices
|
|
||||||
for the Work and provide, reasonable to the medium or means You
|
|
||||||
are utilizing: (i) the name of the Original Author (or
|
|
||||||
pseudonym, if applicable) if supplied, and/or if the Original
|
|
||||||
Author and/or Licensor designate another party or parties (e.g.,
|
|
||||||
a sponsor institute, publishing entity, journal) for attribution
|
|
||||||
("Attribution Parties") in Licensor's copyright notice, terms of
|
|
||||||
service or by other reasonable means, the name of such party or
|
|
||||||
parties; (ii) the title of the Work if supplied; (iii) to the
|
|
||||||
extent reasonably practicable, the URI, if any, that Licensor
|
|
||||||
specifies to be associated with the Work, unless such URI does
|
|
||||||
not refer to the copyright notice or licensing information for
|
|
||||||
the Work; and (iv) , consistent with Ssection 3(b), in the case
|
|
||||||
of an Adaptation, a credit identifying the use of the Work in
|
|
||||||
the Adaptation (e.g., "French translation of the Work by
|
|
||||||
Original Author," or "Screenplay based on original Work by
|
|
||||||
Original Author"). The credit required by this Section 4(c) may
|
|
||||||
be implemented in any reasonable manner; provided, however, that
|
|
||||||
in the case of a Adaptation or Collection, at a minimum such
|
|
||||||
credit will appear, if a credit for all contributing authors of
|
|
||||||
the Adaptation or Collection appears, then as part of these
|
|
||||||
credits and in a manner at least as prominent as the credits for
|
|
||||||
the other contributing authors. For the avoidance of doubt, You
|
|
||||||
may only use the credit required by this Section for the purpose
|
|
||||||
of attribution in the manner set out above and, by exercising
|
|
||||||
Your rights under this License, You may not implicitly or
|
|
||||||
explicitly assert or imply any connection with, sponsorship or
|
|
||||||
endorsement by the Original Author, Licensor and/or Attribution
|
|
||||||
Parties, as appropriate, of You or Your use of the Work, without
|
|
||||||
the separate, express prior written permission of the Original
|
|
||||||
Author, Licensor and/or Attribution Parties.
|
|
||||||
|
|
||||||
d. Except as otherwise agreed in writing by the Licensor or as may
|
a. Offer from the Licensor -- Licensed Material. Every
|
||||||
be otherwise permitted by applicable law, if You Reproduce,
|
recipient of the Licensed Material automatically
|
||||||
Distribute or Publicly Perform the Work either by itself or as
|
receives an offer from the Licensor to exercise the
|
||||||
part of any Adaptations or Collections, You must not distort,
|
Licensed Rights under the terms and conditions of this
|
||||||
mutilate, modify or take other derogatory action in relation to
|
Public License.
|
||||||
the Work which would be prejudicial to the Original Author's
|
|
||||||
honor or reputation. Licensor agrees that in those jurisdictions
|
|
||||||
(e.g. Japan), in which any exercise of the right granted in
|
|
||||||
Section 3(b) of this License (the right to make Adaptations)
|
|
||||||
would be deemed to be a distortion, mutilation, modification or
|
|
||||||
other derogatory action prejudicial to the Original Author's
|
|
||||||
honor and reputation, the Licensor will waive or not assert, as
|
|
||||||
appropriate, this Section, to the fullest extent permitted by
|
|
||||||
the applicable national law, to enable You to reasonably
|
|
||||||
exercise Your right under Section 3(b) of this License (right to
|
|
||||||
make Adaptations) but not otherwise.
|
|
||||||
|
|
||||||
5. Representations, Warranties and Disclaimer
|
b. Additional offer from the Licensor -- Adapted Material.
|
||||||
|
Every recipient of Adapted Material from You
|
||||||
|
automatically receives an offer from the Licensor to
|
||||||
|
exercise the Licensed Rights in the Adapted Material
|
||||||
|
under the conditions of the Adapter's License You apply.
|
||||||
|
|
||||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING,
|
c. No downstream restrictions. You may not offer or impose
|
||||||
LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR
|
any additional or different terms or conditions on, or
|
||||||
WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED,
|
apply any Effective Technological Measures to, the
|
||||||
STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF
|
Licensed Material if doing so restricts exercise of the
|
||||||
TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
Licensed Rights by any recipient of the Licensed
|
||||||
NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY,
|
Material.
|
||||||
OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT
|
|
||||||
DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED
|
|
||||||
WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
|
|
||||||
|
|
||||||
6. Limitation on Liability.
|
6. No endorsement. Nothing in this Public License constitutes or
|
||||||
|
may be construed as permission to assert or imply that You
|
||||||
|
are, or that Your use of the Licensed Material is, connected
|
||||||
|
with, or sponsored, endorsed, or granted official status by,
|
||||||
|
the Licensor or others designated to receive attribution as
|
||||||
|
provided in Section 3(a)(1)(A)(i).
|
||||||
|
|
||||||
EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL
|
b. Other rights.
|
||||||
LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
|
|
||||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT
|
|
||||||
OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN
|
|
||||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
||||||
|
|
||||||
7. Termination
|
1. Moral rights, such as the right of integrity, are not
|
||||||
|
licensed under this Public License, nor are publicity,
|
||||||
|
privacy, and/or other similar personality rights; however, to
|
||||||
|
the extent possible, the Licensor waives and/or agrees not to
|
||||||
|
assert any such rights held by the Licensor to the limited
|
||||||
|
extent necessary to allow You to exercise the Licensed
|
||||||
|
Rights, but not otherwise.
|
||||||
|
|
||||||
a. This License and the rights granted hereunder will terminate
|
2. Patent and trademark rights are not licensed under this
|
||||||
automatically upon any breach by You of the terms of this
|
Public License.
|
||||||
License. Individuals or entities who have received Adaptations
|
|
||||||
or Collections from You under this License, however, will not
|
|
||||||
have their licenses terminated provided such individuals or
|
|
||||||
entities remain in full compliance with those licenses. Sections
|
|
||||||
1, 2, 5, 6, 7, and 8 will survive any termination of this
|
|
||||||
License.
|
|
||||||
|
|
||||||
b. Subject to the above terms and conditions, the license granted
|
3. To the extent possible, the Licensor waives any right to
|
||||||
here is perpetual (for the duration of the applicable copyright
|
collect royalties from You for the exercise of the Licensed
|
||||||
in the Work). Notwithstanding the above, Licensor reserves the
|
Rights, whether directly or through a collecting society
|
||||||
right to release the Work under different license terms or to
|
under any voluntary or waivable statutory or compulsory
|
||||||
stop distributing the Work at any time; provided, however that
|
licensing scheme. In all other cases the Licensor expressly
|
||||||
any such election will not serve to withdraw this License (or
|
reserves any right to collect such royalties.
|
||||||
any other license that has been, or is required to be, granted
|
|
||||||
under the terms of this License), and this License will continue
|
|
||||||
in full force and effect unless terminated as stated above.
|
|
||||||
|
|
||||||
8. Miscellaneous
|
|
||||||
|
|
||||||
a. Each time You Distribute or Publicly Perform the Work or a
|
Section 3 -- License Conditions.
|
||||||
Collection, the Licensor offers to the recipient a license to
|
|
||||||
the Work on the same terms and conditions as the license granted
|
|
||||||
to You under this License.
|
|
||||||
|
|
||||||
b. Each time You Distribute or Publicly Perform an Adaptation,
|
Your exercise of the Licensed Rights is expressly made subject to the
|
||||||
Licensor offers to the recipient a license to the original Work
|
following conditions.
|
||||||
on the same terms and conditions as the license granted to You
|
|
||||||
under this License.
|
|
||||||
|
|
||||||
c. If any provision of this License is invalid or unenforceable
|
a. Attribution.
|
||||||
under applicable law, it shall not affect the validity or
|
|
||||||
enforceability of the remainder of the terms of this License,
|
|
||||||
and without further action by the parties to this agreement,
|
|
||||||
such provision shall be reformed to the minimum extent necessary
|
|
||||||
to make such provision valid and enforceable.
|
|
||||||
|
|
||||||
d. No term or provision of this License shall be deemed waived and
|
1. If You Share the Licensed Material (including in modified
|
||||||
no breach consented to unless such waiver or consent shall be in
|
form), You must:
|
||||||
writing and signed by the party to be charged with such waiver
|
|
||||||
or consent.
|
|
||||||
|
|
||||||
e. This License constitutes the entire agreement between the
|
a. retain the following if it is supplied by the Licensor
|
||||||
parties with respect to the Work licensed here. There are no
|
with the Licensed Material:
|
||||||
understandings, agreements or representations with respect to
|
|
||||||
the Work not specified here. Licensor shall not be bound by any
|
|
||||||
additional provisions that may appear in any communication from
|
|
||||||
You. This License may not be modified without the mutual written
|
|
||||||
agreement of the Licensor and You.
|
|
||||||
|
|
||||||
f. The rights granted under, and the subject matter referenced, in
|
i. identification of the creator(s) of the Licensed
|
||||||
this License were drafted utilizing the terminology of the Berne
|
Material and any others designated to receive
|
||||||
Convention for the Protection of Literary and Artistic Works (as
|
attribution, in any reasonable manner requested by
|
||||||
amended on September 28, 1979), the Rome Convention of 1961, the
|
the Licensor (including by pseudonym if
|
||||||
WIPO Copyright Treaty of 1996, the WIPO Performances and
|
designated);
|
||||||
Phonograms Treaty of 1996 and the Universal Copyright Convention
|
|
||||||
(as revised on July 24, 1971). These rights and subject matter
|
|
||||||
take effect in the relevant jurisdiction in which the License
|
|
||||||
terms are sought to be enforced according to the corresponding
|
|
||||||
provisions of the implementation of those treaty provisions in
|
|
||||||
the applicable national law. If the standard suite of rights
|
|
||||||
granted under applicable copyright law includes additional
|
|
||||||
rights not granted under this License, such additional rights
|
|
||||||
are deemed to be included in the License; this License is not
|
|
||||||
intended to restrict the license of any rights under applicable
|
|
||||||
law.
|
|
||||||
|
|
||||||
Creative Commons Notice
|
ii. a copyright notice;
|
||||||
|
|
||||||
Creative Commons is not a party to this License, and makes no warranty
|
iii. a notice that refers to this Public License;
|
||||||
whatsoever in connection with the Work. Creative Commons will not be
|
|
||||||
liable to You or any party on any legal theory for any damages
|
|
||||||
whatsoever, including without limitation any general, special,
|
|
||||||
incidental or consequential damages arising in connection to this
|
|
||||||
license. Notwithstanding the foregoing two (2) sentences, if Creative
|
|
||||||
Commons has expressly identified itself as the Licensor hereunder, it
|
|
||||||
shall have all rights and obligations of Licensor.
|
|
||||||
|
|
||||||
Except for the limited purpose of indicating to the public that the
|
iv. a notice that refers to the disclaimer of
|
||||||
Work is licensed under the CCPL, Creative Commons does not authorize
|
warranties;
|
||||||
the use by either party of the trademark "Creative Commons" or any
|
|
||||||
related trademark or logo of Creative Commons without the prior
|
|
||||||
written consent of Creative Commons. Any permitted use will be in
|
|
||||||
compliance with Creative Commons' then-current trademark usage
|
|
||||||
guidelines, as may be published on its website or otherwise made
|
|
||||||
available upon request from time to time. For the avoidance of doubt,
|
|
||||||
this trademark restriction does not form part of the License.
|
|
||||||
|
|
||||||
Creative Commons may be contacted at http://creativecommons.org/.
|
v. a URI or hyperlink to the Licensed Material to the
|
||||||
|
extent reasonably practicable;
|
||||||
|
|
||||||
|
b. indicate if You modified the Licensed Material and
|
||||||
|
retain an indication of any previous modifications; and
|
||||||
|
|
||||||
|
c. indicate the Licensed Material is licensed under this
|
||||||
|
Public License, and include the text of, or the URI or
|
||||||
|
hyperlink to, this Public License.
|
||||||
|
|
||||||
|
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||||
|
reasonable manner based on the medium, means, and context in
|
||||||
|
which You Share the Licensed Material. For example, it may be
|
||||||
|
reasonable to satisfy the conditions by providing a URI or
|
||||||
|
hyperlink to a resource that includes the required
|
||||||
|
information.
|
||||||
|
|
||||||
|
3. If requested by the Licensor, You must remove any of the
|
||||||
|
information required by Section 3(a)(1)(A) to the extent
|
||||||
|
reasonably practicable.
|
||||||
|
|
||||||
|
b. ShareAlike.
|
||||||
|
|
||||||
|
In addition to the conditions in Section 3(a), if You Share
|
||||||
|
Adapted Material You produce, the following conditions also apply.
|
||||||
|
|
||||||
|
1. The Adapter's License You apply must be a Creative Commons
|
||||||
|
license with the same License Elements, this version or
|
||||||
|
later, or a BY-SA Compatible License.
|
||||||
|
|
||||||
|
2. You must include the text of, or the URI or hyperlink to, the
|
||||||
|
Adapter's License You apply. You may satisfy this condition
|
||||||
|
in any reasonable manner based on the medium, means, and
|
||||||
|
context in which You Share Adapted Material.
|
||||||
|
|
||||||
|
3. You may not offer or impose any additional or different terms
|
||||||
|
or conditions on, or apply any Effective Technological
|
||||||
|
Measures to, Adapted Material that restrict exercise of the
|
||||||
|
rights granted under the Adapter's License You apply.
|
||||||
|
|
||||||
|
|
||||||
|
Section 4 -- Sui Generis Database Rights.
|
||||||
|
|
||||||
|
Where the Licensed Rights include Sui Generis Database Rights that
|
||||||
|
apply to Your use of the Licensed Material:
|
||||||
|
|
||||||
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||||
|
to extract, reuse, reproduce, and Share all or a substantial
|
||||||
|
portion of the contents of the database;
|
||||||
|
|
||||||
|
b. if You include all or a substantial portion of the database
|
||||||
|
contents in a database in which You have Sui Generis Database
|
||||||
|
Rights, then the database in which You have Sui Generis Database
|
||||||
|
Rights (but not its individual contents) is Adapted Material,
|
||||||
|
|
||||||
|
including for purposes of Section 3(b); and
|
||||||
|
c. You must comply with the conditions in Section 3(a) if You Share
|
||||||
|
all or a substantial portion of the contents of the database.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 4 supplements and does not
|
||||||
|
replace Your obligations under this Public License where the Licensed
|
||||||
|
Rights include other Copyright and Similar Rights.
|
||||||
|
|
||||||
|
|
||||||
|
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||||
|
|
||||||
|
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||||
|
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||||
|
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||||
|
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||||
|
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||||
|
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
|
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||||
|
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||||
|
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||||
|
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||||
|
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||||
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||||
|
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||||
|
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||||
|
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||||
|
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
c. The disclaimer of warranties and limitation of liability provided
|
||||||
|
above shall be interpreted in a manner that, to the extent
|
||||||
|
possible, most closely approximates an absolute disclaimer and
|
||||||
|
waiver of all liability.
|
||||||
|
|
||||||
|
|
||||||
|
Section 6 -- Term and Termination.
|
||||||
|
|
||||||
|
a. This Public License applies for the term of the Copyright and
|
||||||
|
Similar Rights licensed here. However, if You fail to comply with
|
||||||
|
this Public License, then Your rights under this Public License
|
||||||
|
terminate automatically.
|
||||||
|
|
||||||
|
b. Where Your right to use the Licensed Material has terminated under
|
||||||
|
Section 6(a), it reinstates:
|
||||||
|
|
||||||
|
1. automatically as of the date the violation is cured, provided
|
||||||
|
it is cured within 30 days of Your discovery of the
|
||||||
|
violation; or
|
||||||
|
|
||||||
|
2. upon express reinstatement by the Licensor.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||||
|
right the Licensor may have to seek remedies for Your violations
|
||||||
|
of this Public License.
|
||||||
|
|
||||||
|
c. For the avoidance of doubt, the Licensor may also offer the
|
||||||
|
Licensed Material under separate terms or conditions or stop
|
||||||
|
distributing the Licensed Material at any time; however, doing so
|
||||||
|
will not terminate this Public License.
|
||||||
|
|
||||||
|
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 7 -- Other Terms and Conditions.
|
||||||
|
|
||||||
|
a. The Licensor shall not be bound by any additional or different
|
||||||
|
terms or conditions communicated by You unless expressly agreed.
|
||||||
|
|
||||||
|
b. Any arrangements, understandings, or agreements regarding the
|
||||||
|
Licensed Material not stated herein are separate from and
|
||||||
|
independent of the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 8 -- Interpretation.
|
||||||
|
|
||||||
|
a. For the avoidance of doubt, this Public License does not, and
|
||||||
|
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||||
|
conditions on any use of the Licensed Material that could lawfully
|
||||||
|
be made without permission under this Public License.
|
||||||
|
|
||||||
|
b. To the extent possible, if any provision of this Public License is
|
||||||
|
deemed unenforceable, it shall be automatically reformed to the
|
||||||
|
minimum extent necessary to make it enforceable. If the provision
|
||||||
|
cannot be reformed, it shall be severed from this Public License
|
||||||
|
without affecting the enforceability of the remaining terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
c. No term or condition of this Public License will be waived and no
|
||||||
|
failure to comply consented to unless expressly agreed to by the
|
||||||
|
Licensor.
|
||||||
|
|
||||||
|
d. Nothing in this Public License constitutes or may be interpreted
|
||||||
|
as a limitation upon, or waiver of, any privileges and immunities
|
||||||
|
that apply to the Licensor or You, including from the legal
|
||||||
|
processes of any jurisdiction or authority.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons is not a party to its public licenses.
|
||||||
|
Notwithstanding, Creative Commons may elect to apply one of its public
|
||||||
|
licenses to material it publishes and in those instances will be
|
||||||
|
considered the "Licensor." Except for the limited purpose of indicating
|
||||||
|
that material is shared under a Creative Commons public license or as
|
||||||
|
otherwise permitted by the Creative Commons policies published at
|
||||||
|
creativecommons.org/policies, Creative Commons does not authorize the
|
||||||
|
use of the trademark "Creative Commons" or any other trademark or logo
|
||||||
|
of Creative Commons without its prior written consent including,
|
||||||
|
without limitation, in connection with any unauthorized modifications
|
||||||
|
to any of its public licenses or any other arrangements,
|
||||||
|
understandings, or agreements concerning use of licensed material. For
|
||||||
|
the avoidance of doubt, this paragraph does not form part of the public
|
||||||
|
licenses.
|
||||||
|
|
||||||
|
Creative Commons may be contacted at creativecommons.org.
|
||||||
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE VERSION 2
|
GNU GENERAL PUBLIC LICENSE VERSION 2
|
||||||
|
|||||||
@@ -1953,7 +1953,6 @@ Supported shells per host platforms:
|
|||||||
* Harbour [internal documents](doc/)
|
* Harbour [internal documents](doc/)
|
||||||
* [Wikipedia](https://en.wikipedia.org/wiki/Harbour_compiler)
|
* [Wikipedia](https://en.wikipedia.org/wiki/Harbour_compiler)
|
||||||
|
|
||||||
|
---
|
||||||
This document Copyright © 2009-2015 Viktor Szakats (vszakats.net/harbour)<br />
|
This document Copyright © 2009–present Viktor Szakats (vszakats.net/harbour)<br />
|
||||||
Licensed under [Creative Commons Attribution-ShareAlike 3.0](http://creativecommons.org/licenses/by-sa/3.0/)<br />
|
[](https://creativecommons.org/licenses/by-sa/4.0/)
|
||||||
See [LICENSE](LICENSE.txt).
|
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ STATIC FUNCTION CheckFile( cName, /* @ */ aErr, lApplyFixes )
|
|||||||
"*.po", ;
|
"*.po", ;
|
||||||
"*.md", ;
|
"*.md", ;
|
||||||
"*.html", ;
|
"*.html", ;
|
||||||
"*/hb-charmap.def", ; /* TOFIX: Use 8.3 name */
|
"*/hb-charmap.def", ; /* FIXME: Use 8.3 name */
|
||||||
"debian/*", ;
|
"debian/*", ;
|
||||||
"package/*", ;
|
"package/*", ;
|
||||||
"lib/3rd/*", ;
|
"lib/3rd/*", ;
|
||||||
@@ -494,7 +494,7 @@ STATIC FUNCTION StripCStrings( cFile )
|
|||||||
LOCAL tmp
|
LOCAL tmp
|
||||||
|
|
||||||
DO WHILE ( tmp := hb_BAt( '"', cFile, nPos ) ) > 0
|
DO WHILE ( tmp := hb_BAt( '"', cFile, nPos ) ) > 0
|
||||||
/* TOFIX: imprecise escaped char detection */
|
/* FIXME: imprecise escaped char detection */
|
||||||
IF ( !( hb_BSubStr( cFile, tmp - 1, 1 ) == "\" ) .OR. ;
|
IF ( !( hb_BSubStr( cFile, tmp - 1, 1 ) == "\" ) .OR. ;
|
||||||
hb_BSubStr( cFile, tmp - 2, 2 ) == "\\" ) .AND. ;
|
hb_BSubStr( cFile, tmp - 2, 2 ) == "\\" ) .AND. ;
|
||||||
!( hb_BSubStr( cFile, tmp - 1, 1 ) + hb_BSubStr( cFile, tmp + 1, 1 ) == "''" )
|
!( hb_BSubStr( cFile, tmp - 1, 1 ) + hb_BSubStr( cFile, tmp + 1, 1 ) == "''" )
|
||||||
|
|||||||
@@ -73,12 +73,12 @@ AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rc $(LIB_DIR)/$@ $(^
|
|||||||
|
|
||||||
DY := $(CC)
|
DY := $(CC)
|
||||||
DFLAGS += -shared -Wl,-G $(LIBPATHS)
|
DFLAGS += -shared -Wl,-G $(LIBPATHS)
|
||||||
# TOFIX: CHECKME, there was space between -o and output name
|
# FIXME: CHECKME, there was space between -o and output name
|
||||||
#DY_OUT := -o$(subst x,x, )
|
#DY_OUT := -o$(subst x,x, )
|
||||||
DY_OUT := $(LD_OUT)
|
DY_OUT := $(LD_OUT)
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS),-l$(lib))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
#define dynlib_object
|
#define dynlib_object
|
||||||
# @$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
# @$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -33,14 +33,14 @@ AR_RULE = $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) $(LIB_DIR)/$@ $(foreac
|
|||||||
|
|
||||||
ifeq ($(HB_SHELL),dos)
|
ifeq ($(HB_SHELL),dos)
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
# It causes that every command will be separated by LF
|
# It causes that every command will be separated by LF
|
||||||
define link_file
|
define link_file
|
||||||
@$(ECHO) $(ECHOQUOTE)FILE $(file)$(ECHOQUOTE) >> __link__.tmp
|
@$(ECHO) $(ECHOQUOTE)FILE $(file)$(ECHOQUOTE) >> __link__.tmp
|
||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define link_lib
|
define link_lib
|
||||||
@$(ECHO) $(ECHOQUOTE)LIB $(lib)$(ECHOQUOTE) >> __link__.tmp
|
@$(ECHO) $(ECHOQUOTE)LIB $(lib)$(ECHOQUOTE) >> __link__.tmp
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ ifeq ($(HB_SHELL),dos)
|
|||||||
|
|
||||||
LD_RULE = $(link_exe_file) $(HB_USER_LDFLAGS)
|
LD_RULE = $(link_exe_file) $(HB_USER_LDFLAGS)
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define lib_object
|
define lib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)-+$(file)$(ECHOQUOTE) >> __lib__.tmp
|
@$(ECHO) $(ECHOQUOTE)-+$(file)$(ECHOQUOTE) >> __lib__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ LDFLAGS += $(LIBPATHS)
|
|||||||
|
|
||||||
AR := $(HB_CCPATH)$(HB_CCPREFIX)ar
|
AR := $(HB_CCPATH)$(HB_CCPREFIX)ar
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define library_object
|
define library_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __lib__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __lib__.tmp
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ DFLAGS += -shared $(LIBPATHS)
|
|||||||
DY_OUT := $(LD_OUT)
|
DY_OUT := $(LD_OUT)
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ DFLAGS += -dynamic -flat_namespace -undefined warning -multiply_defined suppress
|
|||||||
DY_OUT := -o$(subst x,x, )
|
DY_OUT := -o$(subst x,x, )
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS),-l$(lib))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ LD_OUT := -o
|
|||||||
LIBPATHS := $(foreach dir,$(LIB_DIR) $(SYSLIBPATHS),-L$(dir))
|
LIBPATHS := $(foreach dir,$(LIB_DIR) $(SYSLIBPATHS),-L$(dir))
|
||||||
LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib))
|
LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
# It causes that every command will be separated by LF
|
# It causes that every command will be separated by LF
|
||||||
define lib_object
|
define lib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)ADDMOD $(file)$(ECHOQUOTE) >> __lib__.tmp
|
@$(ECHO) $(ECHOQUOTE)ADDMOD $(file)$(ECHOQUOTE) >> __lib__.tmp
|
||||||
@@ -88,7 +88,7 @@ define create_library
|
|||||||
$(ARSTRIP)
|
$(ARSTRIP)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define link_file
|
define link_file
|
||||||
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __link__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __link__.tmp
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ ifeq ($(HB_BUILD_DYN),dostest)
|
|||||||
DFLAGS += --whole-archive
|
DFLAGS += --whole-archive
|
||||||
DLIBS :=
|
DLIBS :=
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ ifeq ($(HB_BUILD_DYN),dostest)
|
|||||||
DLIBS_COMMA :=
|
DLIBS_COMMA :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)FILE '$(file)'$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)FILE '$(file)'$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ DFLAGS += -shared $(LIBPATHS)
|
|||||||
DY_OUT := -o$(subst x,x, )
|
DY_OUT := -o$(subst x,x, )
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS),-l$(lib))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ ifeq ($(HB_SHELL),sh)
|
|||||||
AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) )
|
AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(LIB_DIR)/$@ && $(FALSE) )
|
||||||
else
|
else
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define library_object
|
define library_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __lib__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __lib__.tmp
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ ifeq ($(HB_SHELL),sh)
|
|||||||
DY_RULE = $(DY) $(DFLAGS) -Wl,-soname,$(DYN_NAME_CPT) $(HB_USER_DFLAGS) $(DY_OUT)$(DYN_DIR)/$@ $^ $(DLIBS) $(DYSTRIP) && ([ "$(@F)" = "$(notdir $(DYN_FILE_NVR))" ] || $(LN) $(@F) $(DYN_FILE_NVR)) && ([ "$(@F)" = "$(notdir $(DYN_FILE_CPT))" ] || $(LN) $(@F) $(DYN_FILE_CPT))
|
DY_RULE = $(DY) $(DFLAGS) -Wl,-soname,$(DYN_NAME_CPT) $(HB_USER_DFLAGS) $(DY_OUT)$(DYN_DIR)/$@ $^ $(DLIBS) $(DYSTRIP) && ([ "$(@F)" = "$(notdir $(DYN_FILE_NVR))" ] || $(LN) $(@F) $(DYN_FILE_NVR)) && ([ "$(@F)" = "$(notdir $(DYN_FILE_CPT))" ] || $(LN) $(@F) $(DYN_FILE_CPT))
|
||||||
else
|
else
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ DFLAGS += -shared $(LIBPATHS)
|
|||||||
DY_OUT := -o$(subst x,x, )
|
DY_OUT := -o$(subst x,x, )
|
||||||
DLIBS := $(foreach lib,$(SYSLIBS),-l$(lib))
|
DLIBS := $(foreach lib,$(SYSLIBS),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ LDLIBS += $(foreach lib,$(LIBS),$(LIB_DIR)/$(lib))
|
|||||||
#DY_OUT :=
|
#DY_OUT :=
|
||||||
#DLIBS :=
|
#DLIBS :=
|
||||||
#
|
#
|
||||||
## NOTE: The empty line directly before 'endef' HAVE TO exist!
|
## NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
#define dynlib_object
|
#define dynlib_object
|
||||||
# @$(ECHO) $(ECHOQUOTE)FILE '$(file)'$(ECHOQUOTE) >> __dyn__.tmp
|
# @$(ECHO) $(ECHOQUOTE)FILE '$(file)'$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ DY_OUT :=
|
|||||||
DLIBS := $(HB_USER_LIBS)
|
DLIBS := $(HB_USER_LIBS)
|
||||||
DLIBS += $(foreach lib,$(LIBS),$(LIB_DIR)/$(lib))
|
DLIBS += $(foreach lib,$(LIBS),$(LIB_DIR)/$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)FILE '$(file)'$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)FILE '$(file)'$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ PROCEDURE Main( ... )
|
|||||||
mk_hb_FLinkSym( "harbour" + hb_ps() + cDynVersionFull, hb_DirSepToOS( GetEnvC( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cDynVersionFull )
|
mk_hb_FLinkSym( "harbour" + hb_ps() + cDynVersionFull, hb_DirSepToOS( GetEnvC( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cDynVersionFull )
|
||||||
|
|
||||||
CASE GetEnvC( "HB_INSTALL_DYN" ) == "/usr/local/harbour/lib"
|
CASE GetEnvC( "HB_INSTALL_DYN" ) == "/usr/local/harbour/lib"
|
||||||
/* TOFIX: Rewrite this in .prg:
|
/* FIXME: Rewrite this in .prg:
|
||||||
ld="/usr/lib"
|
ld="/usr/lib"
|
||||||
if [ -n "${HB_INST_PKGPREF}" ] || [ -w $ld ]
|
if [ -n "${HB_INST_PKGPREF}" ] || [ -w $ld ]
|
||||||
then
|
then
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ DFLAGS += -Xpic -Wl, -Xshared -Wl, -Xdynamic $(DLIBPATHS)
|
|||||||
DY_OUT := -o$(subst x,x, )
|
DY_OUT := -o$(subst x,x, )
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS_DYN),-l$(lib))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS_DYN),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ DFLAGS += -shared $(DLIBPATHS)
|
|||||||
DY_OUT := -o$(subst x,x, )
|
DY_OUT := -o$(subst x,x, )
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS_DYN),-l$(lib))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(SYSLIBS_DYN),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ LDFLAGS += $(LIBPATHS)
|
|||||||
|
|
||||||
AR := $(HB_CCPATH)$(HB_CCPREFIX)ar
|
AR := $(HB_CCPATH)$(HB_CCPREFIX)ar
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define library_object
|
define library_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __lib__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __lib__.tmp
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ DFLAGS += -shared $(LIBPATHS)
|
|||||||
DY_OUT := $(LD_OUT)
|
DY_OUT := $(LD_OUT)
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ DFLAGS += -nologo -dll -subsystem:windowsce -nodefaultlib:oldnames.lib $(LIBPATH
|
|||||||
DY_OUT := $(LD_OUT)
|
DY_OUT := $(LD_OUT)
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ DFLAGS += -nologo -dll $(LIBPATHS)
|
|||||||
DY_OUT := $(LD_OUT)
|
DY_OUT := $(LD_OUT)
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ ifneq ($(HB_SHELL),sh)
|
|||||||
# are only needed to support pre-Windows XP systems, where
|
# are only needed to support pre-Windows XP systems, where
|
||||||
# limit is 2047 chars. [vszakats]
|
# limit is 2047 chars. [vszakats]
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define library_object
|
define library_object
|
||||||
@$(ECHO) $(ECHOQUOTE)-+$(subst /,$(ECHOBACKSLASH),$(file)) $(LINECONT)$(ECHOQUOTE) >> __lib__.tmp
|
@$(ECHO) $(ECHOQUOTE)-+$(subst /,$(ECHOBACKSLASH),$(file)) $(LINECONT)$(ECHOQUOTE) >> __lib__.tmp
|
||||||
|
|
||||||
@@ -153,7 +153,7 @@ else
|
|||||||
DLIBS := $(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS) cw32mt import32
|
DLIBS := $(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS) cw32mt import32
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(subst /,$(ECHOBACKSLASH),$(file)) +$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(subst /,$(ECHOBACKSLASH),$(file)) +$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ DFLAGS += -nologo -dll -subsystem:console $(LIBPATHS)
|
|||||||
DY_OUT := $(LD_OUT)
|
DY_OUT := $(LD_OUT)
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ LDFLAGS += $(LIBPATHS)
|
|||||||
|
|
||||||
AR := $(HB_CCPATH)$(HB_CCPREFIX)ar
|
AR := $(HB_CCPATH)$(HB_CCPREFIX)ar
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define library_object
|
define library_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __lib__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(subst \,/,$(file))$(ECHOQUOTE) >> __lib__.tmp
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ DFLAGS += -shared $(LIBPATHS)
|
|||||||
DY_OUT := $(LD_OUT)
|
DY_OUT := $(LD_OUT)
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS),-l$(lib))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS),-l$(lib))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)INPUT($(subst \,/,$(file)))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ DFLAGS += -nologo -dll -subsystem:console $(LIBPATHS)
|
|||||||
DY_OUT := $(LD_OUT)
|
DY_OUT := $(LD_OUT)
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ DFLAGS += -nologo -dll $(LIBPATHS)
|
|||||||
DY_OUT := $(LD_OUT)
|
DY_OUT := $(LD_OUT)
|
||||||
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
DLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS),$(lib)$(LIB_EXT))
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(file)$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ else
|
|||||||
DLIBS_COMMA :=
|
DLIBS_COMMA :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)FILE '$(file)'$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)FILE '$(file)'$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ else
|
|||||||
DYNFIX :=
|
DYNFIX :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# NOTE: The empty line directly before 'endef' HAVE TO exist!
|
# NOTE: The empty line directly before 'endef' HAS TO exist!
|
||||||
define dynlib_object
|
define dynlib_object
|
||||||
@$(ECHO) $(ECHOQUOTE)$(subst /,\,$(file))$(ECHOQUOTE) >> __dyn__.tmp
|
@$(ECHO) $(ECHOQUOTE)$(subst /,\,$(file))$(ECHOQUOTE) >> __dyn__.tmp
|
||||||
|
|
||||||
|
|||||||
@@ -1016,7 +1016,7 @@ HB_FUNC( WVG_ADDTOOLBARBUTTON )
|
|||||||
tbb.dwData = 0;
|
tbb.dwData = 0;
|
||||||
tbb.iString = iNewString;
|
tbb.iString = iNewString;
|
||||||
|
|
||||||
/* TOFIX: Convertion of LRESULT to HB_BOOL */
|
/* FIXME: Convertion of LRESULT to HB_BOOL */
|
||||||
bSuccess = ( HB_BOOL ) SendMessage( hWndTB, TB_ADDBUTTONS, ( WPARAM ) 1, ( LPARAM ) ( LPTBBUTTON ) &tbb );
|
bSuccess = ( HB_BOOL ) SendMessage( hWndTB, TB_ADDBUTTONS, ( WPARAM ) 1, ( LPARAM ) ( LPTBBUTTON ) &tbb );
|
||||||
#if ! defined( HB_OS_WIN_CE )
|
#if ! defined( HB_OS_WIN_CE )
|
||||||
SendMessage( hWndTB, TB_SETPADDING, ( WPARAM ) 0, ( LPARAM ) MAKELPARAM( 10, 10 ) );
|
SendMessage( hWndTB, TB_SETPADDING, ( WPARAM ) 0, ( LPARAM ) MAKELPARAM( 10, 10 ) );
|
||||||
@@ -1036,7 +1036,7 @@ HB_FUNC( WVG_ADDTOOLBARBUTTON )
|
|||||||
tbb.dwData = 0;
|
tbb.dwData = 0;
|
||||||
tbb.iString = 0;
|
tbb.iString = 0;
|
||||||
|
|
||||||
/* TOFIX: Convertion of LRESULT to HB_BOOL */
|
/* FIXME: Convertion of LRESULT to HB_BOOL */
|
||||||
bSuccess = ( HB_BOOL ) SendMessage( hWndTB, TB_ADDBUTTONS, ( WPARAM ) 1, ( LPARAM ) ( LPTBBUTTON ) &tbb );
|
bSuccess = ( HB_BOOL ) SendMessage( hWndTB, TB_ADDBUTTONS, ( WPARAM ) 1, ( LPARAM ) ( LPTBBUTTON ) &tbb );
|
||||||
hb_retl( bSuccess );
|
hb_retl( bSuccess );
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ FUNCTION INIT_PORT( cPort, nBaud, nData, nParity, nStop, nBufferSize )
|
|||||||
|
|
||||||
hb_mutexLock( s_hbcomm_mutex )
|
hb_mutexLock( s_hbcomm_mutex )
|
||||||
|
|
||||||
/* TOFIX: We should get that number from core to avoid
|
/* FIXME: We should get that number from core to avoid
|
||||||
getting mixed up with com port access outside this
|
getting mixed up with com port access outside this
|
||||||
compatibility interface. [vszakats] */
|
compatibility interface. [vszakats] */
|
||||||
nPort := Len( s_hPort ) + 1
|
nPort := Len( s_hPort ) + 1
|
||||||
|
|||||||
@@ -543,7 +543,7 @@ METHOD Refresh() CLASS TFbQuery
|
|||||||
IF HB_ISARRAY( qry )
|
IF HB_ISARRAY( qry )
|
||||||
::numcols := qry[ 4 ]
|
::numcols := qry[ 4 ]
|
||||||
|
|
||||||
/* TOFIX: This is faulty code. ::aStruct will become zero length, out of sync with ::numcols. */
|
/* FIXME: This is faulty code. ::aStruct will become zero length, out of sync with ::numcols. */
|
||||||
::aStruct := StructConvert( qry[ 6 ], ::db, ::dialect )
|
::aStruct := StructConvert( qry[ 6 ], ::db, ::dialect )
|
||||||
|
|
||||||
::lError := .F.
|
::lError := .F.
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* TOFIX: To use strings (or other solutions) for remaining raw pointers. */
|
/* FIXME: To use strings (or other solutions) for remaining raw pointers. */
|
||||||
|
|
||||||
#include "hbapi.h"
|
#include "hbapi.h"
|
||||||
#include "hbapiitm.h"
|
#include "hbapiitm.h"
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
#define RF_STATE_CODE 3
|
#define RF_STATE_CODE 3
|
||||||
#define RF_STATE_RET 4
|
#define RF_STATE_RET 4
|
||||||
|
|
||||||
// TOFIX:
|
// FIXME:
|
||||||
// 1. in PP commands "<var>" should not be converted to "< var >"
|
// 1. in PP commands "<var>" should not be converted to "< var >"
|
||||||
// 2. To add a space between "!" operator and its argument
|
// 2. To add a space between "!" operator and its argument
|
||||||
// unless it's beginning with a parenthesis:
|
// unless it's beginning with a parenthesis:
|
||||||
@@ -673,7 +673,7 @@ METHOD ConvertCmd( cLine, nBegin, nEnd, lFirstOnly ) CLASS HBFormatCode
|
|||||||
|
|
||||||
IF ::lCase
|
IF ::lCase
|
||||||
|
|
||||||
IF ! HB_ISNUMERIC( nBegin ) /* TOFIX: Temporary hack to avoid RTE when processing contrib/hbhttpd/core.prg */
|
IF ! HB_ISNUMERIC( nBegin ) /* FIXME: Temporary hack to avoid RTE when processing contrib/hbhttpd/core.prg */
|
||||||
::nErr := 1
|
::nErr := 1
|
||||||
::cLineErr := cLine
|
::cLineErr := cLine
|
||||||
RETURN .F.
|
RETURN .F.
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
#require "hbformat"
|
#require "hbformat"
|
||||||
|
|
||||||
#include "directry.ch"
|
#include "directry.ch"
|
||||||
|
#include "hbver.ch"
|
||||||
|
|
||||||
ANNOUNCE HB_GTSYS
|
ANNOUNCE HB_GTSYS
|
||||||
REQUEST HB_GT_CGI_DEFAULT
|
REQUEST HB_GT_CGI_DEFAULT
|
||||||
@@ -61,7 +62,7 @@ PROCEDURE Main( ... )
|
|||||||
#endif
|
#endif
|
||||||
aParams := hb_AParams()
|
aParams := hb_AParams()
|
||||||
|
|
||||||
IF Empty( aParams ) .OR. ( Left( cFileName := ATail( aParams ), 1 ) $ "@/-" )
|
IF Empty( aParams ) .OR. Left( cFileName := ATail( aParams ), 1 ) $ "@/-"
|
||||||
About()
|
About()
|
||||||
RETURN
|
RETURN
|
||||||
ENDIF
|
ENDIF
|
||||||
@@ -139,8 +140,8 @@ STATIC PROCEDURE DirEval( cInitDir, cMask, lRecur, bCode )
|
|||||||
|
|
||||||
FOR EACH file IN Directory( cInitDir + cMask, "HSD" )
|
FOR EACH file IN Directory( cInitDir + cMask, "HSD" )
|
||||||
IF "D" $ file[ F_ATTR ]
|
IF "D" $ file[ F_ATTR ]
|
||||||
IF !( "." == file[ F_NAME ] ) .AND. ;
|
IF ! "." == file[ F_NAME ] .AND. ;
|
||||||
!( ".." == file[ F_NAME ] ) .AND. lRecur
|
! ".." == file[ F_NAME ] .AND. lRecur
|
||||||
DirEval( cInitDir + file[ F_NAME ], cMask, lRecur, bCode )
|
DirEval( cInitDir + file[ F_NAME ], cMask, lRecur, bCode )
|
||||||
ENDIF
|
ENDIF
|
||||||
ELSE
|
ELSE
|
||||||
@@ -156,9 +157,13 @@ STATIC PROCEDURE About()
|
|||||||
|
|
||||||
OutStd( ;
|
OutStd( ;
|
||||||
"Harbour Source Formatter " + HBRawVersion() + hb_eol() + ;
|
"Harbour Source Formatter " + HBRawVersion() + hb_eol() + ;
|
||||||
"Copyright (c) 2009-2016, Alexander S.Kresin" + hb_eol() + ;
|
"Copyright (c) 2010-" + ;
|
||||||
"http://harbour-project.org/" + hb_eol() + ;
|
"2016" + ", " + ;
|
||||||
hb_eol() + ;
|
hb_Version( HB_VERSION_URL_BASE ) + hb_eol() + ;
|
||||||
|
"Copyright (c) 2009, Alexander S.Kresin" + hb_eol() + ;
|
||||||
|
hb_eol() )
|
||||||
|
|
||||||
|
OutStd( ;
|
||||||
"Syntax: hbformat [options] [@config] <file[s]>" + hb_eol() + ;
|
"Syntax: hbformat [options] [@config] <file[s]>" + hb_eol() + ;
|
||||||
hb_eol() )
|
hb_eol() )
|
||||||
|
|
||||||
|
|||||||
@@ -917,7 +917,7 @@ STATIC FUNCTION HttpDateFormat( tDate )
|
|||||||
{ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }[ DoW( tDate ) ] + ", " + ;
|
{ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }[ DoW( tDate ) ] + ", " + ;
|
||||||
PadL( Day( tDate ), 2, "0" ) + " " + ;
|
PadL( Day( tDate ), 2, "0" ) + " " + ;
|
||||||
{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }[ Month( tDate ) ] + ;
|
{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }[ Month( tDate ) ] + ;
|
||||||
" " + PadL( Year( tDate ), 4, "0" ) + " " + hb_TToC( tDate, "", "HH:MM:SS" ) + " GMT" // TOFIX: time zone
|
" " + PadL( Year( tDate ), 4, "0" ) + " " + hb_TToC( tDate, "", "HH:MM:SS" ) + " GMT" // FIXME: time zone
|
||||||
|
|
||||||
STATIC FUNCTION HttpDateUnformat( cDate, tDate )
|
STATIC FUNCTION HttpDateUnformat( cDate, tDate )
|
||||||
|
|
||||||
|
|||||||
@@ -30,9 +30,11 @@
|
|||||||
- add support for subnet masks in allow/block lists, f.e. 172.16.0.0/12, and same for IPv6 */
|
- add support for subnet masks in allow/block lists, f.e. 172.16.0.0/12, and same for IPv6 */
|
||||||
|
|
||||||
#include "fileio.ch"
|
#include "fileio.ch"
|
||||||
|
#include "inkey.ch"
|
||||||
|
|
||||||
#include "hbhrb.ch"
|
#include "hbhrb.ch"
|
||||||
#include "hbsocket.ch"
|
#include "hbsocket.ch"
|
||||||
|
#include "hbver.ch"
|
||||||
|
|
||||||
#include "hbnetio.ch"
|
#include "hbnetio.ch"
|
||||||
|
|
||||||
@@ -284,7 +286,7 @@ PROCEDURE netiosrv_Main( lUI, ... )
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
/* Command prompt */
|
/* Command prompt */
|
||||||
DO WHILE ! netiosrv[ _NETIOSRV_lQuit ] .and. inkey() != 27
|
DO WHILE ! netiosrv[ _NETIOSRV_lQuit ] .AND. inkey() != 27
|
||||||
hb_idleSleep( 5 )
|
hb_idleSleep( 5 )
|
||||||
ENDDO
|
ENDDO
|
||||||
|
|
||||||
@@ -833,8 +835,10 @@ STATIC PROCEDURE HB_Logo()
|
|||||||
|
|
||||||
OutStd( ;
|
OutStd( ;
|
||||||
"Harbour NETIO Server " + StrTran( Version(), "Harbour " ) + hb_eol() + ;
|
"Harbour NETIO Server " + StrTran( Version(), "Harbour " ) + hb_eol() + ;
|
||||||
"Copyright (c) 2009-2016, Przemyslaw Czerpak, Viktor Szakats" + hb_eol() + ;
|
"Copyright (c) 2009-" + ;
|
||||||
"http://harbour-project.org/" + hb_eol() + ;
|
"2016" + ", " + ;
|
||||||
|
"Przemyslaw Czerpak, Viktor Szakats" + hb_eol() + ;
|
||||||
|
hb_Version( HB_VERSION_URL_BASE ) + hb_eol() + ;
|
||||||
hb_eol() )
|
hb_eol() )
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "hbver.ch"
|
||||||
|
|
||||||
#define _NETIOMGM_IPV4_DEF "127.0.0.1"
|
#define _NETIOMGM_IPV4_DEF "127.0.0.1"
|
||||||
#define _NETIOMGM_PORT_DEF 2940
|
#define _NETIOMGM_PORT_DEF 2940
|
||||||
|
|
||||||
@@ -261,12 +263,12 @@ STATIC PROCEDURE DisconnectLow( netiocli )
|
|||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
STATIC FUNCTION MyClientInfo()
|
STATIC FUNCTION MyClientInfo()
|
||||||
|
RETURN { ;
|
||||||
RETURN { "OS()" => OS() , ;
|
"OS()" => OS() , ;
|
||||||
"Version()" => Version() , ;
|
"Version()" => Version() , ;
|
||||||
"hb_Compiler()" => hb_Compiler() , ;
|
"hb_Compiler()" => hb_Compiler() , ;
|
||||||
"NetName()" => NetName() , ;
|
"NetName()" => NetName() , ;
|
||||||
"hb_UserName()" => hb_UserName() }
|
"hb_UserName()" => hb_UserName() }
|
||||||
|
|
||||||
STATIC FUNCTION XToStrX( xValue )
|
STATIC FUNCTION XToStrX( xValue )
|
||||||
|
|
||||||
@@ -329,8 +331,10 @@ STATIC FUNCTION XToStrX( xValue )
|
|||||||
STATIC PROCEDURE cmdAbout( netiocli )
|
STATIC PROCEDURE cmdAbout( netiocli )
|
||||||
|
|
||||||
hbnetiocon_dispevent( netiocli, "Harbour NETIO Server Management Console " + StrTran( Version(), "Harbour " ) )
|
hbnetiocon_dispevent( netiocli, "Harbour NETIO Server Management Console " + StrTran( Version(), "Harbour " ) )
|
||||||
hbnetiocon_dispevent( netiocli, "Copyright (c) 2009-2015, Viktor Szakats" )
|
hbnetiocon_dispevent( netiocli, "Copyright (c) 2009-" + ;
|
||||||
hbnetiocon_dispevent( netiocli, "http://harbour-project.org/" )
|
"2015" + ", " + ;
|
||||||
|
"Viktor Szakats" )
|
||||||
|
hbnetiocon_dispevent( netiocli, hb_Version( HB_VERSION_URL_BASE ) )
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
|
|||||||
@@ -347,7 +347,7 @@ METHOD new( pDB, pStmt ) CLASS hdbcSQLTResultSet
|
|||||||
|
|
||||||
::pDB := pDB
|
::pDB := pDB
|
||||||
::pStmt := pStmt
|
::pStmt := pStmt
|
||||||
::pRes := pStmt:pRes /* TOFIX ! */
|
::pRes := pStmt:pRes /* FIXME ! */
|
||||||
|
|
||||||
::nRows := 100
|
::nRows := 100
|
||||||
|
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ HB_FUNC( WIN_DRAWBITMAP )
|
|||||||
BITMAPFILEHEADER * pbmfh = ( BITMAPFILEHEADER * ) hb_parc( 2 );
|
BITMAPFILEHEADER * pbmfh = ( BITMAPFILEHEADER * ) hb_parc( 2 );
|
||||||
int iType = hbwin_bitmapType( pbmfh, nSize );
|
int iType = hbwin_bitmapType( pbmfh, nSize );
|
||||||
|
|
||||||
/* TOFIX: No check is done on 2nd parameter which is a large security hole
|
/* FIXME: No check is done on 2nd parameter which is a large security hole
|
||||||
and may cause GPF in simple error cases.
|
and may cause GPF in simple error cases.
|
||||||
[vszakats] */
|
[vszakats] */
|
||||||
if( hbwin_bitmapIsSupported( hDC, iType, pbmfh, nSize ) == 0 )
|
if( hbwin_bitmapIsSupported( hDC, iType, pbmfh, nSize ) == 0 )
|
||||||
|
|||||||
@@ -838,7 +838,7 @@ FUNCTION Greek2Html( cText )
|
|||||||
t_aGreek := InitGreek()
|
t_aGreek := InitGreek()
|
||||||
ENDIF
|
ENDIF
|
||||||
FOR I := 1 TO Len( cText )
|
FOR I := 1 TO Len( cText )
|
||||||
cStr += t_aGreek[ Asc( SubStr( cText, i, 1 ) ) ] /* TOFIX: for unicode */
|
cStr += t_aGreek[ Asc( SubStr( cText, i, 1 ) ) ] /* FIXME: for unicode */
|
||||||
NEXT
|
NEXT
|
||||||
|
|
||||||
RETURN cStr
|
RETURN cStr
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ METHOD New( cTitle, cLinkTitle, cCharSet, aScriptSRC, ;
|
|||||||
::cStr += ">" + CRLF()
|
::cStr += ">" + CRLF()
|
||||||
ENDIF
|
ENDIF
|
||||||
#if 0
|
#if 0
|
||||||
/* TOFIX: Luiz please review it */
|
/* FIXME: Luiz please review it */
|
||||||
::cStr += ;
|
::cStr += ;
|
||||||
' <link title="' + cLinkTitle + '"' + CRLF() + ;
|
' <link title="' + cLinkTitle + '"' + CRLF() + ;
|
||||||
' href="mailto:culik@sl.conex.net" >' + CRLF() + ;
|
' href="mailto:culik@sl.conex.net" >' + CRLF() + ;
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ HB_FUNC( ASPLICE )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TOFIX: Move this to hbxpp library */
|
/* FIXME: Move this to hbxpp library */
|
||||||
/* Synonym of ASplice() Xbase++ compatibility (extended with optional replacemenet values) */
|
/* Synonym of ASplice() Xbase++ compatibility (extended with optional replacemenet values) */
|
||||||
HB_FUNC_TRANSLATE( AREMOVE, ASPLICE )
|
HB_FUNC_TRANSLATE( AREMOVE, ASPLICE )
|
||||||
|
|
||||||
|
|||||||
@@ -2983,7 +2983,7 @@ STATIC FUNCTION Text2Array( cString, nWordWrapCol )
|
|||||||
ENDDO
|
ENDDO
|
||||||
|
|
||||||
DO WHILE nRetLen < ncSLen
|
DO WHILE nRetLen < ncSLen
|
||||||
/* TOFIX: Note that hb_tokenGet() is not able to cope with delimiters longer than one char */
|
/* FIXME: Note that hb_tokenGet() is not able to cope with delimiters longer than one char */
|
||||||
// Dos - OS/2 - Windows have CRLF as EOL
|
// Dos - OS/2 - Windows have CRLF as EOL
|
||||||
IF nEOLLen > 1
|
IF nEOLLen > 1
|
||||||
cLine := StrTran( hb_tokenPtr( @cString, @nTokPos, cEOL ), SubStr( cEOL, 2 ) )
|
cLine := StrTran( hb_tokenPtr( @cString, @nTokPos, cEOL ), SubStr( cEOL, 2 ) )
|
||||||
@@ -3088,4 +3088,4 @@ METHOD BrowseText( nPassedKey, lHandleOneKey ) CLASS XHBEditor
|
|||||||
RETURN NIL
|
RETURN NIL
|
||||||
|
|
||||||
STATIC FUNCTION __SoftCR()
|
STATIC FUNCTION __SoftCR()
|
||||||
RETURN hb_BChar( 141 ) + Chr( 10 ) /* TOFIX: Won't work in UTF-8 mode */
|
RETURN hb_BChar( 141 ) + Chr( 10 ) /* FIXME: Won't work in UTF-8 mode */
|
||||||
|
|||||||
2
debian/control
vendored
2
debian/control
vendored
@@ -20,7 +20,7 @@ Description: Compiler for the xBase superset language often referred to as Clipp
|
|||||||
compiler CA-Cl*pper).
|
compiler CA-Cl*pper).
|
||||||
.
|
.
|
||||||
Harbour is a cross platform compiler and is known to compile and run on
|
Harbour is a cross platform compiler and is known to compile and run on
|
||||||
MS-DOS, MS Windows, OS/2 and GNU/Linux, *BSD systems, Mac OS X, HP-UX and
|
MS-DOS, MS Windows, OS/2 and GNU/Linux, *BSD systems, macOS, HP-UX and
|
||||||
other *nixes
|
other *nixes
|
||||||
.
|
.
|
||||||
The main advantage Harbour has over other Clipper compilers is that it
|
The main advantage Harbour has over other Clipper compilers is that it
|
||||||
|
|||||||
742
debian/copyright
vendored
742
debian/copyright
vendored
@@ -24,7 +24,7 @@ THE HARBOUR PROJECT LIBRARY LICENSE
|
|||||||
===================================
|
===================================
|
||||||
|
|
||||||
Note: This license applies to most of the files in the include directory,
|
Note: This license applies to most of the files in the include directory,
|
||||||
source directory, and subdirectories.
|
/src, /contrib, /extras directories, and their subdirectories.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -85,14 +85,14 @@ Note: This license applies to the files where the content
|
|||||||
explicitly indicates so.
|
explicitly indicates so.
|
||||||
|
|
||||||
These works are licensed under the Creative Commons Attribution-ShareAlike
|
These works are licensed under the Creative Commons Attribution-ShareAlike
|
||||||
License. To view a copy of this license, visit
|
4.0 International License. To view a copy of this license, visit
|
||||||
http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to
|
https://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
|
||||||
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
|
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
|
||||||
USA. A summary of the license and the full legal text is included
|
USA. A summary of the license and the full legal text is included
|
||||||
after this text. If you wish to distribute some or all of these works
|
after this text. If you wish to distribute some or all of these works
|
||||||
under different terms, please contact respective author(s).
|
under different terms, please contact respective author(s).
|
||||||
|
|
||||||
License summary: Creative Commons Attribution-ShareAlike 3.0 Unported
|
License summary: Creative Commons Attribution-ShareAlike 4.0 International
|
||||||
|
|
||||||
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
|
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
|
||||||
|
|
||||||
@@ -123,421 +123,431 @@ Under the following conditions:
|
|||||||
|
|
||||||
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
|
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
|
||||||
|
|
||||||
Creative Commons Legal Code: Attribution-ShareAlike 3.0 Unported
|
Attribution-ShareAlike 4.0 International
|
||||||
|
|
||||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
=======================================================================
|
||||||
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
|
|
||||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
|
||||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
|
||||||
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
|
|
||||||
DAMAGES RESULTING FROM ITS USE.
|
|
||||||
|
|
||||||
License:
|
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||||
|
does not provide legal services or legal advice. Distribution of
|
||||||
|
Creative Commons public licenses does not create a lawyer-client or
|
||||||
|
other relationship. Creative Commons makes its licenses and related
|
||||||
|
information available on an "as-is" basis. Creative Commons gives no
|
||||||
|
warranties regarding its licenses, any material licensed under their
|
||||||
|
terms and conditions, or any related information. Creative Commons
|
||||||
|
disclaims all liability for damages resulting from their use to the
|
||||||
|
fullest extent possible.
|
||||||
|
|
||||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
|
Using Creative Commons Public Licenses
|
||||||
CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
|
|
||||||
PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
|
|
||||||
WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
|
|
||||||
PROHIBITED.
|
|
||||||
|
|
||||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
|
Creative Commons public licenses provide a standard set of terms and
|
||||||
AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS
|
conditions that creators and other rights holders may use to share
|
||||||
LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU
|
original works of authorship and other material subject to copyright
|
||||||
THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH
|
and certain other rights specified in the public license below. The
|
||||||
TERMS AND CONDITIONS.
|
following considerations are for informational purposes only, are not
|
||||||
|
exhaustive, and do not form part of our licenses.
|
||||||
|
|
||||||
1. Definitions
|
Considerations for licensors: Our public licenses are
|
||||||
|
intended for use by those authorized to give the public
|
||||||
|
permission to use material in ways otherwise restricted by
|
||||||
|
copyright and certain other rights. Our licenses are
|
||||||
|
irrevocable. Licensors should read and understand the terms
|
||||||
|
and conditions of the license they choose before applying it.
|
||||||
|
Licensors should also secure all rights necessary before
|
||||||
|
applying our licenses so that the public can reuse the
|
||||||
|
material as expected. Licensors should clearly mark any
|
||||||
|
material not subject to the license. This includes other CC-
|
||||||
|
licensed material, or material used under an exception or
|
||||||
|
limitation to copyright. More considerations for licensors:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensors
|
||||||
|
|
||||||
a. "Adaptation" means a work based upon the Work, or upon the Work
|
Considerations for the public: By using one of our public
|
||||||
and other pre-existing works, such as a translation, adaptation,
|
licenses, a licensor grants the public permission to use the
|
||||||
derivative work, arrangement of music or other alterations of a
|
licensed material under specified terms and conditions. If
|
||||||
literary or artistic work, or phonogram or performance and
|
the licensor's permission is not necessary for any reason--for
|
||||||
includes cinematographic adaptations or any other form in which
|
example, because of any applicable exception or limitation to
|
||||||
the Work may be recast, transformed, or adapted including in any
|
copyright--then that use is not regulated by the license. Our
|
||||||
form recognizably derived from the original, except that a work
|
licenses grant only permissions under copyright and certain
|
||||||
that constitutes a Collection will not be considered an
|
other rights that a licensor has authority to grant. Use of
|
||||||
Adaptation for the purpose of this License. For the avoidance of
|
the licensed material may still be restricted for other
|
||||||
doubt, where the Work is a musical work, performance or
|
reasons, including because others have copyright or other
|
||||||
phonogram, the synchronization of the Work in timed-relation
|
rights in the material. A licensor may make special requests,
|
||||||
with a moving image ("synching") will be considered an
|
such as asking that all changes be marked or described.
|
||||||
Adaptation for the purpose of this License.
|
Although not required by our licenses, you are encouraged to
|
||||||
|
respect those requests where reasonable. More_considerations
|
||||||
|
for the public:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensees
|
||||||
|
|
||||||
b. "Collection" means a collection of literary or artistic works,
|
=======================================================================
|
||||||
such as encyclopedias and anthologies, or performances,
|
|
||||||
phonograms or broadcasts, or other works or subject matter other
|
|
||||||
than works listed in Section 1(f) below, which, by reason of the
|
|
||||||
selection and arrangement of their contents, constitute
|
|
||||||
intellectual creations, in which the Work is included in its
|
|
||||||
entirety in unmodified form along with one or more other
|
|
||||||
contributions, each constituting separate and independent works
|
|
||||||
in themselves, which together are assembled into a collective
|
|
||||||
whole. A work that constitutes a Collection will not be
|
|
||||||
considered an Adaptation (as defined below) for the purposes of
|
|
||||||
this License.
|
|
||||||
|
|
||||||
c. "Creative Commons Compatible License" means a license that is
|
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||||
listed at http://creativecommons.org/compatiblelicenses that has
|
License
|
||||||
been approved by Creative Commons as being essentially
|
|
||||||
equivalent to this License, including, at a minimum, because
|
|
||||||
that license: (i) contains terms that have the same purpose,
|
|
||||||
meaning and effect as the License Elements of this License; and,
|
|
||||||
(ii) explicitly permits the relicensing of adaptations of works
|
|
||||||
made available under that license under this License or a
|
|
||||||
Creative Commons jurisdiction license with the same License
|
|
||||||
Elements as this License.
|
|
||||||
|
|
||||||
d. "Distribute" means to make available to the public the original
|
By exercising the Licensed Rights (defined below), You accept and agree
|
||||||
and copies of the Work or Adaptation, as appropriate, through
|
to be bound by the terms and conditions of this Creative Commons
|
||||||
sale or other transfer of ownership.
|
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||||
|
License"). To the extent this Public License may be interpreted as a
|
||||||
|
contract, You are granted the Licensed Rights in consideration of Your
|
||||||
|
acceptance of these terms and conditions, and the Licensor grants You
|
||||||
|
such rights in consideration of benefits the Licensor receives from
|
||||||
|
making the Licensed Material available under these terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
e. "License Elements" means the following high-level license
|
|
||||||
attributes as selected by Licensor and indicated in the title of
|
|
||||||
this License: Attribution, ShareAlike.
|
|
||||||
|
|
||||||
f. "Licensor" means the individual, individuals, entity or entities
|
Section 1 -- Definitions.
|
||||||
that offer(s) the Work under the terms of this License.
|
|
||||||
|
|
||||||
g. "Original Author" means, in the case of a literary or artistic
|
a. Adapted Material means material subject to Copyright and Similar
|
||||||
work, the individual, individuals, entity or entities who
|
Rights that is derived from or based upon the Licensed Material
|
||||||
created the Work or if no individual or entity can be
|
and in which the Licensed Material is translated, altered,
|
||||||
identified, the publisher; and in addition (i) in the case of a
|
arranged, transformed, or otherwise modified in a manner requiring
|
||||||
performance the actors, singers, musicians, dancers, and other
|
permission under the Copyright and Similar Rights held by the
|
||||||
persons who act, sing, deliver, declaim, play in, interpret or
|
Licensor. For purposes of this Public License, where the Licensed
|
||||||
otherwise perform literary or artistic works or expressions of
|
Material is a musical work, performance, or sound recording,
|
||||||
folklore; (ii) in the case of a phonogram the producer being the
|
Adapted Material is always produced where the Licensed Material is
|
||||||
person or legal entity who first fixes the sounds of a
|
synched in timed relation with a moving image.
|
||||||
performance or other sounds; and, (iii) in the case of
|
|
||||||
broadcasts, the organization that transmits the broadcast.
|
|
||||||
|
|
||||||
h. "Work" means the literary and/or artistic work offered under the
|
b. Adapter's License means the license You apply to Your Copyright
|
||||||
terms of this License including without limitation any
|
and Similar Rights in Your contributions to Adapted Material in
|
||||||
production in the literary, scientific and artistic domain,
|
accordance with the terms and conditions of this Public License.
|
||||||
whatever may be the mode or form of its expression including
|
|
||||||
digital form, such as a book, pamphlet and other writing; a
|
|
||||||
lecture, address, sermon or other work of the same nature; a
|
|
||||||
dramatic or dramatico-musical work; a choreographic work or
|
|
||||||
entertainment in dumb show; a musical composition with or
|
|
||||||
without words; a cinematographic work to which are assimilated
|
|
||||||
works expressed by a process analogous to cinematography; a work
|
|
||||||
of drawing, painting, architecture, sculpture, engraving or
|
|
||||||
lithography; a photographic work to which are assimilated works
|
|
||||||
expressed by a process analogous to photography; a work of
|
|
||||||
applied art; an illustration, map, plan, sketch or
|
|
||||||
three-dimensional work relative to geography, topography,
|
|
||||||
architecture or science; a performance; a broadcast; a
|
|
||||||
phonogram; a compilation of data to the extent it is protected
|
|
||||||
as a copyrightable work; or a work performed by a variety or
|
|
||||||
circus performer to the extent it is not otherwise considered a
|
|
||||||
literary or artistic work.
|
|
||||||
|
|
||||||
i. "You" means an individual or entity exercising rights under this
|
c. BY-SA Compatible License means a license listed at
|
||||||
License who has not previously violated the terms of this
|
creativecommons.org/compatiblelicenses, approved by Creative
|
||||||
License with respect to the Work, or who has received express
|
Commons as essentially the equivalent of this Public License.
|
||||||
permission from the Licensor to exercise rights under this
|
|
||||||
License despite a previous violation.
|
|
||||||
|
|
||||||
j. "Publicly Perform" means to perform public recitations of the
|
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||||
Work and to communicate to the public those public recitations,
|
closely related to copyright including, without limitation,
|
||||||
by any means or process, including by wire or wireless means or
|
performance, broadcast, sound recording, and Sui Generis Database
|
||||||
public digital performances; to make available to the public
|
Rights, without regard to how the rights are labeled or
|
||||||
Works in such a way that members of the public may access these
|
categorized. For purposes of this Public License, the rights
|
||||||
Works from a place and at a place individually chosen by them;
|
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||||
to perform the Work to the public by any means or process and
|
Rights.
|
||||||
the communication to the public of the performances of the Work,
|
|
||||||
including by public digital performance; to broadcast and
|
|
||||||
rebroadcast the Work by any means including signs, sounds or
|
|
||||||
images.
|
|
||||||
|
|
||||||
k. "Reproduce" means to make copies of the Work by any means
|
e. Effective Technological Measures means those measures that, in the
|
||||||
including without limitation by sound or visual recordings and
|
absence of proper authority, may not be circumvented under laws
|
||||||
the right of fixation and reproducing fixations of the Work,
|
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||||
including storage of a protected performance or phonogram in
|
Treaty adopted on December 20, 1996, and/or similar international
|
||||||
digital form or other electronic medium.
|
agreements.
|
||||||
|
|
||||||
2. Fair Dealing Rights.
|
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||||
|
any other exception or limitation to Copyright and Similar Rights
|
||||||
|
that applies to Your use of the Licensed Material.
|
||||||
|
|
||||||
Nothing in this License is intended to reduce, limit, or restrict
|
g. License Elements means the license attributes listed in the name
|
||||||
any uses free from copyright or rights arising from limitations or
|
of a Creative Commons Public License. The License Elements of this
|
||||||
exceptions that are provided for in connection with the copyright
|
Public License are Attribution and ShareAlike.
|
||||||
protection under copyright law or other applicable laws.
|
|
||||||
|
|
||||||
3. License Grant.
|
h. Licensed Material means the artistic or literary work, database,
|
||||||
|
or other material to which the Licensor applied this Public
|
||||||
|
License.
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, Licensor
|
i. Licensed Rights means the rights granted to You subject to the
|
||||||
hereby grants You a worldwide, royalty-free, non-exclusive,
|
terms and conditions of this Public License, which are limited to
|
||||||
perpetual (for the duration of the applicable copyright) license to
|
all Copyright and Similar Rights that apply to Your use of the
|
||||||
exercise the rights in the Work as stated below:
|
Licensed Material and that the Licensor has authority to license.
|
||||||
|
|
||||||
a. to Reproduce the Work, to incorporate the Work into one or more
|
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||||
Collections, and to Reproduce the Work as incorporated in the
|
under this Public License.
|
||||||
Collections;
|
|
||||||
|
|
||||||
b. to create and Reproduce Adaptations provided that any such
|
k. Share means to provide material to the public by any means or
|
||||||
Adaptation, including any translation in any medium, takes
|
process that requires permission under the Licensed Rights, such
|
||||||
reasonable steps to clearly label, demarcate or otherwise
|
as reproduction, public display, public performance, distribution,
|
||||||
identify that changes were made to the original Work. For
|
dissemination, communication, or importation, and to make material
|
||||||
example, a translation could be marked "The original work was
|
available to the public including in ways that members of the
|
||||||
translated from English to Spanish," or a modification could
|
public may access the material from a place and at a time
|
||||||
indicate "The original work has been modified.";
|
individually chosen by them.
|
||||||
|
|
||||||
c. to Distribute and Publicly Perform the Work including as
|
l. Sui Generis Database Rights means rights other than copyright
|
||||||
incorporated in Collections; and,
|
resulting from Directive 96/9/EC of the European Parliament and of
|
||||||
|
the Council of 11 March 1996 on the legal protection of databases,
|
||||||
|
as amended and/or succeeded, as well as other essentially
|
||||||
|
equivalent rights anywhere in the world.
|
||||||
|
|
||||||
d. to Distribute and Publicly Perform Adaptations.
|
m. You means the individual or entity exercising the Licensed Rights
|
||||||
|
under this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
e. For the avoidance of doubt:
|
|
||||||
|
|
||||||
i. Non-waivable Compulsory License Schemes. In those
|
Section 2 -- Scope.
|
||||||
jurisdictions in which the right to collect royalties
|
|
||||||
through any statutory or compulsory licensing scheme
|
|
||||||
cannot be waived, the Licensor reserves the exclusive
|
|
||||||
right to collect such royalties for any exercise by You of
|
|
||||||
the rights granted under this License;
|
|
||||||
|
|
||||||
ii. Waivable Compulsory License Schemes. In those
|
a. License grant.
|
||||||
jurisdictions in which the right to collect royalties
|
|
||||||
through any statutory or compulsory licensing scheme can
|
|
||||||
be waived, the Licensor waives the exclusive right to
|
|
||||||
collect such royalties for any exercise by You of the
|
|
||||||
rights granted under this License; and,
|
|
||||||
|
|
||||||
iii. Voluntary License Schemes. The Licensor waives the right
|
1. Subject to the terms and conditions of this Public License,
|
||||||
to collect royalties, whether individually or, in the
|
the Licensor hereby grants You a worldwide, royalty-free,
|
||||||
event that the Licensor is a member of a collecting
|
non-sublicensable, non-exclusive, irrevocable license to
|
||||||
society that administers voluntary licensing schemes, via
|
exercise the Licensed Rights in the Licensed Material to:
|
||||||
that society, from any exercise by You of the rights
|
|
||||||
granted under this License.
|
|
||||||
|
|
||||||
The above rights may be exercised in all media and formats whether
|
a. reproduce and Share the Licensed Material, in whole or
|
||||||
now known or hereafter devised. The above rights include the right
|
in part; and
|
||||||
to make such modifications as are technically necessary to exercise
|
|
||||||
the rights in other media and formats. Subject to Section 8(f), all
|
|
||||||
rights not expressly granted by Licensor are hereby reserved.
|
|
||||||
|
|
||||||
4. Restrictions.
|
b. produce, reproduce, and Share Adapted Material.
|
||||||
|
|
||||||
The license granted in Section 3 above is expressly made subject to
|
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||||
and limited by the following restrictions:
|
Exceptions and Limitations apply to Your use, this Public
|
||||||
|
License does not apply, and You do not need to comply with
|
||||||
|
its terms and conditions.
|
||||||
|
|
||||||
a. You may Distribute or Publicly Perform the Work only under the
|
3. Term. The term of this Public License is specified in Section
|
||||||
terms of this License. You must include a copy of, or the
|
6(a).
|
||||||
Uniform Resource Identifier (URI) for, this License with every
|
|
||||||
copy of the Work You Distribute or Publicly Perform. You may not
|
|
||||||
offer or impose any terms on the Work that restrict the terms of
|
|
||||||
this License or the ability of the recipient of the Work to
|
|
||||||
exercise the rights granted to that recipient under the terms of
|
|
||||||
the License. You may not sublicense the Work. You must keep
|
|
||||||
intact all notices that refer to this License and to the
|
|
||||||
disclaimer of warranties with every copy of the Work You
|
|
||||||
Distribute or Publicly Perform. When You Distribute or Publicly
|
|
||||||
Perform the Work, You may not impose any effective technological
|
|
||||||
measures on the Work that restrict the ability of a recipient of
|
|
||||||
the Work from You to exercise the rights granted to that
|
|
||||||
recipient under the terms of the License. This Section 4(a)
|
|
||||||
applies to the Work as incorporated in a Collection, but this
|
|
||||||
does not require the Collection apart from the Work itself to be
|
|
||||||
made subject to the terms of this License. If You create a
|
|
||||||
Collection, upon notice from any Licensor You must, to the
|
|
||||||
extent practicable, remove from the Collection any credit as
|
|
||||||
required by Section 4(c), as requested. If You create an
|
|
||||||
Adaptation, upon notice from any Licensor You must, to the
|
|
||||||
extent practicable, remove from the Adaptation any credit as
|
|
||||||
required by Section 4(c), as requested.
|
|
||||||
|
|
||||||
b. You may Distribute or Publicly Perform an Adaptation only under
|
4. Media and formats; technical modifications allowed. The
|
||||||
the terms of: (i) this License; (ii) a later version of this
|
Licensor authorizes You to exercise the Licensed Rights in
|
||||||
License with the same License Elements as this License; (iii) a
|
all media and formats whether now known or hereafter created,
|
||||||
Creative Commons jurisdiction license (either this or a later
|
and to make technical modifications necessary to do so. The
|
||||||
license version) that contains the same License Elements as this
|
Licensor waives and/or agrees not to assert any right or
|
||||||
License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative
|
authority to forbid You from making technical modifications
|
||||||
Commons Compatible License. If you license the Adaptation under
|
necessary to exercise the Licensed Rights, including
|
||||||
one of the licenses mentioned in (iv), you must comply with the
|
technical modifications necessary to circumvent Effective
|
||||||
terms of that license. If you license the Adaptation under the
|
Technological Measures. For purposes of this Public License,
|
||||||
terms of any of the licenses mentioned in (i), (ii) or (iii)
|
simply making modifications authorized by this Section 2(a)
|
||||||
(the "Applicable License"), you must comply with the terms of
|
(4) never produces Adapted Material.
|
||||||
the Applicable License generally and the following provisions:
|
|
||||||
(I) You must include a copy of, or the URI for, the Applicable
|
|
||||||
License with every copy of each Adaptation You Distribute or
|
|
||||||
Publicly Perform; (II) You may not offer or impose any terms on
|
|
||||||
the Adaptation that restrict the terms of the Applicable License
|
|
||||||
or the ability of the recipient of the Adaptation to exercise
|
|
||||||
the rights granted to that recipient under the terms of the
|
|
||||||
Applicable License; (III) You must keep intact all notices that
|
|
||||||
refer to the Applicable License and to the disclaimer of
|
|
||||||
warranties with every copy of the Work as included in the
|
|
||||||
Adaptation You Distribute or Publicly Perform; (IV) when You
|
|
||||||
Distribute or Publicly Perform the Adaptation, You may not
|
|
||||||
impose any effective technological measures on the Adaptation
|
|
||||||
that restrict the ability of a recipient of the Adaptation from
|
|
||||||
You to exercise the rights granted to that recipient under the
|
|
||||||
terms of the Applicable License. This Section 4(b) applies to
|
|
||||||
the Adaptation as incorporated in a Collection, but this does
|
|
||||||
not require the Collection apart from the Adaptation itself to
|
|
||||||
be made subject to the terms of the Applicable License.
|
|
||||||
|
|
||||||
c. If You Distribute, or Publicly Perform the Work or any
|
5. Downstream recipients.
|
||||||
Adaptations or Collections, You must, unless a request has been
|
|
||||||
made pursuant to Section 4(a), keep intact all copyright notices
|
|
||||||
for the Work and provide, reasonable to the medium or means You
|
|
||||||
are utilizing: (i) the name of the Original Author (or
|
|
||||||
pseudonym, if applicable) if supplied, and/or if the Original
|
|
||||||
Author and/or Licensor designate another party or parties (e.g.,
|
|
||||||
a sponsor institute, publishing entity, journal) for attribution
|
|
||||||
("Attribution Parties") in Licensor's copyright notice, terms of
|
|
||||||
service or by other reasonable means, the name of such party or
|
|
||||||
parties; (ii) the title of the Work if supplied; (iii) to the
|
|
||||||
extent reasonably practicable, the URI, if any, that Licensor
|
|
||||||
specifies to be associated with the Work, unless such URI does
|
|
||||||
not refer to the copyright notice or licensing information for
|
|
||||||
the Work; and (iv) , consistent with Ssection 3(b), in the case
|
|
||||||
of an Adaptation, a credit identifying the use of the Work in
|
|
||||||
the Adaptation (e.g., "French translation of the Work by
|
|
||||||
Original Author," or "Screenplay based on original Work by
|
|
||||||
Original Author"). The credit required by this Section 4(c) may
|
|
||||||
be implemented in any reasonable manner; provided, however, that
|
|
||||||
in the case of a Adaptation or Collection, at a minimum such
|
|
||||||
credit will appear, if a credit for all contributing authors of
|
|
||||||
the Adaptation or Collection appears, then as part of these
|
|
||||||
credits and in a manner at least as prominent as the credits for
|
|
||||||
the other contributing authors. For the avoidance of doubt, You
|
|
||||||
may only use the credit required by this Section for the purpose
|
|
||||||
of attribution in the manner set out above and, by exercising
|
|
||||||
Your rights under this License, You may not implicitly or
|
|
||||||
explicitly assert or imply any connection with, sponsorship or
|
|
||||||
endorsement by the Original Author, Licensor and/or Attribution
|
|
||||||
Parties, as appropriate, of You or Your use of the Work, without
|
|
||||||
the separate, express prior written permission of the Original
|
|
||||||
Author, Licensor and/or Attribution Parties.
|
|
||||||
|
|
||||||
d. Except as otherwise agreed in writing by the Licensor or as may
|
a. Offer from the Licensor -- Licensed Material. Every
|
||||||
be otherwise permitted by applicable law, if You Reproduce,
|
recipient of the Licensed Material automatically
|
||||||
Distribute or Publicly Perform the Work either by itself or as
|
receives an offer from the Licensor to exercise the
|
||||||
part of any Adaptations or Collections, You must not distort,
|
Licensed Rights under the terms and conditions of this
|
||||||
mutilate, modify or take other derogatory action in relation to
|
Public License.
|
||||||
the Work which would be prejudicial to the Original Author's
|
|
||||||
honor or reputation. Licensor agrees that in those jurisdictions
|
|
||||||
(e.g. Japan), in which any exercise of the right granted in
|
|
||||||
Section 3(b) of this License (the right to make Adaptations)
|
|
||||||
would be deemed to be a distortion, mutilation, modification or
|
|
||||||
other derogatory action prejudicial to the Original Author's
|
|
||||||
honor and reputation, the Licensor will waive or not assert, as
|
|
||||||
appropriate, this Section, to the fullest extent permitted by
|
|
||||||
the applicable national law, to enable You to reasonably
|
|
||||||
exercise Your right under Section 3(b) of this License (right to
|
|
||||||
make Adaptations) but not otherwise.
|
|
||||||
|
|
||||||
5. Representations, Warranties and Disclaimer
|
b. Additional offer from the Licensor -- Adapted Material.
|
||||||
|
Every recipient of Adapted Material from You
|
||||||
|
automatically receives an offer from the Licensor to
|
||||||
|
exercise the Licensed Rights in the Adapted Material
|
||||||
|
under the conditions of the Adapter's License You apply.
|
||||||
|
|
||||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING,
|
c. No downstream restrictions. You may not offer or impose
|
||||||
LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR
|
any additional or different terms or conditions on, or
|
||||||
WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED,
|
apply any Effective Technological Measures to, the
|
||||||
STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF
|
Licensed Material if doing so restricts exercise of the
|
||||||
TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
Licensed Rights by any recipient of the Licensed
|
||||||
NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY,
|
Material.
|
||||||
OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT
|
|
||||||
DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED
|
|
||||||
WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
|
|
||||||
|
|
||||||
6. Limitation on Liability.
|
6. No endorsement. Nothing in this Public License constitutes or
|
||||||
|
may be construed as permission to assert or imply that You
|
||||||
|
are, or that Your use of the Licensed Material is, connected
|
||||||
|
with, or sponsored, endorsed, or granted official status by,
|
||||||
|
the Licensor or others designated to receive attribution as
|
||||||
|
provided in Section 3(a)(1)(A)(i).
|
||||||
|
|
||||||
EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL
|
b. Other rights.
|
||||||
LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
|
|
||||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT
|
|
||||||
OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN
|
|
||||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
||||||
|
|
||||||
7. Termination
|
1. Moral rights, such as the right of integrity, are not
|
||||||
|
licensed under this Public License, nor are publicity,
|
||||||
|
privacy, and/or other similar personality rights; however, to
|
||||||
|
the extent possible, the Licensor waives and/or agrees not to
|
||||||
|
assert any such rights held by the Licensor to the limited
|
||||||
|
extent necessary to allow You to exercise the Licensed
|
||||||
|
Rights, but not otherwise.
|
||||||
|
|
||||||
a. This License and the rights granted hereunder will terminate
|
2. Patent and trademark rights are not licensed under this
|
||||||
automatically upon any breach by You of the terms of this
|
Public License.
|
||||||
License. Individuals or entities who have received Adaptations
|
|
||||||
or Collections from You under this License, however, will not
|
|
||||||
have their licenses terminated provided such individuals or
|
|
||||||
entities remain in full compliance with those licenses. Sections
|
|
||||||
1, 2, 5, 6, 7, and 8 will survive any termination of this
|
|
||||||
License.
|
|
||||||
|
|
||||||
b. Subject to the above terms and conditions, the license granted
|
3. To the extent possible, the Licensor waives any right to
|
||||||
here is perpetual (for the duration of the applicable copyright
|
collect royalties from You for the exercise of the Licensed
|
||||||
in the Work). Notwithstanding the above, Licensor reserves the
|
Rights, whether directly or through a collecting society
|
||||||
right to release the Work under different license terms or to
|
under any voluntary or waivable statutory or compulsory
|
||||||
stop distributing the Work at any time; provided, however that
|
licensing scheme. In all other cases the Licensor expressly
|
||||||
any such election will not serve to withdraw this License (or
|
reserves any right to collect such royalties.
|
||||||
any other license that has been, or is required to be, granted
|
|
||||||
under the terms of this License), and this License will continue
|
|
||||||
in full force and effect unless terminated as stated above.
|
|
||||||
|
|
||||||
8. Miscellaneous
|
|
||||||
|
|
||||||
a. Each time You Distribute or Publicly Perform the Work or a
|
Section 3 -- License Conditions.
|
||||||
Collection, the Licensor offers to the recipient a license to
|
|
||||||
the Work on the same terms and conditions as the license granted
|
|
||||||
to You under this License.
|
|
||||||
|
|
||||||
b. Each time You Distribute or Publicly Perform an Adaptation,
|
Your exercise of the Licensed Rights is expressly made subject to the
|
||||||
Licensor offers to the recipient a license to the original Work
|
following conditions.
|
||||||
on the same terms and conditions as the license granted to You
|
|
||||||
under this License.
|
|
||||||
|
|
||||||
c. If any provision of this License is invalid or unenforceable
|
a. Attribution.
|
||||||
under applicable law, it shall not affect the validity or
|
|
||||||
enforceability of the remainder of the terms of this License,
|
|
||||||
and without further action by the parties to this agreement,
|
|
||||||
such provision shall be reformed to the minimum extent necessary
|
|
||||||
to make such provision valid and enforceable.
|
|
||||||
|
|
||||||
d. No term or provision of this License shall be deemed waived and
|
1. If You Share the Licensed Material (including in modified
|
||||||
no breach consented to unless such waiver or consent shall be in
|
form), You must:
|
||||||
writing and signed by the party to be charged with such waiver
|
|
||||||
or consent.
|
|
||||||
|
|
||||||
e. This License constitutes the entire agreement between the
|
a. retain the following if it is supplied by the Licensor
|
||||||
parties with respect to the Work licensed here. There are no
|
with the Licensed Material:
|
||||||
understandings, agreements or representations with respect to
|
|
||||||
the Work not specified here. Licensor shall not be bound by any
|
|
||||||
additional provisions that may appear in any communication from
|
|
||||||
You. This License may not be modified without the mutual written
|
|
||||||
agreement of the Licensor and You.
|
|
||||||
|
|
||||||
f. The rights granted under, and the subject matter referenced, in
|
i. identification of the creator(s) of the Licensed
|
||||||
this License were drafted utilizing the terminology of the Berne
|
Material and any others designated to receive
|
||||||
Convention for the Protection of Literary and Artistic Works (as
|
attribution, in any reasonable manner requested by
|
||||||
amended on September 28, 1979), the Rome Convention of 1961, the
|
the Licensor (including by pseudonym if
|
||||||
WIPO Copyright Treaty of 1996, the WIPO Performances and
|
designated);
|
||||||
Phonograms Treaty of 1996 and the Universal Copyright Convention
|
|
||||||
(as revised on July 24, 1971). These rights and subject matter
|
|
||||||
take effect in the relevant jurisdiction in which the License
|
|
||||||
terms are sought to be enforced according to the corresponding
|
|
||||||
provisions of the implementation of those treaty provisions in
|
|
||||||
the applicable national law. If the standard suite of rights
|
|
||||||
granted under applicable copyright law includes additional
|
|
||||||
rights not granted under this License, such additional rights
|
|
||||||
are deemed to be included in the License; this License is not
|
|
||||||
intended to restrict the license of any rights under applicable
|
|
||||||
law.
|
|
||||||
|
|
||||||
Creative Commons Notice
|
ii. a copyright notice;
|
||||||
|
|
||||||
Creative Commons is not a party to this License, and makes no warranty
|
iii. a notice that refers to this Public License;
|
||||||
whatsoever in connection with the Work. Creative Commons will not be
|
|
||||||
liable to You or any party on any legal theory for any damages
|
|
||||||
whatsoever, including without limitation any general, special,
|
|
||||||
incidental or consequential damages arising in connection to this
|
|
||||||
license. Notwithstanding the foregoing two (2) sentences, if Creative
|
|
||||||
Commons has expressly identified itself as the Licensor hereunder, it
|
|
||||||
shall have all rights and obligations of Licensor.
|
|
||||||
|
|
||||||
Except for the limited purpose of indicating to the public that the
|
iv. a notice that refers to the disclaimer of
|
||||||
Work is licensed under the CCPL, Creative Commons does not authorize
|
warranties;
|
||||||
the use by either party of the trademark "Creative Commons" or any
|
|
||||||
related trademark or logo of Creative Commons without the prior
|
|
||||||
written consent of Creative Commons. Any permitted use will be in
|
|
||||||
compliance with Creative Commons' then-current trademark usage
|
|
||||||
guidelines, as may be published on its website or otherwise made
|
|
||||||
available upon request from time to time. For the avoidance of doubt,
|
|
||||||
this trademark restriction does not form part of the License.
|
|
||||||
|
|
||||||
Creative Commons may be contacted at http://creativecommons.org/.
|
v. a URI or hyperlink to the Licensed Material to the
|
||||||
|
extent reasonably practicable;
|
||||||
|
|
||||||
|
b. indicate if You modified the Licensed Material and
|
||||||
|
retain an indication of any previous modifications; and
|
||||||
|
|
||||||
|
c. indicate the Licensed Material is licensed under this
|
||||||
|
Public License, and include the text of, or the URI or
|
||||||
|
hyperlink to, this Public License.
|
||||||
|
|
||||||
|
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||||
|
reasonable manner based on the medium, means, and context in
|
||||||
|
which You Share the Licensed Material. For example, it may be
|
||||||
|
reasonable to satisfy the conditions by providing a URI or
|
||||||
|
hyperlink to a resource that includes the required
|
||||||
|
information.
|
||||||
|
|
||||||
|
3. If requested by the Licensor, You must remove any of the
|
||||||
|
information required by Section 3(a)(1)(A) to the extent
|
||||||
|
reasonably practicable.
|
||||||
|
|
||||||
|
b. ShareAlike.
|
||||||
|
|
||||||
|
In addition to the conditions in Section 3(a), if You Share
|
||||||
|
Adapted Material You produce, the following conditions also apply.
|
||||||
|
|
||||||
|
1. The Adapter's License You apply must be a Creative Commons
|
||||||
|
license with the same License Elements, this version or
|
||||||
|
later, or a BY-SA Compatible License.
|
||||||
|
|
||||||
|
2. You must include the text of, or the URI or hyperlink to, the
|
||||||
|
Adapter's License You apply. You may satisfy this condition
|
||||||
|
in any reasonable manner based on the medium, means, and
|
||||||
|
context in which You Share Adapted Material.
|
||||||
|
|
||||||
|
3. You may not offer or impose any additional or different terms
|
||||||
|
or conditions on, or apply any Effective Technological
|
||||||
|
Measures to, Adapted Material that restrict exercise of the
|
||||||
|
rights granted under the Adapter's License You apply.
|
||||||
|
|
||||||
|
|
||||||
|
Section 4 -- Sui Generis Database Rights.
|
||||||
|
|
||||||
|
Where the Licensed Rights include Sui Generis Database Rights that
|
||||||
|
apply to Your use of the Licensed Material:
|
||||||
|
|
||||||
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||||
|
to extract, reuse, reproduce, and Share all or a substantial
|
||||||
|
portion of the contents of the database;
|
||||||
|
|
||||||
|
b. if You include all or a substantial portion of the database
|
||||||
|
contents in a database in which You have Sui Generis Database
|
||||||
|
Rights, then the database in which You have Sui Generis Database
|
||||||
|
Rights (but not its individual contents) is Adapted Material,
|
||||||
|
|
||||||
|
including for purposes of Section 3(b); and
|
||||||
|
c. You must comply with the conditions in Section 3(a) if You Share
|
||||||
|
all or a substantial portion of the contents of the database.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 4 supplements and does not
|
||||||
|
replace Your obligations under this Public License where the Licensed
|
||||||
|
Rights include other Copyright and Similar Rights.
|
||||||
|
|
||||||
|
|
||||||
|
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||||
|
|
||||||
|
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||||
|
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||||
|
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||||
|
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||||
|
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||||
|
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
|
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||||
|
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||||
|
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||||
|
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||||
|
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||||
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||||
|
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||||
|
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||||
|
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||||
|
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
c. The disclaimer of warranties and limitation of liability provided
|
||||||
|
above shall be interpreted in a manner that, to the extent
|
||||||
|
possible, most closely approximates an absolute disclaimer and
|
||||||
|
waiver of all liability.
|
||||||
|
|
||||||
|
|
||||||
|
Section 6 -- Term and Termination.
|
||||||
|
|
||||||
|
a. This Public License applies for the term of the Copyright and
|
||||||
|
Similar Rights licensed here. However, if You fail to comply with
|
||||||
|
this Public License, then Your rights under this Public License
|
||||||
|
terminate automatically.
|
||||||
|
|
||||||
|
b. Where Your right to use the Licensed Material has terminated under
|
||||||
|
Section 6(a), it reinstates:
|
||||||
|
|
||||||
|
1. automatically as of the date the violation is cured, provided
|
||||||
|
it is cured within 30 days of Your discovery of the
|
||||||
|
violation; or
|
||||||
|
|
||||||
|
2. upon express reinstatement by the Licensor.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||||
|
right the Licensor may have to seek remedies for Your violations
|
||||||
|
of this Public License.
|
||||||
|
|
||||||
|
c. For the avoidance of doubt, the Licensor may also offer the
|
||||||
|
Licensed Material under separate terms or conditions or stop
|
||||||
|
distributing the Licensed Material at any time; however, doing so
|
||||||
|
will not terminate this Public License.
|
||||||
|
|
||||||
|
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 7 -- Other Terms and Conditions.
|
||||||
|
|
||||||
|
a. The Licensor shall not be bound by any additional or different
|
||||||
|
terms or conditions communicated by You unless expressly agreed.
|
||||||
|
|
||||||
|
b. Any arrangements, understandings, or agreements regarding the
|
||||||
|
Licensed Material not stated herein are separate from and
|
||||||
|
independent of the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 8 -- Interpretation.
|
||||||
|
|
||||||
|
a. For the avoidance of doubt, this Public License does not, and
|
||||||
|
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||||
|
conditions on any use of the Licensed Material that could lawfully
|
||||||
|
be made without permission under this Public License.
|
||||||
|
|
||||||
|
b. To the extent possible, if any provision of this Public License is
|
||||||
|
deemed unenforceable, it shall be automatically reformed to the
|
||||||
|
minimum extent necessary to make it enforceable. If the provision
|
||||||
|
cannot be reformed, it shall be severed from this Public License
|
||||||
|
without affecting the enforceability of the remaining terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
c. No term or condition of this Public License will be waived and no
|
||||||
|
failure to comply consented to unless expressly agreed to by the
|
||||||
|
Licensor.
|
||||||
|
|
||||||
|
d. Nothing in this Public License constitutes or may be interpreted
|
||||||
|
as a limitation upon, or waiver of, any privileges and immunities
|
||||||
|
that apply to the Licensor or You, including from the legal
|
||||||
|
processes of any jurisdiction or authority.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons is not a party to its public licenses.
|
||||||
|
Notwithstanding, Creative Commons may elect to apply one of its public
|
||||||
|
licenses to material it publishes and in those instances will be
|
||||||
|
considered the "Licensor." Except for the limited purpose of indicating
|
||||||
|
that material is shared under a Creative Commons public license or as
|
||||||
|
otherwise permitted by the Creative Commons policies published at
|
||||||
|
creativecommons.org/policies, Creative Commons does not authorize the
|
||||||
|
use of the trademark "Creative Commons" or any other trademark or logo
|
||||||
|
of Creative Commons without its prior written consent including,
|
||||||
|
without limitation, in connection with any unauthorized modifications
|
||||||
|
to any of its public licenses or any other arrangements,
|
||||||
|
understandings, or agreements concerning use of licensed material. For
|
||||||
|
the avoidance of doubt, this paragraph does not form part of the public
|
||||||
|
licenses.
|
||||||
|
|
||||||
|
Creative Commons may be contacted at creativecommons.org.
|
||||||
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE VERSION 2
|
GNU GENERAL PUBLIC LICENSE VERSION 2
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
https://en.wikipedia.org/wiki/C_standard_library
|
||||||
|
|
||||||
+++Date last modified: 1997-07-05
|
+++Date last modified: 1997-07-05
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -59,43 +59,43 @@ Note:
|
|||||||
to enumerator item changes the original string only if it was passed
|
to enumerator item changes the original string only if it was passed
|
||||||
to FOR EACH statement by reference, i.e.:
|
to FOR EACH statement by reference, i.e.:
|
||||||
FOR EACH c IN @string
|
FOR EACH c IN @string
|
||||||
IF ! isAlpha( c )
|
IF IsAlpha( c )
|
||||||
c := "*"
|
c := Upper( c )
|
||||||
ELSE
|
ELSE
|
||||||
c := upper( c )
|
c := "*"
|
||||||
ENDIF
|
ENDIF
|
||||||
NEXT
|
NEXT
|
||||||
- after the loop the controlling variable(s) restore the value which
|
- after the loop the controlling variable(s) restore the value which
|
||||||
they had before entering the loop
|
they had before entering the loop
|
||||||
- the enumerator variable supports the following properties
|
- the enumerator variable supports the following properties
|
||||||
:__enumIndex - the loop counter for variable
|
:__enumIndex() - the loop counter for variable
|
||||||
:__enumKey - the hash key value of traversed hash item pair
|
:__enumKey() - the hash key value of traversed hash item pair
|
||||||
:__enumBase - the value that is being traversed
|
:__enumBase() - the value that is being traversed
|
||||||
:__enumValue - the value of variable
|
:__enumValue() - the value of variable
|
||||||
:__enumIsFirst - is it the first enumerated item?
|
:__enumIsFirst() - is it the first enumerated item?
|
||||||
:__enumIsLast - is it the last enumerated item?
|
:__enumIsLast() - is it the last enumerated item?
|
||||||
- defining new class or overloading existing one user can define
|
- defining new class or overloading existing one user can define
|
||||||
his own behavior of FOR EACH iterating overloading chosen of above
|
his own behavior of FOR EACH iterating overloading chosen of above
|
||||||
methods and/or the following ones:
|
methods and/or the following ones:
|
||||||
:__enumStart
|
:__enumStart()
|
||||||
:__enumSkip
|
:__enumSkip()
|
||||||
:__enumStop
|
:__enumStop()
|
||||||
By default FOR EACH iterate all object instance variables
|
By default FOR EACH iterate all object instance variables
|
||||||
|
|
||||||
for example:
|
for example:
|
||||||
a := 'A'
|
a := "A"
|
||||||
b := 'B'
|
b := "B"
|
||||||
FOR EACH a, b IN { 1, 2, 3, 4 }, "abcd"
|
FOR EACH a, b IN { 1, 2, 3, 4 }, "abcd"
|
||||||
? a, b //prints: 1 a
|
? a, b // prints: 1 a
|
||||||
// 2 b
|
// 2 b
|
||||||
// 3 c
|
// 3 c
|
||||||
// 4 d
|
// 4 d
|
||||||
NEXT
|
NEXT
|
||||||
? a, b //prints: A B
|
? a, b // prints: A B
|
||||||
|
|
||||||
// you can use EXIT statement inside the loop
|
// you can use EXIT statement inside the loop
|
||||||
FOR EACH a IN { 1, 2, 3, 4 }
|
FOR EACH a IN { 1, 2, 3, 4 }
|
||||||
IF a:__enumindex == 3
|
IF a:__enumIndex() == 3
|
||||||
? a
|
? a
|
||||||
EXIT
|
EXIT
|
||||||
ENDIF
|
ENDIF
|
||||||
@@ -107,13 +107,13 @@ for example:
|
|||||||
a *= 2
|
a *= 2
|
||||||
str := Upper( str )
|
str := Upper( str )
|
||||||
NEXT
|
NEXT
|
||||||
// now 'arr' stores { 2, 4, 6 }
|
// now `arr` stores { 2, 4, 6 }
|
||||||
// howerer 'str' still stores "abc"
|
// however `str` still stores "abc"
|
||||||
|
|
||||||
Notice the difference:
|
Notice the difference:
|
||||||
FOR EACH a IN someValue
|
FOR EACH a IN someValue
|
||||||
? a:__enumindex //prints current value of the index
|
? a:__enumIndex() // prints current value of the index
|
||||||
? (a):__enumindex //sends '__enumindex' message to the current value
|
? ( a ):__enumIndex() // sends `__enumindex()` message to the current value
|
||||||
NEXT
|
NEXT
|
||||||
|
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ Harbour supports the following statement:
|
|||||||
form of sending messages to the object. You can use the syntax
|
form of sending messages to the object. You can use the syntax
|
||||||
:message( [params] )
|
:message( [params] )
|
||||||
:property
|
:property
|
||||||
to send messages to the object specified by 'expression'
|
to send messages to the object specified by `expression`
|
||||||
|
|
||||||
for example:
|
for example:
|
||||||
WITH OBJECT myobj:a[ 1 ]:myitem
|
WITH OBJECT myobj:a[ 1 ]:myitem
|
||||||
@@ -142,7 +142,7 @@ for example:
|
|||||||
myobj:a[ 1 ]:myitem:value := 9
|
myobj:a[ 1 ]:myitem:value := 9
|
||||||
|
|
||||||
Inside WITH OBJECT/END you can access (or even assign a new object)
|
Inside WITH OBJECT/END you can access (or even assign a new object)
|
||||||
using a special reserved property :__withobject
|
using a special reserved property :__withObject()
|
||||||
|
|
||||||
The runtime error will be generated at the time of message
|
The runtime error will be generated at the time of message
|
||||||
sending (or property access/assign) if <objexpression>
|
sending (or property access/assign) if <objexpression>
|
||||||
@@ -150,16 +150,16 @@ for example:
|
|||||||
|
|
||||||
for example:
|
for example:
|
||||||
CREATE CLASS foo
|
CREATE CLASS foo
|
||||||
VAR name INIT 'FOO'
|
VAR name INIT "FOO"
|
||||||
ENDCLASS
|
ENDCLASS
|
||||||
|
|
||||||
CREATE CLASS bar
|
CREATE CLASS bar
|
||||||
VAR name INIT 'BAR'
|
VAR name INIT "BAR"
|
||||||
ENDCLASS
|
ENDCLASS
|
||||||
|
|
||||||
WITH OBJECT foo():new()
|
WITH OBJECT foo():new()
|
||||||
? :name //prints 'FOO'
|
? :name // prints `FOO`
|
||||||
? :__withobject:name //also prints 'FOO'
|
? :__withObject():name // also prints `FOO`
|
||||||
? :__withobject := bar():new()
|
? :__withObject := bar():new()
|
||||||
? :name //prints 'BAR'
|
? :name // prints `BAR`
|
||||||
ENDWITH
|
ENDWITH
|
||||||
|
|||||||
@@ -93,6 +93,6 @@ Exceptions:
|
|||||||
|
|
||||||
|
|
||||||
[ Copyright (c) 1999-2009 Viktor Szakats (vszakats.net/harbour)
|
[ Copyright (c) 1999-2009 Viktor Szakats (vszakats.net/harbour)
|
||||||
Licensed under Creative Commons Attribution-ShareAlike 3.0:
|
Licensed under Creative Commons Attribution-ShareAlike 4.0:
|
||||||
http://creativecommons.org/licenses/by-sa/3.0/
|
<https://creativecommons.org/licenses/by-sa/4.0/>
|
||||||
See COPYING.txt. ]
|
See LICENSE.txt ]
|
||||||
|
|||||||
@@ -47,9 +47,9 @@ optimized at compile time:
|
|||||||
hb_mutexCreate()
|
hb_mutexCreate()
|
||||||
|
|
||||||
|
|
||||||
2. Expresion optimization:
|
2. Expression optimization:
|
||||||
|
|
||||||
Just like Clipper Harbour compiler can optimize some expresions if
|
Just like Clipper Harbour compiler can optimize some expressions if
|
||||||
arguments are well known and can be calculated at compile time:
|
arguments are well known and can be calculated at compile time:
|
||||||
|
|
||||||
- Clipper compatible:
|
- Clipper compatible:
|
||||||
@@ -144,7 +144,7 @@ arguments are well known and can be calculated at compile time:
|
|||||||
<nConst1> ^ <nConst2> => <nConst>
|
<nConst1> ^ <nConst2> => <nConst>
|
||||||
<aValue> [ <nConst> ] => <xArrayItem>
|
<aValue> [ <nConst> ] => <xArrayItem>
|
||||||
( <expr> ) => <expr> // it allows to optimize
|
( <expr> ) => <expr> // it allows to optimize
|
||||||
// expresions like: 1+(2)
|
// expressions like: 1+(2)
|
||||||
|
|
||||||
- Harbour syntax extensions not supported by Clipper, enabled by -ko
|
- Harbour syntax extensions not supported by Clipper, enabled by -ko
|
||||||
compiler switch:
|
compiler switch:
|
||||||
@@ -157,8 +157,8 @@ arguments are well known and can be calculated at compile time:
|
|||||||
i.e.:
|
i.e.:
|
||||||
iif( dData == NIL, dDate, aVal[ 1 ] ) := date()
|
iif( dData == NIL, dDate, aVal[ 1 ] ) := date()
|
||||||
iif( empty( x ), aVal[ 2 ], nTmp ) += 10
|
iif( empty( x ), aVal[ 2 ], nTmp ) += 10
|
||||||
? iif( f1(), nVal1, nVal2 ) ++
|
? iif( f1(), nVal1, nVal2 )++
|
||||||
? -- iif( f2(), aVal[ 1 ], hVal[ "abc" ] )
|
? --iif( f2(), aVal[ 1 ], hVal[ "abc" ] )
|
||||||
|
|
||||||
- Harbour extensions which may disable RT errors in wrong expressions
|
- Harbour extensions which may disable RT errors in wrong expressions
|
||||||
or can change used operators using basic math rules. Enabled by -ko
|
or can change used operators using basic math rules. Enabled by -ko
|
||||||
@@ -198,11 +198,11 @@ Unlike Clipper Harbour tries to optimize all expressions.
|
|||||||
If some code needs strict Clipper behavior then it can be forced by using
|
If some code needs strict Clipper behavior then it can be forced by using
|
||||||
-kc Harbour compiler switch. It disables Harbour extensions and enables
|
-kc Harbour compiler switch. It disables Harbour extensions and enables
|
||||||
replicating some Clipper bugs like optimizing "" $ <cConst> to .T. at
|
replicating some Clipper bugs like optimizing "" $ <cConst> to .T. at
|
||||||
compile time (at runtime and in macrocompiler it's always .F. in Clipper
|
compile time (at runtime and in macro-compiler it's always .F. in Clipper
|
||||||
and Harbour).
|
and Harbour).
|
||||||
|
|
||||||
Expressions fully optimized to constant values at compile time can be used
|
Expressions fully optimized to constant values at compile time can be used
|
||||||
to intialize static variables, f.e.:
|
to initialize static variables, f.e.:
|
||||||
static s_var := ( 1 + 2 / 3 )
|
static s_var := ( 1 + 2 / 3 )
|
||||||
|
|
||||||
Clipper does not optimize expression used in LOCAL, PRIVATE and
|
Clipper does not optimize expression used in LOCAL, PRIVATE and
|
||||||
@@ -233,11 +233,11 @@ or:
|
|||||||
or:
|
or:
|
||||||
? &cLocalPref.func&cPriv1( cPriv2, &cStatic )
|
? &cLocalPref.func&cPriv1( cPriv2, &cStatic )
|
||||||
etc.
|
etc.
|
||||||
If possible then for macrocodeblocks Harbour compiler tries to
|
If possible then for macro-codeblocks Harbour compiler tries to
|
||||||
generate early eval code in which macros are expanded when codeblock
|
generate early eval code in which macros are expanded when codeblock
|
||||||
is created. Otherwise macros are expanded each time codeblock is
|
is created. Otherwise macros are expanded each time codeblock is
|
||||||
evaluated.
|
evaluated.
|
||||||
This feature can be useful also in porting some other xbase compatible
|
This feature can be useful also in porting some other xBase compatible
|
||||||
code to Harbour because some compilers just like xHarbour accepted
|
code to Harbour because some compilers just like xHarbour accepted
|
||||||
in some limited way officially unsupported syntax with macros using
|
in some limited way officially unsupported syntax with macros using
|
||||||
declared symbols.
|
declared symbols.
|
||||||
@@ -247,7 +247,7 @@ declared symbols.
|
|||||||
Harbour has additional optimization phase which operates on generated PCODE.
|
Harbour has additional optimization phase which operates on generated PCODE.
|
||||||
It can also reduce expressions, joins jumps, removes death or meaningless
|
It can also reduce expressions, joins jumps, removes death or meaningless
|
||||||
code which can appear after all other optimizations and were not optimized
|
code which can appear after all other optimizations and were not optimized
|
||||||
by expression optimizer. It can also optimize readonly local variables
|
by expression optimizer. It can also optimize read-only local variables
|
||||||
keeping the QSelf() value. QSelf() is not real function call but very fast
|
keeping the QSelf() value. QSelf() is not real function call but very fast
|
||||||
single PCODE often used in OOP code. Harbour can replace local variables
|
single PCODE often used in OOP code. Harbour can replace local variables
|
||||||
keeping it by direct QSelf() usage.
|
keeping it by direct QSelf() usage.
|
||||||
|
|||||||
@@ -48,14 +48,18 @@ to it. This is caused by the fact that a inner codeblock can be created during
|
|||||||
evaluation of outer codeblock when local variables don't exist like in this
|
evaluation of outer codeblock when local variables don't exist like in this
|
||||||
example:
|
example:
|
||||||
|
|
||||||
PROCEDUE Main()
|
PROCEDURE Main()
|
||||||
|
|
||||||
PRIVATE foo, bar
|
PRIVATE foo, bar
|
||||||
|
|
||||||
Test()
|
Test()
|
||||||
Eval( foo )
|
Eval( foo )
|
||||||
Eval( bar )
|
Eval( bar )
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
|
||||||
PROCEDURE Test()
|
PROCEDURE Test()
|
||||||
|
|
||||||
LOCAL a := "FOO", b := "BAR"
|
LOCAL a := "FOO", b := "BAR"
|
||||||
|
|
||||||
foo := {|| a + ( bar := Eval( {|| b } ) ) }
|
foo := {|| a + ( bar := Eval( {|| b } ) ) }
|
||||||
@@ -73,14 +77,15 @@ used. The negative value is used as an index to distinguish it from the
|
|||||||
reference to a codeblock parameter.
|
reference to a codeblock parameter.
|
||||||
|
|
||||||
|
|
||||||
Incompatbility with the Clipper.
|
Incompatibility with the Clipper.
|
||||||
|
|
||||||
1) Detached locals passed by reference
|
1. Detached locals passed by reference
|
||||||
There is a little difference between the handling of variables passed by
|
There is a little difference between the handling of variables passed by
|
||||||
the reference in a codeblock.
|
the reference in a codeblock.
|
||||||
The following code explains it (thanks to David G. Holm)
|
The following code explains it (thanks to David G. Holm)
|
||||||
|
|
||||||
PROCEDURE Main()
|
PROCEDURE Main()
|
||||||
|
|
||||||
LOCAL nTest
|
LOCAL nTest
|
||||||
LOCAL bBlock1 := MakeBlock()
|
LOCAL bBlock1 := MakeBlock()
|
||||||
LOCAL bBlock2 := {|| DoThing( @nTest ), QOut( "From Main: ", nTest ) }
|
LOCAL bBlock2 := {|| DoThing( @nTest ), QOut( "From Main: ", nTest ) }
|
||||||
@@ -91,14 +96,16 @@ PROCEDURE Main()
|
|||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
FUNCTION MakeBlock()
|
FUNCTION MakeBlock()
|
||||||
|
|
||||||
LOCAL nTest
|
LOCAL nTest
|
||||||
|
|
||||||
RETURN {|| DoThing( @nTest ), QOut( "From MakeBlock: ", nTest ) }
|
RETURN {|| DoThing( @nTest ), QOut( "From MakeBlock: ", nTest ) }
|
||||||
|
|
||||||
FUNCTION DoThing( n )
|
PROCEDURE DoThing( n )
|
||||||
|
|
||||||
n := 42
|
n := 42
|
||||||
|
|
||||||
RETURN NIL
|
RETURN
|
||||||
|
|
||||||
|
|
||||||
In Clipper it produces:
|
In Clipper it produces:
|
||||||
@@ -109,18 +116,22 @@ From Main: 42
|
|||||||
From MakeBlock: 42
|
From MakeBlock: 42
|
||||||
From Main: 42
|
From Main: 42
|
||||||
|
|
||||||
2) Scope of undeclared variables
|
2. Scope of undeclared variables
|
||||||
Consider the following code:
|
Consider the following code:
|
||||||
|
|
||||||
PROCEDURE Main()
|
PROCEDURE Main()
|
||||||
LOCAL cb
|
|
||||||
cb := Detach()
|
LOCAL cb := Detach()
|
||||||
|
|
||||||
? Eval( cb, 10 )
|
? Eval( cb, 10 )
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
FUNCTION Detach()
|
FUNCTION Detach()
|
||||||
|
|
||||||
LOCAL b := {| x | x + a }
|
LOCAL b := {| x | x + a }
|
||||||
LOCAL a := 0
|
LOCAL a := 0
|
||||||
|
|
||||||
RETURN b
|
RETURN b
|
||||||
|
|
||||||
In Clipper the 'a' variable in a codeblock has the *local* scope however in
|
In Clipper the 'a' variable in a codeblock has the *local* scope however in
|
||||||
@@ -130,10 +141,13 @@ this code will print 10 and in Harbour it will raise 'argument error' in
|
|||||||
This will be true also when the 'a' variable will be declared as PRIVATE
|
This will be true also when the 'a' variable will be declared as PRIVATE
|
||||||
|
|
||||||
PROCEDURE Main()
|
PROCEDURE Main()
|
||||||
|
|
||||||
LOCAL cb
|
LOCAL cb
|
||||||
PRIVATE a
|
PRIVATE a
|
||||||
|
|
||||||
cb := Detach()
|
cb := Detach()
|
||||||
? Eval( cb, 10 )
|
? Eval( cb, 10 )
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
The above code also prints 10 in Clipper (even if compiled with -a or -v
|
The above code also prints 10 in Clipper (even if compiled with -a or -v
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* Please note the following comments we may use everywhere
|
/* Please note the following comments we may use everywhere
|
||||||
NOTE: Notes
|
NOTE: Notes
|
||||||
TODO: something should be added here
|
TODO: something should be added here
|
||||||
TOFIX: something needs to be fixed
|
FIXME: something needs to be fixed
|
||||||
OBSOLETE: something could be removed from here
|
OBSOLETE: something could be removed from here
|
||||||
QUESTION: I had some questions at this point but I could not get an answer
|
QUESTION: I had some questions at this point but I could not get an answer
|
||||||
OPT: something is commented out to improve performance
|
OPT: something is commented out to improve performance
|
||||||
@@ -76,13 +76,7 @@ Code Implementation
|
|||||||
Function calls in assert conditions may also cause this problem, if
|
Function calls in assert conditions may also cause this problem, if
|
||||||
they modify one of their arguments or global variables.
|
they modify one of their arguments or global variables.
|
||||||
|
|
||||||
[7] When commenting out code using a #if statement, do NOT use 0 only. Instead
|
[7] Use hb_xgrab()/hb_xalloc(), hb_xfree(), hb_xrealloc(), hb_xsize() to
|
||||||
use "<cvs username here>_0". For example, #if FOO_0, where FOO is your
|
|
||||||
cvs user foo. This allows easier tracking of why code was commented out,
|
|
||||||
especially in bundled libraries.
|
|
||||||
|
|
||||||
|
|
||||||
[8] Use hb_xgrab()/hb_xalloc(), hb_xfree(), hb_xrealloc(), hb_xsize() to
|
|
||||||
manage memory allocations. These functions implement an internal
|
manage memory allocations. These functions implement an internal
|
||||||
"safety-net" mechanism that ensures the deallocation of any unfreed
|
"safety-net" mechanism that ensures the deallocation of any unfreed
|
||||||
memory at the end of an application. They also provide useful
|
memory at the end of an application. They also provide useful
|
||||||
@@ -113,7 +107,7 @@ Naming Conventions
|
|||||||
|
|
||||||
[4] Static variables should be prefixed with 's_'
|
[4] Static variables should be prefixed with 's_'
|
||||||
|
|
||||||
[5] Global variables (variables shared beetwen modules) should be
|
[5] Global variables (variables shared between modules) should be
|
||||||
prefixed with 'hb_<module_prefix>', e.g. hb_vm_bDebug, hb_gc_pStart
|
prefixed with 'hb_<module_prefix>', e.g. hb_vm_bDebug, hb_gc_pStart
|
||||||
|
|
||||||
|
|
||||||
@@ -126,7 +120,7 @@ Syntax and indentation
|
|||||||
accept C++-style comments in C code, you have to ensure that your
|
accept C++-style comments in C code, you have to ensure that your
|
||||||
code would compile with other compilers as well.
|
code would compile with other compilers as well.
|
||||||
|
|
||||||
[2] Don't use K&R-style. Of course, we can't and don't want to
|
[2] Do not use K&R-style. Of course, we cannot and do not want to
|
||||||
force anybody to use a style he or she is not used to, but,
|
force anybody to use a style he or she is not used to, but,
|
||||||
at the very least, when you write code that goes into the core
|
at the very least, when you write code that goes into the core
|
||||||
of Harbour or one of its standard modules, please don't use the K&R
|
of Harbour or one of its standard modules, please don't use the K&R
|
||||||
@@ -169,8 +163,8 @@ Documentation
|
|||||||
[1] Whenever be possible document yourself functions you developed.
|
[1] Whenever be possible document yourself functions you developed.
|
||||||
Usually it's hard to understand code written by other person, moreover
|
Usually it's hard to understand code written by other person, moreover
|
||||||
when it involves some obscure algorithm, system's vars or attributes
|
when it involves some obscure algorithm, system's vars or attributes
|
||||||
or data unavailable for the documentator.
|
or data unavailable for the documentation writers.
|
||||||
This is particularly evident for low level functions.
|
This is particularly evident for low-level functions.
|
||||||
|
|
||||||
[2] After some time function was written, work becomes more difficult because
|
[2] After some time function was written, work becomes more difficult because
|
||||||
it's needed to read the code several times (even for the own developer).
|
it's needed to read the code several times (even for the own developer).
|
||||||
@@ -192,11 +186,11 @@ Documentation
|
|||||||
|
|
||||||
[6] If you are the developer of the function, and you are using system's
|
[6] If you are the developer of the function, and you are using system's
|
||||||
functions or vars undocumented, please explain it as much as possible.
|
functions or vars undocumented, please explain it as much as possible.
|
||||||
If you use a obscure or strange algorithm (i.e md5 ) please explain what
|
If you use a obscure or strange algorithm please explain what it does
|
||||||
it does and how it works.
|
and how it works.
|
||||||
|
|
||||||
[7] Notes, remarks and explainings enclose always between the /* */ pair,
|
[7] Notes, remarks and explaining enclose always between the /* */ pair,
|
||||||
please don't use the double bar // because it difficults portability.
|
please don't use the double bar // because it may break portability.
|
||||||
|
|
||||||
[8] Remember... documentation it's a much time consuming work, usually
|
[8] Remember... documentation it's a much time consuming work, usually
|
||||||
takes more time writing the documentation of a function that writing
|
takes more time writing the documentation of a function that writing
|
||||||
|
|||||||
@@ -38,25 +38,25 @@ destroyed by Garbage Collector in a special way. GC scans all items known
|
|||||||
to HVM and marks them as used, then destroys all items which are not marked.
|
to HVM and marks them as used, then destroys all items which are not marked.
|
||||||
The reference counters in such items are greater then zero and cannot
|
The reference counters in such items are greater then zero and cannot
|
||||||
be directly used to detect bugs in a user code. So GC collects all
|
be directly used to detect bugs in a user code. So GC collects all
|
||||||
unaccessible items and then executes cleanup functions for each of them,
|
inaccessible items and then executes cleanup functions for each of them,
|
||||||
and finally checks if reference counters reached zero before it will
|
and finally checks if reference counters reached zero before it will
|
||||||
free the memory blocks. If they didn't then RT error is generated for
|
free the memory blocks. If they didn't then RT error is generated for
|
||||||
the first memory block. All items which are still accessible, are not
|
the first memory block. All items which are still accessible, are not
|
||||||
freed and if GC can recognize a type of an item then it will also try to
|
freed and if GC can recognize a type of an item then it will also try to
|
||||||
convert it to some empty form (f.e. empty array).
|
convert it to some empty form (f.e. empty array).
|
||||||
The destructors are executed from cleanup functions so they all will be
|
The destructors are executed from cleanup functions so they all will be
|
||||||
executed and then, if there is sth wrong, RT error will be generated for
|
executed and then, if there is something wrong, RT error will be generated
|
||||||
the first memory block which was copied to some external structures.
|
for the first memory block which was copied to some external structures.
|
||||||
Please note that the order in which destructors are executed by GC
|
Please note that the order in which destructors are executed by GC
|
||||||
can be diffrent then some logical order defined by an application. HVM
|
can be different then some logical order defined by an application. HVM
|
||||||
does not know anything about programmer's ideas so a programmer has to
|
does not know anything about programmer's ideas so a programmer has to
|
||||||
create a code which will be safe for such situations. HVM only guaranties
|
create a code which will be safe for such situations. HVM only guaranties
|
||||||
that destructors will be executed only once for each object.
|
that destructors will be executed only once for each object.
|
||||||
This also cannot break HVM integrity for standard object items which are
|
This also cannot break HVM integrity for standard object items which are
|
||||||
represented as arrays. But if the problem is inside cleanup function of
|
represented as arrays. But if the problem is inside cleanup function of
|
||||||
a GC POINTER item, which has a structure unknown to HVM, then any further
|
a GC POINTER item, which has a structure unknown to HVM, then any further
|
||||||
behavior can be unpredictible if a programmer, who created such pointer
|
behavior can be unpredictable if a programmer, who created such pointer
|
||||||
items, doesn't support such situation himslef in his C code. It's a good
|
items, doesn't support such situation himself in his C code. It's a good
|
||||||
practice to add some type of marker to body of memory allocated by
|
practice to add some type of marker to body of memory allocated by
|
||||||
hb_gcAlloc() to detect bugs in .prg code destructors which may keep
|
hb_gcAlloc() to detect bugs in .prg code destructors which may keep
|
||||||
pointers to freed POINTER item (these could be destructors of differ
|
pointers to freed POINTER item (these could be destructors of differ
|
||||||
@@ -71,7 +71,7 @@ situation.
|
|||||||
|
|
||||||
In summary, Harbour destructor implementation should be able to detect
|
In summary, Harbour destructor implementation should be able to detect
|
||||||
bugs in destructor and keep HVM integrity. But we are not able to
|
bugs in destructor and keep HVM integrity. But we are not able to
|
||||||
guarantiee that nothing wrong will happen with 3-rd party code which
|
guarantee that nothing wrong will happen with 3rd party code which
|
||||||
uses POINTER items scanned by GC, which are not safe for .prg code
|
uses POINTER items scanned by GC, which are not safe for .prg code
|
||||||
bugs in destructors and repeated cleanup function execution.
|
bugs in destructors and repeated cleanup function execution.
|
||||||
|
|
||||||
@@ -88,9 +88,9 @@ some other structures, the object destructors will not be executed.
|
|||||||
Clearing STATIC variables before closing classy subsystem will not help
|
Clearing STATIC variables before closing classy subsystem will not help
|
||||||
because STATIC variables are integral part of this subsystem.
|
because STATIC variables are integral part of this subsystem.
|
||||||
|
|
||||||
Anomalies and excpetions
|
Anomalies and exceptions
|
||||||
------------------------
|
------------------------
|
||||||
In some situations HVM may clear items when exception apear, f.e.
|
In some situations HVM may clear items when exception appear, f.e.
|
||||||
BREAK or QUIT request. In such case executing the exception type
|
BREAK or QUIT request. In such case executing the exception type
|
||||||
is stored and destructors are executed and finally the exception
|
is stored and destructors are executed and finally the exception
|
||||||
restored. But in destructors code new exception can appear. In such
|
restored. But in destructors code new exception can appear. In such
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ Harbour directory structure
|
|||||||
Follow are the various directories that exist under the Harbour tree.
|
Follow are the various directories that exist under the Harbour tree.
|
||||||
|
|
||||||
|
|
||||||
<harbour> - Main Harbour directory. Contain all the various
|
<root> - Main Harbour directory. Contains all the various
|
||||||
| make file and Changelog (=changes history) files.
|
| make file and Changelog (=changes history) file.
|
||||||
|
|
|
|
||||||
+---bin - Executable and build scripts.
|
+---bin - Executable and helper scripts.
|
||||||
| Should contain harbour and other executables. (*)
|
| Should contain Harbour and other executables. (*)
|
||||||
|
|
|
|
||||||
+---config - Configuration Files (.mk) for the GNU Make system.
|
+---config - Configuration Files (.mk) for the GNU Make system.
|
||||||
| |
|
| |
|
||||||
@@ -32,7 +32,7 @@ Follow are the various directories that exist under the Harbour tree.
|
|||||||
|
|
|
|
||||||
+---debian - Packaging information for Debian GNU/Linux.
|
+---debian - Packaging information for Debian GNU/Linux.
|
||||||
|
|
|
|
||||||
+---doc - Documentation and white-paper.
|
+---doc - Documentation and white-papers.
|
||||||
| |
|
| |
|
||||||
| +---en - English documentation.
|
| +---en - English documentation.
|
||||||
|
|
|
|
||||||
@@ -44,7 +44,7 @@ Follow are the various directories that exist under the Harbour tree.
|
|||||||
| |
|
| |
|
||||||
| +---codepage - National codepage collection.
|
| +---codepage - National codepage collection.
|
||||||
| |
|
| |
|
||||||
| +---common - Common function and Expression Optimizer.
|
| +---common - Common function and expression optimizer.
|
||||||
| |
|
| |
|
||||||
| +---compiler - Harbour compiler module.
|
| +---compiler - Harbour compiler module.
|
||||||
| |
|
| |
|
||||||
@@ -53,11 +53,10 @@ Follow are the various directories that exist under the Harbour tree.
|
|||||||
| +---hbextern - Library with all function binding available for
|
| +---hbextern - Library with all function binding available for
|
||||||
| | .prg code
|
| | .prg code
|
||||||
| |
|
| |
|
||||||
| +---3rd/pcre - Harbour implementation of the Perl Compatible
|
| +---3rd - Locally hosted copies of 3rd party libraries
|
||||||
| | Regular Expressions (PCRE) library.
|
| | required by core code or deemed important enough
|
||||||
| |
|
| | to be provided as part of core.
|
||||||
| +---3rd/zlib - Harbour implementation of the ZLIB data
|
| | (plays a role primarily on non-*nix systems)
|
||||||
| | compression library.
|
|
||||||
| |
|
| |
|
||||||
| +---lang - National language message support files.
|
| +---lang - National language message support files.
|
||||||
| |
|
| |
|
||||||
@@ -65,7 +64,7 @@ Follow are the various directories that exist under the Harbour tree.
|
|||||||
| |
|
| |
|
||||||
| +---main - Harbour compiler main source.
|
| +---main - Harbour compiler main source.
|
||||||
| |
|
| |
|
||||||
| +---pp - Harbour Preprocessor.
|
| +---pp - Harbour preprocessor.
|
||||||
| |
|
| |
|
||||||
| +---rdd - Replaceable Database Driver (RDD).
|
| +---rdd - Replaceable Database Driver (RDD).
|
||||||
| | |
|
| | |
|
||||||
@@ -77,7 +76,7 @@ Follow are the various directories that exist under the Harbour tree.
|
|||||||
| | |
|
| | |
|
||||||
| | +---dbfntx - DBFNTX RDD.
|
| | +---dbfntx - DBFNTX RDD.
|
||||||
| | |
|
| | |
|
||||||
| | +---hbsix - SIX compatible functions.
|
| | +---hbsix - SIx compatible functions.
|
||||||
| | |
|
| | |
|
||||||
| | +---hsx - HiPer-SEEK / CFTS compatible library.
|
| | +---hsx - HiPer-SEEK / CFTS compatible library.
|
||||||
| | |
|
| | |
|
||||||
@@ -87,7 +86,7 @@ Follow are the various directories that exist under the Harbour tree.
|
|||||||
| | |
|
| | |
|
||||||
| | +---example - Usage examples.
|
| | +---example - Usage examples.
|
||||||
| | |
|
| | |
|
||||||
| | +---rdds - A set of simple RDD's all written in PRG.
|
| | +---rdds - A set of simple RDDs all written in PRG.
|
||||||
| |
|
| |
|
||||||
| +---rtl - Run-Time libraries functions and various General
|
| +---rtl - Run-Time libraries functions and various General
|
||||||
| | | Terminal (GT) implementation
|
| | | Terminal (GT) implementation
|
||||||
@@ -96,11 +95,11 @@ Follow are the various directories that exist under the Harbour tree.
|
|||||||
| | |
|
| | |
|
||||||
| | +---gtcrs - GT subsystem based on ncurses.
|
| | +---gtcrs - GT subsystem based on ncurses.
|
||||||
| | |
|
| | |
|
||||||
| | +---gtdos - GT subsystem for MS-DOS compilers.
|
| | +---gtdos - GT subsystem for MS-DOS platform.
|
||||||
| | |
|
| | |
|
||||||
| | +---gtgui - Minimal GT for Windows GUI programs.
|
| | +---gtgui - Minimal GT for Windows GUI programs.
|
||||||
| | |
|
| | |
|
||||||
| | +---gtos2 - GT subsystem for OS/2 compilers.
|
| | +---gtos2 - GT subsystem for OS/2 platform.
|
||||||
| | |
|
| | |
|
||||||
| | +---gtpca - GT subsystem for ANSI terminals.
|
| | +---gtpca - GT subsystem for ANSI terminals.
|
||||||
| | |
|
| | |
|
||||||
@@ -124,11 +123,11 @@ Follow are the various directories that exist under the Harbour tree.
|
|||||||
| +---vm - Harbour Virtual Machine and internal Run-Time
|
| +---vm - Harbour Virtual Machine and internal Run-Time
|
||||||
| | library functions.
|
| | library functions.
|
||||||
| |
|
| |
|
||||||
| +---mainstd - mainstd library for MinGW build.
|
| +---mainstd - mainstd helper library.
|
||||||
| |
|
| |
|
||||||
| +---mainwin - mainwin library for MinGW build.
|
| +---mainwin - mainwin helper library.
|
||||||
| |
|
| |
|
||||||
| +---vmmt - GNU Makefile for creating the multithreaded version
|
| +---vmmt - GNU Makefile for creating the multi-threaded version
|
||||||
| of the VM library.
|
| of the VM library.
|
||||||
|
|
|
|
||||||
+---tests - Test programs.
|
+---tests - Test programs.
|
||||||
@@ -138,7 +137,7 @@ Follow are the various directories that exist under the Harbour tree.
|
|||||||
| |
|
| |
|
||||||
| +---hbpptest - Regression tests for the preprocessor.
|
| +---hbpptest - Regression tests for the preprocessor.
|
||||||
| |
|
| |
|
||||||
| +---mt - Various multithreading tests.
|
| +---mt - Various multi-threading tests.
|
||||||
| |
|
| |
|
||||||
| +---multifnc - Overloading C functions test.
|
| +---multifnc - Overloading C functions test.
|
||||||
| |
|
| |
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
INTRODUCTION
|
INTRODUCTION
|
||||||
============
|
============
|
||||||
|
|
||||||
This file explains the philosophy for the GNU-make based build system
|
This file explains the philosophy for the GNU Make based build system
|
||||||
for Harbour, and gives instructions on how to use it.
|
for Harbour, and gives instructions on how to use it.
|
||||||
|
|
||||||
|
|
||||||
PHILOSOPHY
|
PHILOSOPHY
|
||||||
==========
|
==========
|
||||||
|
|
||||||
This build system is based on GNU-make, the idea being that GNU-make
|
This build system is based on GNU Make, the idea being that GNU Make
|
||||||
is freely available for every platform you can dream up, and it is
|
is free software, available for every platform you can dream up, and it is
|
||||||
usually more powerful than any native make.
|
usually more powerful than any native make.
|
||||||
|
|
||||||
Each directory in the project contains one makefile, called Makefile,
|
Each directory in the project contains one Makefile, called Makefile,
|
||||||
which lists the data (file names, directory names, etc.) that is used
|
which lists the data (file names, directory names, etc.) that is used
|
||||||
to determine how to bring every target up to date within that
|
to determine how to bring every target up to date within that
|
||||||
directory. There are no rules in the Makefiles, to keep them
|
directory. There are no rules in the Makefiles, to keep them
|
||||||
@@ -23,13 +23,12 @@ For example, the following was the Makefile for an early version
|
|||||||
of the VM library:
|
of the VM library:
|
||||||
|
|
||||||
-- Cut here ---------------------------------------
|
-- Cut here ---------------------------------------
|
||||||
|
|
||||||
ROOT := ../../
|
ROOT := ../../
|
||||||
|
|
||||||
C_SOURCES := \
|
C_SOURCES := \
|
||||||
dynsym.c \
|
dynsym.c \
|
||||||
hvm.c \
|
hvm.c \
|
||||||
initsymb.c \
|
initsymb.c \
|
||||||
|
|
||||||
LIB := vm
|
LIB := vm
|
||||||
|
|
||||||
@@ -51,7 +50,6 @@ What this means is:
|
|||||||
Let's look at another Makefile, this one for the Harbour compiler:
|
Let's look at another Makefile, this one for the Harbour compiler:
|
||||||
|
|
||||||
-- Cut here ---------------------------------------
|
-- Cut here ---------------------------------------
|
||||||
|
|
||||||
ROOT := ../../
|
ROOT := ../../
|
||||||
|
|
||||||
YACC_SOURCE := harbour.y
|
YACC_SOURCE := harbour.y
|
||||||
@@ -59,7 +57,7 @@ YACC_SOURCE := harbour.y
|
|||||||
LEX_SOURCE := harbour.l
|
LEX_SOURCE := harbour.l
|
||||||
|
|
||||||
C_SOURCES := \
|
C_SOURCES := \
|
||||||
genobj32.c \
|
genobj32.c \
|
||||||
|
|
||||||
C_MAIN=harbour.c
|
C_MAIN=harbour.c
|
||||||
|
|
||||||
@@ -79,12 +77,12 @@ One final Makefile, this one from the source directory:
|
|||||||
ROOT := ../
|
ROOT := ../
|
||||||
|
|
||||||
DIRS := \
|
DIRS := \
|
||||||
compiler \
|
compiler \
|
||||||
hbpp \
|
hbpp \
|
||||||
rtl \
|
rtl \
|
||||||
vm \
|
vm \
|
||||||
rdd \
|
rdd \
|
||||||
tools \
|
tools \
|
||||||
|
|
||||||
include $(TOP)$(ROOT)config/dir.mk
|
include $(TOP)$(ROOT)config/dir.mk
|
||||||
-- Cut here ---------------------------------------
|
-- Cut here ---------------------------------------
|
||||||
@@ -113,8 +111,8 @@ files compiled with gcc). This has two advantages:
|
|||||||
USAGE
|
USAGE
|
||||||
=====
|
=====
|
||||||
|
|
||||||
To use the system, you need to install GNU-make 3.81 or later on your
|
To use the system, you need to install GNU Make 3.81 or later on your
|
||||||
system. To check this, type "make -v"; you should see
|
system. To check this, type `make -v`; you should see
|
||||||
|
|
||||||
GNU Make 3.81
|
GNU Make 3.81
|
||||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||||
@@ -123,63 +121,47 @@ system. To check this, type "make -v"; you should see
|
|||||||
Then, you must set a couple of environment variables that indicate
|
Then, you must set a couple of environment variables that indicate
|
||||||
your platform and compiler.
|
your platform and compiler.
|
||||||
|
|
||||||
For gcc on Windows with the Cygwin library:
|
For MinGW (GCC port for Windows):
|
||||||
Notes: The CYGWIN environment variable must include "noglob" in order
|
|
||||||
to avoid having Harbour or programs created with Harbour expand
|
|
||||||
wildcard command line arguments (this is checked at run-time!)
|
|
||||||
HB_PLATFORM win
|
|
||||||
HB_COMPILER gcc
|
|
||||||
CYGWIN noglob
|
|
||||||
|
|
||||||
For gcc on Windows with the MinGW library:
|
|
||||||
HB_PLATFORM win
|
HB_PLATFORM win
|
||||||
HB_COMPILER mingw
|
HB_COMPILER mingw
|
||||||
|
|
||||||
For MSVC on Windows:
|
For MSVC on Windows:
|
||||||
Notes: gnu make is case sensitive! If your editor converts
|
Notes: GNU Make is case sensitive! If your editor converts
|
||||||
harbour.c to HARBOUR.C when it saves the file, then gnu make
|
harbour.c to HARBOUR.C when it saves the file, then GNU Make
|
||||||
_will_not_work.
|
_will_not_work.
|
||||||
If you have MAKE_MODE in your dos environment, make sure it is
|
If you have MAKE_MODE in your dos environment, make sure it is
|
||||||
not set to unix
|
not set to Unix
|
||||||
|
|
||||||
For best results, also set:
|
For best results, also set:
|
||||||
HB_PLATFORM win
|
HB_PLATFORM win
|
||||||
HB_COMPILER msvc
|
HB_COMPILER msvc
|
||||||
|
|
||||||
For GCC on BSD:
|
|
||||||
HB_PLATFORM bsd
|
|
||||||
HB_COMPILER gcc
|
|
||||||
Notes:
|
|
||||||
1) You have to have bison and gmake installed in order to build
|
|
||||||
Harbour for BSD. The file doc/howtobsd.txt gives an overview
|
|
||||||
of what is required.
|
|
||||||
|
|
||||||
For GCC on Linux:
|
For GCC on Linux:
|
||||||
HB_PLATFORM linux
|
HB_PLATFORM linux
|
||||||
HB_COMPILER gcc
|
HB_COMPILER gcc
|
||||||
Notes:
|
|
||||||
1) If you want to take advantage of compiler cache programs
|
Note: If you want to take advantage of compiler cache programs
|
||||||
(such as http://ccaache.samba.org), you may set environment
|
(such as https://ccache.samba.org), you may set environment
|
||||||
variable HB_CCACHE with the value containing the name of program.
|
variable HB_CCACHE with the value containing the name of program.
|
||||||
|
|
||||||
|
For GCC on BSD:
|
||||||
|
HB_PLATFORM bsd
|
||||||
|
HB_COMPILER gcc
|
||||||
|
|
||||||
|
Note: You have to have bison and gmake installed in order to build
|
||||||
|
Harbour for BSD. The file doc/howtobsd.txt gives an overview
|
||||||
|
of what is required.
|
||||||
|
|
||||||
For GCC on OS/2 for VIO mode:
|
For GCC on OS/2 for VIO mode:
|
||||||
Note: You must point C_INCLUDE_PATH to the EMX include directory and
|
Note: You must point C_INCLUDE_PATH to the EMX include directory and
|
||||||
you must also point LIBRARY_PATH to the EMX library directory.
|
you must also point LIBRARY_PATH to the EMX library directory.
|
||||||
HB_PLATFORM os2
|
HB_PLATFORM os2
|
||||||
HB_COMPILER gcc
|
HB_COMPILER gcc
|
||||||
|
|
||||||
For Borland C++
|
|
||||||
HB_PLATFORM win
|
|
||||||
HB_COMPILER bcc
|
|
||||||
|
|
||||||
For DJGPP (GCC port for MS-DOS)
|
For DJGPP (GCC port for MS-DOS)
|
||||||
HB_PLATFORM dos
|
HB_PLATFORM dos
|
||||||
HB_COMPILER djgpp
|
HB_COMPILER djgpp
|
||||||
|
|
||||||
For Watcom C/C++ 10.x (default Makefile creates DOS4G extender executables)
|
|
||||||
HB_PLATFORM dos
|
|
||||||
HB_COMPILER watcom
|
|
||||||
|
|
||||||
The most used targets are these:
|
The most used targets are these:
|
||||||
|
|
||||||
* all: Same as typing "make" without arguments. It will usually try to
|
* all: Same as typing "make" without arguments. It will usually try to
|
||||||
@@ -197,8 +179,8 @@ See README.md about details.
|
|||||||
|
|
||||||
|
|
||||||
You can build and/or run any program in tests/working by using hbmk2
|
You can build and/or run any program in tests/working by using hbmk2
|
||||||
and hbrun. For example, 'hbmk2 scroll.prg -run' will build the scroll.prg
|
and hbrun. For example, `hbmk2 scroll.prg -run` will build the scroll.prg
|
||||||
program and then run it. 'hbrun scroll.prg' will run the program as
|
program and then run it. `hbrun scroll.prg` will run the program as
|
||||||
a script. You can also pass parameters to the program. For example,
|
a script. You can also pass parameters to the program. For example,
|
||||||
'hbrun readfile.prg harbour.ini' will rebuild the readfile.prg program
|
`hbrun readfile.prg harbour.ini` will rebuild the readfile.prg program
|
||||||
and run it with 'harbour.ini' as a command line parameter.
|
and run it with `harbour.ini` as a command-line parameter.
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ implementation of the _gt functions. These are functions named with
|
|||||||
gtxxxxxx convention and are called by the _gt functions in gtapi.c.
|
gtxxxxxx convention and are called by the _gt functions in gtapi.c.
|
||||||
I've provided the following files to implement the console functions:
|
I've provided the following files to implement the console functions:
|
||||||
|
|
||||||
gtdos.c - MS-DOS implemenation
|
gtdos.c - MS-DOS implementation
|
||||||
gtwin.c - Windows implementation
|
gtwin.c - Windows implementation
|
||||||
gtos2.c - OS/2 implementation
|
gtos2.c - OS/2 implementation
|
||||||
gtxxx.c - Generic template for implementation
|
gtxxx.c - Generic template for implementation
|
||||||
@@ -22,7 +22,7 @@ gtxxx.c - Generic template for implementation
|
|||||||
If you wish to port the gt functions to another platform, just take the
|
If you wish to port the gt functions to another platform, just take the
|
||||||
gtxxx.c and populate it with calls to your OSes functions. Call the file
|
gtxxx.c and populate it with calls to your OSes functions. Call the file
|
||||||
something appropriate (gtmac.c, gtnext.c or whatever) and add it to
|
something appropriate (gtmac.c, gtnext.c or whatever) and add it to
|
||||||
that platforms makefile.
|
that platforms Makefile.
|
||||||
|
|
||||||
The API supports a dozen or so compilers on three platforms. You only
|
The API supports a dozen or so compilers on three platforms. You only
|
||||||
have to change the gtxxx.c files to implement your platform.
|
have to change the gtxxx.c files to implement your platform.
|
||||||
@@ -40,19 +40,19 @@ directly anyway. Just compile gtapi.c alone with a #define of TEST to see
|
|||||||
the output (or build a PRG test if you want).
|
the output (or build a PRG test if you want).
|
||||||
|
|
||||||
You must include gtapi.c and one of the platform implementation files
|
You must include gtapi.c and one of the platform implementation files
|
||||||
to compile sucessfully!
|
to compile successfully!
|
||||||
|
|
||||||
There are exceptions for various compilers in the platform implementation
|
There are exceptions for various compilers in the platform implementation
|
||||||
files so if you're using a compiler that doesn't support certain routines
|
files so if you're using a compiler that doesn't support certain routines
|
||||||
or syntax just stick in your changes and surround it with an
|
or syntax just stick in your changes and surround it with an
|
||||||
#if defined(__XXX__) call.
|
`#if defined( __XXX__ )` call.
|
||||||
|
|
||||||
This is a complete set of gt functions as defined by Clipper. That is
|
This is a complete set of gt functions as defined by Clipper. That is
|
||||||
there are no new _gt functions added. But this is not a complete
|
there are no new _gt functions added. But this is not a complete
|
||||||
implementation. I do not know what _gtBegin or _gtEnd will do for
|
implementation. I do not know what _gtBegin() or _gtEnd() will do for
|
||||||
instance. Yes, they buffer the display but what does that really mean
|
instance. Yes, they buffer the display but what does that really mean
|
||||||
under the covers? Perhaps someone needs to implement a screen buffer
|
under the covers? Perhaps someone needs to implement a screen buffer
|
||||||
to write to in order to achive this but the issue that immediately comes
|
to write to in order to achieve this but the issue that immediately comes
|
||||||
to mind is how to initialize the size of this buffer?
|
to mind is how to initialize the size of this buffer?
|
||||||
|
|
||||||
The files are attached but I will NOT be checking them into cvs for the
|
The files are attached but I will NOT be checking them into cvs for the
|
||||||
@@ -63,20 +63,20 @@ overwrite someones code. If the author wants to remove his file and check
|
|||||||
this in then be my guest.
|
this in then be my guest.
|
||||||
|
|
||||||
2. This is my vision of how "I" think the gt API should be implemented.
|
2. This is my vision of how "I" think the gt API should be implemented.
|
||||||
Perhaps it isn't Antonio's or anyone elses so review it and if you feel
|
Perhaps it isn't Antonio's or anyone else's so review it and if you feel
|
||||||
that it deserves being put into Harbour I'll leave that up to you.
|
that it deserves being put into Harbour I'll leave that up to you.
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
The following functions are not implemented in gtapi.c:
|
The following functions are not implemented in gtapi.c:
|
||||||
_gtPostExt
|
_gtPostExt()
|
||||||
_gtPreExt
|
_gtPreExt()
|
||||||
_gtScroll
|
_gtScroll()
|
||||||
_gtSetBlink
|
_gtSetBlink()
|
||||||
_gtSetMode
|
_gtSetMode()
|
||||||
|
|
||||||
The following functions don't work in gtapi.c:
|
The following functions don't work in gtapi.c:
|
||||||
_gtSave
|
_gtSave()
|
||||||
_gtRestore
|
_gtRestore()
|
||||||
|
|
||||||
Two Harbour functions are included in the gtapi.c file,
|
Two Harbour functions are included in the gtapi.c file,
|
||||||
Row() and Col() to get started.
|
Row() and Col() to get started.
|
||||||
@@ -171,12 +171,15 @@ For example, compile this code:
|
|||||||
/*** t.prg ***/
|
/*** t.prg ***/
|
||||||
REQUEST HB_GT_WIN
|
REQUEST HB_GT_WIN
|
||||||
REQUEST HB_GT_WVT
|
REQUEST HB_GT_WVT
|
||||||
|
|
||||||
PROCEDURE Main()
|
PROCEDURE Main()
|
||||||
|
|
||||||
? hb_gtVersion(), hb_gtVersion( 1 )
|
? hb_gtVersion(), hb_gtVersion( 1 )
|
||||||
Tone( 200, 3 )
|
Tone( 200, 3 )
|
||||||
Tone( 300, 3 )
|
Tone( 300, 3 )
|
||||||
Tone( 500, 3 )
|
Tone( 500, 3 )
|
||||||
Inkey( 0 )
|
Inkey( 0 )
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
and link it as Windows GUI application. Then simply execute:
|
and link it as Windows GUI application. Then simply execute:
|
||||||
@@ -213,19 +216,19 @@ driver in GUI application. You can even create mixed GUI/CUI code in one
|
|||||||
program.
|
program.
|
||||||
|
|
||||||
And finally, the Tone() function problem.
|
And finally, the Tone() function problem.
|
||||||
Low level TONE code is part of GT driver. In the past, GUI libraries in
|
Low-level Tone() code is part of GT driver. In the past, GUI libraries in
|
||||||
Windows were linked the whole GTWIN driver and only TONE were used. It
|
Windows were linked the whole GTWIN driver and only Tone() were used. It
|
||||||
was possible because someone blocked GTWIN to work with application
|
was possible because someone blocked GTWIN to work with application
|
||||||
linked as Windows GUI programs. Now, GTWIN can be used with any
|
linked as Windows GUI programs. Now, GTWIN can be used with any
|
||||||
applications, and I do not want reduce its functionality. So GUI
|
applications, and I do not want reduce its functionality. So GUI
|
||||||
libraries which needs TONE should have their own GT driver which will
|
libraries which needs Tone() should have their own GT driver which will
|
||||||
support it. Now, such GT driver can also give much more features for
|
support it. Now, such GT driver can also give much more features for
|
||||||
final users, because it allow to integrate GUI library with standard
|
final users, because it allow to integrate GUI library with standard
|
||||||
Clipper screen functions.
|
Clipper screen functions.
|
||||||
|
|
||||||
How to create such base GUI GT driver?
|
How to create such base GUI GT driver?
|
||||||
See as example GTGUI in src/rtl/gtgui/gtgui.c
|
See as example GTGUI in src/rtl/gtgui/gtgui.c
|
||||||
It supports only TONE and CLIPBOARD operations.
|
It supports only Tone() and CLIPBOARD operations.
|
||||||
GUI libraries can use it or create other GT driver inheriting from
|
GUI libraries can use it or create other GT driver inheriting from
|
||||||
this one.
|
this one.
|
||||||
|
|
||||||
@@ -237,16 +240,16 @@ gtnul - base GT driver from which each other inherits.
|
|||||||
It's present on all platforms and i always linked.
|
It's present on all platforms and i always linked.
|
||||||
|
|
||||||
gtcgi - very simple GT driver which does not make any output
|
gtcgi - very simple GT driver which does not make any output
|
||||||
formatting and simply send it as to stdout.
|
formatting and simply send it as to STDOUT.
|
||||||
Supported by all platforms.
|
Supported by all platforms.
|
||||||
|
|
||||||
gtstd - it uses stdout output but tries to support full screen output but
|
gtstd - it uses STDOUT output but tries to support full screen output but
|
||||||
without collor support and cursor shape. It format text to number
|
without color support and cursor shape. It format text to number
|
||||||
of row and columns if is able to detect these values on given
|
of row and columns if is able to detect these values on given
|
||||||
platform.
|
platform.
|
||||||
Supported by all platforms.
|
Supported by all platforms.
|
||||||
|
|
||||||
gtpca - It's PCANSI terminal GT - it works in similar way to ANSI GT
|
gtpca - It's PC-ANSI terminal GT - it works in similar way to ANSI GT
|
||||||
driver in Clipper though keyboard input is not fully supported.
|
driver in Clipper though keyboard input is not fully supported.
|
||||||
Now GTTRM can make all GTPCA job and much more.
|
Now GTTRM can make all GTPCA job and much more.
|
||||||
Supported by all platforms.
|
Supported by all platforms.
|
||||||
@@ -258,7 +261,7 @@ gtdos - GT driver for MS-DOS - it uses BIOS and direct hardware screen output
|
|||||||
Clipper compatible.
|
Clipper compatible.
|
||||||
Supported only by MS-DOS builds.
|
Supported only by MS-DOS builds.
|
||||||
|
|
||||||
gtos2 - GT driver for OS/2 - It's sth like GTWIN but for other OS.
|
gtos2 - GT driver for OS/2 - It's similar to GTWIN but for another OS.
|
||||||
Supported only by OS/2 builds.
|
Supported only by OS/2 builds.
|
||||||
|
|
||||||
gtwin - GT driver for MS-Windows console window.
|
gtwin - GT driver for MS-Windows console window.
|
||||||
@@ -302,14 +305,14 @@ gtwvt - GT driver for MS-Windows. It creates its own GUI window
|
|||||||
gtwvg - GUI emulation of GTWVT. It implements itself on top of GTWVT.
|
gtwvg - GUI emulation of GTWVT. It implements itself on top of GTWVT.
|
||||||
GTWVG ( WVTGUI in xHarbour ) offers functions and classes to
|
GTWVG ( WVTGUI in xHarbour ) offers functions and classes to
|
||||||
present a console application look like a windows one.
|
present a console application look like a windows one.
|
||||||
It renderes GUI elements on top of Clipper elements
|
It renders GUI elements on top of Clipper elements
|
||||||
( GETS, BROWSERS, BOXES, LINES ) which makes them
|
( GETS, BROWSERS, BOXES, LINES ) which makes them
|
||||||
feel like a Windows element. GTWVG can be used with existing
|
feel like a Windows element. GTWVG can be used with existing
|
||||||
code just adding some more code but without sacrificing or
|
code just adding some more code but without sacrificing or
|
||||||
modifying old one.
|
modifying old one.
|
||||||
Also all IO commands can be rendered on top of the GUI elements
|
Also all IO commands can be rendered on top of the GUI elements
|
||||||
gtxwc - GT driver for X-Window. It's like GTWVT but for nixes.
|
gtxwc - GT driver for X-Window. It's like GTWVT but for nixes.
|
||||||
Additionaly it has set of predefined vector characters
|
Additionally it has set of predefined vector characters
|
||||||
(box and arrow drawing characters) which can be used
|
(box and arrow drawing characters) which can be used
|
||||||
instead of the one defined in font. It means that you
|
instead of the one defined in font. It means that you
|
||||||
will have all boxes and arrows you know from MS-DOS and CP437
|
will have all boxes and arrows you know from MS-DOS and CP437
|
||||||
@@ -318,12 +321,12 @@ gtxwc - GT driver for X-Window. It's like GTWVT but for nixes.
|
|||||||
for simple program which demonstrates it.
|
for simple program which demonstrates it.
|
||||||
Supported by POSIX systems (mostly different *nixes)
|
Supported by POSIX systems (mostly different *nixes)
|
||||||
|
|
||||||
gtalleg- GT driver which uses alegro library for input/output.
|
gtalleg- GT driver which uses Allegro library for input/output.
|
||||||
It's also GUI driver which support HB_GFX*() drawing.
|
It's also GUI driver which support HB_GFX*() drawing.
|
||||||
Multi platform, works on all platforms for which allegro
|
Multi platform, works on all platforms for which allegro
|
||||||
library has been ported: MS-Win, MS-DOS, VESA, X11, FB, SDL, ...
|
library has been ported: MS-Windows, MS-DOS, VESA, X11, FB, SDL, ...
|
||||||
|
|
||||||
gtgui - pseudo GT driver which adds to GTNUL Clipboard and Tone
|
gtgui - pseudo GT driver which adds to GTNUL Clipboard and Tone()
|
||||||
functionality. If you are using some MS-Windows GUI library
|
functionality. If you are using some MS-Windows GUI library
|
||||||
and you still want to use Tone() function or HB_GTI_CLIPBOARD
|
and you still want to use Tone() function or HB_GTI_CLIPBOARD
|
||||||
actions then link this GT driver with your application.
|
actions then link this GT driver with your application.
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
A GT Slang driver for Harbour (gtsln) is based on a S-Lang library written
|
A GT Slang driver for Harbour (gtsln) is based on a S-Lang library written
|
||||||
by John E. Davis. It was developed using Slang version 1.41, although prior
|
by John E. Davis. It was developed using Slang version 1.41, although prior
|
||||||
versions of Slang up to 1.22 should also work, but they are not recomended
|
versions of Slang up to 1.22 should also work, but they are not recommended
|
||||||
because of some bugs they have.
|
because of some bugs they have.
|
||||||
|
|
||||||
The main OS it is developed to be used on is Linux. Slang was ported to
|
The main OS it is developed to be used on is Linux. Slang was ported to
|
||||||
other OSes so it should be possible to use it on other systems too. I've
|
other OSes so it should be possible to use it on other systems too. I've
|
||||||
also successfully compiled and testd gtsln under MS-DOS but I don't think it
|
also successfully compiled and tested gtsln under MS-DOS but I don't think it
|
||||||
makes any sense to use it on that system instead of gtdos, due to its
|
makes any sense to use it on that system instead of gtdos, due to its
|
||||||
limitations and incompatibilities with CA-Cl*pper (see below), so I removed
|
limitations and incompatibilities with CA-Cl*pper (see below), so I removed
|
||||||
MS-DOS support.
|
MS-DOS support.
|
||||||
@@ -16,7 +16,7 @@ MS-DOS support.
|
|||||||
A gt Slang driver is a second driver which can be used on Unix based OSes.
|
A gt Slang driver is a second driver which can be used on Unix based OSes.
|
||||||
The first one is a gt driver based on a curses library (gtcrs). Due to the
|
The first one is a gt driver based on a curses library (gtcrs). Due to the
|
||||||
fact that curses is a standard library on Unix like systems, gtcrs should
|
fact that curses is a standard library on Unix like systems, gtcrs should
|
||||||
be considerd as a primary gt driver for such OSes.
|
be considered as a primary gt driver for such OSes.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -24,12 +24,12 @@ Compiling a gt slang driver ...
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
|
|
||||||
The driver should be automaticly compiled when you build Harbour from
|
The driver should be automatically compiled when you build Harbour from
|
||||||
sourcees, regardless of what gt driver you've chosen by setting HB_GT_LIB.
|
sources, regardless of what gt driver you've chosen by setting HB_GT_LIB.
|
||||||
Succesfull compilation requires Slang library and Slang header files
|
Successful compilation requires Slang library and Slang header files
|
||||||
properly installed on your system. The driver expects Slang header files
|
properly installed on your system. The driver expects Slang header files
|
||||||
to be placed in <system_default_inc_dir>/slang/ directory on Linux based
|
to be placed in <system_default_inc_dir>/slang/ directory on Linux based
|
||||||
systems ( this usualy means /usr/include/slang on most of them ) and
|
systems ( this usually means /usr/include/slang on most of them ) and
|
||||||
<system_default_inc_dir> on other systems (which is usually /usr/include).
|
<system_default_inc_dir> on other systems (which is usually /usr/include).
|
||||||
|
|
||||||
To build programs (by using a bld.sh script from Harbour sources), which
|
To build programs (by using a bld.sh script from Harbour sources), which
|
||||||
@@ -54,25 +54,25 @@ It assumes national characters are placed in an upper 128 bytes of ASCII
|
|||||||
table from a normal character set. "Normal" means not "alternate character
|
table from a normal character set. "Normal" means not "alternate character
|
||||||
set" here, because "alternate character set" is generally used to display
|
set" here, because "alternate character set" is generally used to display
|
||||||
graphics characters. It also assumes national characters can be entered
|
graphics characters. It also assumes national characters can be entered
|
||||||
for example by pressing an ALTR key and a particular key on a keyboard to
|
for example by pressing an <AltR> key and a particular key on a keyboard
|
||||||
get a desired national character. If this is impossible on some terminals
|
to get a desired national character. If this is impossible on some terminals
|
||||||
due to their lack of posibilities, an alternate method which uses Dead
|
due to their lack of possibilities, an alternate method which uses Dead
|
||||||
keys, is implemented. To be able to see and to enter national characters
|
keys, is implemented. To be able to see and to enter national characters
|
||||||
one should :
|
one should :
|
||||||
|
|
||||||
- have a proper font table loaded
|
- have a proper font table loaded
|
||||||
- optionaly have a software installed to allow enter national characters
|
- optionally have a software installed to allow enter national characters
|
||||||
in whatever way they should be entered
|
in whatever way they should be entered
|
||||||
- have an environment variable HRBNATIONCHARS properly set (see below)
|
- have an environment variable HRBNATIONCHARS properly set (see below)
|
||||||
- optionaly have a HRBNATIONDEADKEY defined (see below)
|
- optionally have a HRBNATIONDEADKEY defined (see below)
|
||||||
|
|
||||||
An environment variable HRBNATIONCHARS should contain a list of character
|
An environment variable HRBNATIONCHARS should contain a list of character
|
||||||
pairs. A first character from each pair sholud be a character from a lower
|
pairs. A first character from each pair should be a character from a lower
|
||||||
128 bytes of ASCII table, which should be pressed after a Dead Key was
|
128 bytes of ASCII table, which should be pressed after a Dead Key was
|
||||||
pressed, to get a desired national character. The second character is a
|
pressed, to get a desired national character. The second character is a
|
||||||
national character itself. Those pairs should be defined even if a Dead
|
national character itself. Those pairs should be defined even if a Dead
|
||||||
key is not used (because a terminal supports other method of entering
|
key is not used (because a terminal supports other method of entering
|
||||||
national characters - for example ALTR+letter).
|
national characters - for example <AltR + letter>).
|
||||||
|
|
||||||
If a terminal does not support entering national characters by using an
|
If a terminal does not support entering national characters by using an
|
||||||
ALT key (or the other similar) an environment variable HRBNATIONDEADKEY
|
ALT key (or the other similar) an environment variable HRBNATIONDEADKEY
|
||||||
@@ -81,7 +81,7 @@ can be defined. It should contain a character which should be pressed
|
|||||||
national character.
|
national character.
|
||||||
|
|
||||||
The reason I am using HRBNATIONCHARS envvar is simple. I want to give a
|
The reason I am using HRBNATIONCHARS envvar is simple. I want to give a
|
||||||
better graphics chars support when the same code is ocupied by a nation
|
better graphics chars support when the same code is occupied by a nation
|
||||||
char and by a graphics char. Because on terminals there are usually two
|
char and by a graphics char. Because on terminals there are usually two
|
||||||
glyph's character sets (normal and alternate) knowing nation's characters
|
glyph's character sets (normal and alternate) knowing nation's characters
|
||||||
codes, I can switch to normal character set when a nation character code
|
codes, I can switch to normal character set when a nation character code
|
||||||
@@ -104,7 +104,7 @@ This implementation works better than it would ever work in MS-DOS where
|
|||||||
there is no way to do such tricks (because there is only one glyph's
|
there is no way to do such tricks (because there is only one glyph's
|
||||||
character set without VGA tricks).
|
character set without VGA tricks).
|
||||||
|
|
||||||
Using environment variables gives a configuration fexibility to Harbour
|
Using environment variables gives a configuration flexibility to Harbour
|
||||||
programs for different users and different code pages. To change a code
|
programs for different users and different code pages. To change a code
|
||||||
page one should only change HRBNATIONCHARS var (if a Dead key is used)
|
page one should only change HRBNATIONCHARS var (if a Dead key is used)
|
||||||
and this can be done from a script which runs a Harbour program.
|
and this can be done from a script which runs a Harbour program.
|
||||||
@@ -123,8 +123,8 @@ HRBNATIONCHARS should be defined as :
|
|||||||
where AĄ is a first pair, CĆ is a second pair and so on
|
where AĄ is a first pair, CĆ is a second pair and so on
|
||||||
|
|
||||||
Suppose also we are working on a terminal which does not allow to enter
|
Suppose also we are working on a terminal which does not allow to enter
|
||||||
national characters by pressing ALTR+A, ALTR+C, ALTR+E. Because we like
|
national characters by pressing <AltR+A>, <AltR+C>, <AltR+E>. Because we
|
||||||
a character '`' (\140 in octal), we arbitrary choose it as a Dead key.
|
like a character '`' (\140 in octal), we arbitrary choose it as a Dead key.
|
||||||
|
|
||||||
So we define HRBNATIONDEADKEY as :
|
So we define HRBNATIONDEADKEY as :
|
||||||
|
|
||||||
@@ -139,13 +139,13 @@ and so on. To get '`' character we need to double press `.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Limitations, incomatibilities with CA-Cl*pper, errors ...
|
Limitations, incompatibilities with CA-Cl*pper, errors ...
|
||||||
--------------------------------------------------------
|
--------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
The driver is rather limited in comparison to other Harbour gt drivers and
|
The driver is rather limited in comparison to other Harbour gt drivers and
|
||||||
has many incompatibilities with CA-Cl*pper. Some of those limitations and in-
|
has many incompatibilities with CA-Cl*pper. Some of those limitations and
|
||||||
compatibilities are caused by an Unix behavior, others are caused by a Slang
|
incompatibilities are caused by an Unix behavior, others are caused by a Slang
|
||||||
implementation. There are also some caused by a gt layer design. Not to
|
implementation. There are also some caused by a gt layer design. Not to
|
||||||
mention that there are probably some caused by my lack of knowledge.
|
mention that there are probably some caused by my lack of knowledge.
|
||||||
|
|
||||||
@@ -158,17 +158,17 @@ Here is a (probably not complete) list of them :
|
|||||||
fact the previous problem, just worded differently)
|
fact the previous problem, just worded differently)
|
||||||
|
|
||||||
- you can't display characters with values below 32 (control characters).
|
- you can't display characters with values below 32 (control characters).
|
||||||
It is a very important limitation because you can't use many usefull
|
It is a very important limitation because you can't use many useful
|
||||||
chars which you used under CA-Cl*pper. This is an OS limitation which
|
chars which you used under CA-Cl*pper. This is an OS limitation which
|
||||||
Slang also inherits
|
Slang also inherits
|
||||||
|
|
||||||
- displaying chars above 128 widely depends on terminal posibilities.
|
- displaying chars above 128 widely depends on terminal possibilities.
|
||||||
Because of this on xterm I set all frame chars to a single frame
|
Because of this on xterm I set all frame chars to a single frame
|
||||||
(this means - double and mixed frames are shown as a single frame).
|
(this means - double and mixed frames are shown as a single frame).
|
||||||
You should not expect to see chars above 128 shown properly in all
|
You should not expect to see chars above 128 shown properly in all
|
||||||
cases.
|
cases.
|
||||||
|
|
||||||
- a screen is automaticly cleared on program's startup (you can't inherit
|
- a screen is automatically cleared on program's startup (you can't inherit
|
||||||
it from a system) and a cursor is set at 0,0
|
it from a system) and a cursor is set at 0,0
|
||||||
|
|
||||||
- when you run external programs a screen is restored after execution so
|
- when you run external programs a screen is restored after execution so
|
||||||
@@ -176,8 +176,8 @@ Here is a (probably not complete) list of them :
|
|||||||
programs
|
programs
|
||||||
|
|
||||||
- you can't expect cursor hiding and cursor style changing to work at
|
- you can't expect cursor hiding and cursor style changing to work at
|
||||||
all. Although on a textmode Linux console it works, this is a Linux
|
all. Although on a text-mode Linux console it works, this is a Linux
|
||||||
textmode hack only and it is hardcoded. For example on xterm only
|
text-mode hack only and it is hardcoded. For example on xterm only
|
||||||
cursor hiding works well.
|
cursor hiding works well.
|
||||||
|
|
||||||
- it is not guaranteed that programs which use DispBegin() and DispEnd()
|
- it is not guaranteed that programs which use DispBegin() and DispEnd()
|
||||||
@@ -195,7 +195,7 @@ Here is a (probably not complete) list of them :
|
|||||||
|
|
||||||
- keyboard handling is VERY LIMITED. Generally you should not expect
|
- keyboard handling is VERY LIMITED. Generally you should not expect
|
||||||
ALT+key, CTRL+F<n> and CTRL+<specialkeys> combinations to work at all
|
ALT+key, CTRL+F<n> and CTRL+<specialkeys> combinations to work at all
|
||||||
although they work on a textmode Linux console. This is a very big
|
although they work on a text-mode Linux console. This is a very big
|
||||||
problem and at least any solution should be developed to emulate this.
|
problem and at least any solution should be developed to emulate this.
|
||||||
One attempt is a Dead key workaround I've implemented for national
|
One attempt is a Dead key workaround I've implemented for national
|
||||||
characters and a Meta key to simulate Alt key. By default as a Meta
|
characters and a Meta key to simulate Alt key. By default as a Meta
|
||||||
@@ -209,7 +209,7 @@ Here is a (probably not complete) list of them :
|
|||||||
- currently there is no mouse support. This is a TODO item
|
- currently there is no mouse support. This is a TODO item
|
||||||
|
|
||||||
- Out<XXX>() functions do not work well. This is caused by a design of
|
- Out<XXX>() functions do not work well. This is caused by a design of
|
||||||
a gt layer where writing directly to stdout is done outside Slang,
|
a gt layer where writing directly to STDOUT is done outside Slang,
|
||||||
so Slang can't maintain screen changes properly.
|
so Slang can't maintain screen changes properly.
|
||||||
|
|
||||||
- redirecting Out<XXX>() to a file results in writing control chars
|
- redirecting Out<XXX>() to a file results in writing control chars
|
||||||
@@ -226,9 +226,9 @@ Terminfo database ...
|
|||||||
Slang gt driver is based on a terminfo database so it is very important to
|
Slang gt driver is based on a terminfo database so it is very important to
|
||||||
have it properly set. Most problems are related to a broken terminfo file.
|
have it properly set. Most problems are related to a broken terminfo file.
|
||||||
I don't have general advice about that. You are supposed to help yourself.
|
I don't have general advice about that. You are supposed to help yourself.
|
||||||
The only thing you should know is that you must not have sequences for F11
|
The only thing you should know is that you must not have sequences for <F11>
|
||||||
and F12 function keys set in a terminfo file if you want to use SHFT+F<n>
|
and <F12> function keys set in a terminfo file if you want to use <Shift+Fn>
|
||||||
and CTRL+F<n> keys (of course they all should be defined there).
|
and <Ctrl+Fn> keys (of course they all should be defined there).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ Why use gt slang driver ...
|
|||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
|
||||||
Well, personaly I find only two reasons. When CA-Cl*pper compatibility and
|
Well, personally I find only two reasons. When CA-Cl*pper compatibility and
|
||||||
current limitations are not a problem, gtsln is a little bit faster than
|
current limitations are not a problem, gtsln is a little bit faster than
|
||||||
gtcrs and my experiences show that sometimes it works a little bit better
|
gtcrs and my experiences show that sometimes it works a little bit better
|
||||||
than gtcrs on real terminals (tested on wy60 where gtcrs did not handle
|
than gtcrs on real terminals (tested on wy60 where gtcrs did not handle
|
||||||
@@ -247,14 +247,14 @@ the keyboard well).
|
|||||||
TODO
|
TODO
|
||||||
------
|
------
|
||||||
|
|
||||||
- keyboard emulation on terminals with lack of posibilities
|
- keyboard emulation on terminals with lack of possibilities
|
||||||
- support for mouse on Linux text console and on xterm
|
- support for mouse on Linux text console and on xterm
|
||||||
- fix a problem with redirecting output to a file or a pipe
|
- fix a problem with redirecting output to a file or a pipe
|
||||||
- find a way to inherit screen from a system at startup
|
- find a way to inherit screen from a system at startup
|
||||||
(is it possible at all ?)
|
(is it possible at all ?)
|
||||||
- sound support on Linux using native sound system (Alsa ?)
|
- sound support on Linux using native sound system (Alsa ?)
|
||||||
- support for sound on other systems than Linux
|
- support for sound on other systems than Linux
|
||||||
- fix working on monochorme terminals
|
- fix working on monochrome terminals
|
||||||
- add a PC video card hardware emulation
|
- add a PC video card hardware emulation
|
||||||
|
|
||||||
|
|
||||||
@@ -263,5 +263,5 @@ TODO
|
|||||||
|
|
||||||
|
|
||||||
PS.
|
PS.
|
||||||
I want to appologize for any english errors
|
I want to apologize for any English errors
|
||||||
and any technical errors in this text.
|
and any technical errors in this text.
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ FUNCTION HEADER TEMPLATE
|
|||||||
$AUTHOR$
|
$AUTHOR$
|
||||||
Copyright YYYY FirstName LastName <me@example.org>
|
Copyright YYYY FirstName LastName <me@example.org>
|
||||||
$NAME$
|
$NAME$
|
||||||
StartHere()
|
StartHere()
|
||||||
$CATEGORY$
|
$CATEGORY$
|
||||||
|
|
||||||
$SUBCATEGORY$
|
$SUBCATEGORY$
|
||||||
@@ -40,7 +40,7 @@ FUNCTION HEADER TEMPLATE
|
|||||||
$FILES$
|
$FILES$
|
||||||
|
|
||||||
$SEEALSO$
|
$SEEALSO$
|
||||||
Comma separated list of references
|
Comma separated list of references
|
||||||
$END$
|
$END$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -48,77 +48,81 @@ HEADER EXAMPLES
|
|||||||
===============
|
===============
|
||||||
|
|
||||||
/* $DOC$
|
/* $DOC$
|
||||||
|
$AUTHOR$
|
||||||
|
Copyright YYYY FirstName LastName <me@example.org>
|
||||||
$NAME$
|
$NAME$
|
||||||
IsLeapYr()
|
IsLeapYr()
|
||||||
$CATEGORY$
|
$CATEGORY$
|
||||||
Date functions
|
Date functions
|
||||||
$ONELINER$
|
$ONELINER$
|
||||||
Test if a date falls in a leap year.
|
Test if a date falls in a leap year.
|
||||||
$SYNTAX$
|
$SYNTAX$
|
||||||
IsLeapYr( [<dDate>] ) --> <lIsLeap>
|
IsLeapYr( [<dDate>] ) --> <lIsLeap>
|
||||||
$ARGUMENTS$
|
$ARGUMENTS$
|
||||||
<dDate> is an optional date. If not supplied is defaults to the
|
<dDate> is an optional date. If not supplied is defaults to the
|
||||||
value returned from Date().
|
value returned from Date().
|
||||||
$RETURNS$
|
$RETURNS$
|
||||||
.T. if <dDate> falls in a leap year, .F. if not.
|
.T. if <dDate> falls in a leap year, .F. if not.
|
||||||
$DESCRIPTION$
|
$DESCRIPTION$
|
||||||
IsLeapYr() can be used to check if a given year is a leap year.
|
IsLeapYr() can be used to check if a given year is a leap year.
|
||||||
$EXAMPLES$
|
$EXAMPLES$
|
||||||
/* Check if it's a leap year. */
|
/* Check if it's a leap year. */
|
||||||
|
|
||||||
IF IsLeapYr()
|
IF IsLeapYr()
|
||||||
? "One extra day before you get paid this Feb!!"
|
? "One extra day before you get paid this Feb!!"
|
||||||
ELSE
|
ELSE
|
||||||
? "A normal year"
|
? "A normal year"
|
||||||
ENDIF
|
ENDIF
|
||||||
$STATUS$
|
$STATUS$
|
||||||
C
|
C
|
||||||
$COMPLIANCE$
|
$COMPLIANCE$
|
||||||
IsLeapYr() works exactly like CA-Cl*pper's IsLeapYr(), if your
|
IsLeapYr() works exactly like CA-Cl*pper's IsLeapYr(), if your
|
||||||
CA-Cl*pper doesn't have such a function you're probably in a
|
CA-Cl*pper doesn't have such a function you're probably in a
|
||||||
different universe from the author of this function.
|
different universe from the author of this function.
|
||||||
$PLATFORMS$
|
$PLATFORMS$
|
||||||
All
|
All
|
||||||
$FILES$
|
$FILES$
|
||||||
|
|
||||||
$SEEALSO$
|
$SEEALSO$
|
||||||
Date(), IsWeekend(), IsHarbourFinished(), IsApocalypse(), SET DATE
|
Date(), IsWeekend(), IsHarbourFinished(), IsApocalypse(), SET DATE
|
||||||
$END$
|
$END$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $DOC$
|
/* $DOC$
|
||||||
|
$AUTHOR$
|
||||||
|
Copyright YYYY FirstName LastName <me@example.org>
|
||||||
$TEMPLATE$
|
$TEMPLATE$
|
||||||
Function
|
Function
|
||||||
$NAME$
|
$NAME$
|
||||||
hb_dateEncStr()
|
hb_dateEncStr()
|
||||||
$CATEGORY$
|
$CATEGORY$
|
||||||
C level API
|
C level API
|
||||||
$SUBCATEGORY$
|
$SUBCATEGORY$
|
||||||
Date/Time
|
Date/Time
|
||||||
$ONELINER$
|
$ONELINER$
|
||||||
|
|
||||||
$SYNTAX$
|
$SYNTAX$
|
||||||
C Prototype
|
C Prototype
|
||||||
|
|
||||||
#include <hbdate.h>
|
#include <hbdate.h>
|
||||||
long hb_dateEncStr( char * szDate )
|
long hb_dateEncStr( char * szDate )
|
||||||
$ARGUMENTS$
|
$ARGUMENTS$
|
||||||
<szDate>
|
<szDate>
|
||||||
$RETURNS$
|
$RETURNS$
|
||||||
<lResult>
|
<lResult>
|
||||||
$DESCRIPTION$
|
$DESCRIPTION$
|
||||||
|
|
||||||
$EXAMPLES$
|
$EXAMPLES$
|
||||||
|
|
||||||
$STATUS$
|
$STATUS$
|
||||||
R
|
R
|
||||||
$COMPLIANCE$
|
$COMPLIANCE$
|
||||||
NA
|
NA
|
||||||
$FILES$
|
$FILES$
|
||||||
$PLATFORMS$
|
$PLATFORMS$
|
||||||
All
|
All
|
||||||
$VERSION$
|
$VERSION$
|
||||||
1.0
|
1.0
|
||||||
$SEEALSO$
|
$SEEALSO$
|
||||||
|
|
||||||
$END$
|
$END$
|
||||||
|
|||||||
@@ -8,13 +8,13 @@ By Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|||||||
with the above unused empty directories will be removed
|
with the above unused empty directories will be removed
|
||||||
from your repository copy.
|
from your repository copy.
|
||||||
Please check if all your files are unmodified. You can redirect
|
Please check if all your files are unmodified. You can redirect
|
||||||
stdout output from cvs command to a file to see if all files are
|
STDOUT output from cvs command to a file to see if all files are
|
||||||
exactly the same.
|
exactly the same.
|
||||||
2. Update files which contain harbour release number. Now these are:
|
2. Update files which contain Harbour release number. Now these are:
|
||||||
harbour.spec
|
harbour.spec
|
||||||
include/hbver.h
|
include/hbver.h
|
||||||
3. Set proper release date in NEWS (found as doc/oldnews.txt) and
|
3. Set proper release date in NEWS (found as doc/oldnews.txt) and
|
||||||
if necessary update release informations. Also add the exact
|
if necessary update release information. Also add the exact
|
||||||
tag name to this file, for example "tag: build46".
|
tag name to this file, for example "tag: build46".
|
||||||
4. Update ChangeLog.txt and commit your modifications.
|
4. Update ChangeLog.txt and commit your modifications.
|
||||||
5. Update hbver.h with ChangeLog.txt file ID and your last entry ID.
|
5. Update hbver.h with ChangeLog.txt file ID and your last entry ID.
|
||||||
|
|||||||
@@ -14,36 +14,40 @@ Content
|
|||||||
=========================================================
|
=========================================================
|
||||||
by Viktor Szakats
|
by Viktor Szakats
|
||||||
|
|
||||||
1) Read the Harbour README.md, monitor the development mailing list,
|
1. Read the Harbour README.md, monitor the development mailing list,
|
||||||
consult with the developers, make contributions. This way your chances
|
consult with the developers, make contributions. This way your chances
|
||||||
are high to get a R/W access to the repository.
|
are high to get a R/W access to the repository.
|
||||||
2) Before uploading anything you'll need push permission for the
|
2. Before uploading anything you'll need push permission for the
|
||||||
Harbour Git server. To get this please make a request on the development
|
Harbour Git server. To get this please make a request on the development
|
||||||
list. Note that getting Developer status is not an automatic process.
|
list. Note that getting Developer status is not an automatic process.
|
||||||
3) You'll need an Git client for your platform.
|
2. You'll need an Git client for your platform.
|
||||||
4) Do a 'git clone' to get your own local development Git repository.
|
3. Do a 'git clone' to get your own local development Git repository.
|
||||||
|
|
||||||
1.2 Here's how to upload your changes to the Git server
|
1.2 Here's how to upload your changes to the Git server
|
||||||
=======================================================
|
=======================================================
|
||||||
by Viktor Szakats
|
by Viktor Szakats
|
||||||
|
|
||||||
1) Make the changes in the source
|
1. Make the changes in the source
|
||||||
2) Do a 'git pull'
|
2. Do a 'git pull'
|
||||||
3) Resolve any conflicts
|
3. Resolve any conflicts
|
||||||
4) Run 'hbrun bin/commit' to check any commit pre-checks
|
4. Run 'hbrun bin/commit' to check any commit pre-checks
|
||||||
and to create new ChangeLog.txt entry template
|
and to create new ChangeLog.txt entry template
|
||||||
5) Edit ChangeLog.txt with a text editor (do not use notepad.exe)
|
5. Edit ChangeLog.txt with a text editor (do not use notepad.exe)
|
||||||
6) Copy the last ChangeLog.txt entry to the clipboard
|
6. Copy the last ChangeLog.txt entry to the clipboard
|
||||||
If it's a single atomic change, it's better to copy only
|
If it's a single atomic change, it's better to copy only
|
||||||
the description itself without the entry header and list
|
the description itself without the entry header and list
|
||||||
of files.
|
of files.
|
||||||
7) Do a 'git commit [-a]'
|
7. Do a 'git commit [-a]'
|
||||||
8) Paste clipboard content to the text editor that popped up
|
8. Paste clipboard content to the text editor that popped up
|
||||||
9) Save and exit in editor
|
9. Save and exit in editor
|
||||||
10) Git is now committing
|
10. Git is now committing
|
||||||
11) Do a 'git push' to publish your changes online to the
|
11. Do a 'git push' to publish your changes online to the
|
||||||
master repository
|
master repository
|
||||||
|
|
||||||
|
NOTE:
|
||||||
|
- Run once 'git config --global core.autocrlf true' on Windows
|
||||||
|
- Run once 'git config --global core.autocrlf input' on *nix
|
||||||
|
|
||||||
1.3 Here's how to format your ChangeLog.txt entries
|
1.3 Here's how to format your ChangeLog.txt entries
|
||||||
===================================================
|
===================================================
|
||||||
by Viktor Szakats
|
by Viktor Szakats
|
||||||
@@ -54,11 +58,24 @@ by Viktor Szakats
|
|||||||
Describe what you've changed, the reasons, and other comments
|
Describe what you've changed, the reasons, and other comments
|
||||||
and explanations you find useful.
|
and explanations you find useful.
|
||||||
|
|
||||||
|
- To refer to a commit, simply include the commit hash in the
|
||||||
|
text. If you refer to a commit in another fork,
|
||||||
|
include the whole (GitHub) URL of the commit.
|
||||||
|
|
||||||
|
- To refer to an issue, include issue number prefixed with
|
||||||
|
a # character. If you include the word "fixes", "fixed"
|
||||||
|
or similar, the issue will automatically be closed.
|
||||||
|
See more here:
|
||||||
|
https://help.github.com/articles/writing-on-github#references
|
||||||
|
|
||||||
- In case of incompatible changes visible on the user-level,
|
- In case of incompatible changes visible on the user-level,
|
||||||
add the word 'INCOMPATIBLE' to the text.
|
add the word 'INCOMPATIBLE' to the text.
|
||||||
|
|
||||||
- Mark comments suggesting further fixes with 'TOFIX: ', further
|
- In case some translatable strings have changed,
|
||||||
todos as 'TODO: ', and update these to '[DONE]' when implemented.
|
add the word '[TRANSLATION]' to the text.
|
||||||
|
|
||||||
|
- Mark comments suggesting further fixes with 'FIXME: ', further
|
||||||
|
TODOs as 'TODO: ', and update these to '[DONE]' when implemented.
|
||||||
|
|
||||||
- Mark changes to merge with different branch as '[TOMERGE x.0]'.
|
- Mark changes to merge with different branch as '[TOMERGE x.0]'.
|
||||||
Changes these to '[MERGED x.0]' when merge is completed.
|
Changes these to '[MERGED x.0]' when merge is completed.
|
||||||
@@ -68,13 +85,13 @@ by Viktor Szakats
|
|||||||
1.4 Here's how to use the Git server in read-only mode
|
1.4 Here's how to use the Git server in read-only mode
|
||||||
======================================================
|
======================================================
|
||||||
|
|
||||||
git clone git://github.com/harbour/core.git harbour-core
|
git clone https://github.com/harbour/core.git harbour-core
|
||||||
|
|
||||||
1.5 Things to do to avoid damaging the Git repository
|
1.5 Things to do to avoid damaging the Git repository
|
||||||
=====================================================
|
=====================================================
|
||||||
by David G. Holm
|
by David G. Holm
|
||||||
|
|
||||||
1) Always do your Harbour development using your local source tree. Do not
|
1. Always do your Harbour development using your local source tree. Do not
|
||||||
do your development outside your local source tree and then copy your
|
do your development outside your local source tree and then copy your
|
||||||
changes into your local source tree to commit them, because that leads
|
changes into your local source tree to commit them, because that leads
|
||||||
easily to accidentally overwriting changes made by others, because
|
easily to accidentally overwriting changes made by others, because
|
||||||
@@ -83,7 +100,7 @@ by David G. Holm
|
|||||||
your local source tree, changes made by others will be merged with your
|
your local source tree, changes made by others will be merged with your
|
||||||
changes and you only need to recompile and retest before committing.
|
changes and you only need to recompile and retest before committing.
|
||||||
|
|
||||||
2) Always run 'git pull' from the 'harbour' directory before you run
|
2. Always run 'git pull' from the 'harbour' directory before you run
|
||||||
'git commit'. Run 'hbmk2 bin/commit' before committing, which will
|
'git commit'. Run 'hbmk2 bin/commit' before committing, which will
|
||||||
create a new entry at the top of ChangeLog.txt, which you can then
|
create a new entry at the top of ChangeLog.txt, which you can then
|
||||||
edit with the description of changes.
|
edit with the description of changes.
|
||||||
@@ -99,7 +116,7 @@ by David G. Holm
|
|||||||
and the commit.
|
and the commit.
|
||||||
|
|
||||||
|
|
||||||
[ Copyright (c) 1999-2013 Viktor Szakats (vszakats.net/harbour)
|
[ Copyright (c) 1999-2014 Viktor Szakats (vszakats.net/harbour)
|
||||||
Licensed under Creative Commons Attribution-ShareAlike 3.0:
|
Licensed under Creative Commons Attribution-ShareAlike 4.0:
|
||||||
http://creativecommons.org/licenses/by-sa/3.0/
|
https://creativecommons.org/licenses/by-sa/4.0/
|
||||||
See COPYING.txt. ]
|
See LICENSE.txt. ]
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ They can be emulated by fcntl() or flock() locks. Harbour uses flock()
|
|||||||
in systems where it does not create conflicts with fcntl() locks used
|
in systems where it does not create conflicts with fcntl() locks used
|
||||||
to synchronize file access by different processes in shared mode.
|
to synchronize file access by different processes in shared mode.
|
||||||
Currently it's enabled by default only in Linux (tests with *BSD systems
|
Currently it's enabled by default only in Linux (tests with *BSD systems
|
||||||
and MacOSX showed that it interacts with fcntl locks causing deadlocks).
|
and macOS showed that it interacts with fcntl locks causing deadlocks).
|
||||||
On other POSIX systems Harbour uses fcntl() read and write locks at
|
On other POSIX systems Harbour uses fcntl() read and write locks at
|
||||||
address 0x7fffffff (size 1) to simulate shared and exclusive mode.
|
address 0x7fffffff (size 1) to simulate shared and exclusive mode.
|
||||||
|
|
||||||
@@ -126,13 +126,13 @@ CDX WRITE LOCK: @0xfffeffff : 0x10001
|
|||||||
prepare the index modification in memory and before writing to
|
prepare the index modification in memory and before writing to
|
||||||
index file lock @0xffff0000 : 0x10000
|
index file lock @0xffff0000 : 0x10000
|
||||||
to eliminate starvation effect caused by many readers
|
to eliminate starvation effect caused by many readers
|
||||||
on each 16-th read lock reading process tries to lock write
|
on each 16th read lock reading process tries to lock write
|
||||||
area @0xfffeffff : 1 instead and then sets normal read lock
|
area @0xfffeffff : 1 instead and then sets normal read lock
|
||||||
|
|
||||||
In Harbour it's DB_DBFLOCK_COMIX.
|
In Harbour it's DB_DBFLOCK_COMIX.
|
||||||
|
|
||||||
|
|
||||||
HARBOUR 32-bit locking
|
Harbour 32-bit locking
|
||||||
======================
|
======================
|
||||||
all locks are exclusive (*), in index shared locks are emulated
|
all locks are exclusive (*), in index shared locks are emulated
|
||||||
|
|
||||||
@@ -148,13 +148,13 @@ CDX WRITE LOCK: @0xfffeffff : 0x10001
|
|||||||
prepare the index modification in memory and before writing to
|
prepare the index modification in memory and before writing to
|
||||||
index file lock @0xffff0000 : 0x10000
|
index file lock @0xffff0000 : 0x10000
|
||||||
to eliminate starvation effect caused by many readers
|
to eliminate starvation effect caused by many readers
|
||||||
on each 16-th read lock reading process tries to lock write
|
on each 16th read lock reading process tries to lock write
|
||||||
area @0xfffeffff : 1 instead and then sets normal read lock
|
area @0xfffeffff : 1 instead and then sets normal read lock
|
||||||
|
|
||||||
In Harbour it's DB_DBFLOCK_HB32.
|
In Harbour it's DB_DBFLOCK_HB32.
|
||||||
|
|
||||||
|
|
||||||
HARBOUR 64-bit locking
|
Harbour 64-bit locking
|
||||||
======================
|
======================
|
||||||
all locks are exclusive (*), in index shared locks are emulated
|
all locks are exclusive (*), in index shared locks are emulated
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ CDX WRITE LOCK: @0x7fffffff00000000 : 0x10001
|
|||||||
prepare the index modification in memory and before writing to
|
prepare the index modification in memory and before writing to
|
||||||
index file lock @0x7fffffff00000001 : 0x10000
|
index file lock @0x7fffffff00000001 : 0x10000
|
||||||
to eliminate starvation effect caused by many readers
|
to eliminate starvation effect caused by many readers
|
||||||
on each 16-th read lock reading process tries to lock write
|
on each 16th read lock reading process tries to lock write
|
||||||
area @0x7fffffff00000000 : 1 instead and then sets normal read lock
|
area @0x7fffffff00000000 : 1 instead and then sets normal read lock
|
||||||
|
|
||||||
In Harbour it's DB_DBFLOCK_HB64.
|
In Harbour it's DB_DBFLOCK_HB64.
|
||||||
|
|||||||
151
doc/oldnews.txt
151
doc/oldnews.txt
@@ -1,12 +1,11 @@
|
|||||||
/* This work is licensed under the Creative Commons Attribution-ShareAlike
|
/* This work is licensed under the Creative Commons Attribution-ShareAlike
|
||||||
License. To view a copy of this license, visit
|
4.0 International License. To view a copy of this license, visit
|
||||||
http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to
|
https://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
|
||||||
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
|
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
|
||||||
USA. A summary of the license and the full legal text is included
|
USA. A summary of the license and the full legal text is included
|
||||||
in file: LICENSE.txt. If you wish to distribute some or all of this
|
in file: LICENSE.txt. If you wish to distribute some or all of this
|
||||||
work under different terms, please contact respective author(s).
|
work under different terms, please contact respective author(s).
|
||||||
The license applies to all entries on or after Version 1.1.0.
|
The license applies to all entries on or after Version 1.1.0. */
|
||||||
*/
|
|
||||||
|
|
||||||
Version 3.0.0 (2011-07-17)
|
Version 3.0.0 (2011-07-17)
|
||||||
|
|
||||||
@@ -61,7 +60,7 @@ General
|
|||||||
- HB_PLATFORM=w32 -> HB_PLATFORM=win
|
- HB_PLATFORM=w32 -> HB_PLATFORM=win
|
||||||
- CCPATH -> HB_CCPREFIX
|
- CCPATH -> HB_CCPREFIX
|
||||||
- CCPREFIX -> HB_CCPATH
|
- CCPREFIX -> HB_CCPATH
|
||||||
- GNU-make system revised to give optimal support -j<n>
|
- GNU Make system revised to give optimal support -j<n>
|
||||||
multi-threaded parallel builds, which can dramatically
|
multi-threaded parallel builds, which can dramatically
|
||||||
increase build speed in multi-core/multi-CPU systems.
|
increase build speed in multi-core/multi-CPU systems.
|
||||||
- HB_WINCE -> HB_OS_WIN_CE
|
- HB_WINCE -> HB_OS_WIN_CE
|
||||||
@@ -76,7 +75,7 @@ General
|
|||||||
(old ones still work for compatibility, but please
|
(old ones still work for compatibility, but please
|
||||||
switch your code to use the new ones)
|
switch your code to use the new ones)
|
||||||
- Fixed dynamic library creation on Solaris OSes.
|
- Fixed dynamic library creation on Solaris OSes.
|
||||||
- hbrun will now open .dbf files when passed on the command line.
|
- hbrun will now open .dbf files when passed on the command-line.
|
||||||
- Added web-server written in Harbour: uHTTPD
|
- Added web-server written in Harbour: uHTTPD
|
||||||
- POCC WinCE builds are now supported.
|
- POCC WinCE builds are now supported.
|
||||||
- Open Watcom 1.8 (RC3) compiler is now supported.
|
- Open Watcom 1.8 (RC3) compiler is now supported.
|
||||||
@@ -91,7 +90,6 @@ General
|
|||||||
compatibility, you can turn it off manually by #defining
|
compatibility, you can turn it off manually by #defining
|
||||||
HB_LEGACY_OFF. (HB_USER_CFLAGS=-DHB_LEGACY_OFF)
|
HB_LEGACY_OFF. (HB_USER_CFLAGS=-DHB_LEGACY_OFF)
|
||||||
- New Harbour homepage, thanks to Vailton Renato.
|
- New Harbour homepage, thanks to Vailton Renato.
|
||||||
http://harbour-project.org/
|
|
||||||
- GNU Make system now supports parallel builds.
|
- GNU Make system now supports parallel builds.
|
||||||
(needs GNU Make newer than 3.79.1)
|
(needs GNU Make newer than 3.79.1)
|
||||||
- GNU Make system allows to install in Harbour source tree on all platforms.
|
- GNU Make system allows to install in Harbour source tree on all platforms.
|
||||||
@@ -110,7 +108,7 @@ General
|
|||||||
Harbour on Windows, so this is now a requirement for a proper build.
|
Harbour on Windows, so this is now a requirement for a proper build.
|
||||||
- hb-mkslib.sh renamed to hb-mkdyn.sh. Old name stil works, but it's
|
- hb-mkslib.sh renamed to hb-mkdyn.sh. Old name stil works, but it's
|
||||||
now deprecated.
|
now deprecated.
|
||||||
- x64 msvc compiler got a distinct HB_COMPILER value: msvc64.
|
- x86_64 msvc compiler got a distinct HB_COMPILER value: msvc64.
|
||||||
- msvcce compiler made compatible with older MSVC/WinCE versions.
|
- msvcce compiler made compatible with older MSVC/WinCE versions.
|
||||||
- Added support for Intel(R) C++ compiler (icc) on Linux and Windows.
|
- Added support for Intel(R) C++ compiler (icc) on Linux and Windows.
|
||||||
- Added new README.md document giving a quick describing of the build
|
- Added new README.md document giving a quick describing of the build
|
||||||
@@ -127,7 +125,7 @@ General
|
|||||||
- Cygwin renamed from gcc to cygwin. (NOTE: Cygwin doesn't work since
|
- Cygwin renamed from gcc to cygwin. (NOTE: Cygwin doesn't work since
|
||||||
some versions, and support may be removed in the future.)
|
some versions, and support may be removed in the future.)
|
||||||
- Fixed #pragma -k? options to be case-insensitive.
|
- Fixed #pragma -k? options to be case-insensitive.
|
||||||
- Explicitly bind system libraries with harbour shared library.
|
- Explicitly bind system libraries with Harbour shared library.
|
||||||
RPM/DEB packages should automatically detect these dependencies.
|
RPM/DEB packages should automatically detect these dependencies.
|
||||||
- Warning cleanup (minors) for Intel compiler.
|
- Warning cleanup (minors) for Intel compiler.
|
||||||
- Pelles C workarounds for compiler bugs.
|
- Pelles C workarounds for compiler bugs.
|
||||||
@@ -211,8 +209,8 @@ Core
|
|||||||
- Added hb_osDecode(), hb_osEncode() C APIs.
|
- Added hb_osDecode(), hb_osEncode() C APIs.
|
||||||
- hb_GetEnv() extended with 3rd parameter to control OS codepage
|
- hb_GetEnv() extended with 3rd parameter to control OS codepage
|
||||||
conversion (on by default).
|
conversion (on by default).
|
||||||
- Added CPU dump support for AMD64/x64.
|
- Added CPU dump support for AMD64/x86_64.
|
||||||
- Added module listing on GPF for x86 and x64.
|
- Added module listing on GPF for x86 and x86_64.
|
||||||
- GTXWC potential GPF fixed.
|
- GTXWC potential GPF fixed.
|
||||||
- Added process handling:
|
- Added process handling:
|
||||||
hb_processOpen(), hb_processValue(), hb_processClose()
|
hb_processOpen(), hb_processValue(), hb_processClose()
|
||||||
@@ -263,7 +261,7 @@ Core
|
|||||||
- Added Windows 7 and Server 2008 R2 version detection.
|
- Added Windows 7 and Server 2008 R2 version detection.
|
||||||
- Replaced old hbmk.bat, hbmk bash script and Harbour Make tool with
|
- Replaced old hbmk.bat, hbmk bash script and Harbour Make tool with
|
||||||
portable make tool written in Harbour: hbmk. This tool can create
|
portable make tool written in Harbour: hbmk. This tool can create
|
||||||
a Harbour executable on any platforms using minimal effort. It autodetects
|
a Harbour executable on any platforms using minimal effort. It auto-detects
|
||||||
OS and compiler environment. Support script and parameter files,
|
OS and compiler environment. Support script and parameter files,
|
||||||
can act as a linker, C compiler, Harbour compiler, static and dynamic
|
can act as a linker, C compiler, Harbour compiler, static and dynamic
|
||||||
library creator, resource compiler (on Windows). Core features are
|
library creator, resource compiler (on Windows). Core features are
|
||||||
@@ -284,7 +282,7 @@ Core
|
|||||||
Harbour help screen.
|
Harbour help screen.
|
||||||
- Added support for reading FoxPro .mem files - Clipper compatibility.
|
- Added support for reading FoxPro .mem files - Clipper compatibility.
|
||||||
- Fixed very old bug which disabled writing to .mem files strings
|
- Fixed very old bug which disabled writing to .mem files strings
|
||||||
longer then 32Kb.
|
longer then 32 KiB.
|
||||||
- hbrun now accepts .dbf file as paramater, which it will open after startup.
|
- hbrun now accepts .dbf file as paramater, which it will open after startup.
|
||||||
- hbrun now accepts -v option which makes it display its own version after
|
- hbrun now accepts -v option which makes it display its own version after
|
||||||
startup.
|
startup.
|
||||||
@@ -294,7 +292,7 @@ Core
|
|||||||
- Fixed __M[V]CLEAR()/ __M[V]RESTORE() to be exactly Clipper compatible
|
- Fixed __M[V]CLEAR()/ __M[V]RESTORE() to be exactly Clipper compatible
|
||||||
and do not release PUBLIC GetList value.
|
and do not release PUBLIC GetList value.
|
||||||
- bcc compiler in GNU Make now supports older Windows NT with limited
|
- bcc compiler in GNU Make now supports older Windows NT with limited
|
||||||
command line length.
|
command-line length.
|
||||||
- Removed support for following compilers:
|
- Removed support for following compilers:
|
||||||
dos/bcc16, dos/rsx32, win/dmc, win/rsxnt, os2/icc, win/icc (IBM).
|
dos/bcc16, dos/rsx32, win/dmc, win/rsxnt, os2/icc, win/icc (IBM).
|
||||||
- Fixed static variables indexes in the generated PCODE when static
|
- Fixed static variables indexes in the generated PCODE when static
|
||||||
@@ -307,10 +305,10 @@ Core
|
|||||||
In such case "(_INITSTATICS)" is used as function name.
|
In such case "(_INITSTATICS)" is used as function name.
|
||||||
Without it debugger does not register entering such codeblocks and
|
Without it debugger does not register entering such codeblocks and
|
||||||
GPFs.
|
GPFs.
|
||||||
- Added support for automatic adding 1-st function with the same name
|
- Added support for automatic adding 1st function with the same name
|
||||||
as compiled .prg file if some code statements are used before 1-st
|
as compiled .prg file if some code statements are used before 1st
|
||||||
function/procedure declared explicitly in .prg file. Such mode can
|
function/procedure declared explicitly in .prg file. Such mode can
|
||||||
be enabled by -n2 new harbour compiler switch. This switch is used
|
be enabled by -n2 new Harbour compiler switch. This switch is used
|
||||||
by default by new hbmk tool.
|
by default by new hbmk tool.
|
||||||
- speedtst updated to work with CA-Cl*pper.
|
- speedtst updated to work with CA-Cl*pper.
|
||||||
- Added protection against pushing new private variable on HVM stack
|
- Added protection against pushing new private variable on HVM stack
|
||||||
@@ -351,8 +349,8 @@ Contrib
|
|||||||
- hbtip FTP handling fixed some accidental typos.
|
- hbtip FTP handling fixed some accidental typos.
|
||||||
- hbtip new MIME types.
|
- hbtip new MIME types.
|
||||||
- hbtip fixes and optimization to HB_BASE64().
|
- hbtip fixes and optimization to HB_BASE64().
|
||||||
- rddads now autodetects version 9.10.
|
- rddads now auto-detects version 9.10.
|
||||||
- hbct XToC(), FToC() and CToF() fixed to be properly multiplatform.
|
- hbct XToC(), FToC() and CToF() fixed to be properly multi-platform.
|
||||||
- hbct unbuffered drawing speed improvement in windowing code.
|
- hbct unbuffered drawing speed improvement in windowing code.
|
||||||
- hbct DirName() fixed.
|
- hbct DirName() fixed.
|
||||||
- hbct other fixes.
|
- hbct other fixes.
|
||||||
@@ -361,7 +359,7 @@ Contrib
|
|||||||
- hbwin made steps towards creating a unified Windows API wrapper layer.
|
- hbwin made steps towards creating a unified Windows API wrapper layer.
|
||||||
- Added hbcrypt, hbssl and rddsql (with mysql, pgsql, fbsql plugins)
|
- Added hbcrypt, hbssl and rddsql (with mysql, pgsql, fbsql plugins)
|
||||||
to contribs.
|
to contribs.
|
||||||
- hbct windowing extended with new low level API, better shadow
|
- hbct windowing extended with new low-level API, better shadow
|
||||||
handling.
|
handling.
|
||||||
- gtwvg lots of improvements.
|
- gtwvg lots of improvements.
|
||||||
- gtwvg Xbase++ compatible UI objects.
|
- gtwvg Xbase++ compatible UI objects.
|
||||||
@@ -469,7 +467,7 @@ General
|
|||||||
- Several code quality enhancements, warning fixes.
|
- Several code quality enhancements, warning fixes.
|
||||||
- Doc quality fixes, formatting.
|
- Doc quality fixes, formatting.
|
||||||
- Fixed so that build-time PRG_USR always overrides default
|
- Fixed so that build-time PRG_USR always overrides default
|
||||||
options in GNU-make.
|
options in GNU Make.
|
||||||
- Added openSUSE package requirements to doc/linux1st.txt.
|
- Added openSUSE package requirements to doc/linux1st.txt.
|
||||||
- Unnecessary compiler options and lib dependencies cleaned
|
- Unnecessary compiler options and lib dependencies cleaned
|
||||||
from build processes.
|
from build processes.
|
||||||
@@ -508,14 +506,14 @@ General
|
|||||||
instructions in make_vc.bat, how to initiate a WinCE build.
|
instructions in make_vc.bat, how to initiate a WinCE build.
|
||||||
- Now Harbour is able to build and run properly in MSVC C mode
|
- Now Harbour is able to build and run properly in MSVC C mode
|
||||||
in AMD64 (64-bit) mode.
|
in AMD64 (64-bit) mode.
|
||||||
- Added experimental Pelles C WinCE GNU-make file. It doesn't
|
- Added experimental Pelles C WinCE GNU Make file. It doesn't
|
||||||
yet work properly.
|
yet work properly.
|
||||||
- Post batch file called from core non-GNU make files was
|
- Post batch file called from core non-GNU make files was
|
||||||
renamed, please update your system if you're using them:
|
renamed, please update your system if you're using them:
|
||||||
exit_err.bat -> hbmkpost.bat
|
exit_err.bat -> hbmkpost.bat
|
||||||
- Added experimental MSVC WinCE GNU-make file.
|
- Added experimental MSVC WinCE GNU Make file.
|
||||||
- Added Darwin autodetection to non-GNU .sh make files.
|
- Added Darwin auto-detection to non-GNU .sh make files.
|
||||||
- Changed GNU-make name of MinGW WinCE compiler (HB_COMPILER)
|
- Changed GNU Make name of MinGW WinCE compiler (HB_COMPILER)
|
||||||
from 'cemgw' to 'mingwce'. Please update your system, if
|
from 'cemgw' to 'mingwce'. Please update your system, if
|
||||||
you've been using this directly (and not via make_*ce.sh scripts).
|
you've been using this directly (and not via make_*ce.sh scripts).
|
||||||
- Memory statistics module now turned off by default for optimal
|
- Memory statistics module now turned off by default for optimal
|
||||||
@@ -602,7 +600,7 @@ Core
|
|||||||
- Fixed GPFs and leaks when using Harbour compiler -w3 switch.
|
- Fixed GPFs and leaks when using Harbour compiler -w3 switch.
|
||||||
- Bad workaround added for Pelles C 5.00.1 in AMD64 mode to
|
- Bad workaround added for Pelles C 5.00.1 in AMD64 mode to
|
||||||
compile the Harbour 'inet' subsystem. It won't properly
|
compile the Harbour 'inet' subsystem. It won't properly
|
||||||
work, but it lets build the rest of Harbour (like hbrun.exe).
|
work, but it lets build the rest of Harbour (like hbrun executable).
|
||||||
- PCRE lib upgraded to 7.8 (from 7.7)
|
- PCRE lib upgraded to 7.8 (from 7.7)
|
||||||
- Fixed dbInfo( DBI_POSITIONED ) returned value.
|
- Fixed dbInfo( DBI_POSITIONED ) returned value.
|
||||||
- Fixed internal error in dirty index reading.
|
- Fixed internal error in dirty index reading.
|
||||||
@@ -623,7 +621,7 @@ Contrib
|
|||||||
- gtalleg fixed to compile under several non-*nix platforms
|
- gtalleg fixed to compile under several non-*nix platforms
|
||||||
(still needs more work).
|
(still needs more work).
|
||||||
- xhb: hb_ArrayBlock() compatibility function added.
|
- xhb: hb_ArrayBlock() compatibility function added.
|
||||||
- hbnf ft_GetE() function bad leak fixed on Win32 systems,
|
- hbnf ft_GetE() function bad leak fixed on Windows systems,
|
||||||
and potential GPF on all systems.
|
and potential GPF on all systems.
|
||||||
- hbwhat32 removed wintypes.ch header. Header with the same
|
- hbwhat32 removed wintypes.ch header. Header with the same
|
||||||
name and identical content can be found in xhb contrib.
|
name and identical content can be found in xhb contrib.
|
||||||
@@ -665,7 +663,7 @@ Contrib
|
|||||||
other when building them using the non-GNU make system.
|
other when building them using the non-GNU make system.
|
||||||
- Former hbwhat32 lib added to the default contrib list
|
- Former hbwhat32 lib added to the default contrib list
|
||||||
under the name of hbwhat, compilation was fully cleaned
|
under the name of hbwhat, compilation was fully cleaned
|
||||||
and fixed to support Win64 platform. INTERNETREADFILE(),
|
and fixed to support Windows 64-bit platform. INTERNETREADFILE(),
|
||||||
INTERNETWRITEFILE() functions were fixed. what32.ch renamed
|
INTERNETWRITEFILE() functions were fixed. what32.ch renamed
|
||||||
to hbwhat.ch.
|
to hbwhat.ch.
|
||||||
- hbhpdf fixed HPDF_AddPageLabel().
|
- hbhpdf fixed HPDF_AddPageLabel().
|
||||||
@@ -886,7 +884,7 @@ Portability
|
|||||||
- added support for shared libraries (.sl) in HPUX builds
|
- added support for shared libraries (.sl) in HPUX builds
|
||||||
- added large file support (64-bit) in HPUX builds
|
- added large file support (64-bit) in HPUX builds
|
||||||
- disabled in default BSD* builds DOS/Windows DENY_* flags emulation
|
- disabled in default BSD* builds DOS/Windows DENY_* flags emulation
|
||||||
implemented by BSD locks - tests on FreeBSD 6.2 and MacOSX shows
|
implemented by BSD locks - tests on FreeBSD 6.2 and OS X shows
|
||||||
that it badly interacts with POSIX locks and it's possible to create
|
that it badly interacts with POSIX locks and it's possible to create
|
||||||
deadlock.
|
deadlock.
|
||||||
|
|
||||||
@@ -940,7 +938,7 @@ internals:
|
|||||||
- added support for dynamically set during compilation ChangeLog entry,
|
- added support for dynamically set during compilation ChangeLog entry,
|
||||||
ChangeLog ID, SVN revision and compilation flags.
|
ChangeLog ID, SVN revision and compilation flags.
|
||||||
Update Harbour logo message to show the exact revision number and
|
Update Harbour logo message to show the exact revision number and
|
||||||
- removed non-working compiler frontends: .NET CLI and JAVA.
|
- removed non-working compiler frontends: .NET CLI and Java.
|
||||||
- added support for i18n into compiler (-j[<filename>] switch)
|
- added support for i18n into compiler (-j[<filename>] switch)
|
||||||
gettext compatible .pot files are generated
|
gettext compatible .pot files are generated
|
||||||
|
|
||||||
@@ -970,7 +968,7 @@ API
|
|||||||
- added C functions to access SET values (hb_setGet*()) which should be used
|
- added C functions to access SET values (hb_setGet*()) which should be used
|
||||||
instead of direct accessing HB_SET structure
|
instead of direct accessing HB_SET structure
|
||||||
- added hb_fsFileExists() and hb_fsDirExists()
|
- added hb_fsFileExists() and hb_fsDirExists()
|
||||||
- added hb_arraySet*() functions - they should help 3-rd party developers
|
- added hb_arraySet*() functions - they should help 3rd party developers
|
||||||
to eliminate using C stack level HB_ITEM and reduce usage of potentially
|
to eliminate using C stack level HB_ITEM and reduce usage of potentially
|
||||||
danger function like hb_arrayGetItemPtr()
|
danger function like hb_arrayGetItemPtr()
|
||||||
- added hb_itemParamStore[Forward]() functions
|
- added hb_itemParamStore[Forward]() functions
|
||||||
@@ -1007,8 +1005,8 @@ DEBUGGER
|
|||||||
|
|
||||||
RTL
|
RTL
|
||||||
---
|
---
|
||||||
- added functions for translation to/from UTF8 mode and operations
|
- added functions for translation to/from UTF-8 mode and operations
|
||||||
on UTF8 strings
|
on UTF-8 strings
|
||||||
- added functions for bit manipulations: HB_BIT*() and for conversions
|
- added functions for bit manipulations: HB_BIT*() and for conversions
|
||||||
to/from hexadecimal format
|
to/from hexadecimal format
|
||||||
- added set of functions with hb_ prefix supported extended parameters,
|
- added set of functions with hb_ prefix supported extended parameters,
|
||||||
@@ -1028,7 +1026,7 @@ RTL
|
|||||||
objects also with active exceptions
|
objects also with active exceptions
|
||||||
- added missing support for _SET_FILECASE, _SET_DIRCASE switches in some
|
- added missing support for _SET_FILECASE, _SET_DIRCASE switches in some
|
||||||
functions
|
functions
|
||||||
- added _SET_TRIMFILENAME - when enabled low level hb_fs*() functions strip
|
- added _SET_TRIMFILENAME - when enabled low-level hb_fs*() functions strip
|
||||||
trailing and leading spaces from file names to emulate DOS like behavior
|
trailing and leading spaces from file names to emulate DOS like behavior
|
||||||
- added support for _SET_DEFEXTENSIONS to native all RDDs
|
- added support for _SET_DEFEXTENSIONS to native all RDDs
|
||||||
- many fixes in Transform() function and fixed 64-bit integer transformation.
|
- many fixes in Transform() function and fixed 64-bit integer transformation.
|
||||||
@@ -1062,7 +1060,7 @@ GT:
|
|||||||
terminfo). It has hard coded support only for few terminals (Linux,ANSI,
|
terminfo). It has hard coded support only for few terminals (Linux,ANSI,
|
||||||
XTERM) but because uses only very limited set of escape sequences then
|
XTERM) but because uses only very limited set of escape sequences then
|
||||||
on most currently used terminals it works better then curses or slang
|
on most currently used terminals it works better then curses or slang
|
||||||
based programs. GTTRM automatically detects ISO/UTF8 terminal mode at
|
based programs. GTTRM automatically detects ISO/UTF-8 terminal mode at
|
||||||
startup and chose valid output what should also help *nix users - it
|
startup and chose valid output what should also help *nix users - it
|
||||||
resolves problems with some box drawing characters and others which
|
resolves problems with some box drawing characters and others which
|
||||||
are not accessible in ISO mode. It also respects /etc/harbour/hb-charmap.def
|
are not accessible in ISO mode. It also respects /etc/harbour/hb-charmap.def
|
||||||
@@ -1082,7 +1080,7 @@ GT:
|
|||||||
- fixed color string decoding to be fully Clipper compatible
|
- fixed color string decoding to be fully Clipper compatible
|
||||||
- OutStd()/OutErr() respects automatic CP translation when they
|
- OutStd()/OutErr() respects automatic CP translation when they
|
||||||
are not redirected to GT screen
|
are not redirected to GT screen
|
||||||
- added common for all GTs CLIPBOARD support. If possible low level GT
|
- added common for all GTs CLIPBOARD support. If possible low-level GT
|
||||||
drivers uses system clipboard otherwise they emulate it for Harbour
|
drivers uses system clipboard otherwise they emulate it for Harbour
|
||||||
application only
|
application only
|
||||||
|
|
||||||
@@ -1165,7 +1163,7 @@ Version 1.1.1 Devel Build (2007-06-14) tag: build48
|
|||||||
constructions
|
constructions
|
||||||
- added BEGIN SEQUENCE [WITH <bErrorBlock>] / RECOVER [USING <oErr>] /
|
- added BEGIN SEQUENCE [WITH <bErrorBlock>] / RECOVER [USING <oErr>] /
|
||||||
ALWAYS / END
|
ALWAYS / END
|
||||||
- new debugger code with low level C interface borrowed from xHarbour
|
- new debugger code with low-level C interface borrowed from xHarbour
|
||||||
- added hash tables
|
- added hash tables
|
||||||
- speed improvement
|
- speed improvement
|
||||||
- added regular expressions
|
- added regular expressions
|
||||||
@@ -1260,7 +1258,7 @@ syntax:
|
|||||||
(FLEX version only).
|
(FLEX version only).
|
||||||
- Added new compiler switch -gc3 to generate real C code output
|
- Added new compiler switch -gc3 to generate real C code output
|
||||||
(instead of PCODE array called by a C wrapper).
|
(instead of PCODE array called by a C wrapper).
|
||||||
- Added new command line switch -r=<max_recursive_preprocessor_passes>
|
- Added new command-line switch -r=<max_recursive_preprocessor_passes>
|
||||||
- Added -undef: compiler switch (borrowed from xHarbour).
|
- Added -undef: compiler switch (borrowed from xHarbour).
|
||||||
- Added support for @filelst[.clp] - partially borrowed from xHarbour.
|
- Added support for @filelst[.clp] - partially borrowed from xHarbour.
|
||||||
It's not exactly the same as in Clipper because Clipper creates one
|
It's not exactly the same as in Clipper because Clipper creates one
|
||||||
@@ -1339,12 +1337,12 @@ API
|
|||||||
such code may stop to work with next Harbour versions. Without
|
such code may stop to work with next Harbour versions. Without
|
||||||
hbvmopt.h the internal structures like HB_ITEM, HB_DYNS, ... are
|
hbvmopt.h the internal structures like HB_ITEM, HB_DYNS, ... are
|
||||||
mapped to 'void' so there is no way to access their members so we
|
mapped to 'void' so there is no way to access their members so we
|
||||||
can modify them in the future without afford for 3-rd party code.
|
can modify them in the future without afford for 3rd party code.
|
||||||
- Remove default API and stack macros. Now API/stack macros can be
|
- Remove default API and stack macros. Now API/stack macros can be
|
||||||
enabled by including hb_vmopt.h file. This file should be included
|
enabled by including hb_vmopt.h file. This file should be included
|
||||||
ONLY by core code because binary object/libraries generated after
|
ONLY by core code because binary object/libraries generated after
|
||||||
can work only with EXACTLY the same HVM compiled the same C
|
can work only with EXACTLY the same HVM compiled the same C
|
||||||
alignment switches. 3-rd party code should include hbvmpub.h only.
|
alignment switches. 3rd party code should include hbvmpub.h only.
|
||||||
- Added support to passing function references as HB_IT_SYMBOL.
|
- Added support to passing function references as HB_IT_SYMBOL.
|
||||||
- hb_itemType() return "S" for HB_IT_SYMBOL.
|
- hb_itemType() return "S" for HB_IT_SYMBOL.
|
||||||
- Message symbols are not function symbols, cleaned the HB_FS_MESSAGE
|
- Message symbols are not function symbols, cleaned the HB_FS_MESSAGE
|
||||||
@@ -1400,7 +1398,7 @@ API
|
|||||||
- Use hb_fileNameConv() instead of hb_filecase(), hb_fileNameConv()
|
- Use hb_fileNameConv() instead of hb_filecase(), hb_fileNameConv()
|
||||||
is the only one function to make file name conversions dependent on
|
is the only one function to make file name conversions dependent on
|
||||||
some SETs.
|
some SETs.
|
||||||
- HB_MATHERRMODE() input validation logic moved to the lower level
|
- HB_MATHERRMODE() input validation logic moved to the lower-level
|
||||||
function. This is a step to make this a simple Set().
|
function. This is a step to make this a simple Set().
|
||||||
- Added STRPEEK and STRPOKE FS functions covered by HB_COMPAT_FLAGSHIP
|
- Added STRPEEK and STRPOKE FS functions covered by HB_COMPAT_FLAGSHIP
|
||||||
macro.
|
macro.
|
||||||
@@ -1426,7 +1424,7 @@ GT:
|
|||||||
- Added GTI_* defintions for hb_gtInfo() function. This function
|
- Added GTI_* defintions for hb_gtInfo() function. This function
|
||||||
works in similar way to dbInfo() in RDD.
|
works in similar way to dbInfo() in RDD.
|
||||||
- New driver GTCRS based on xHarbour and Flagship curses code.
|
- New driver GTCRS based on xHarbour and Flagship curses code.
|
||||||
- New driver GTWVT for Win32 using GUI window instead of console.
|
- New driver GTWVT for Windows using GUI window instead of console.
|
||||||
- New driver GTXWC for XWindow Console.
|
- New driver GTXWC for XWindow Console.
|
||||||
- New driver GTALLEG for Allegro cross platform graphic libraries.
|
- New driver GTALLEG for Allegro cross platform graphic libraries.
|
||||||
- Respect pure REQUEST HB_GT_NUL as user GT choice if only GTNUL
|
- Respect pure REQUEST HB_GT_NUL as user GT choice if only GTNUL
|
||||||
@@ -1439,7 +1437,7 @@ Multilangual:
|
|||||||
- Codepage: Updated UNICODE values for characters in range 1-31 to
|
- Codepage: Updated UNICODE values for characters in range 1-31 to
|
||||||
keep DOS compatibility.
|
keep DOS compatibility.
|
||||||
- Codepage: Renamed files (cdp*.c -> cd*.c).
|
- Codepage: Renamed files (cdp*.c -> cd*.c).
|
||||||
- Codepage: Added UTF8 related functions: hb_cdpUTF8StringLength(),
|
- Codepage: Added UTF-8 related functions: hb_cdpUTF8StringLength(),
|
||||||
hb_cdpStringInUTF8Length(), hb_cdpUTF8ToStrn().
|
hb_cdpStringInUTF8Length(), hb_cdpUTF8ToStrn().
|
||||||
- Moved EN lang definitions to core lang code so we always have
|
- Moved EN lang definitions to core lang code so we always have
|
||||||
- HU sorting order fixed to be more compatible with Clipper.
|
- HU sorting order fixed to be more compatible with Clipper.
|
||||||
@@ -1456,7 +1454,7 @@ RDD
|
|||||||
- Rewritten DBFNTX, now it supports in practice all CDX features with
|
- Rewritten DBFNTX, now it supports in practice all CDX features with
|
||||||
multi tags and many others. With rddInfo() some important new
|
multi tags and many others. With rddInfo() some important new
|
||||||
features in DBFNTX can be enabled like increased maximum NTX file
|
features in DBFNTX can be enabled like increased maximum NTX file
|
||||||
size up to 4TB, support structural/autoopen indexes, bounding record
|
size up to 4 TiB, support structural/autoopen indexes, bounding record
|
||||||
number with index key (like in CDX format what resaolves the
|
number with index key (like in CDX format what resaolves the
|
||||||
performance problem with indexes which have a lot of non unique
|
performance problem with indexes which have a lot of non unique
|
||||||
keys, etc.)
|
keys, etc.)
|
||||||
@@ -1506,7 +1504,7 @@ Contrib
|
|||||||
- ADS: Added ADSCDX, ADSNTX and ADT RDDs. ADS RDD should not be longer
|
- ADS: Added ADSCDX, ADSNTX and ADT RDDs. ADS RDD should not be longer
|
||||||
used, it's only for backward compatibility.
|
used, it's only for backward compatibility.
|
||||||
- ADS: Call AdsFlushFileBuffers() only when _SET_HARDCOMMIT is set.
|
- ADS: Call AdsFlushFileBuffers() only when _SET_HARDCOMMIT is set.
|
||||||
- ADS: Added possibility to save memo fields > 64K.
|
- ADS: Added possibility to save memo fields > 64 KiB.
|
||||||
- ADS: Added support for relations in ADS* RDDs which are not
|
- ADS: Added support for relations in ADS* RDDs which are not
|
||||||
supported directly by ADS or are for other non ADS* tables.
|
supported directly by ADS or are for other non ADS* tables.
|
||||||
- ADS: Synced base RDD with xHarbour.
|
- ADS: Synced base RDD with xHarbour.
|
||||||
@@ -1604,7 +1602,7 @@ The runtime modules
|
|||||||
- Added Spanish Modern codepage
|
- Added Spanish Modern codepage
|
||||||
- Synced HB CDP API with xHarbour - added basic Unicode support
|
- Synced HB CDP API with xHarbour - added basic Unicode support
|
||||||
- Added functions hb_fsLockLarge() and hb_fsSeekLarge() which uses 64-bit
|
- Added functions hb_fsLockLarge() and hb_fsSeekLarge() which uses 64-bit
|
||||||
offsets in filesys.c for files larger than 2Gb
|
offsets in filesys.c for files larger than 2GB
|
||||||
|
|
||||||
RDD
|
RDD
|
||||||
---
|
---
|
||||||
@@ -1623,7 +1621,7 @@ General
|
|||||||
-------
|
-------
|
||||||
- Updated build process for Debian Linux distribution (.deb) packages.
|
- Updated build process for Debian Linux distribution (.deb) packages.
|
||||||
Now hb* scripts and shared libs are created by standard make install
|
Now hb* scripts and shared libs are created by standard make install
|
||||||
- Added support for Solaris (SunOS) and Darwin (Mac OS X).
|
- Added support for Solaris (SunOS) and Darwin (OS X).
|
||||||
- Added support for Hewlett Packard Unix (HP_UX) and ALPHA DEC.
|
- Added support for Hewlett Packard Unix (HP_UX) and ALPHA DEC.
|
||||||
- Many adds and fix in compilation scripts on all platforms.
|
- Many adds and fix in compilation scripts on all platforms.
|
||||||
- Fixed some error messages
|
- Fixed some error messages
|
||||||
@@ -1641,7 +1639,7 @@ The compiler
|
|||||||
- New compiler flag -ks was added to enable support for
|
- New compiler flag -ks was added to enable support for
|
||||||
strings as array of bytes. (Notice that support for strings
|
strings as array of bytes. (Notice that support for strings
|
||||||
as array of bytes is disabled by default both in the Harbour compiler
|
as array of bytes is disabled by default both in the Harbour compiler
|
||||||
and in harbour's runtime modules)
|
and in Harbour's runtime modules)
|
||||||
- Added a new compiler switch -kJ to disable jump optimalization and
|
- Added a new compiler switch -kJ to disable jump optimalization and
|
||||||
NOOP pcode removal (optimalization is enabled by default).
|
NOOP pcode removal (optimalization is enabled by default).
|
||||||
- When Xbase++ mode is not used (-kc or -kch) then compiler doesn't
|
- When Xbase++ mode is not used (-kc or -kch) then compiler doesn't
|
||||||
@@ -1651,7 +1649,7 @@ The compiler
|
|||||||
- Enabled support for break[].
|
- Enabled support for break[].
|
||||||
- Fixed optimalization of far jumps (this fixes generation of pcode
|
- Fixed optimalization of far jumps (this fixes generation of pcode
|
||||||
for abnormally large (DO CASE/IF/ELSEIF statements)
|
for abnormally large (DO CASE/IF/ELSEIF statements)
|
||||||
- Added support to OpenWatcom DOS/Win32.
|
- Added support to OpenWatcom DOS/Windows.
|
||||||
- Fixed compilation of &(exp) in normal stringify
|
- Fixed compilation of &(exp) in normal stringify
|
||||||
markers (this fixes INDEX ON bug).
|
markers (this fixes INDEX ON bug).
|
||||||
- Added missing support for @¯o and @M->memvar (aAdded a new
|
- Added missing support for @¯o and @M->memvar (aAdded a new
|
||||||
@@ -1661,7 +1659,7 @@ The compiler
|
|||||||
passed argument has the same name as declared parameter.
|
passed argument has the same name as declared parameter.
|
||||||
- Fixed parsing of nested #defines in command/translate
|
- Fixed parsing of nested #defines in command/translate
|
||||||
- Macro - Added HB_SM_ARRSTR support.
|
- Macro - Added HB_SM_ARRSTR support.
|
||||||
- Clipper preproceses '**' into '^' - harbour too
|
- Clipper preproceses '**' into '^' - Harbour too
|
||||||
- Added HB_COUNTER and HB_PTRDIFF types - first for reference counters and
|
- Added HB_COUNTER and HB_PTRDIFF types - first for reference counters and
|
||||||
second for any pointer differences and pointer to integer conversions.
|
second for any pointer differences and pointer to integer conversions.
|
||||||
- HB_EXPORT is added to ITEM API, FILE API and some other function
|
- HB_EXPORT is added to ITEM API, FILE API and some other function
|
||||||
@@ -1688,7 +1686,7 @@ The runtime modules
|
|||||||
- Added possibility to load a character mapping using HB_GT_CHARMAP()
|
- Added possibility to load a character mapping using HB_GT_CHARMAP()
|
||||||
(ncurses GT only)
|
(ncurses GT only)
|
||||||
- Improved recognition of xterm compatible terminals (ncurses GT only)
|
- Improved recognition of xterm compatible terminals (ncurses GT only)
|
||||||
- New internal command line arguments were added to control
|
- New internal command-line arguments were added to control
|
||||||
application at runtime:
|
application at runtime:
|
||||||
//FLAGS:switches
|
//FLAGS:switches
|
||||||
this flag controls compatibility issues of the virtual
|
this flag controls compatibility issues of the virtual
|
||||||
@@ -1734,14 +1732,14 @@ The runtime modules
|
|||||||
- Fixed to correctly return the procedure name where the codeblock was created.
|
- Fixed to correctly return the procedure name where the codeblock was created.
|
||||||
- Greek and Serbian language codepage files added.
|
- Greek and Serbian language codepage files added.
|
||||||
- fixed to use 'mkstemp' on Unix (no more GCC linker warnings)
|
- fixed to use 'mkstemp' on Unix (no more GCC linker warnings)
|
||||||
- Fixed file find API to be compatible with CA-Cl*pper on the lower level.
|
- Fixed file find API to be compatible with CA-Cl*pper on the lower-level.
|
||||||
- Fixes in TBColumn class
|
- Fixes in TBColumn class
|
||||||
|
|
||||||
RDD
|
RDD
|
||||||
---
|
---
|
||||||
- Latest RDD changes synced with xHarbour.
|
- Latest RDD changes synced with xHarbour.
|
||||||
- Fixed dbCreate() bug that closed an open dbf with same name as newly
|
- Fixed dbCreate() bug that closed an open dbf with same name as newly
|
||||||
created dbf in a different folder.
|
created dbf in a different directory.
|
||||||
- FieldPut() Fixed to accept and ignore field NIL values
|
- FieldPut() Fixed to accept and ignore field NIL values
|
||||||
without runtime error. C52 compatible.
|
without runtime error. C52 compatible.
|
||||||
- Added scopped relations. Now ordSetRelation() works with DBFCDX like
|
- Added scopped relations. Now ordSetRelation() works with DBFCDX like
|
||||||
@@ -1832,7 +1830,7 @@ Version 0.38 Alpha Build 38 (2001-12-15) tag: build38
|
|||||||
- ::Super(::oneVar) is now correctly interpreted
|
- ::Super(::oneVar) is now correctly interpreted
|
||||||
- Freezed Scooping because it was not anymore working after the
|
- Freezed Scooping because it was not anymore working after the
|
||||||
previous fix. Waiting after Alpha build 38 to fix and re-enable it
|
previous fix. Waiting after Alpha build 38 to fix and re-enable it
|
||||||
- HGF (Harbour GUI multiplatform Framework) started
|
- HGF (Harbour GUI multi-platform Framework) started
|
||||||
- Class HBPersistent added to RTL to provide Harbour objects persistence
|
- Class HBPersistent added to RTL to provide Harbour objects persistence
|
||||||
- New PROPERTY | PERSISTENT clause added as a DATA feature
|
- New PROPERTY | PERSISTENT clause added as a DATA feature
|
||||||
- New function __clsGetProperties() added. Syntax:
|
- New function __clsGetProperties() added. Syntax:
|
||||||
@@ -1864,7 +1862,7 @@ Version 0.38 Alpha Build 38 (2001-12-15) tag: build38
|
|||||||
- Hbzlib enhacements
|
- Hbzlib enhacements
|
||||||
- Some debugger fixes - it is now really usable.
|
- Some debugger fixes - it is now really usable.
|
||||||
- Hbmake enhacements
|
- Hbmake enhacements
|
||||||
- On Win32 platforms, Harbour now supports the ability to create and
|
- On Windows platforms, Harbour now supports the ability to create and
|
||||||
use .dll files. These .dll files can be used as pcode storage,
|
use .dll files. These .dll files can be used as pcode storage,
|
||||||
Harbour Runtime storage, or both, and if both, can be made callable
|
Harbour Runtime storage, or both, and if both, can be made callable
|
||||||
from other languages that use .dll's as fully functional standalone
|
from other languages that use .dll's as fully functional standalone
|
||||||
@@ -1926,9 +1924,10 @@ Version 0.35 Alpha Build 35 (2000-08-15)
|
|||||||
- MySQL database access contribution started
|
- MySQL database access contribution started
|
||||||
- ADS RDD encryption/decryption functions added
|
- ADS RDD encryption/decryption functions added
|
||||||
- New GTCGI driver
|
- New GTCGI driver
|
||||||
- Improved command line parsing
|
- Improved command-line parsing
|
||||||
- Alternate Lexer (SimpLex), utilizes less memory, smaller Harbour.exe
|
- Alternate Lexer (SimpLex), utilizes less memory, smaller harbour
|
||||||
as well as smaller compiled applications (due to smaller macro compiler)
|
executables as well as smaller compiled applications (due to smaller
|
||||||
|
macro compiler)
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Version 0.34 Alpha Build 34 (2000-06-02)
|
Version 0.34 Alpha Build 34 (2000-06-02)
|
||||||
@@ -1937,7 +1936,7 @@ Version 0.34 Alpha Build 34 (2000-06-02)
|
|||||||
- Linux/Unix ncurses screen output and xterm mouse input support
|
- Linux/Unix ncurses screen output and xterm mouse input support
|
||||||
- MEMOEDIT support started
|
- MEMOEDIT support started
|
||||||
- CONTRIBs better separated from core Harbour (TOOLS moved there)
|
- CONTRIBs better separated from core Harbour (TOOLS moved there)
|
||||||
- Simplified and enhanced base for multiplatform coding
|
- Simplified and enhanced base for multi-platform coding
|
||||||
- Language API (link/compile time language module selection)
|
- Language API (link/compile time language module selection)
|
||||||
- Several small optimizations, enhancements and fixes (compiler, macro, GT,
|
- Several small optimizations, enhancements and fixes (compiler, macro, GT,
|
||||||
inkey, make and build systems, more strict compiler warnings)
|
inkey, make and build systems, more strict compiler warnings)
|
||||||
@@ -1997,10 +1996,10 @@ Version 0.33 Alpha Build 33 (2000-04-07)
|
|||||||
- Make and build files further cleaned up, enhanced, optimized, synchronized
|
- Make and build files further cleaned up, enhanced, optimized, synchronized
|
||||||
etc...
|
etc...
|
||||||
- Compiler and platform detection enhanced, some hacks removed,
|
- Compiler and platform detection enhanced, some hacks removed,
|
||||||
multiplatform cleanups and fixes.
|
multi-platform cleanups and fixes.
|
||||||
- Warning levels upped, warnings fixed, code quality raised
|
- Warning levels upped, warnings fixed, code quality raised
|
||||||
- Version numbering standardized
|
- Version numbering standardized
|
||||||
- Multiple source file support in Harbour command line
|
- Multiple source file support in Harbour command-line
|
||||||
- HBCLIP and RUNJAVA contribution dirs added
|
- HBCLIP and RUNJAVA contribution dirs added
|
||||||
- HBDOC Enhacements: New subtags for better output: <par>,</par> for paragraph
|
- HBDOC Enhacements: New subtags for better output: <par>,</par> for paragraph
|
||||||
<b></b> for bold, <i></i> for italic, <em></em> for bold italic font
|
<b></b> for bold, <i></i> for italic, <em></em> for bold italic font
|
||||||
@@ -2013,7 +2012,7 @@ Version 0.32 Alpha Build 32 (2000-03-07)
|
|||||||
|
|
||||||
- New Borland make files
|
- New Borland make files
|
||||||
- Many make and build processes fixes, enhancements, warning fixes
|
- Many make and build processes fixes, enhancements, warning fixes
|
||||||
- Borland, MSVC and GNU-make processes don't collide anymore
|
- Borland, MSVC and GNU Make processes don't collide anymore
|
||||||
- PP now supports code in header files
|
- PP now supports code in header files
|
||||||
- Docs separated from the source
|
- Docs separated from the source
|
||||||
- Docs enhanced
|
- Docs enhanced
|
||||||
@@ -2041,7 +2040,7 @@ Version 0.31 Alpha Build 31 (2000-01-27) tag: build31
|
|||||||
- Many changes, fixes, and enhancements to the GT API system
|
- Many changes, fixes, and enhancements to the GT API system
|
||||||
- Improved SetCursor() and Set( _SET_CURSOR )
|
- Improved SetCursor() and Set( _SET_CURSOR )
|
||||||
- Added FieldBlock() and FieldWBlock()
|
- Added FieldBlock() and FieldWBlock()
|
||||||
- The Harbour '-w' command line option can set the maximal level of reported
|
- The Harbour '-w' command-line option can set the maximal level of reported
|
||||||
warnings. The following levels are supported currently:
|
warnings. The following levels are supported currently:
|
||||||
'-w0' - no warnings
|
'-w0' - no warnings
|
||||||
'-w' or '-w1' - Clipper compatible warnings
|
'-w' or '-w1' - Clipper compatible warnings
|
||||||
@@ -2099,7 +2098,7 @@ Version 0.31 Alpha Build 31 (2000-01-27) tag: build31
|
|||||||
- Added HARBOURCMD/CLIPPERCMD environment variables
|
- Added HARBOURCMD/CLIPPERCMD environment variables
|
||||||
- Added support for #pragma directives
|
- Added support for #pragma directives
|
||||||
- Enhanced GetEnv() function
|
- Enhanced GetEnv() function
|
||||||
- Added //BUILD app command line option
|
- Added //BUILD app command-line option
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Version 0.30 Alpha Build 30 (1999-09-30)
|
Version 0.30 Alpha Build 30 (1999-09-30)
|
||||||
@@ -2114,20 +2113,20 @@ Version 0.30 Alpha Build 30 (1999-09-30)
|
|||||||
- Support for FIELD variables
|
- Support for FIELD variables
|
||||||
- Support for canceling the application by pressing Alt-C
|
- Support for canceling the application by pressing Alt-C
|
||||||
- Enhanced ITEM API
|
- Enhanced ITEM API
|
||||||
- Support for internal command line options '//'
|
- Support for internal command-line options '//'
|
||||||
- Severe speed improvement
|
- Severe speed improvement
|
||||||
- Better Directory() compatibility
|
- Better Directory() compatibility
|
||||||
- Redirected output works now
|
- Redirected output works now
|
||||||
- Even more Preprocessor compatibility
|
- Even more Preprocessor compatibility
|
||||||
- Set HARBOUR= in environment to override Set CLIPPER= settings
|
- Set HARBOUR= in environment to override Set CLIPPER= settings
|
||||||
- Rudimentary Unix keyboard support added
|
- Rudimentary Unix keyboard support added
|
||||||
- Tone support added
|
- Tone() support added
|
||||||
- SET KEY support was added
|
- SET KEY support was added
|
||||||
- Extensive regression test suite added (RTL_TEST)
|
- Extensive regression test suite added (RTL_TEST)
|
||||||
- Array handling fixed and made Clipper compatible
|
- Array handling fixed and made Clipper compatible
|
||||||
- Ragged array declaration and initialization support added
|
- Ragged array declaration and initialization support added
|
||||||
- FileSys API extensions, more C5.3 compatible functions added
|
- FileSys API extensions, more C5.3 compatible functions added
|
||||||
- Compiler command line compatibility enhanced
|
- Compiler command-line compatibility enhanced
|
||||||
- Internal errors made uniform
|
- Internal errors made uniform
|
||||||
- Source code cleanup and formatting
|
- Source code cleanup and formatting
|
||||||
- Many new functions, samples and bug fixes
|
- Many new functions, samples and bug fixes
|
||||||
@@ -2141,7 +2140,7 @@ Version 0.29 Alpha Build 29 (1999-07-27)
|
|||||||
MacIntosh
|
MacIntosh
|
||||||
BC 3.1, 4.0, 4.5, 5.2
|
BC 3.1, 4.0, 4.5, 5.2
|
||||||
GCC OS/2
|
GCC OS/2
|
||||||
GCC Win32
|
GCC Windows
|
||||||
MS VC
|
MS VC
|
||||||
GCC Linux / Unix
|
GCC Linux / Unix
|
||||||
IBM C
|
IBM C
|
||||||
@@ -2174,8 +2173,8 @@ Version 0.28 Alpha Build 28 (1999-07-18)
|
|||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Version 0.27a Alpha Build 27a (1999-06-19)
|
Version 0.27a Alpha Build 27a (1999-06-19)
|
||||||
|
|
||||||
- Corrected build numbers in Harbour.exe
|
- Corrected build numbers in harbour executable
|
||||||
- Corrected a little bug in HScript.prg
|
- Corrected a little bug in hscript.prg
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Version 0.27 Alpha Build 27 (1999-06-18)
|
Version 0.27 Alpha Build 27 (1999-06-18)
|
||||||
@@ -2226,9 +2225,9 @@ Version 0.24 Alpha Build 24 (1999-06-03)
|
|||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Version 0.23 Alpha Build 23 (1999-05-19)
|
Version 0.23 Alpha Build 23 (1999-05-19)
|
||||||
|
|
||||||
- Harbour.exe for DOS/Windows is included now
|
- harbour executable for DOS/Windows is included now
|
||||||
- The Windows libs are also included (hbw.bat to build Windows .exe's)
|
- The Windows libs are also included (hbw.bat to build Windows executables)
|
||||||
- .hrb files! These files can be run with the runner.exe (Source included)
|
- .hrb files! These files can be run with runner.exe (Source included)
|
||||||
- No need for a C compiler anymore to run Harbour source!
|
- No need for a C compiler anymore to run Harbour source!
|
||||||
- New MAKE and BUILD files for IBM C++ 3.0 for OS/2
|
- New MAKE and BUILD files for IBM C++ 3.0 for OS/2
|
||||||
- Many fixes, Many enhancements (See ChangeLog in the Harbour directory)
|
- Many fixes, Many enhancements (See ChangeLog in the Harbour directory)
|
||||||
@@ -2238,7 +2237,7 @@ Version 0.23 Alpha Build 23 (1999-05-19)
|
|||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Version 0.21-2 Alpha Build 21-2 (1999-05-13)
|
Version 0.21-2 Alpha Build 21-2 (1999-05-13)
|
||||||
|
|
||||||
- 32 bits OBJ's generation
|
- 32-bit OBJ's generation
|
||||||
- More Clipper language compatibility
|
- More Clipper language compatibility
|
||||||
- New object oriented features
|
- New object oriented features
|
||||||
|
|
||||||
@@ -2281,7 +2280,7 @@ Version 0.17 Alpha Build 17 (1999-04-20)
|
|||||||
Version 0.16 Alpha Build 16 (1999-04-17)
|
Version 0.16 Alpha Build 16 (1999-04-17)
|
||||||
|
|
||||||
- New project directories structure
|
- New project directories structure
|
||||||
- Added support for command line parameters
|
- Added support for command-line parameters
|
||||||
- Compiler /o options changed to /g
|
- Compiler /o options changed to /g
|
||||||
- /gc added (default option)
|
- /gc added (default option)
|
||||||
- Changes on types.h
|
- Changes on types.h
|
||||||
@@ -2322,7 +2321,7 @@ OpenClipper #9 Alpha build 9 (1999-04-01)
|
|||||||
- Bison 1.24 is used now instead of byacc as byacc were returning
|
- Bison 1.24 is used now instead of byacc as byacc were returning
|
||||||
a 'Out of space' error (parser execution is faster now!)
|
a 'Out of space' error (parser execution is faster now!)
|
||||||
- We are linking using huge memory model now cause DGROUP was already
|
- We are linking using huge memory model now cause DGROUP was already
|
||||||
over 64Kb
|
over 64 KiB
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
OpenClipper #8 Alpha build 8 (1999-03-29)
|
OpenClipper #8 Alpha build 8 (1999-03-29)
|
||||||
|
|||||||
14
doc/pp.txt
14
doc/pp.txt
@@ -332,7 +332,7 @@ making in last days.
|
|||||||
to macro tokens expressions starting with '&' followed by '('.
|
to macro tokens expressions starting with '&' followed by '('.
|
||||||
The macro tokens are stringify in differ way. If macro
|
The macro tokens are stringify in differ way. If macro
|
||||||
does not have any internal '&' characters and has at most
|
does not have any internal '&' characters and has at most
|
||||||
one '.' as last character then as result non quited keyword
|
one '.' as last character then as result non quoted keyword
|
||||||
is generated. Otherwise it generate strings with stripped first
|
is generated. Otherwise it generate strings with stripped first
|
||||||
'&' character.
|
'&' character.
|
||||||
If expression starts with '&' token followed by single
|
If expression starts with '&' token followed by single
|
||||||
@@ -450,7 +450,7 @@ making in last days.
|
|||||||
The optional match patterns are one of the weakest point of current PP.
|
The optional match patterns are one of the weakest point of current PP.
|
||||||
Even such simple code:
|
Even such simple code:
|
||||||
#xcommand CMD <x> [IN [GET] [PUT]] => ? #<x>
|
#xcommand CMD <x> [IN [GET] [PUT]] => ? #<x>
|
||||||
CMD sth IN PUT GET
|
CMD something IN PUT GET
|
||||||
Is not well preprocessed.
|
Is not well preprocessed.
|
||||||
|
|
||||||
20. rule have to begin with non empty token or the rule will never be used.
|
20. rule have to begin with non empty token or the rule will never be used.
|
||||||
@@ -492,7 +492,7 @@ making in last days.
|
|||||||
If anything substituted
|
If anything substituted
|
||||||
continue
|
continue
|
||||||
|
|
||||||
Do While 1-st token match some #[x]command pattern
|
Do While 1st token match some #[x]command pattern
|
||||||
substitute
|
substitute
|
||||||
EndDo
|
EndDo
|
||||||
|
|
||||||
@@ -500,7 +500,7 @@ making in last days.
|
|||||||
|
|
||||||
Output processed token until the last one or ; token
|
Output processed token until the last one or ; token
|
||||||
|
|
||||||
If 1-st token is '#'
|
If 1st token is '#'
|
||||||
continue
|
continue
|
||||||
|
|
||||||
Remove all tokens in the list until the last one or ; token
|
Remove all tokens in the list until the last one or ; token
|
||||||
@@ -647,15 +647,15 @@ making in last days.
|
|||||||
Such special status can be added automatically when ; token is followed
|
Such special status can be added automatically when ; token is followed
|
||||||
by # or ; is quoted by \
|
by # or ; is quoted by \
|
||||||
d. already existing xHarbour extensions:
|
d. already existing xHarbour extensions:
|
||||||
#[x]unTrasnslate, #[x]unCommand
|
#[x]untranslate, #[x]uncommand
|
||||||
but modified to locate match pattern which can cover exactly the same
|
but modified to locate match pattern which can cover exactly the same
|
||||||
data.
|
data.
|
||||||
#if
|
#if
|
||||||
but working with integer to allow using 64bit ones which are broken
|
but working with integer to allow using 64bit ones which are broken
|
||||||
due to conversion to double. The semantic for expressions will be
|
due to conversion to double. The semantic for expressions will be
|
||||||
similar to C one with the exception to ! (not) operator precedence.
|
similar to C one with the exception to ! (not) operator precedence.
|
||||||
I do not think that Clipper/xbase users are familiar with the exact
|
I do not think that Clipper/xBase users are familiar with the exact
|
||||||
not operator precedence in C which is differ then the one in xbase
|
not operator precedence in C which is differ then the one in xBase
|
||||||
world.
|
world.
|
||||||
e. modified version of Harbour's
|
e. modified version of Harbour's
|
||||||
#pragma {__text, __stream, __cstream, __endtext}
|
#pragma {__text, __stream, __cstream, __endtext}
|
||||||
|
|||||||
@@ -3,32 +3,32 @@ Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
|||||||
In Harbour preprocessor can be used in PRG code.
|
In Harbour preprocessor can be used in PRG code.
|
||||||
This is list of PRG functions available for programmer.
|
This is list of PRG functions available for programmer.
|
||||||
|
|
||||||
REQUEST __PP_STDRULES
|
REQUEST __pp_StdRules
|
||||||
It forces including standard std.ch rules in static binaries.
|
It forces including standard std.ch rules in static binaries.
|
||||||
Dynamic binaries linked with harbour dynamic library always
|
Dynamic binaries linked with Harbour dynamic library always
|
||||||
includes standard PP rules.
|
includes standard PP rules.
|
||||||
|
|
||||||
|
|
||||||
__PP_INIT( [<cIncludePath>] [, <cStdChFile> ] ) -> <pPP>
|
__pp_Init( [<cIncludePath>] [, <cStdChFile> ] ) -> <pPP>
|
||||||
Initialize new PP context and return pointer to it.
|
Initialize new PP context and return pointer to it.
|
||||||
when <cStdChFile> is empty string ("") then no default rules are
|
when <cStdChFile> is empty string ("") then no default rules are
|
||||||
used and only the dynamically created #defines like __HARBOUR__,
|
used and only the dynamically created #defines like __HARBOUR__,
|
||||||
__DATE__, __TIME__, __PLATFORM__* are registered.
|
__DATE__, __TIME__, __PLATFORM__* are registered.
|
||||||
If <cStdChFile> is missing or NIL and standard PP rules from
|
If <cStdChFile> is missing or NIL and standard PP rules from
|
||||||
std.ch are included in binaries (REQUEST __PP_STDRULES) then
|
std.ch are included in binaries (REQUEST __pp_StdRules) then
|
||||||
they are used.
|
they are used.
|
||||||
|
|
||||||
__PP_PATH( <pPP>, <cPath> [, <lClearPrev>] ) -> NIL
|
__pp_Path( <pPP>, <cPath> [, <lClearPrev>] ) -> NIL
|
||||||
Add new (or replace previous) include paths.
|
Add new (or replace previous) include paths.
|
||||||
|
|
||||||
__PP_RESET( <pPP> )
|
__pp_Reset( <pPP> )
|
||||||
Reset the PP context (remove all rules added by user or
|
Reset the PP context (remove all rules added by user or
|
||||||
preprocessed code)
|
preprocessed code)
|
||||||
|
|
||||||
__PP_ADDRULE( <pPP>, <cDirective> )
|
__pp_AddRule( <pPP>, <cDirective> )
|
||||||
Preprocess and execute new preprocessor directive
|
Preprocess and execute new preprocessor directive
|
||||||
|
|
||||||
__PP_PROCESS( <pPP>, <cCode> ) -> <cPreprocessedCode>
|
__pp_Process( <pPP>, <cCode> ) -> <cPreprocessedCode>
|
||||||
Preprocess given code and return result
|
Preprocess given code and return result
|
||||||
|
|
||||||
User can create more then one PP context and then use each of them
|
User can create more then one PP context and then use each of them
|
||||||
@@ -56,25 +56,28 @@ it's lines by macro compiler:
|
|||||||
? "pow =", pow
|
? "pow =", pow
|
||||||
? "value * pow =", VALUE * pow
|
? "value * pow =", VALUE * pow
|
||||||
WAIT
|
WAIT
|
||||||
? VALUE2 // generate RTE
|
? VALUE2 // generate RTE
|
||||||
|
|
||||||
|
|
||||||
/*** testpp.prg ***/
|
/*** testpp.prg ***/
|
||||||
REQUEST __PP_STDRULES
|
REQUEST __pp_StdRules
|
||||||
REQUEST __WAIT
|
REQUEST __Wait
|
||||||
PROC Main()
|
|
||||||
local cLine, pPP, oErr
|
PROCEDURE Main()
|
||||||
pPP := __PP_INIT()
|
|
||||||
BEGIN SEQUENCE WITH {|oErr| BREAK( oErr ) }
|
LOCAL cLine, pPP, oErr
|
||||||
FOR EACH cLine IN hb_ATokens( StrTran( __PP_Process( pPP, ;
|
|
||||||
hb_MemoRead( "macro.dat" ) ), Chr( 13 ) ), Chr( 10 ) )
|
pPP := __pp_Init()
|
||||||
|
BEGIN SEQUENCE WITH __BreakBlock()
|
||||||
|
FOR EACH cLine IN hb_ATokens( __pp_Process( pPP, ;
|
||||||
|
hb_MemoRead( "macro.dat" ) ), .T. )
|
||||||
BEGIN SEQUENCE
|
BEGIN SEQUENCE
|
||||||
IF !Empty( cLine )
|
IF ! Empty( cLine )
|
||||||
&cLine
|
&cLine
|
||||||
ENDIF
|
ENDIF
|
||||||
RECOVER USING oErr
|
RECOVER USING oErr
|
||||||
? "MacroCompiler error at line:", ;
|
? "MacroCompiler error at line:", ;
|
||||||
hb_ntos( cLine:__enumIndex() )
|
hb_ntos( cLine:__enumIndex() )
|
||||||
? cLine
|
? cLine
|
||||||
? ErrMsg( oErr )
|
? ErrMsg( oErr )
|
||||||
END SEQUENCE
|
END SEQUENCE
|
||||||
@@ -83,17 +86,18 @@ it's lines by macro compiler:
|
|||||||
? ErrMsg( oErr )
|
? ErrMsg( oErr )
|
||||||
END SEQUENCE
|
END SEQUENCE
|
||||||
?
|
?
|
||||||
RETURN
|
|
||||||
|
RETURN
|
||||||
|
|
||||||
STATIC FUNCTION ErrMsg( oErr )
|
STATIC FUNCTION ErrMsg( oErr )
|
||||||
RETURN "Error " + ;
|
RETURN "Error " + ;
|
||||||
iif( HB_ISSTRING( oErr:subsystem ), ;
|
iif( HB_ISSTRING( oErr:subsystem ), ;
|
||||||
oErr:subsystem, "???" ) + ;
|
oErr:subsystem, "???" ) + ;
|
||||||
iif( HB_ISNUMERIC( oErr:subCode ), ;
|
iif( HB_ISNUMERIC( oErr:subCode ), ;
|
||||||
"/" + hb_ntos( oErr:subCode ), "/???" ) + ;
|
"/" + hb_ntos( oErr:subCode ), "/???" ) + ;
|
||||||
iif( HB_ISSTRING( oErr:description ), ;
|
iif( HB_ISSTRING( oErr:description ), ;
|
||||||
" " + oErr:description, "" ) + ;
|
" " + oErr:description, "" ) + ;
|
||||||
iif( ! Empty( oErr:filename ), ;
|
iif( ! oErr:filename == "", ;
|
||||||
" " + oErr:filename, ;
|
" " + oErr:filename, ;
|
||||||
iif( ! Empty( oErr:operation ), ;
|
iif( ! Empty( oErr:operation ), ;
|
||||||
" " + oErr:operation, "" ) )
|
" " + oErr:operation, "" ) )
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ EXAMPLES
|
|||||||
#pragma linenumber=off
|
#pragma linenumber=off
|
||||||
/* #pragma -l */
|
/* #pragma -l */
|
||||||
|
|
||||||
This is the same as calling Harbour with the -l switch in the command line,
|
This is the same as calling Harbour with the -l switch in the command-line,
|
||||||
but with the great benefit that if you forgot to pass the switch, it will
|
but with the great benefit that if you forgot to pass the switch, it will
|
||||||
be used anyway because it is included inside the source.
|
be used anyway because it is included inside the source.
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ SPECIAL PRAGMAS
|
|||||||
===============
|
===============
|
||||||
These pragmas allows to control the processing of PRG source within
|
These pragmas allows to control the processing of PRG source within
|
||||||
the preprocessor. The special handling is done with a text enclosed
|
the preprocessor. The special handling is done with a text enclosed
|
||||||
betwen the '#pragma <type>' and '#pragma __endtext'
|
between the '#pragma <type>' and '#pragma __endtext'
|
||||||
|
|
||||||
#pragma __text
|
#pragma __text
|
||||||
--------------
|
--------------
|
||||||
@@ -97,10 +97,10 @@ Syntax:
|
|||||||
#pragma __text '|' [LineOutputCode] '|' [FinallyCode] '|' [StartupCode]
|
#pragma __text '|' [LineOutputCode] '|' [FinallyCode] '|' [StartupCode]
|
||||||
|
|
||||||
Every line of text is stringified using '[' and ']' markers and is
|
Every line of text is stringified using '[' and ']' markers and is
|
||||||
passed to 'LineOutputCode' using C '%s' formating code. The result
|
passed to 'LineOutputCode' using C '%s' formatting code. The result
|
||||||
text is passed further to the syntax analyzer. The 'StartupCode'
|
text is passed further to the syntax analyzer. The 'StartupCode'
|
||||||
is returned at the very beginning of procesing. The 'FinallyCode'
|
is returned at the very beginning of processing. The 'FinallyCode'
|
||||||
is returned at the end. If 'LineOutputCode' is ommited then all
|
is returned at the end. If 'LineOutputCode' is omitted then all
|
||||||
lines are ignored.
|
lines are ignored.
|
||||||
|
|
||||||
For example, this pragma is used to implement TEXT/ENDTEXT command
|
For example, this pragma is used to implement TEXT/ENDTEXT command
|
||||||
@@ -136,19 +136,19 @@ Syntax:
|
|||||||
?
|
?
|
||||||
|
|
||||||
TEXT TO VAR v
|
TEXT TO VAR v
|
||||||
This is 'example' text with ''""[] embeded
|
This is 'example' text with ''""[] embedded
|
||||||
ENDTEXT
|
ENDTEXT
|
||||||
|
|
||||||
The above example is preprocessed into:
|
The above example is preprocessed into:
|
||||||
v:=[This is 'example' text with ''""[] embeded]
|
v:=[This is 'example' text with ''""[] embedded]
|
||||||
|
|
||||||
#pragma __cstream
|
#pragma __cstream
|
||||||
----------------
|
----------------
|
||||||
Syntax:
|
Syntax:
|
||||||
#pragma __cstream '|' [JoinLineCode] '|' [EndingCode] '|' [StartingCode]
|
#pragma __cstream '|' [JoinLineCode] '|' [EndingCode] '|' [StartingCode]
|
||||||
|
|
||||||
This is simmilar to '#pragma __stream' with the additional convertion
|
This is similar to '#pragma __stream' with the additional conversion
|
||||||
of C esc sequences e.g \n \t \r \b
|
of C Esc sequences e.g \n \t \r \b
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
@@ -156,18 +156,18 @@ Syntax:
|
|||||||
#pragma __cstream|%s||<var>:=
|
#pragma __cstream|%s||<var>:=
|
||||||
|
|
||||||
TEXT TO VAR v
|
TEXT TO VAR v
|
||||||
This is 'example' text with ''""[] embeded and C \n
|
This is 'example' text with ''""[] embedded and C \n
|
||||||
sequence
|
sequence
|
||||||
ENDTEXT
|
ENDTEXT
|
||||||
? v
|
? v
|
||||||
|
|
||||||
The above example is preprocessed into:
|
The above example is preprocessed into:
|
||||||
v:=[This is 'example' text with ''""[] embeded and C \nsequence]
|
v:=[This is 'example' text with ''""[] embedded and C \nsequence]
|
||||||
QOut(v)
|
QOut(v)
|
||||||
|
|
||||||
and at runtime the following is printed:
|
and at runtime the following is printed:
|
||||||
|
|
||||||
This is 'example' text with ''""[] embeded and C
|
This is 'example' text with ''""[] embedded and C
|
||||||
sequence
|
sequence
|
||||||
|
|
||||||
#pragma __endtext
|
#pragma __endtext
|
||||||
@@ -189,7 +189,7 @@ Syntax:
|
|||||||
|
|
||||||
This pragma sets the maximum number of preprocess iterations during
|
This pragma sets the maximum number of preprocess iterations during
|
||||||
the source code translation. The default value is 1024.
|
the source code translation. The default value is 1024.
|
||||||
This is the same as /r= command line switch
|
This is the same as /r= command-line switch
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ does not generate the proper pcode for them).
|
|||||||
So I would like to make an introduction to static variables management as
|
So I would like to make an introduction to static variables management as
|
||||||
it is a sophisticated system that Harbour is going to implement.
|
it is a sophisticated system that Harbour is going to implement.
|
||||||
|
|
||||||
It is something publically known that Clipper static variables are
|
It is something publicly known that Clipper static variables are
|
||||||
located at the bottom of the data segment. This has caused all kinds of
|
located at the bottom of the data segment. This has caused all kinds of
|
||||||
troubles. This is why when I designed Five I did it in a way that could not
|
troubles. This is why when I designed Five I did it in a way that could not
|
||||||
cause any trouble in the future.
|
cause any trouble in the future.
|
||||||
|
|||||||
32
doc/todo.txt
32
doc/todo.txt
@@ -3,8 +3,8 @@
|
|||||||
Harbour TODO list
|
Harbour TODO list
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Tasks for after v.1 release:
|
Tasks for after v1.0 release:
|
||||||
----------------------------
|
-----------------------------
|
||||||
|
|
||||||
Assign to: Ryszard
|
Assign to: Ryszard
|
||||||
Detail...: SQLRDD.
|
Detail...: SQLRDD.
|
||||||
@@ -12,26 +12,6 @@ Status...: Working on it.
|
|||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
Assign to: <nobody>
|
|
||||||
Detail...: Add support for virtual file handles and registering some
|
|
||||||
meta handles so it will be possible to make:
|
|
||||||
h := FOpen( "gzip:/tmp/myarchive.gz", FO_WRITE )
|
|
||||||
FWrite( h, cData )
|
|
||||||
FClose( h )
|
|
||||||
or:
|
|
||||||
h := FOpen( "tcp:some.host:port", FO_WRITE )
|
|
||||||
...
|
|
||||||
or:
|
|
||||||
h := FOpen( "|lpr -PLaserJet", FO_WRITE )
|
|
||||||
...
|
|
||||||
or:
|
|
||||||
h := FOpen( "gunzip /tmp/myarchive.gz|", FO_READ )
|
|
||||||
...
|
|
||||||
etc.
|
|
||||||
Status...: Open.
|
|
||||||
|
|
||||||
***
|
|
||||||
|
|
||||||
Assign to: Przemek
|
Assign to: Przemek
|
||||||
Detail...: Define multi platform platform API for GTs which can mix
|
Detail...: Define multi platform platform API for GTs which can mix
|
||||||
graphics objects with standard text output. Now it's
|
graphics objects with standard text output. Now it's
|
||||||
@@ -52,7 +32,7 @@ Assign to: <nobody>
|
|||||||
Detail...: Add NETRDD - meta RDD which will allow transport layer
|
Detail...: Add NETRDD - meta RDD which will allow transport layer
|
||||||
between client application and server application with any
|
between client application and server application with any
|
||||||
other chosen RDD driver. Idea similar to GTNET but for RDD
|
other chosen RDD driver. Idea similar to GTNET but for RDD
|
||||||
drivers - it's sth like ADS does.
|
drivers - it's something like ADS does.
|
||||||
Status...: Open.
|
Status...: Open.
|
||||||
|
|
||||||
***
|
***
|
||||||
@@ -62,7 +42,7 @@ Detail...: Extended HB_IT_POINTER. In practice we can give them the
|
|||||||
same functionality as for objects and use them for fast
|
same functionality as for objects and use them for fast
|
||||||
creation objects at C level. We can also add HB_VALTYPE()
|
creation objects at C level. We can also add HB_VALTYPE()
|
||||||
function which will return the extended type name, f.e.
|
function which will return the extended type name, f.e.
|
||||||
"WINDOW", "FONT", "SOCKET" or anything what 3-rd party
|
"WINDOW", "FONT", "SOCKET" or anything what 3rd party
|
||||||
programmers may want to use. It will greatly simplify
|
programmers may want to use. It will greatly simplify
|
||||||
writing some libraries.
|
writing some libraries.
|
||||||
Status...: Open.
|
Status...: Open.
|
||||||
@@ -77,14 +57,14 @@ Status...: Open.
|
|||||||
***
|
***
|
||||||
|
|
||||||
Assign to: Ryszard
|
Assign to: Ryszard
|
||||||
Detail...: Real strong typing in the compiler.
|
Detail...: Static/gradual ("strong") typing in the compiler.
|
||||||
Status...: Open.
|
Status...: Open.
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
|
||||||
Harbour TOFIX list
|
Harbour FIXME list
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ the C code:
|
|||||||
|
|
||||||
HB_TRACE( level, ( "printf-style parameters", arg1, arg2 ) );
|
HB_TRACE( level, ( "printf-style parameters", arg1, arg2 ) );
|
||||||
|
|
||||||
The level specified for the HB_TRACE call affects harbour in two ways:
|
The level specified for the HB_TRACE call affects Harbour in two ways:
|
||||||
compilation time and run time.
|
compilation time and run time.
|
||||||
|
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ one of
|
|||||||
|
|
||||||
with the following effect: any calls to HB_TRACE that were left by the
|
with the following effect: any calls to HB_TRACE that were left by the
|
||||||
compiler and which have a level lower or equal to HB_TR_LEVEL will
|
compiler and which have a level lower or equal to HB_TR_LEVEL will
|
||||||
print its arguments on stderr.
|
print its arguments on STDERR.
|
||||||
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
@@ -91,7 +91,7 @@ usually set the HB_USER_CFLAGS environment variable like this:
|
|||||||
|
|
||||||
export HB_USER_CFLAGS='-DHB_TR_LEVEL=HB_TR_INFO'
|
export HB_USER_CFLAGS='-DHB_TR_LEVEL=HB_TR_INFO'
|
||||||
|
|
||||||
or for other OS (eg: MS-DOS, Windows)
|
or for other OS (e.g.: MS-DOS, Windows)
|
||||||
|
|
||||||
SET HB_USER_CFLAGS=-DHB_TR_LEVEL_INFO
|
SET HB_USER_CFLAGS=-DHB_TR_LEVEL_INFO
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ can set an environment variable like this:
|
|||||||
|
|
||||||
export HB_TR_LEVEL=HB_TR_WARNING
|
export HB_TR_LEVEL=HB_TR_WARNING
|
||||||
|
|
||||||
or for other OS (eg: MS-DOS, Windows)
|
or for other OS (e.g.: MS-DOS, Windows)
|
||||||
|
|
||||||
SET HB_TR_LEVEL=HB_TR_WARNING
|
SET HB_TR_LEVEL=HB_TR_WARNING
|
||||||
|
|
||||||
@@ -115,8 +115,8 @@ USAGE
|
|||||||
|
|
||||||
When Harbour is compiled/run with some level of tracing and then used
|
When Harbour is compiled/run with some level of tracing and then used
|
||||||
to compile a regular Harbour application, the app will output LOTS of
|
to compile a regular Harbour application, the app will output LOTS of
|
||||||
tracing information to stderr. If you are using a sensible command
|
tracing information to STDERR. If you are using a sensible command
|
||||||
shell (such as bash) you can redirect stderr to a file like this:
|
shell (such as bash) you can redirect STDERR to a file like this:
|
||||||
|
|
||||||
my_app 2> trace.txt
|
my_app 2> trace.txt
|
||||||
|
|
||||||
@@ -124,18 +124,18 @@ shell (such as bash) you can redirect stderr to a file like this:
|
|||||||
REDIRECTION
|
REDIRECTION
|
||||||
===========
|
===========
|
||||||
|
|
||||||
The output generated while tracing goes to stderr by default. You can
|
The output generated while tracing goes to STDERR by default. You can
|
||||||
control this at run-time by setting the environment variable
|
control this at run-time by setting the environment variable
|
||||||
HB_TR_OUTPUT to the name of a file where you would like the tracing
|
HB_TR_OUTPUT to the name of a file where you would like the tracing
|
||||||
output to be directed. If there is any problem opening the file for
|
output to be directed. If there is any problem opening the file for
|
||||||
writing, the output reverts to stderr.
|
writing, the output reverts to STDERR.
|
||||||
|
|
||||||
When it happens an error and the controller of errors of harbour cannot
|
When it happens an error and the controller of errors of Harbour cannot
|
||||||
intercept it (eg: GPF), it can happen that part of information of tracing
|
intercept it (e.g.: GPF), it can happen that part of information of tracing
|
||||||
it is not written. This problem is avoided setting the environment
|
it is not written. This problem is avoided setting the environment
|
||||||
variable HB_TR_FLUSH to 1 (one). This makes that every time that one
|
variable HB_TR_FLUSH to 1 (one). This makes that every time that one
|
||||||
record is sent to write, don't remain in the buffer, but rather it is
|
record is sent to write, don't remain in the buffer, but rather it is
|
||||||
writen in the file before continuing with the execution.
|
written in the file before continuing with the execution.
|
||||||
This set can produce an important reduction of speed of execution.
|
This set can produce an important reduction of speed of execution.
|
||||||
|
|
||||||
TRACING THE PREPROCESSOR AND COMPILER
|
TRACING THE PREPROCESSOR AND COMPILER
|
||||||
|
|||||||
@@ -69,5 +69,5 @@ The following functions mean something :
|
|||||||
date format is British, using @E displays the date in
|
date format is British, using @E displays the date in
|
||||||
American. Harbour always treats @E as British.
|
American. Harbour always treats @E as British.
|
||||||
|
|
||||||
So is Harbour's behaviour a bug fix or a bug?
|
So is Harbour's behavior a bug fix or a bug?
|
||||||
*/
|
*/
|
||||||
|
|||||||
38
doc/vm.txt
38
doc/vm.txt
@@ -1,13 +1,13 @@
|
|||||||
The Harbour virtual machine (VM)
|
The Harbour virtual machine (VM)
|
||||||
|
|
||||||
Question :
|
Question:
|
||||||
|
|
||||||
If a VM description is desirable, how should it be structured? (I
|
If a VM description is desirable, how should it be structured? (I
|
||||||
propose plain text, with two main sections: VM description, Opcodes. The
|
propose plain text, with two main sections: VM description, Opcodes. The
|
||||||
"Opcodes" section would describe every opcode: mnemonic, code, operands,
|
"Opcodes" section would describe every opcode: mnemonic, code, operands,
|
||||||
description. I think I can maintain this section.)
|
description. I think I can maintain this section.)
|
||||||
|
|
||||||
Answer :
|
Answer:
|
||||||
|
|
||||||
The VM is formed by the main execution loop and several subsystems, each of
|
The VM is formed by the main execution loop and several subsystems, each of
|
||||||
which could be theoretically replaced, supposing that you respect the
|
which could be theoretically replaced, supposing that you respect the
|
||||||
@@ -47,9 +47,9 @@ will be optimized by the dynamic symbol table.
|
|||||||
|
|
||||||
The dynamic symbol table: Dynamically generated from the startup subsystem
|
The dynamic symbol table: Dynamically generated from the startup subsystem
|
||||||
at the beginning of the application. It organizes in an efficient way the
|
at the beginning of the application. It organizes in an efficient way the
|
||||||
static symbol table creating an alphabetical index that allows a dicotomic
|
static symbol table creating an alphabetical index that allows a dichotomic
|
||||||
search of symbols. This subsystem is responsible for quick access to symbols
|
search of symbols. This subsystem is responsible for quick access to symbols
|
||||||
(functions, variables, fields and workareas aliases).
|
(functions, variables, fields and work areas aliases).
|
||||||
|
|
||||||
The static and public variables: Responsible for storing public and static
|
The static and public variables: Responsible for storing public and static
|
||||||
variables.
|
variables.
|
||||||
@@ -58,7 +58,7 @@ The memory: Responsible for allocating, reallocating, locking, unlocking and
|
|||||||
freeing memory.
|
freeing memory.
|
||||||
|
|
||||||
The extend system: Defines the interface (_parc(), ..., _retc() ) from low
|
The extend system: Defines the interface (_parc(), ..., _retc() ) from low
|
||||||
level (C language) to high level (Clipper language). This subsystem is
|
level (C language) to high-level (Clipper language). This subsystem is
|
||||||
responsible for connecting in a proper way C language functions to the
|
responsible for connecting in a proper way C language functions to the
|
||||||
entire application.
|
entire application.
|
||||||
|
|
||||||
@@ -74,14 +74,14 @@ runtime.
|
|||||||
|
|
||||||
The macro subsystem: it implements a reduced compiler that may be used at
|
The macro subsystem: it implements a reduced compiler that may be used at
|
||||||
runtime to generate pcode to be used by the application. In fact it is a
|
runtime to generate pcode to be used by the application. In fact it is a
|
||||||
portion of the harbour yacc specifications.
|
portion of the Harbour yacc specifications.
|
||||||
|
|
||||||
The workareas subsystem: Responsible for databases management. It defines
|
The work areas subsystem: Responsible for databases management. It defines
|
||||||
the locations where the used workareas will be stored and provides all the
|
the locations where the used work areas will be stored and provides all the
|
||||||
functions to access those workareas. It also implements the interface to the
|
functions to access those work areas. It also implements the interface to the
|
||||||
replaceable database drivers.
|
replaceable database drivers.
|
||||||
|
|
||||||
Question :
|
Question:
|
||||||
|
|
||||||
Will Harbour opcodes mimic the Clipper ones? (will there be a 1:1
|
Will Harbour opcodes mimic the Clipper ones? (will there be a 1:1
|
||||||
relation between them?) If so, are Clipper opcodes described somewhere?
|
relation between them?) If so, are Clipper opcodes described somewhere?
|
||||||
@@ -89,7 +89,7 @@ relation between them?) If so, are Clipper opcodes described somewhere?
|
|||||||
Answer:
|
Answer:
|
||||||
|
|
||||||
Clipper language pcode opcodes
|
Clipper language pcode opcodes
|
||||||
DEFINE NAME VALOR BYTES
|
DEFINE NAME VALUE BYTES
|
||||||
#define NOP 0x00 1
|
#define NOP 0x00 1
|
||||||
#define PUSHC 0x01 3 + literal
|
#define PUSHC 0x01 3 + literal
|
||||||
#define PUSHN 0x05 3
|
#define PUSHN 0x05 3
|
||||||
@@ -277,7 +277,7 @@ Answer:
|
|||||||
#define SETPOSBS 0xCF 1
|
#define SETPOSBS 0xCF 1
|
||||||
|
|
||||||
Harbour will not implement all of them as we want to provide the highest
|
Harbour will not implement all of them as we want to provide the highest
|
||||||
freedom to programers to extend and modify Harbour as needed. In example:
|
freedom to programmers to extend and modify Harbour as needed. In example:
|
||||||
Clipper language uses opcodes for: Row(), Col(), Upper(), Space(),
|
Clipper language uses opcodes for: Row(), Col(), Upper(), Space(),
|
||||||
Replicate(), Inkey(), Year(), Month(), etc... where we may just call a
|
Replicate(), Inkey(), Year(), Month(), etc... where we may just call a
|
||||||
standard C function, that uses the standard extend system and that may be
|
standard C function, that uses the standard extend system and that may be
|
||||||
@@ -285,15 +285,15 @@ easily modified. So Harbour will use much less opcodes than the Clipper
|
|||||||
language. This will also help to have a simpler and easier to maintain
|
language. This will also help to have a simpler and easier to maintain
|
||||||
compiler and VM.
|
compiler and VM.
|
||||||
|
|
||||||
Question :
|
Question:
|
||||||
|
|
||||||
I see that, for example, Harbour has an opcode named "PUSHWORD"(06),
|
I see that, for example, Harbour has an opcode named "PUSHWORD"(06),
|
||||||
while Valkyre calls it "PUSHW"(3B): Different names, different codes.
|
while Valkyrie calls it "PUSHW"(3B): Different names, different codes.
|
||||||
Isn't it desirable that Harbour pCode be binary-compatible with Clipper? I
|
Isn't it desirable that Harbour pcode be binary-compatible with Clipper? I
|
||||||
mean, by doing so, Harbour VM could interpret Clipper pCode and
|
mean, by doing so, Harbour VM could interpret Clipper pcode and
|
||||||
vice-versa.
|
vice versa.
|
||||||
|
|
||||||
Answer :
|
Answer:
|
||||||
|
|
||||||
Harbour opcodes are defined in hbpcode.h. We are trying to use very easy to
|
Harbour opcodes are defined in hbpcode.h. We are trying to use very easy to
|
||||||
remember mnemonics, so PUSHWORD seems easier than PUSHW. The opcodes values
|
remember mnemonics, so PUSHWORD seems easier than PUSHW. The opcodes values
|
||||||
@@ -304,7 +304,7 @@ speed may increase. Clipper uses it).
|
|||||||
|
|
||||||
We are not fully implementing the Clipper language OBJs model (i.e. to
|
We are not fully implementing the Clipper language OBJs model (i.e. to
|
||||||
provide identifiers names length higher than 10 chars) so Harbour OBJs will
|
provide identifiers names length higher than 10 chars) so Harbour OBJs will
|
||||||
not be supported by Clipper and viceversa.
|
not be supported by Clipper and vice versa.
|
||||||
|
|
||||||
sorry for such a long message :-)
|
sorry for such a long message :-)
|
||||||
|
|
||||||
|
|||||||
@@ -1,84 +1,77 @@
|
|||||||
Windows DLLs with Harbour code
|
# Windows DLLs with Harbour code
|
||||||
==============================
|
|
||||||
|
|
||||||
Programs created with Clipper or Harbour are traditionally a
|
Programs created with Clipper or Harbour are traditionally a
|
||||||
monolithic EXE containing all executable code. This includes
|
monolithic executable containing all executable code. This includes
|
||||||
the Virtual Machine (VM) and the RunTime Library (RTL) as well as
|
the Virtual Machine (VM) and the Runtime Library (RTL) as well as
|
||||||
your own code. Running under Windows with Harbour, you
|
your own code. Running under Windows with Harbour, you
|
||||||
can now also create and use Windows DLLs that contain PRG code.
|
can now also create and use Windows DLLs that contain PRG code.
|
||||||
|
|
||||||
Harbour supports Windows DLLs in 3 ways.
|
Harbour supports Windows DLLs in 3 ways.
|
||||||
|
|
||||||
1) Self-contained DLLs containing functions from any platform.
|
1. Self-contained DLLs containing functions from any platform.
|
||||||
(These are not what we call a "harbour.dll", although they may
|
(These are not what we call a "harbour.dll", although they may
|
||||||
be named that. The DLL entry points are different.)
|
be named that. The DLL entry points are different.)
|
||||||
These have the VM/RTL inside them and can be used by any other
|
These have the VM/RTL inside them and can be used by any other
|
||||||
Windows program. You can create a .lib for static linking,
|
Windows program. You can create a library for static linking,
|
||||||
or use GetProcAddress as in any standard Windows DLL.
|
or use GetProcAddress() as in any standard Windows DLL.
|
||||||
Calling Harbour/Prg functions directly is limited to
|
Calling Harbour/.prg functions directly is limited to
|
||||||
those that take no parameters unless you include C functions
|
those that take no parameters unless you include C functions
|
||||||
in the DLL that take parameters and then call the PRG-level
|
in the DLL that take parameters and then call the PRG-level
|
||||||
code.
|
code.
|
||||||
|
|
||||||
To do static linking, do this to create the .lib:
|
To do static linking, do this to create the library:
|
||||||
implib harbour.lib harbour.dll
|
hbmk2 -hbimplib harbour.dll
|
||||||
For the Borland C platform, use that library and import32.lib
|
|
||||||
and cw32.lib from Borland, and you are ready to go.
|
|
||||||
|
|
||||||
|
2. PCode executables using a harbour.dll
|
||||||
|
|
||||||
2) PCode EXEs using a Harbour.dll
|
A harbour.dll is designed to be called from a Harbour app.
|
||||||
|
A pcode executable is a small Harbour executable that does not
|
||||||
A Harbour.dll is designed to be called from a Harbour app.
|
contain the VM/RTL. To execute its functions, it must load and access
|
||||||
A pcode EXE is a small Harbour executable that does not contain the
|
a harbour.dll.
|
||||||
VM/RTL. To execute its functions, it must load and access a
|
|
||||||
Harbour.dll.
|
|
||||||
If you want dynamic linking, then use this to execute a Harbour
|
If you want dynamic linking, then use this to execute a Harbour
|
||||||
dynamically loaded pcode DLL function or procedure:
|
dynamically loaded pcode DLL function or procedure:
|
||||||
HB_DllDo( <cFuncName> [,<params...>] ) --> [<uResult>]
|
hb_LibDo( <cFuncName>[, <params...>] ) --> [<uResult>]
|
||||||
|
|
||||||
This lets you have all your common code in a DLL, and have lots
|
This lets you have all your common code in a DLL, and have lots
|
||||||
of small EXEs that use it. Realize however that, even though this
|
of small executables that use it. Realize however that, even though
|
||||||
may be a nice way to manage your code, each EXE may
|
this may be a nice way to manage your code, each executable may
|
||||||
load its own image of the Harbour.dll into memory at runtime.
|
load its own image of the harbour.dll into memory at runtime.
|
||||||
In terms of Windows memory, there may not be a benefit to using pcode
|
In terms of Windows memory, there may not be a benefit to using pcode
|
||||||
EXEs over monolithic EXEs. But it may be a worthwhile maintenance
|
executables over monolithic executables. But it may be a worthwhile
|
||||||
benefit to have lots of replaceable small exes.
|
maintenance benefit to have lots of replaceable small exes.
|
||||||
|
|
||||||
3) PCode DLLs used from traditional EXEs
|
3. PCode DLLs used from traditional executables
|
||||||
A pcode DLL does not contain the VM/RTL.
|
A pcode DLL does not contain the VM/RTL.
|
||||||
It is a library of Harbour-compiled PRG code that uses the VM/RTL
|
It is a library of Harbour-compiled PRG code that uses the VM/RTL
|
||||||
of the EXE that calls it. This has the benefit of having
|
of the executable that calls it. This has the benefit of having
|
||||||
replaceable modules in DLLs that don't necessarily require updating
|
replaceable modules in DLLs that don't necessarily require updating
|
||||||
your EXE.
|
your executable.
|
||||||
|
|
||||||
|
|
||||||
The following is clipped from a msg by Antonio Linares to the Harbour
|
The following is clipped from a msg by Antonio Linares to the Harbour
|
||||||
developer list explaining some of the details:
|
developer list explaining some of the details:
|
||||||
|
|
||||||
Please notice that there are three different Windows DLL entry points:
|
Please notice that there are three different Windows DLL entry points:
|
||||||
+ src/vm/
|
|
||||||
* maindll.c Windows self-contained DLL entry point
|
|
||||||
* maindllh.c Windows Harbour DLL entry point (harbour.dll)
|
|
||||||
* maindllp.c Windows pcode DLL entry point and VM/RTL routing functions
|
|
||||||
|
|
||||||
> * maindll.c Windows self-contained DLL entry point
|
* src/vm/maindll.c Windows self-contained DLL entry point
|
||||||
To produce Harbour code, as DLLs, that may be used
|
|
||||||
from other programming languages applications (as VB,
|
|
||||||
Delphi, C++, etc...)
|
|
||||||
|
|
||||||
> * maindllh.c Windows Harbour DLL entry point (harbour.dll)
|
To produce Harbour code, as DLLs, that may be used from other
|
||||||
To produce Harbour.dll, to be just used from small pcode Harbour EXEs
|
programming languages applications (as VB, Delphi, C++, etc...)
|
||||||
|
|
||||||
> * maindllp.c Windows pcode DLL entry point and VM/RTL routing
|
* src/vm/maindllh.c Windows Harbour DLL entry point (harbour.dll)
|
||||||
To produce small pcode DLLs, to be used just from Harbour EXE apps.
|
|
||||||
maindllp.c is the entry point for the Harbour pcode DLLs. pcode DLLs
|
|
||||||
are quite small DLLs, that just contain pcode and/or C (using extend
|
|
||||||
api) functions.
|
|
||||||
|
|
||||||
mainwin.c is the entry point for Windows EXEs, not for DLLs.
|
To produce harbour.dll, to be just used from small pcode Harbour
|
||||||
|
executables.
|
||||||
|
|
||||||
You may use maindll.c, maindllh.c or maindllp.c based on
|
* src/vm/maindllp.c Windows pcode DLL entry point and VM/RTL routing functions
|
||||||
your needs.
|
|
||||||
|
|
||||||
If you are looking to build a Harbour.dll, then you must use
|
To produce small pcode DLLs, to be used just from Harbour executable
|
||||||
maindllh.c
|
apps. maindllp.c is the entry point for the Harbour pcode DLLs. pcode
|
||||||
|
DLLs are quite small DLLs, that just contain pcode and/or C (using
|
||||||
|
Extend API) functions.
|
||||||
|
|
||||||
|
mainwin.c is the entry point for Windows executables, not for DLLs.
|
||||||
|
|
||||||
|
You may use maindll.c, maindllh.c or maindllp.c based on your needs.
|
||||||
|
|
||||||
|
If you are looking to build a harbour.dll, then you must use maindllh.c.
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
# https://www.gurulabs.com/media/files/courseware-samples/GURULABS-RPM-GUIDE-v1.0.PDF
|
# https://www.gurulabs.com/media/files/courseware-samples/GURULABS-RPM-GUIDE-v1.0.PDF
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
|
|
||||||
# TOFIX: Contrib packages with dependencies will be packaged
|
# FIXME: Contrib packages with dependencies will be packaged
|
||||||
# into separate .rpms, but their headers will be packaged
|
# into separate .rpms, but their headers will be packaged
|
||||||
# into the core Harbour package. This f.e. makes it impossible
|
# into the core Harbour package. This f.e. makes it impossible
|
||||||
# to detect a Harbour contrib package by checking the existence
|
# to detect a Harbour contrib package by checking the existence
|
||||||
|
|||||||
@@ -260,8 +260,11 @@ void hb_compPrintLogo( HB_COMP_DECL )
|
|||||||
{
|
{
|
||||||
char * szVer = hb_verHarbour();
|
char * szVer = hb_verHarbour();
|
||||||
|
|
||||||
|
#define HB_VER_COMMIT_YEAR "2016"
|
||||||
|
#define HB_VER_ORIGIN_URL "http://harbour-project.org/"
|
||||||
|
|
||||||
hb_compOutStd( HB_COMP_PARAM, szVer );
|
hb_compOutStd( HB_COMP_PARAM, szVer );
|
||||||
hb_compOutStd( HB_COMP_PARAM,
|
hb_compOutStd( HB_COMP_PARAM,
|
||||||
"\nCopyright (c) 1999-2016, http://harbour-project.org/\n" );
|
"\nCopyright (c) 1999-" HB_VER_COMMIT_YEAR ", " HB_VER_ORIGIN_URL "\n" );
|
||||||
hb_xfree( szVer );
|
hb_xfree( szVer );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,8 @@
|
|||||||
|
|
||||||
#include "hbapi.h"
|
#include "hbapi.h"
|
||||||
|
|
||||||
|
#define _DEFAULT_ORIGIN_URL "http://harbour-project.org/"
|
||||||
|
|
||||||
int hb_verRevision( void )
|
int hb_verRevision( void )
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@@ -196,7 +198,7 @@ static void hb_pp_generateRules( FILE * fout, PHB_PP_STATE pState, const char *
|
|||||||
fprintf( fout, "/*\n"
|
fprintf( fout, "/*\n"
|
||||||
" * Built-in preprocessor rules.\n"
|
" * Built-in preprocessor rules.\n"
|
||||||
" *\n"
|
" *\n"
|
||||||
" * Copyright 2006-2016 Przemyslaw Czerpak <druzus / at / priv.onet.pl>\n"
|
" * Copyright 2006-present Przemyslaw Czerpak <druzus / at / priv.onet.pl>\n"
|
||||||
" *\n"
|
" *\n"
|
||||||
" * This file is generated automatically by Harbour preprocessor\n"
|
" * This file is generated automatically by Harbour preprocessor\n"
|
||||||
" * and is covered by the same license as Harbour PP\n"
|
" * and is covered by the same license as Harbour PP\n"
|
||||||
@@ -318,7 +320,10 @@ static char * hb_pp_escapeString( char * szString )
|
|||||||
return szResult;
|
return szResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hb_pp_generateVerInfo( char * szVerFile, int iRevID, char * szChangeLogID, char * szLastEntry )
|
static int hb_pp_generateVerInfo( char * szVerFile,
|
||||||
|
int iRevID,
|
||||||
|
char * szChangeLogID,
|
||||||
|
char * szLastEntry )
|
||||||
{
|
{
|
||||||
int iResult = 0;
|
int iResult = 0;
|
||||||
FILE * fout;
|
FILE * fout;
|
||||||
@@ -339,7 +344,7 @@ static int hb_pp_generateVerInfo( char * szVerFile, int iRevID, char * szChangeL
|
|||||||
fprintf( fout, "/*\n"
|
fprintf( fout, "/*\n"
|
||||||
" * Version information and build time switches.\n"
|
" * Version information and build time switches.\n"
|
||||||
" *\n"
|
" *\n"
|
||||||
" * Copyright 2008-2016 Przemyslaw Czerpak <druzus / at / priv.onet.pl>\n"
|
" * Copyright 2008-present Przemyslaw Czerpak <druzus / at / priv.onet.pl>\n"
|
||||||
" *\n"
|
" *\n"
|
||||||
" * This file is generated automatically by Harbour preprocessor\n"
|
" * This file is generated automatically by Harbour preprocessor\n"
|
||||||
" * and is covered by the same license as Harbour PP\n"
|
" * and is covered by the same license as Harbour PP\n"
|
||||||
@@ -786,7 +791,7 @@ int main( int argc, char * argv[] )
|
|||||||
{
|
{
|
||||||
printf( "Harbour Preprocessor %d.%d.%d%s\n",
|
printf( "Harbour Preprocessor %d.%d.%d%s\n",
|
||||||
HB_VER_MAJOR, HB_VER_MINOR, HB_VER_RELEASE, HB_VER_STATUS );
|
HB_VER_MAJOR, HB_VER_MINOR, HB_VER_RELEASE, HB_VER_STATUS );
|
||||||
printf( "Copyright (c) 1999-2016, http://harbour-project.org/\n" );
|
printf( "Copyright (c) 1999-present, %s\n", _DEFAULT_ORIGIN_URL );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( szFile )
|
if( szFile )
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ METHOD HandleUserKey( nKey, nUdfReturn ) CLASS HBMemoEditor
|
|||||||
|
|
||||||
OTHERWISE
|
OTHERWISE
|
||||||
|
|
||||||
// TOFIX: Not CA-Cl*pper compatible, see teditor.prg
|
// FIXME: Not CA-Cl*pper compatible, see teditor.prg
|
||||||
IF ( nUdfReturn >= 1 .AND. nUdfReturn <= 31 ) .OR. nUdfReturn == K_ALT_W
|
IF ( nUdfReturn >= 1 .AND. nUdfReturn <= 31 ) .OR. nUdfReturn == K_ALT_W
|
||||||
::super:Edit( nUdfReturn )
|
::super:Edit( nUdfReturn )
|
||||||
ELSE
|
ELSE
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
#include "inkey.ch"
|
#include "inkey.ch"
|
||||||
#include "setcurs.ch"
|
#include "setcurs.ch"
|
||||||
|
|
||||||
/* TOFIX: Leave this here, until this code is cleaned off of RTEs */
|
/* FIXME: Leave this here, until this code is cleaned off of RTEs */
|
||||||
#pragma linenumber=on
|
#pragma linenumber=on
|
||||||
|
|
||||||
#define _REFRESH_NONE 0
|
#define _REFRESH_NONE 0
|
||||||
@@ -564,14 +564,14 @@ METHOD Edit( nPassedKey ) CLASS HBEditor
|
|||||||
// if it's a movement key ::MoveCursor() handles it
|
// if it's a movement key ::MoveCursor() handles it
|
||||||
|
|
||||||
CASE nKeyStd == K_CTRL_B .OR. nKeyStd == K_ALT_B
|
CASE nKeyStd == K_CTRL_B .OR. nKeyStd == K_ALT_B
|
||||||
/* TOFIX: K_ALT_B is not Cl*pper compatible, added as workaround
|
/* FIXME: K_ALT_B is not Cl*pper compatible, added as workaround
|
||||||
for missing in some GTs extended keycodes which are
|
for missing in some GTs extended keycodes which are
|
||||||
necessary to resolve K_CTRL_B and K_CTRL_RIGHT keycode
|
necessary to resolve K_CTRL_B and K_CTRL_RIGHT keycode
|
||||||
conflict */
|
conflict */
|
||||||
::ReformParagraph()
|
::ReformParagraph()
|
||||||
|
|
||||||
CASE nKeyStd == K_CTRL_W .OR. nKeyStd == K_ALT_W
|
CASE nKeyStd == K_CTRL_W .OR. nKeyStd == K_ALT_W
|
||||||
/* TOFIX: K_ALT_W is not Cl*pper compatible, added as workaround
|
/* FIXME: K_ALT_W is not Cl*pper compatible, added as workaround
|
||||||
for missing in some GTs extended keycodes which are
|
for missing in some GTs extended keycodes which are
|
||||||
necessary to resolve K_CTRL_W and K_CTRL_END keycode
|
necessary to resolve K_CTRL_W and K_CTRL_END keycode
|
||||||
conflict */
|
conflict */
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
#include "inkey.ch"
|
#include "inkey.ch"
|
||||||
#include "button.ch"
|
#include "button.ch"
|
||||||
|
|
||||||
/* TOFIX: ::Minus [vszakats] */
|
/* FIXME: ::Minus [vszakats] */
|
||||||
|
|
||||||
#define GET_CLR_UNSELECTED 0
|
#define GET_CLR_UNSELECTED 0
|
||||||
#define GET_CLR_ENHANCED 1
|
#define GET_CLR_ENHANCED 1
|
||||||
@@ -1208,7 +1208,7 @@ METHOD PutMask( xValue, lEdit ) CLASS Get
|
|||||||
IF lEdit .AND. ::cType == "N" .AND. ! Empty( cPicMask )
|
IF lEdit .AND. ::cType == "N" .AND. ! Empty( cPicMask )
|
||||||
FOR nFor := 1 TO ::nMaxLen
|
FOR nFor := 1 TO ::nMaxLen
|
||||||
cChar := SubStr( cPicMask, nFor, 1 )
|
cChar := SubStr( cPicMask, nFor, 1 )
|
||||||
IF cChar $ ",." .AND. SubStr( cBuffer, nFor, 1 ) $ ",." // " " TOFIX
|
IF cChar $ ",." .AND. SubStr( cBuffer, nFor, 1 ) $ ",." // " " FIXME
|
||||||
IF "E" $ cPicFunc
|
IF "E" $ cPicFunc
|
||||||
cChar := iif( cChar == ",", ".", "," )
|
cChar := iif( cChar == ",", ".", "," )
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ HB_FUNC( HB_VERSION )
|
|||||||
case HB_VERSION_BITWIDTH: hb_retni( ( int ) sizeof( void * ) * 8 ); break;
|
case HB_VERSION_BITWIDTH: hb_retni( ( int ) sizeof( void * ) * 8 ); break;
|
||||||
case HB_VERSION_MT: hb_retl( hb_vmIsMt() ); break;
|
case HB_VERSION_MT: hb_retl( hb_vmIsMt() ); break;
|
||||||
|
|
||||||
case HB_VERSION_SHARED: /* TOFIX: This only works when platforms has separate
|
case HB_VERSION_SHARED: /* FIXME: This only works when platforms has separate
|
||||||
compilation pass for harbour dynlib build -
|
compilation pass for harbour dynlib build -
|
||||||
it is 32-bit Windows. */
|
it is 32-bit Windows. */
|
||||||
|
|
||||||
|
|||||||
@@ -167,8 +167,10 @@ STATIC PROCEDURE Logo()
|
|||||||
|
|
||||||
OutStd( ;
|
OutStd( ;
|
||||||
"Harbour i18n .pot/.hbl file manager " + HBRawVersion() + hb_eol() + ;
|
"Harbour i18n .pot/.hbl file manager " + HBRawVersion() + hb_eol() + ;
|
||||||
"Copyright (c) 2009-2016, Przemyslaw Czerpak" + hb_eol() + ;
|
"Copyright (c) 2009-" + ;
|
||||||
"http://harbour-project.org/" + hb_eol() + ;
|
"2016" + ", " + ;
|
||||||
|
"Przemyslaw Czerpak" + hb_eol() + ;
|
||||||
|
hb_Version( HB_VERSION_URL_BASE ) + hb_eol() + ;
|
||||||
hb_eol() )
|
hb_eol() )
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -360,7 +360,7 @@ msgstr "Harbour alaprendszer"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Translation (%1$s): (add your name here)"
|
msgid "Translation (%1$s): (add your name here)"
|
||||||
msgstr "Magyar (%1$s) fordítás: Copyright (c) 2009-2016, Viktor Szakats"
|
msgstr "Magyar (%1$s) fordítás: Copyright (c) 2009-present, Viktor Szakats"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown platform"
|
msgid "unknown platform"
|
||||||
|
|||||||
@@ -71,10 +71,6 @@
|
|||||||
/* Don't change the position of this #include. */
|
/* Don't change the position of this #include. */
|
||||||
#include "rt_vars.ch"
|
#include "rt_vars.ch"
|
||||||
|
|
||||||
#ifndef __HARBOUR__
|
|
||||||
#xtranslate hb_eol() => ( Chr( 13 ) + Chr( 10 ) )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TEST_RESULT_COL1_WIDTH 1
|
#define TEST_RESULT_COL1_WIDTH 1
|
||||||
#define TEST_RESULT_COL2_WIDTH 20
|
#define TEST_RESULT_COL2_WIDTH 20
|
||||||
#define TEST_RESULT_COL3_WIDTH 40
|
#define TEST_RESULT_COL3_WIDTH 40
|
||||||
@@ -98,13 +94,20 @@ STATIC s_lDBFAvail := .F.
|
|||||||
|
|
||||||
ANNOUNCE HB_GTSYS
|
ANNOUNCE HB_GTSYS
|
||||||
REQUEST HB_GT_CGI_DEFAULT
|
REQUEST HB_GT_CGI_DEFAULT
|
||||||
|
|
||||||
|
#define COPYRIGHT_YEAR "2016"
|
||||||
|
#else
|
||||||
|
#define COPYRIGHT_YEAR "present"
|
||||||
|
|
||||||
|
#xtranslate hb_eol() => ( Chr( 13 ) + Chr( 10 ) )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PROCEDURE Main( cPar1, cPar2, cPar3 )
|
PROCEDURE Main( cPar1, cPar2, cPar3 )
|
||||||
|
|
||||||
OutStd( "Harbour Regression Test Suite" + hb_eol() +;
|
OutStd( ;
|
||||||
"Copyright (c) 1999-2016, Viktor Szakats" + hb_eol() +;
|
"Harbour Compatibility and Regression Test Suite" + hb_eol() + ;
|
||||||
"http://harbour-project.org/" + hb_eol() )
|
"Copyright (c) 1999-" + COPYRIGHT_YEAR + ", " + ;
|
||||||
|
"Viktor Szakats" + hb_eol() )
|
||||||
|
|
||||||
IF cPar1 == NIL
|
IF cPar1 == NIL
|
||||||
cPar1 := ""
|
cPar1 := ""
|
||||||
@@ -130,7 +133,6 @@ PROCEDURE Main( cPar1, cPar2, cPar3 )
|
|||||||
" -all Display all tests, not only the failures." + hb_eol() + ;
|
" -all Display all tests, not only the failures." + hb_eol() + ;
|
||||||
" -noalt Ignore alternative results." + hb_eol() + ;
|
" -noalt Ignore alternative results." + hb_eol() + ;
|
||||||
" -skip:<list> Skip the listed test numbers." + hb_eol() )
|
" -skip:<list> Skip the listed test numbers." + hb_eol() )
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user