mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-03-25 10:50:08 +03:00
Added the XML code developped at W3C, Daniel.
This commit is contained in:
commit
01791d57d6
17
AUTHORS
Normal file
17
AUTHORS
Normal file
@ -0,0 +1,17 @@
|
||||
Seth Alves (seth@hungry.com)
|
||||
Radek Doulik <doulik@karlin.mff.cuni.cz>
|
||||
Miguel de Icaza <miguel@kernel.org>
|
||||
Szekeres Istvan (Pista) <szekeres@cyberspace.mht.bme.hu>
|
||||
Tim Janik <timj@gimp.org>
|
||||
Michael K. Johnson <johnsonm@redhat.com>
|
||||
Elliot Lee <sopwith@cuc.edu>
|
||||
Federico Mena <quartic@gimp.org>
|
||||
Molaro Paolo <lupus@dei.unipd.it>
|
||||
Jens Christian Restemeier <jchrr@hrz.Uni-Bielefeld.DE>
|
||||
Tom Tromey <tromey@cygnus.com>
|
||||
Marius Vollmer <mvo@zagadka.ping.de>
|
||||
Eckehard Berns <eb@berns.prima.ruhr.de>
|
||||
George Lebl <jirka@5z.com>
|
||||
Owen Taylor <owt1@cornell.edu>
|
||||
Tuomas Kuosmanen <tigert@gimp.org>
|
||||
Jaka Mocnik <jaka.mocnik@kiss.uni-lj.si>
|
481
COPYING.LIB
Normal file
481
COPYING.LIB
Normal file
@ -0,0 +1,481 @@
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the library GPL. It is
|
||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Library General Public License, applies to some
|
||||
specially designated Free Software Foundation software, and to any
|
||||
other libraries whose authors decide to use it. You can use it for
|
||||
your libraries, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the library, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link a program with the library, you must provide
|
||||
complete object files to the recipients so that they can relink them
|
||||
with the library, after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
Our method of protecting your rights has two steps: (1) copyright
|
||||
the library, and (2) offer you this license which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
Also, for each distributor's protection, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
library. If the library is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original
|
||||
version, so that any problems introduced by others will not reflect on
|
||||
the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that companies distributing free
|
||||
software will individually obtain patent licenses, thus in effect
|
||||
transforming the program into proprietary software. To prevent this,
|
||||
we have made it clear that any patent must be licensed for everyone's
|
||||
free use or not licensed at all.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary
|
||||
GNU General Public License, which was designed for utility programs. This
|
||||
license, the GNU Library General Public License, applies to certain
|
||||
designated libraries. This license is quite different from the ordinary
|
||||
one; be sure to read it in full, and don't assume that anything in it is
|
||||
the same as in the ordinary license.
|
||||
|
||||
The reason we have a separate public license for some libraries is that
|
||||
they blur the distinction we usually make between modifying or adding to a
|
||||
program and simply using it. Linking a program with a library, without
|
||||
changing the library, is in some sense simply using the library, and is
|
||||
analogous to running a utility program or application program. However, in
|
||||
a textual and legal sense, the linked executable is a combined work, a
|
||||
derivative of the original library, and the ordinary General Public License
|
||||
treats it as such.
|
||||
|
||||
Because of this blurred distinction, using the ordinary General
|
||||
Public License for libraries did not effectively promote software
|
||||
sharing, because most developers did not use the libraries. We
|
||||
concluded that weaker conditions might promote sharing better.
|
||||
|
||||
However, unrestricted linking of non-free programs would deprive the
|
||||
users of those programs of all benefit from the free status of the
|
||||
libraries themselves. This Library General Public License is intended to
|
||||
permit developers of non-free programs to use free libraries, while
|
||||
preserving your freedom as a user of such programs to change the free
|
||||
libraries that are incorporated in them. (We have not seen how to achieve
|
||||
this as regards changes in header files, but we have achieved it as regards
|
||||
changes in the actual functions of the Library.) The hope is that this
|
||||
will lead to faster development of free libraries.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, while the latter only
|
||||
works together with the library.
|
||||
|
||||
Note that it is possible for a library to be covered by the ordinary
|
||||
General Public License rather than by this special one.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library which
|
||||
contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Library
|
||||
General Public License (also called "this License"). Each licensee is
|
||||
addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also compile or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
c) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
d) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the source code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Library General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
883
ChangeLog
Normal file
883
ChangeLog
Normal file
@ -0,0 +1,883 @@
|
||||
Wed Jul 22 16:47:14 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-config.c (_gnome_config_get_int_with_default):
|
||||
Used wrong sense in previous change. Duh.
|
||||
(_gnome_config_get_float_with_default): Likewise.
|
||||
(_gnome_config_get_bool_with_default): Likewise.
|
||||
|
||||
* libgnome/gnome-config.c (_gnome_config_get_int_with_default): It
|
||||
isn't an error if the key is not found.
|
||||
(_gnome_config_get_float_with_default): Likewise.
|
||||
(_gnome_config_get_bool_with_default): Likewise.
|
||||
(_gnome_config_get_translated_string_with_default): Removed legacy
|
||||
"C" locale code.
|
||||
|
||||
Sat Jul 18 20:18:57 1998 John Ellis <johne@bellatlantic.net>
|
||||
|
||||
* libgnome/gnome-dentry.[ch] (gnome_desktop_entry_load_unconditional):
|
||||
new function necessary for loading/editing 'broken' .desktop entries.
|
||||
|
||||
1998-07-17 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* configure.in: Added gnome-canvas-line and gnome-canvas-util to
|
||||
the sources.
|
||||
|
||||
1998-07-15 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* acconfig.h (NEED_DECLARATION_GETHOSTNAME): New tag.
|
||||
|
||||
* configure.in (jpeglib.h): Undef a few more symbols to prevent
|
||||
preprocessor symbol clashes. In this case, jpeglib.h defines
|
||||
HAVE_STDDEF_H and HAVE_STDLIB_H.
|
||||
|
||||
1998-07-14 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* configure.in (AM_PATH_GLIB): New test.
|
||||
(LIBGNOME_LIBS): List `-lglib' too.
|
||||
Based on suggestion from
|
||||
Manish Vachharajani <mvachhar@vger.rutgers.edu>.
|
||||
|
||||
* gnome-config.in: Make sure library ordering is preserved, when
|
||||
removing duplicates.
|
||||
|
||||
* Makefile.am (AUTOMAKE_OPTIONS): Require automake 1.3.
|
||||
|
||||
1998-07-13 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* Makefile.am (built_SUBDIRS): Add `test-suite'.
|
||||
|
||||
1998-07-12 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* configure.in (dlopen): Test directly for the function.
|
||||
(dlerror): Include $DL_LIB in $LIBS before testing.
|
||||
From James Michael Mastros <spare@jennifer-unix.dyn.ml.org>.
|
||||
|
||||
mar jul 7 10:13:44 ART 1998 Horacio J. Peña <horape@compendium.com.ar>
|
||||
|
||||
* libgnomeui/gnome-client.h: Added gnome_client_save &
|
||||
gnome_client_restart_session.
|
||||
* libgnomeui/gnome-client.c: Added gnome_client_save &
|
||||
gnome_client_restart_session.
|
||||
|
||||
1998-07-06 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* configure.in: Added gnome-canvas-image files.
|
||||
|
||||
Tue Jul 7 00:01:19 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-parse.c: Don't include <malloc.h>.
|
||||
|
||||
Sun Jul 5 18:21:31 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-exec.h: Declare gnome_execute_async_with_env.
|
||||
* libgnome/gnome-exec.c (gnome_execute_async_with_env): New function.
|
||||
(gnome_execute_async): Use it.
|
||||
|
||||
1998-07-05 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* configure.in: Added gnome-canvas-text.[ch].
|
||||
|
||||
1998-07-04 Stuart Parmenter <pavlov@pavlov.net>
|
||||
|
||||
* libgnomeui/gnome-mdi.c
|
||||
(child_list_menu_remove_item): added a check
|
||||
to see if the menu existed... this may not be a good idea, but since
|
||||
gnome-mdi's documentation isn't all that, it made sense:)
|
||||
(child_list_menu_add_item): same thing
|
||||
|
||||
1998-07-02 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/Makefile.am (dns_helper_LDADD): Cosmetic cleanups.
|
||||
|
||||
Tue Jun 30 16:12:55 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-config.c: Removed backwards-compatibility hack.
|
||||
(_gnome_config_get_translated_string_with_default): Handle
|
||||
language specs like `pt_PT@foo'.
|
||||
|
||||
* libgnome/gnome-i18n.c: Include libgnomeP.h.
|
||||
* libgnome/gnome-help.c: Include gnome-i18nP.h, sys/wait.h.
|
||||
* libgnome/gnomelib-init.c: Include gnome-i18nP.h.
|
||||
* libgnome/gnome-mime.c: Include libgnomeP.h.
|
||||
* libgnome/gnome-config.c: Include libgnomeP.h.
|
||||
* libgnome/Makefile.am (noinst_HEADERS): Added libgnomeP.h.
|
||||
* libgnome/libgnomeP.h: New file.
|
||||
|
||||
1998-06-29 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-config.c (gnome_config_pop_prefix,
|
||||
gnome_config_remove_prefix_list): Removed. If any application
|
||||
relied on this stuff it was broken. That is what push/pop prefix
|
||||
are for.
|
||||
|
||||
Mon Jun 29 00:18:10 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-config.c (_gnome_config_set_float): Use %.17g
|
||||
format, to ensure full precision.
|
||||
|
||||
1998-06-28 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
New, improved, gnome-config script. (Not related to
|
||||
libgnome/gnome-config.[ch]).
|
||||
* Makefile.am (gnome-config): Move generation to ...
|
||||
* configure.in (AC_SUBST): ... here.
|
||||
(GNOME_LIBDIR,GNOME_INCLUDEDIR): Use ${..}, not $(..) for variable
|
||||
substitution.
|
||||
* gnome-config.in: Rehaul.
|
||||
|
||||
1998-06-26 Nuno Ferreira <nmrf@rnl.ist.utl.pt>
|
||||
|
||||
* configure.in (ALL_LINGUAS): Added Poruguese translation.
|
||||
|
||||
Thu Jun 18 23:52:07 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-config.[ch]: made it possible to call, set and
|
||||
sync handlers, this is usefull for autosyncing that can be
|
||||
done in libgnomeui .. or any toolkit specific lib
|
||||
|
||||
Thu Jun 18 00:24:21 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-config.[ch]: added two calls, _remove_prefix_list
|
||||
and _set_prefix_list, these functions can be used by routines
|
||||
which want to set it's own prefix stack, but don't wanna corrupt
|
||||
the prefix stack for the rest of the application.
|
||||
|
||||
* libgnome/gnome-i18n.c: added #include <string.h>
|
||||
|
||||
Tue Jun 16 15:24:46 1998 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* libgnome/gnome-util.h, gnome-util.c (gnome_dirrelative_file):
|
||||
make char * args const.
|
||||
(gnome_datadir_file, gnome_libdir_file, gnome_pixmap_file,
|
||||
gnome_unconditional_pixmap_file, gnome_unconditional_libdir_file,
|
||||
gnome_unconditional_datadir_file): const char *
|
||||
(g_filename_pointer): Return a pointer to the last part of a
|
||||
path. Maybe this should replace g_filename_index.
|
||||
(g_extension_pointer): Return a pointer to the filename extension.
|
||||
(g_copy_vector): Copy char **. const isn't right, needs fixing.
|
||||
(g_flatten_vector): Make a vector into a single string.
|
||||
(g_is_image_filename): Determine if a filename's extension
|
||||
suggests an image file.
|
||||
|
||||
* libgnome/gnome-dentry.h, gnome-dentry.c
|
||||
(gnome_is_program_in_path): put const on the char * arg. Shouldn't
|
||||
this function go in gnome-util?
|
||||
(gnome_desktop_entry_load): const char *
|
||||
(gnome_desktop_entry_load_flags): const char *
|
||||
(gnome_desktop_entry_copy): copy the struct. I guess I didn't end
|
||||
up using this, but here it is anyway.
|
||||
|
||||
Sun Jun 14 18:03:14 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-exec.c (gnome_execute_async): Removed redundant
|
||||
exit (report_errno never returns). Set errno after waitpid, not
|
||||
before it.
|
||||
(gnome_execute_shell): Added cast to avoid warning.
|
||||
|
||||
Sun Jun 14 19:16:00 1998 Manish Vachharajani <mvachhar@vger.rutgers.edu>
|
||||
|
||||
* libgnome/gnome-exec.c gnome_execute_async: We need to call
|
||||
waitpid, even on failure, since if the second child fails to exec,
|
||||
the first will become a zombie until the SIGCHLD is handled via
|
||||
waitpid. Also, if the second child fails to exec, exit, don't
|
||||
fall through.
|
||||
|
||||
Sun Jun 14 13:33:50 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/Makefile.am (INCLUDES): Look in ../intl. Don't look in
|
||||
../support (the need for this is discovered by configure).
|
||||
|
||||
Sun Jun 14 09:34:36 1998 Dick Porter <dick@cymru.net>
|
||||
|
||||
* configure.in tweak for libgif
|
||||
|
||||
Thu Jun 11 09:55:25 1998 Radek Doulik <gis@academy.cas.cz>
|
||||
|
||||
* libgnome/gnome-help.h: added GNOME_DECLS
|
||||
* libgnome/gnome-string.h: added GNOME_DECLS
|
||||
|
||||
1998-06-11 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* configure.in: Remove stuff relating to `build_CC'.
|
||||
|
||||
Wed Jun 10 19:24:07 PDT 1998 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* changed things to use GTK_HAVE_ACCEL_GROUP instead of
|
||||
HAVE_DEVGTK... installed headers depending on config.h
|
||||
stuff is bad.
|
||||
|
||||
Wed Jun 10 14:19:39 EDT 1998 Gregory McLean <gregm@comstar.net>
|
||||
|
||||
* YES! gnome-libs as a whole now compiles against gtk 1.0.x (on my
|
||||
machine atleast) Now I hope I can get back to work.
|
||||
|
||||
Wed Jun 10 00:47:12 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-parse.c (our_options): New global.
|
||||
(help_parser): New global.
|
||||
(gnome_parse_arguments): Register help_parser.
|
||||
(GROUP): New define.
|
||||
|
||||
Tue Jun 9 22:55:20 EDT 1998 Gregory McLean <gregm@comstar.net>
|
||||
|
||||
* macros/gnome-x-checks.m4: quick and dirty check for devel gtk and
|
||||
define HAVE_DEVGTK if its found. This should save us a bunch of
|
||||
work next time we go to do a release we won't have to chase
|
||||
around code that only works on the devel version of gtk.
|
||||
* libgnomeui/* bracketed all code that requires the devel branch of
|
||||
gtk.. I think I got it all.
|
||||
* acconfig.h : new tag HAVE_DEVGTK, use this to mark your changes that
|
||||
require the dev branch of gtk.
|
||||
|
||||
1998-06-09 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* Makefile.am (built_SUBDIRS): Added test-gnome to the list of directories.
|
||||
|
||||
Tue Jun 9 02:30:36 PDT 1998 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* configure.in: redid graphics lib checks
|
||||
|
||||
1998-06-08 Jim Pick <jim@jimpick.com>
|
||||
|
||||
* Added debian packaging dir.
|
||||
|
||||
Mon Jun 8 22:49:28 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-exec.c (gnome_execute_shell): Free element of
|
||||
argv.
|
||||
|
||||
Mon Jun 8 20:46:40 EDT 1998 Gregory McLean <gregm@comstar.net>
|
||||
|
||||
* libgnomeui/gtkdial.c: removed some dead code bloat :)
|
||||
|
||||
Mon Jun 8 19:13:50 1998 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* libgnome/gnome-util.h, gnome-util.c (g_filename_index):
|
||||
Get the starting index of the last component of a path.
|
||||
Sort of the reverse of g_concat_dir_and_file.
|
||||
|
||||
1998-06-08 Martin Baulig <martin@home-of-linux.org>
|
||||
|
||||
* configure.in: Added some stuff for cross-compiling.
|
||||
|
||||
* gnomeConf.sh.in (need_gnome_support): New tag.
|
||||
|
||||
1998-06-07 Stuart Parmenter <pavlov@innerx.net>
|
||||
|
||||
* libgnomeui/gnome-dialog.[ch]: changes to make it use GtkAccelGroup
|
||||
functions, i.e. making it compile :)
|
||||
* libgnomeui/gnome-stock.c: same thing
|
||||
* libgnomeui/stock-demo.c: same thing
|
||||
* libgnomeui/*: same thing :)
|
||||
|
||||
1998-06-01 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_destroy): Remove
|
||||
references to the gnome-config entry when discarding a
|
||||
gnome-dentry and release the memory associated with the
|
||||
GnomeDesktopEntry.
|
||||
|
||||
Mon Jun 1 13:23:26 1998 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* libgnome/gnome-exec.h, gnome-exec.c (gnome_execute_async):
|
||||
Change arg 3 to char * const argv[] to match execvp
|
||||
(gnome_execute_shell): New function. Like system(), but
|
||||
backgrounds the process and uses the user's shell.
|
||||
|
||||
1998-05-25 Marc Ewing <marc@germ.labs.redhat.com>
|
||||
|
||||
* libgnome/gnome-help.c (gnome_help_goto): make sure
|
||||
the help browser process lives on.
|
||||
|
||||
Sat May 23 12:24:39 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-dentry.c: fixed two small bugs in the launch
|
||||
stuff.
|
||||
|
||||
Fri May 22 18:24:09 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-util.c (g_file_exists): `filename' argument now
|
||||
const.
|
||||
|
||||
Some -Wall fixes:
|
||||
* libgnome/lib_date.c: Include <stdio.h> for sprintf.
|
||||
* libgnome/gnome-triggers.c (gnome_triggers_add_trigger): Removed
|
||||
unused variable.
|
||||
(gnome_triggers_do): Likewise.
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_launch_with_args):
|
||||
Removed unused variable.
|
||||
* libgnome/gnome-config.c: Declare strndup if required.
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_launch_with_args):
|
||||
Use `SHELL -c' to execute command.
|
||||
|
||||
* libgnome/gnome-util.c (gnome_util_user_shell): New function;
|
||||
modified from gnome-terminal.
|
||||
* libgnome/gnome-util.h: Declare gnome_util_user_shell.
|
||||
|
||||
1998-05-20 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.h: Added prototype for gnome_desktop_entry_launch_with_args().
|
||||
|
||||
1998-05-20 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-config.c (gnome_config_make_vector,
|
||||
gnome_config_assemble_vector): export the routines that make a
|
||||
vector out from a string and the routine that assembles a vector
|
||||
into a string. We need them outside as well.
|
||||
|
||||
1998-05-19 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_launch_with_args):
|
||||
New function. Allows to launch a dentry with optional extra
|
||||
arguments. In the future we should probably scan ->exec vector
|
||||
for ocurrences of '%f' and relpace that with the argumnets. For
|
||||
now, we just appendm them.
|
||||
|
||||
* libgnome/gnome-config.c (_gnome_config_get_vector_with_default):
|
||||
Set the entire argvp array to NULL.
|
||||
Count correctly the number of arguments.
|
||||
|
||||
1998-05-19 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* acconfig.h (HAVE_SYS_ERRLIST): New tag.
|
||||
|
||||
Tue May 19 14:42:32 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-config.c: (escape_string_and_dup) fixed a segfault
|
||||
|
||||
1998-05-19 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_free): We were
|
||||
leaking item->geometry.
|
||||
|
||||
* configure.in (GLIB_LIBS): use the correct glib depending on what
|
||||
is installed. Bug reported by Mark Galassi. Thanks to Owen for
|
||||
suggesting the proper approach to this.
|
||||
|
||||
1998-05-18 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_free): Do not free
|
||||
item->exec as the gnome_string_arry_free already freed that.
|
||||
|
||||
Mon May 18 14:10:42 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-config.c (_gnome_config_set_vector): Also quote
|
||||
`\' characters.
|
||||
(_gnome_config_get_vector_with_default): Don't duplicate result of
|
||||
access_config. Allocate each element of array separately.
|
||||
|
||||
1998-05-18 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-config.c (_gnome_config_get_vector_with_default):
|
||||
Fix the routine. Simplify the parsing code with a slicker
|
||||
routine. This should fix the panel problems, at least it works
|
||||
for me.
|
||||
|
||||
1998-04-30 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-util.c (g_copy_strings): Put back optimized and
|
||||
non-leaking copy_strings.
|
||||
Sat May 16 00:44:21 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-string.c: Removed dead check for delim==NULL.
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_launch): Look up
|
||||
desired terminal program in config database.
|
||||
|
||||
* libgnome/gnome-i18n.c (LANGKEY): Changed value.
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_load_flags): Treat
|
||||
"Exec" entry as a vector.
|
||||
(gnome_desktop_entry_save): Likewise.
|
||||
(gnome_desktop_entry_free): Likewise.
|
||||
(gnome_desktop_entry_launch): Likewse. Also use
|
||||
gnome_execute_async.
|
||||
* libgnome/gnome-dentry.h (GnomeDesktopEntry): Added `exec_length'
|
||||
member. `exec' member now a `char**'.
|
||||
* libgnome/libgnome.h: Include gnome-exec.h.
|
||||
* libgnome/Makefile.am (libgnome_la_SOURCES): Added gnome-exec.c.
|
||||
(libgnomeinclude_HEADERS): Added gnome-exec.h.
|
||||
* libgnome/gnome-exec.h: New file.
|
||||
* libgnome/gnome-exec.c: New file.
|
||||
|
||||
* libgnome/gnome-config.c (_gnome_config_get_vector_with_default):
|
||||
If no value available, set *argvp to NULL.
|
||||
|
||||
1998-05-14 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* libgnome/gnome-i18n.c (gnome_i18n_init): It is not safe to pass
|
||||
an `auto' variable to `putenv'.
|
||||
|
||||
1998-05-13 Jaka Mocnik <jaka.mocnik@kiss.uni-lj.si>
|
||||
|
||||
* configure.in: When checking for libtiff link conftest against
|
||||
Z_LIBS and JPEG_LIBS. Check failed for me otherwise.
|
||||
|
||||
Wed May 13 13:34:10 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-i18n.h: Declare new functions.
|
||||
* libgnome/gnome-i18n.c (LANGKEY): New macro.
|
||||
(gnome_i18n_set_preferred_language): New function.
|
||||
(gnome_i18n_init): Likewise.
|
||||
(gnome_i18n_get_preferred_language): Likewise.
|
||||
(guess_category_value): Return NULL as default domain.
|
||||
(gnome_i18n_get_language_list): Handle NULL return from
|
||||
guess_category_value.
|
||||
* libgnome/gnomelib-init.c (gnomelib_init): Call gnome_i18n_init().
|
||||
|
||||
Sat May 9 20:25:49 1998 Szekeres István <szekeres@cyberspace.mht.bme.hu>
|
||||
|
||||
* libgnome/gnome-string.c (gnome_string_join):
|
||||
Pass terminator NULL to gnome_string_joinv so it will not sigsegv
|
||||
|
||||
|
||||
Wed May 6 13:16:14 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* configure.in: Check for sys/select.h.
|
||||
|
||||
1998-04-29 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-config.c
|
||||
(_gnome_config_get_translated_string_with_default): Added fallback
|
||||
mechanism to read old files that did have the [C] suffix on
|
||||
translated strings.
|
||||
|
||||
* libgnome/gnome-config.c (_gnome_config_set_translated_string):
|
||||
If the language is the default "C", we don't want to write the [C]
|
||||
suffix to the file. This is so that this function will work in
|
||||
pairs with gnome_config_get_translated_string().
|
||||
|
||||
1998-04-29 Tristan Tarrant <ttarrant@etnoteam.it>
|
||||
|
||||
* configure.in: add checks for forkpty
|
||||
|
||||
1998-04-27 Michael Fulbright <msf@redhat.com>
|
||||
|
||||
* libgnome/gnome-help.c (gnome_help_file_find_file):
|
||||
strip off last '#' in the requested path, since most help
|
||||
requests are going to be URLs.
|
||||
|
||||
* libgnome/gnome-help.c (gnome_help_display):
|
||||
use gnome_help_file_find_file() function
|
||||
|
||||
* libgnomeui/gnome-app-helper.c (gnome_app_add_help_menu_entries):
|
||||
use gnome_help_file_find_file() function to find topic.dat
|
||||
|
||||
|
||||
1998-04-27 Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
|
||||
|
||||
* libgnome/gnome-help.c (gnome_help_file_find_file): Changed to
|
||||
look for more than one language.
|
||||
(gnome_help_file_path): Changed to use
|
||||
gnome_help_file_find_file. If no file is found, than return a
|
||||
value like in former times.
|
||||
|
||||
* libgnome/gnome-config.c
|
||||
(_gnome_config_get_translated_string_with_default): Changed to
|
||||
look for more than one language.
|
||||
(_gnome_config_set_translated_string): Changed to support language
|
||||
lists.
|
||||
|
||||
* libgnome/gnome-i18n.c (guess_category_value): New function.
|
||||
(gnome_i18n_get_language_list): New function.
|
||||
|
||||
* libgnome/gnome-i18n.h: Added gnome_i18n_get_language_list, that
|
||||
returns a list of languages, depending on the users environment.
|
||||
|
||||
* libgnome/gnome-i18nP.h: Likewise.
|
||||
|
||||
1998-04-27 Michael Fulbright <msf@redhat.com>
|
||||
|
||||
* libgnome/gnome-help.c (gnome_help_file_find_file):
|
||||
A new function which is similar to gnome_help_file_path(), except
|
||||
that if the desired file is not found in the default locale,
|
||||
the 'C' locale is also searched. The gnome_help_*
|
||||
code may need to be rethought when handling i18n issues.
|
||||
|
||||
Sat Apr 25 23:29:54 CEST 1998 Eckehard Berns <eb@berns.prima.de>
|
||||
|
||||
* libgnome/gnome-config.c (_gnome_config_get_vector_with_default):
|
||||
escaped spaces have to get unescaped after reading.
|
||||
|
||||
1998-04-21 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-config.c (gnome_config_get_string_with_default):
|
||||
Added ultra-nasty binary compatibility hack for those hackers
|
||||
without dual-p2 machines so that they dont have to recompile
|
||||
everything. This will be gone soon.
|
||||
|
||||
Thu Apr 23 01:53:44 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-config.c: added some missing compatibility
|
||||
functions.
|
||||
|
||||
Tue Apr 21 15:23:58 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-config.h: added gnome_config_get_real_path
|
||||
and gnome_config_private_get_real_path macros, that
|
||||
return the real path of a file in the config dir
|
||||
|
||||
Tue Apr 21 14:30:25 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnomelib-init.c: create .gnome_private and
|
||||
set mode to 0700 on every initialization, added
|
||||
gnome_user_private_dir constant
|
||||
|
||||
* libgnome/libgnome.c: add gnome_user_private_dir extern
|
||||
declaration
|
||||
|
||||
* libgnome/gnome-config.[ch]: made parse_path use either
|
||||
private or normal path, and made defines for source
|
||||
compatibility to new functions which have one more
|
||||
argument which is gint priv, added gnome_config_private
|
||||
defines to these functions that use the private directory
|
||||
|
||||
Mon Apr 20 23:38:55 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-config.c: made it check for the entire
|
||||
path first as a special case so that it doesn't end
|
||||
up walking though the entire path if it exists
|
||||
|
||||
Mon Apr 20 22:41:44 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-config.c: new function check_path
|
||||
called before a file is opened for writing,
|
||||
it will try to check if a the directory exists
|
||||
and create it if neccessary. needs a bit of
|
||||
a bit of optimization maybe and uses 755 by default
|
||||
now which probably should be either 700 or specified
|
||||
by user.
|
||||
|
||||
1998-04-16 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_is_program_in_path): Return the
|
||||
full pathname for the program if it is found on the path.
|
||||
(gnome_desktop_entry_load_flags): Free the pathname according to
|
||||
the new convention.
|
||||
|
||||
Sun Apr 19 09:38:36 EDT 1998 Gregory McLean <gregm@comstar.net>
|
||||
|
||||
* rasterapi/.cvsignore: added to ignore generated files.
|
||||
|
||||
Mon Apr 13 22:14:11 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* configure.in: make Makefile in libgnomeui/pixmaps
|
||||
|
||||
1998-04-13 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* libgnome/gnome-help.c (gnome_help_file_path): Be more
|
||||
`const'-correct.
|
||||
|
||||
1998-04-12 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
Introduce `gnomesupport.h'.
|
||||
* configure.in (SUPPORTINCS): Define NEED_GNOMESUPPORT_H if
|
||||
`libgnomesupport' is built.
|
||||
(GNOME_INCLUDEDIR): Likewise. Also, use $(pkglibdir)/include
|
||||
instead of $(includedir)/libgnomesupport. (See support/ChangeLog.)
|
||||
|
||||
* gnome.h: Include `gnomesupport.h' if NEED_GNOMESUPPORT_H is
|
||||
defined. This should make `gnomesupport.h' pretty transparent.
|
||||
|
||||
Mon Apr 6 00:05:34 1998 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* libgnome/gnome-i18nP.h: new file
|
||||
* libgnome/gnome-i18n.h: #warning if used together with
|
||||
gnome-i18nP.h
|
||||
* libgnome/Makefile.am: noinst_HEADERS = gnome-i18nP.h
|
||||
|
||||
Sat Apr 04 12:12:47 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-config.c: do init on functions that
|
||||
previously errored out with "called before init"
|
||||
|
||||
1998-03-31 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/lib_date.c, lib_date.h, lib_defs.h, lib_date.README:
|
||||
Added the lib_date routines from Steffen Beyer.
|
||||
|
||||
Sat Mar 28 19:28:48 MST 1998 Nathan Summers <rock@gimp.org>
|
||||
|
||||
* libgnome/gnome_dl.c: changed lib_path to libpath in the hpux code
|
||||
|
||||
Tue Mar 24 00:39:36 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* Makefile.am (DISTCLEANFILES): Removed.
|
||||
|
||||
Thu Mar 19 18:57:05 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-parse.h: Added copyright info.
|
||||
* libgnome/gnome-parse.c: Likewise.
|
||||
|
||||
* libgnome/gnome-history.c (gnome_history_recently_used): Changed
|
||||
interface.
|
||||
Added copyright info.
|
||||
* libgnome/gnome-history.h: Added comments, updated
|
||||
gnome_history_recently_used decl.
|
||||
Added copyright info.
|
||||
|
||||
Wed Mar 18 20:33:30 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_save): Save the
|
||||
geometry field of the gnome-dentry.
|
||||
|
||||
Tue Mar 17 21:34:35 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnomeui/gtk-{plug,socket}.[ch]: added Owen's plugsocket
|
||||
code to libgnomeui
|
||||
|
||||
Sun Mar 15 15:24:41 1998 Owen Taylor <owt1@cornell.edu>
|
||||
|
||||
* Makefile.am configure.in gnomeConf.sh.in:
|
||||
Add GTK_CFLAGS to GNOME_INCLUDEDIR, and GTK_LIBS to the
|
||||
approriate *LIBS variables.
|
||||
|
||||
* libgnome/Makefile.am libgnomeui/Makefile.am:
|
||||
Added GTK_CFLAGS to INCLUDES
|
||||
|
||||
Tue Mar 10 11:58:38 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-parse.h: Just look for <argp.h>.
|
||||
|
||||
Mon Mar 9 20:37:56 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-parse.h: Add BEGIN_GNOME_DECLS and
|
||||
END_GNOME_DECLS: they are *required* for C++ compilation.
|
||||
|
||||
Sun Mar 8 17:15:17 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* version.h.in: Removed.
|
||||
* configure.in: Don't create version.h.
|
||||
|
||||
* libgnome/Makefile.am (INCLUDES): Added @SUPPORTINCS@.
|
||||
|
||||
* configure.in (SUPPORTINCS, LIBSUPPORT): New defines.
|
||||
(GNOME_LIBS): Include -lgnomesupport if required.
|
||||
(GNOME_INCLUDEDIR): Include -I for libgnomesupport if required.
|
||||
|
||||
* gnomeConf.sh.in (GNOME_INCLUDEDIR, GNOMELIBDIR): Quote values.
|
||||
|
||||
Fri Mar 6 21:42:09 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/libgnome.h: Include gnome-parse.h.
|
||||
|
||||
Fri Mar 06 20:31:13 1998 George Lebl <jirka@5z.com>
|
||||
|
||||
* libgnome/gnome-dentry.c: fixed the _load function to always set
|
||||
->icon, at least to NULL, this was causing the panel to segfault
|
||||
|
||||
Wed Mar 4 01:06:58 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/libgnome.h (gnomelib_register_arguments): Declare.
|
||||
* libgnome/gnomelib-init.c (gnomelib_register_arguments): New
|
||||
function.
|
||||
|
||||
* libgnome/Makefile.am (libgnome_la_SOURCES): Added
|
||||
gnome-parse.c.
|
||||
(libgnomeinclude_HEADERS): Added gnome-parse.h.
|
||||
* libgnome/gnome-parse.h: New file.
|
||||
* libgnome/gnome-parse.c: New file.
|
||||
|
||||
* libgnome/gnomelib-init.c (gnomelib_init): Removed argc, argv
|
||||
arguments.
|
||||
* libgnome/libgnome.h (gnomelib_init): Likewise.
|
||||
|
||||
* acconfig.h (HAVE_PROGRAM_INVOCATION_SHORT_NAME,
|
||||
HAVE_PROGRAM_INVOCATION_NAME): Added.
|
||||
|
||||
1998-02-28 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* libgnome/gnome-config.c (dump_sections): Don't crash if
|
||||
p->section_name == NULL.
|
||||
(*): Use `g_strdup' and `g_free' uniformly, throughout.
|
||||
|
||||
Sat Feb 28 15:46:51 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-config.c (parse_path): Reverse Raja Harinath's
|
||||
change that used "" instead of NULL.
|
||||
|
||||
If we use NULL here, the gnome-config-get-string routines can
|
||||
distinguish between:
|
||||
|
||||
- NULL if they key was non-existant.
|
||||
- "" if the key had an empty value.
|
||||
|
||||
Thu Feb 26 21:12:26 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-util.c (gnome_dirrelative_file): Check inside the
|
||||
user relative home directory for more files.
|
||||
|
||||
1998-02-26 Mark Galassi <rosalia@cygnus.com>
|
||||
|
||||
* devel-docs/libgnomeui.sgml, devel-docs/libgnome.sgml:
|
||||
added PSGML file option comments with a "parent document". This
|
||||
makes it easier for emacs to load the subdocuments.
|
||||
|
||||
1998-02-28 Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
|
||||
|
||||
* libgnome/gnome-dentry.c (get_translated_string): Due to the
|
||||
changes in libgnome/gnome-config.c (parse_path), empty strings
|
||||
instead of the untranslated strings have beed returned, if a
|
||||
translated string was not available. This is fixed now.
|
||||
|
||||
Thu Feb 26 18:08:15 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.c, libgnome/gnome-dentry.h: Dropped the
|
||||
computed icon filenames, things will be scaled now by the panel.
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_load_flags): More
|
||||
fields; a new parameter that avoids dumping the loaded
|
||||
information.
|
||||
|
||||
1998-02-25 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* libgnome/gnome-config.c (parse_path): Use "" instead of NULL.
|
||||
|
||||
Wed Feb 25 20:16:13 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_load): Drop known
|
||||
information on a dentry after loading.
|
||||
|
||||
Add more fields.
|
||||
|
||||
1998-02-25 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* configure.in: Clean up the handling of {Z,PNG,JPEG,TIFF,GIF}_LIBS,
|
||||
and their interaction with {GDK_IMLIB,GNOMEUI,GTKXMHTML}_LIBS.
|
||||
(AC_SUBST): Remove {Z,PNG,JPEG}_LIBS.
|
||||
|
||||
Tue Feb 24 20:01:42 1998 Maciej Stachowiak <mstachow@mit.edu>
|
||||
|
||||
* configure.in: Added checks for libraries that gdk_imlib depends
|
||||
on, since libgnomeui now depends on libgdk_imlib. This is needed
|
||||
for the libraries and demos (and probably other apps) to build
|
||||
properly.
|
||||
|
||||
1998-02-23 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* gnome.h: Added #include <gdk_imlib.h>, as it is now required for
|
||||
all of Gnome.
|
||||
|
||||
1998-02-23 Mark Galassi <rosalia@nis.lanl.gov>
|
||||
|
||||
* configure.in (LIBGNOMEUI_LIBS):
|
||||
(GNOMEUI_LIBS): added $Z_LIBS to both of these, sine gdk_imlib
|
||||
might require them, and gdk_imlib is now always linked in
|
||||
libgnomeui.
|
||||
|
||||
1998-02-23 Marc Ewing <marc@redhat.com>
|
||||
|
||||
* libgnomeui/gnome-app-helper.{c,h}: added radio and check/toggle
|
||||
button support, for both menus and toolbars. Also added two
|
||||
new fields to the struct _GnomeUIInfo: user_data - is used as the
|
||||
data parameter to the gtk_signal_connect() call for each item,
|
||||
and unsed_data which should always be NULL. Previously the
|
||||
data paramenter to gtk_signal_connect() came from the data
|
||||
parameters to the *_interp() and *_with_data(), which was less
|
||||
than optimal.
|
||||
|
||||
* libgnomeui/gnome-font-selector.c: Changes to support above.
|
||||
|
||||
1998-02-23 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dl.c:
|
||||
* libgnome/gnome-help.c: #include <string.h>
|
||||
|
||||
* configure.in (ALL_LINGUAS): Added "it" to ALL_LINGUAS
|
||||
|
||||
1998-02-19 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-score.h: Added missing #include <glib.h>
|
||||
|
||||
1998-02-20 Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
|
||||
|
||||
* libgnome/gnome-mime.c: Now includes 'libgnome.h' and 'gtk/gtk.h'
|
||||
instead of 'gnome.h'. This removes the dependence from
|
||||
'libgnomeui.h'.
|
||||
|
||||
* devel-docs/.cvsignore: Added 'Makefile' and 'Makefile.in'.
|
||||
|
||||
* configure.in (ALL_LINGUAS): Added german translations.
|
||||
|
||||
1998-02-19 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnomelib-init.c (gnomelib_init): Added app_id parameter
|
||||
to this function. Changes to the rest of Gnome are in progress.
|
||||
|
||||
Wed Feb 18 09:25:38 ART 1998 Horacio J. Peña <horape@compendium.com.ar>
|
||||
|
||||
* devel-docs/Makefile.am: new.
|
||||
* devel-docs/libgnome*.sgml: new.
|
||||
* devel-docs/gdoc/: new dir.
|
||||
* README: added licensing info for gtk-xmhtml and libgtktty.
|
||||
* devel-docs/gnome-dev-info.sgml: splited. (now the libgnome(ui)?
|
||||
chapters are independant files.
|
||||
* libgnomeui/gnome-about.h: Documented.
|
||||
* libgnomeui/{almost_all}.h: Added #include <libgnome/gnome-defs.h>
|
||||
|
||||
Tue Feb 17 23:37:50 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||
|
||||
* libgnome/gnome-dentry.c (gnome_desktop_entry_load): Provide a
|
||||
default for the Terminal entry.
|
||||
|
||||
Mon Feb 16 13:13:19 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* libgnome/gnome-config.c (gnome_config_get_vector_with_default):
|
||||
Don't include space separator at start of a vector element.
|
||||
|
||||
Sat Feb 14 00:35:54 1998 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* Makefile.am (confexecdir): Renamed.
|
||||
(confexec_DATA): Likewise.
|
||||
|
||||
* configure.in (GNOME_LIBDIR, GNOME_INCLUDEDIR): Define to be
|
||||
expanded in make.
|
||||
(AC_OUTPUT): Don't create gnomeConf.sh.
|
||||
* Makefile.am (release): Fixed typo.
|
||||
(gnomeConf.sh): New target.
|
||||
|
||||
1998-02-13 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* configure.in (GNOME_INCLUDEDIR): Include `-I'.
|
||||
(GNOME_LIBDIR): Include `-L'.
|
||||
|
||||
* autogen.sh: Moved most of the stuff to `macros/autogen.sh'.
|
||||
|
||||
* Makefile.am (SUBDIRS): Add macros.
|
||||
(macros/macros.dep): New maintainer rule for handling automatic
|
||||
rebuilding of aclocal.m4 if any of the macros in `macros/' change.
|
||||
|
||||
* configure.in (AC_OUTPUT): Generate macros/Makefile too.
|
||||
|
||||
1998-02-12 Federico Mena Quintero <federico@nuclecu.unam.mx>
|
||||
|
||||
* libgnomeui/gnome-app.c (gnome_app_configure_positions): Fixed
|
||||
bug where it would sigsegv if the app had a toolbar but no menubar.
|
||||
(gnome_app_new): Removed unused variable prefix.
|
||||
Removed unused prototype for gnome_app_rightclick_event.
|
||||
(gnome_app_rightclick_menubar): Removed unused variable i.
|
||||
(gnome_app_rightclick_toolbar): Likewise.
|
||||
(gnome_app_set_menus): Fixed uninitialized variable warnings.
|
||||
(gnome_app_rightclick_menubar): gtk_menu_popup time parameter set
|
||||
to event->time. This makes the popup timer work correctly.
|
||||
(gnome_app_rightclick_toolbar): Likewise.
|
||||
|
||||
1998-02-12 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* configure.in (GNOME_LIBDIR,GNOME_INCLUDEDIR): New configuration
|
||||
variables used in `gnomeConf.sh'.
|
||||
* gnomeConf.sh.in (GNOME_LIBDIR,GNOME_INCLUDEDIR): Moved here from
|
||||
the `install-data-local' rule.
|
||||
|
||||
* Makefile.am (SUBDIRS): Add `support'.
|
||||
(install-data-local): Remove.
|
||||
|
||||
1998-02-10 Raja R Harinath <harinath@cs.umn.edu>
|
||||
|
||||
* HACKING: Added a note about `aclocal' and the `macros' subdir.
|
||||
|
||||
* autogen.sh: Run `aclocal -I macros' if macros subdir exists.
|
||||
|
||||
* configure.in: Moved AC_GNOME_CHECK and AC_GNOME_X_CHECKS to
|
||||
macros subdir (as gnome.m4 and gnome-x-checks.m4 resp.).
|
27
Copyright
Normal file
27
Copyright
Normal file
@ -0,0 +1,27 @@
|
||||
Copyright © 1998 World Wide Web Consortium, (Massachusetts Institute of
|
||||
Technology, Institut National de Recherche en Informatique et en
|
||||
Automatique, Keio University). All Rights Reserved.
|
||||
|
||||
This software is available under the GNU Library Public License as described
|
||||
in the COPYING.LIB file.
|
||||
|
||||
Note that the original distribution from W3C is also available under the
|
||||
W3C IPR SOFTWARE NOTICE, described at http://www.w3.org/COPYRIGHT.html
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Daniel Veillard <Daniel.Veillard@w3.org>
|
||||
Fri Jul 24 1998
|
||||
|
37
Makefile.am
Normal file
37
Makefile.am
Normal file
@ -0,0 +1,37 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
noinst_PROGRAMS=tester
|
||||
|
||||
lib_LTLIBRARIES = libxml_0.10.la
|
||||
|
||||
libxml_0_10_la_SOURCES = \
|
||||
xml_entities.c \
|
||||
xml_parser.c \
|
||||
xml_tree.c
|
||||
|
||||
include_HEADERS = \
|
||||
xml_entities.h \
|
||||
xml_parser.h \
|
||||
xml_tree.h
|
||||
|
||||
DEPS = $(top_builddir)/libxml_0.10.la
|
||||
LDADDS = $(top_builddir)/libxml_0.10.la @Z_LIBS@
|
||||
|
||||
tester_SOURCES=tester.c
|
||||
tester_LDFLAGS =
|
||||
tester_DEPENDENCIES = $(DEPS)
|
||||
tester_LDADD= $(LDADDS)
|
||||
|
||||
tests : tester
|
||||
@(DIR=`pwd`; cd $(srcdir) ; for i in test/* ; do \
|
||||
if [ ! -d $$i ] ; then \
|
||||
if [ ! -f result/`basename $$i` ] ; then \
|
||||
echo New test file `basename $$i` ; \
|
||||
$$DIR/tester $$i > result/`basename $$i` ; \
|
||||
else \
|
||||
echo Testing `basename $$i` ; \
|
||||
$$DIR/tester $$i > result.`basename $$i` ; \
|
||||
diff result/`basename $$i` result.`basename $$i` ; \
|
||||
rm result.`basename $$i` ; \
|
||||
fi ; fi ; done)
|
||||
|
30
TODO
Normal file
30
TODO
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
TODO for the XML parser:
|
||||
|
||||
- Support for UTF-8 encoding
|
||||
- progressive parsing. Currently the parser uses a single
|
||||
string containing the full document. The good point is
|
||||
that there is no context associated with the parser, the
|
||||
full state is in the stack. The bad point is that such a
|
||||
recursive design is hard to make progressive ...
|
||||
- Better error handling, use a dedicated, overridable error
|
||||
handling function.
|
||||
- Keep track of line numbers for better error reporting.
|
||||
- DOM support, instead of using a proprietary in memory
|
||||
format for the document representation, the parser should
|
||||
call a DOM API to actually build the resulting document.
|
||||
Then the parser becomes independent of the in-memory
|
||||
representation of the document. Even better using RPC's
|
||||
the parser can actually build the document in another
|
||||
program.
|
||||
- finish the support for Entities.
|
||||
- Support for Comments (bad, should be in ASAP, they are parsed
|
||||
but not stored).
|
||||
- Support for PI.
|
||||
- Support for CDATA.
|
||||
|
||||
Done:
|
||||
- C++ support : John Ehresman <jehresma@dsg.harvard.edu>
|
||||
- Updated code to follow more recent specs, added compatibility flag
|
||||
|
||||
$Id$
|
50
autogen.sh
Executable file
50
autogen.sh
Executable file
@ -0,0 +1,50 @@
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
DIE=0
|
||||
|
||||
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "You must have autoconf installed to compile GLIB."
|
||||
echo "Download the appropriate package for your distribution,"
|
||||
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
|
||||
DIE=1
|
||||
}
|
||||
|
||||
(libtool --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "You must have libtool installed to compile GLIB."
|
||||
echo "Get ftp://alpha.gnu.org/gnu/libtool-1.0h.tar.gz"
|
||||
echo "(or a newer version if it is available)"
|
||||
DIE=1
|
||||
}
|
||||
|
||||
(automake --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "You must have automake installed to compile GLIB."
|
||||
echo "Get ftp://ftp.cygnus.com/pub/home/tromey/automake-1.2d.tar.gz"
|
||||
echo "(or a newer version if it is available)"
|
||||
DIE=1
|
||||
}
|
||||
|
||||
if test "$DIE" -eq 1; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test -f xml_entities.h || {
|
||||
echo "You must run this script in the top-level GLIB directory"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if test -z "$*"; then
|
||||
echo "I am going to run ./configure with no arguments - if you wish "
|
||||
echo "to pass any to it, please specify them on the $0 command line."
|
||||
fi
|
||||
|
||||
aclocal
|
||||
automake
|
||||
autoconf
|
||||
./configure "$@"
|
||||
|
||||
echo
|
||||
echo "Now type 'make' to compile GLIB."
|
35
configure.in
Normal file
35
configure.in
Normal file
@ -0,0 +1,35 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_PREREQ(2.2)
|
||||
AC_INIT(xml_entities.h)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AM_INIT_AUTOMAKE(libxml, 0.10)
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
AC_PATH_PROG(RM, rm, /bin/rm)
|
||||
AC_PATH_PROG(MV, mv, /bin/mv)
|
||||
AC_PATH_PROG(TAR, tar, /bin/tar)
|
||||
AC_PATH_PROG(GZIP, gzip, /bin/gzip)
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
dnl Checks for libraries.
|
||||
Z_LIBS=
|
||||
AC_CHECK_LIB(z, inflate,
|
||||
AC_CHECK_HEADER(zlib.h,
|
||||
Z_LIBS="-lz"; AC_DEFINE(HAVE_LIBZ)))
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_DIRENT
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(fcntl.h unistd.h ctype.h dirent.h errno.h malloc.h)
|
||||
AC_CHECK_HEADERS(stdarg.h sys/stat.h sys/types.h time.h zlib.h)
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_FUNC_STRFTIME
|
||||
AC_CHECK_FUNCS(strdup strndup strerror snprintf )
|
||||
AC_SUBST(Z_LIBS)
|
||||
AC_OUTPUT(Makefile)
|
250
install-sh
Executable file
250
install-sh
Executable file
@ -0,0 +1,250 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||
#
|
||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||
#
|
||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||
# documentation for any purpose is hereby granted without fee, provided that
|
||||
# the above copyright notice appear in all copies and that both that
|
||||
# copyright notice and this permission notice appear in supporting
|
||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||
# publicity pertaining to distribution of the software without specific,
|
||||
# written prior permission. M.I.T. makes no representations about the
|
||||
# suitability of this software for any purpose. It is provided "as is"
|
||||
# without express or implied warranty.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch. It can only install one file at a time, a restriction
|
||||
# shared with many OS's install programs.
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
transformbasename=""
|
||||
transform_arg=""
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
# this colon is to work around a 386BSD /bin/sh bug
|
||||
:
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "install: no input file specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
dst=$src
|
||||
src=""
|
||||
|
||||
if [ -d $dst ]; then
|
||||
instcmd=:
|
||||
else
|
||||
instcmd=mkdir
|
||||
fi
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f $src -o -d $src ]
|
||||
then
|
||||
true
|
||||
else
|
||||
echo "install: $src does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d $dst ]
|
||||
then
|
||||
dst="$dst"/`basename $src`
|
||||
else
|
||||
true
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if [ ! -d "$dstdir" ]; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-${defaultIFS}}"
|
||||
|
||||
oIFS="${IFS}"
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS="${oIFS}"
|
||||
|
||||
pathcomp=''
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp="${pathcomp}${1}"
|
||||
shift
|
||||
|
||||
if [ ! -d "${pathcomp}" ] ;
|
||||
then
|
||||
$mkdirprog "${pathcomp}"
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
pathcomp="${pathcomp}/"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
$doit $instcmd $dst &&
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||
else
|
||||
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
|
||||
if [ x"$transformarg" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
dstfile=`basename $dst $transformbasename |
|
||||
sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename
|
||||
|
||||
if [ x"$dstfile" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd $src $dsttmp &&
|
||||
|
||||
trap "rm -f ${dsttmp}" 0 &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||
|
||||
fi &&
|
||||
|
||||
|
||||
exit 0
|
134
missing
Executable file
134
missing
Executable file
@ -0,0 +1,134 @@
|
||||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||
error status if there is no known handling for PROGRAM.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
automake touch all \`Makefile.in' files
|
||||
bison touch file \`y.tab.c'
|
||||
makeinfo touch the output file
|
||||
yacc touch file \`y.tab.c'"
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing - GNU libit 0.0"
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: Unknown \`$1' option"
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aclocal)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acinclude.m4' or \`configure.in'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`configure.in'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acconfig.h' or \`configure.in'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
touch config.h.in
|
||||
;;
|
||||
|
||||
automake)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print \
|
||||
| sed 's/^\(.*\).am$/touch \1.in/' \
|
||||
| sh
|
||||
;;
|
||||
|
||||
bison|yacc)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.y' file. You may need the \`Bison' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Bison' from any GNU archive site."
|
||||
touch y.tab.c
|
||||
;;
|
||||
|
||||
makeinfo)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
indirectly affecting the aspect of the manual. The spurious
|
||||
call might also be the consequence of using a buggy \`make' (AIX,
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
||||
fi
|
||||
touch $file
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||
system. You might have modified some files without having the
|
||||
proper tools for further handling them. Check the \`README' file,
|
||||
it often tells you about the needed prerequirements for installing
|
||||
this package. You may also peek at any GNU archive site, in case
|
||||
some other package would contain this missing \`$1' program."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
40
mkinstalldirs
Executable file
40
mkinstalldirs
Executable file
@ -0,0 +1,40 @@
|
||||
#! /bin/sh
|
||||
# mkinstalldirs --- make directory hierarchy
|
||||
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||
# Created: 1993-05-16
|
||||
# Public domain
|
||||
|
||||
# $Id$
|
||||
|
||||
errstatus=0
|
||||
|
||||
for file
|
||||
do
|
||||
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||
shift
|
||||
|
||||
pathcomp=
|
||||
for d
|
||||
do
|
||||
pathcomp="$pathcomp$d"
|
||||
case "$pathcomp" in
|
||||
-* ) pathcomp=./$pathcomp ;;
|
||||
esac
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
echo "mkdir $pathcomp" 1>&2
|
||||
|
||||
mkdir "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
errstatus=$lasterr
|
||||
fi
|
||||
fi
|
||||
|
||||
pathcomp="$pathcomp/"
|
||||
done
|
||||
done
|
||||
|
||||
exit $errstatus
|
||||
|
||||
# mkinstalldirs ends here
|
30
result/dav1
Normal file
30
result/dav1
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
|
||||
------- test/dav1 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.foo.bar/boxschema" prefix="R"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:prop>
|
||||
<R:bigbox>
|
||||
<R:BoxType>Box type A</R:BoxType>
|
||||
</R:bigbox>
|
||||
<R:author>
|
||||
<R:Name>J.J. Dingleheimerschmidt</R:Name>
|
||||
</R:author>
|
||||
</D:prop>
|
||||
<D:status>HTTP/1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:prop>
|
||||
<R:DingALing/>
|
||||
<R:Random/>
|
||||
</D:prop>
|
||||
<D:status>HTTP/1.1 403 Forbidden</D:status>
|
||||
<D:responsedescription> The user does not have access to the DingALing property.
|
||||
</D:responsedescription>
|
||||
</D:response>
|
||||
<D:responsedescription> There has been an access violation error.
|
||||
</D:responsedescription>
|
||||
</D:multistatus>
|
8
result/dav10
Normal file
8
result/dav10
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
|
||||
------- test/dav10 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:owner>
|
||||
<D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
|
||||
</D:owner>
|
25
result/dav11
Normal file
25
result/dav11
Normal file
@ -0,0 +1,25 @@
|
||||
|
||||
|
||||
------- test/dav11 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:prop>
|
||||
<D:lockdiscovery>
|
||||
<D:activelock>
|
||||
<D:locktype>write</D:locktype>
|
||||
<D:lockscope>exclusive</D:lockscope>
|
||||
<D:addlocks/>
|
||||
<D:owner>
|
||||
<D:href>
|
||||
http://www.ics.uci.edu/~ejw/contact.html
|
||||
</D:href>
|
||||
</D:owner>
|
||||
<D:timeout>Second-604800</D:timeout>
|
||||
<D:locktoken>
|
||||
<D:href>
|
||||
opaquelocktoken:xyz122393481230912asdfa09s8df09s7df
|
||||
</D:href>
|
||||
</D:locktoken>
|
||||
</D:activelock>
|
||||
</D:lockdiscovery>
|
||||
</D:prop>
|
6
result/dav12
Normal file
6
result/dav12
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
|
||||
------- test/dav12 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
|
20
result/dav13
Normal file
20
result/dav13
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
------- test/dav13 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:href>
|
||||
http://webdav.sb.aol.com/workspace/webdav/proposal.doc
|
||||
</D:href>
|
||||
<D:href>
|
||||
http://webdav.sb.aol.com/workspace/webdav/
|
||||
</D:href>
|
||||
<D:status>HTTP/1.1 202 Accepted</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:href>http://foo.bar/blah</D:href>
|
||||
<D:status>HTTP/1.1 403 Forbidden</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
17
result/dav14
Normal file
17
result/dav14
Normal file
@ -0,0 +1,17 @@
|
||||
|
||||
|
||||
------- test/dav14 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/patch/" prefix="D"?>
|
||||
<D:resourceupdate>
|
||||
<D:replace XML-SPACE="PRESERVE">
|
||||
<D:octet-range>14</D:octet-range>
|
||||
003CTITLE003ENew
|
||||
Title003C/TITLE003E </D:replace>
|
||||
<D:delete>
|
||||
<D:octet-range>38-50</D:octet-range>
|
||||
</D:delete>
|
||||
<D:insert XML-SPACE="PRESERVE">
|
||||
<D:octet-range>86</D:octet-range>
|
||||
003CP003ENew paragraph003C/P003E </D:insert>
|
||||
</D:resourceupdate>
|
25
result/dav15
Normal file
25
result/dav15
Normal file
@ -0,0 +1,25 @@
|
||||
|
||||
|
||||
------- test/dav15 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.foocorp.com/Project/" prefix="F"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:prop>
|
||||
<D:Source>
|
||||
<D:link>
|
||||
<F:projfiles>Source</F:projfiles>
|
||||
<D:src>http://foo.bar/program</D:src>
|
||||
<D:dst>http://foo.bar/src/main.c</D:dst>
|
||||
</D:link>
|
||||
<D:link>
|
||||
<F:projfiles>Library</F:projfiles>
|
||||
<D:src>http://foo.bar/program</D:src>
|
||||
<D:dst>http://foo.bar/src/main.lib</D:dst>
|
||||
</D:link>
|
||||
<D:link>
|
||||
<F:projfiles>Makefile</F:projfiles>
|
||||
<D:src>http://foo.bar/program</D:src>
|
||||
<D:dst>http://foo.bar/src/makefile</D:dst>
|
||||
</D:link>
|
||||
</D:Source>
|
||||
</D:prop>
|
10
result/dav16
Normal file
10
result/dav16
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
|
||||
------- test/dav16 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:propfind>
|
||||
<D:prop>
|
||||
<lockdiscovery/>
|
||||
</D:prop>
|
||||
</D:propfind>
|
26
result/dav17
Normal file
26
result/dav17
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
|
||||
------- test/dav17 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:prop>
|
||||
<D:lockdiscovery>
|
||||
<D:activelock>
|
||||
<D:locktype>write</D:locktype>
|
||||
<D:lockscope>exclusive</D:lockscope>
|
||||
<D:addlocks>
|
||||
<D:href>http://foo.com/doc/</D:href>
|
||||
</D:addlocks>
|
||||
<D:owner>Jane Smith</D:owner>
|
||||
<D:timeout>Infinite</D:timeout>
|
||||
<D:locktoken>
|
||||
<D:href>iamuri:unique!!!!!</D:href>
|
||||
</D:locktoken>
|
||||
</D:activelock>
|
||||
</D:lockdiscovery>
|
||||
</D:prop>
|
||||
<D:status>HTTP/1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
10
result/dav18
Normal file
10
result/dav18
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
|
||||
------- test/dav18 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:propfind>
|
||||
<D:prop>
|
||||
<supportedlock/>
|
||||
</D:prop>
|
||||
</D:propfind>
|
22
result/dav19
Normal file
22
result/dav19
Normal file
@ -0,0 +1,22 @@
|
||||
|
||||
|
||||
------- test/dav19 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:prop>
|
||||
<D:supportedlock>
|
||||
<D:LockEntry>
|
||||
<D:locktype>Write</D:locktype>
|
||||
<D:lockscope>Exclusive</D:lockscope>
|
||||
</D:LockEntry>
|
||||
<D:LockEntry>
|
||||
<D:locktype>Write</D:locktype>
|
||||
<D:lockscope>Shared</D:lockscope>
|
||||
</D:LockEntry>
|
||||
</D:supportedlock>
|
||||
</D:prop>
|
||||
<D:status>HTTP/1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
29
result/dav2
Normal file
29
result/dav2
Normal file
@ -0,0 +1,29 @@
|
||||
|
||||
|
||||
------- test/dav2 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.foo.bar/boxschema/" prefix="R"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="S"?>
|
||||
<S:multistatus>
|
||||
<S:response>
|
||||
<S:href>http://www.foo.bar/container/</S:href>
|
||||
<S:prop>
|
||||
<R:bigbox>
|
||||
<R:BoxType>Box type A</R:BoxType>
|
||||
</R:bigbox>
|
||||
<R:author>
|
||||
<R:Name>Hadrian</R:Name>
|
||||
</R:author>
|
||||
</S:prop>
|
||||
<S:status>HTTP 1.1 200 OK</S:status>
|
||||
</S:response>
|
||||
<S:response>
|
||||
<S:href>http://www.foo.bar/container/index.html</S:href>
|
||||
<S:prop>
|
||||
<R:bigbox>
|
||||
<R:BoxType>Box type B</R:BoxType>
|
||||
</R:bigbox>
|
||||
</S:prop>
|
||||
<S:status>HTTP 1.1 200 OK</S:status>
|
||||
</S:response>
|
||||
</S:multistatus>
|
23
result/dav3
Normal file
23
result/dav3
Normal file
@ -0,0 +1,23 @@
|
||||
|
||||
|
||||
------- test/dav3 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.foo.bar/boxschema/" prefix="R"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:href>http://www.foo.bar/container/</D:href>
|
||||
<D:prop>
|
||||
<R:bigbox/>
|
||||
<R:author/>
|
||||
</D:prop>
|
||||
<D:status>HTTP 1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:href>http://www.foo.bar/container/index.html</D:href>
|
||||
<D:prop>
|
||||
<R:bigbox/>
|
||||
</D:prop>
|
||||
<D:status>HTTP 1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
21
result/dav4
Normal file
21
result/dav4
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
|
||||
------- test/dav4 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.w3.com/standards/z39.50/" prefix="Z"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:propertyupdate>
|
||||
<D:set>
|
||||
<D:prop>
|
||||
<Z:authors>
|
||||
<Z:Author>Jim Whitehead</Z:Author>
|
||||
<Z:Author>Roy Fielding</Z:Author>
|
||||
</Z:authors>
|
||||
</D:prop>
|
||||
</D:set>
|
||||
<D:remove>
|
||||
<D:prop>
|
||||
<Z:Copyright-Owner/>
|
||||
</D:prop>
|
||||
</D:remove>
|
||||
</D:propertyupdate>
|
22
result/dav5
Normal file
22
result/dav5
Normal file
@ -0,0 +1,22 @@
|
||||
|
||||
|
||||
------- test/dav5 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.w3.com/standards/z39.50/" prefix="Z"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:prop>
|
||||
<Z:Authors/>
|
||||
</D:prop>
|
||||
<D:status>HTTP/1.1 420 Method Failure</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:prop>
|
||||
<Z:Copyright-Owner/>
|
||||
</D:prop>
|
||||
<D:status>HTTP/1.1 409 Conflict</D:status>
|
||||
</D:response>
|
||||
<D:responsedescription> Copyright Owner can not be deleted or
|
||||
altered.</D:responsedescription>
|
||||
</D:multistatus>
|
26
result/dav6
Normal file
26
result/dav6
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
|
||||
------- test/dav6 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:href>http://www.microsoft.com/user/yarong/dav_drafts/
|
||||
</D:href>
|
||||
<D:prop>
|
||||
<D:resourcetype>
|
||||
<D:collection/>
|
||||
</D:resourcetype>
|
||||
</D:prop>
|
||||
<D:status>HTTP 1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:href>
|
||||
http://www.microsoft.com/user/yarong/dav_drafts/base
|
||||
</D:href>
|
||||
<D:prop>
|
||||
<D:resourcetype/>
|
||||
</D:prop>
|
||||
<D:status>HTTP 1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
20
result/dav7
Normal file
20
result/dav7
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
------- test/dav7 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="d"?>
|
||||
<d:multistatus>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/resource1</d:href>
|
||||
<d:href>http://www.foo.bar/container/resource2</d:href>
|
||||
<d:status>HTTP/1.1 200 OK</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/</d:href>
|
||||
<d:status>HTTP/1.1 420 Method Failure</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/resource3</d:href>
|
||||
<d:status>HTTP/1.1 412 Precondition Failed</d:status>
|
||||
</d:response>
|
||||
</d:multistatus>
|
18
result/dav8
Normal file
18
result/dav8
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
|
||||
------- test/dav8 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="d"?>
|
||||
<d:multistatus>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/othercontainer/resource1</d:href>
|
||||
<d:href>http://www.foo.bar/othercontainer/resource2</d:href>
|
||||
<d:href>http://www.foo.bar/othercontainer/</d:href>
|
||||
<d:href>http://www.foo.bar/othercontainer/R2/D2</d:href>
|
||||
<d:status>HTTP/1.1 201 Created</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/othercontainer/R2/</d:href>
|
||||
<d:status>HTTP/1.1 412 Precondition Failed</d:status>
|
||||
</d:response>
|
||||
</d:multistatus>
|
22
result/dav9
Normal file
22
result/dav9
Normal file
@ -0,0 +1,22 @@
|
||||
|
||||
|
||||
------- test/dav9 -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.ietf.org/standards/dav/" prefix="d"?>
|
||||
<d:multistatus>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/resource1</d:href>
|
||||
<d:href>http://www.foo.bar/container/resource2</d:href>
|
||||
<d:href>http://www.foo.bar/container/</d:href>
|
||||
<d:href>http://www.foo.bar/container/C2/R2</d:href>
|
||||
<d:status>HTTP/1.1 201 Created</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/C2</d:href>
|
||||
<d:status>HTTP/1.1 420 Method Failure</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/othercontainer/C2</d:href>
|
||||
<d:status>HTTP/1.1 409 Conflict</d:status>
|
||||
</d:response>
|
||||
</d:multistatus>
|
26
result/p3p
Normal file
26
result/p3p
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
|
||||
------- test/p3p -----------
|
||||
<?xml version="1.0"?>
|
||||
<?xml:namespace ns="http://www.w3.org/TR/WD-rdf-syntax#" prefix="RDF"?>
|
||||
<RDF:RDF>
|
||||
<PROP assurance="http://www.TrustUs.org" agreeID="94df1293a3e519bb" entity="CoolCatalog" realm="http://www.CoolCatalog.com/catalogue/">
|
||||
<USES>
|
||||
<STATEMENT consq="a site with clothes you'd appreciate." id="0" recpnt="0" purp="2,3">
|
||||
<WITH>
|
||||
<PREFIX name="User.">
|
||||
<REF name="Name.First"/>
|
||||
<REF optional="1" name="Bdate.Year"/>
|
||||
<REF name="Gender"/>
|
||||
</PREFIX>
|
||||
</WITH>
|
||||
</STATEMENT>
|
||||
</USES>
|
||||
<USES>
|
||||
<STATEMENT id="1" recpnt="0" purp="0" action="read&write">
|
||||
<REF name="User.Shipping."/>
|
||||
</STATEMENT>
|
||||
</USES>
|
||||
<DISCLOSURE other="0,1" access="3" discURI="http://www.CoolCatalog.com/PrivacyPractice.html"/>
|
||||
</PROP>
|
||||
</RDF:RDF>
|
24
test/dav1
Normal file
24
test/dav1
Normal file
@ -0,0 +1,24 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href ="http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<?namespace href = "http://www.foo.bar/boxschema" AS = "R"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:prop>
|
||||
<R:bigbox>
|
||||
<R:BoxType>Box type A</R:BoxType>
|
||||
</R:bigbox>
|
||||
<R:author>
|
||||
<R:Name>J.J. Dingleheimerschmidt</R:Name>
|
||||
</R:author>
|
||||
</D:prop>
|
||||
<D:status>HTTP/1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:prop><R:DingALing/><R:Random/></D:prop>
|
||||
<D:status>HTTP/1.1 403 Forbidden</D:status>
|
||||
<D:responsedescription> The user does not have access to the DingALing property.
|
||||
</D:responsedescription>
|
||||
</D:response>
|
||||
<D:responsedescription> There has been an access violation error.
|
||||
</D:responsedescription>
|
||||
</D:multistatus>
|
5
test/dav10
Normal file
5
test/dav10
Normal file
@ -0,0 +1,5 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href="http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<D:owner>
|
||||
<D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
|
||||
</D:owner>
|
22
test/dav11
Normal file
22
test/dav11
Normal file
@ -0,0 +1,22 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href ="http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<D:prop>
|
||||
<D:lockdiscovery>
|
||||
<D:activelock>
|
||||
<D:locktype>write</D:locktype>
|
||||
<D:lockscope>exclusive</D:lockscope>
|
||||
<D:addlocks/>
|
||||
<D:owner>
|
||||
<D:href>
|
||||
http://www.ics.uci.edu/~ejw/contact.html
|
||||
</D:href>
|
||||
</D:owner>
|
||||
<D:timeout>Second-604800</D:timeout>
|
||||
<D:locktoken>
|
||||
<D:href>
|
||||
opaquelocktoken:xyz122393481230912asdfa09s8df09s7df
|
||||
</D:href>
|
||||
</D:locktoken>
|
||||
</D:activelock>
|
||||
</D:lockdiscovery>
|
||||
</D:prop>
|
3
test/dav12
Normal file
3
test/dav12
Normal file
@ -0,0 +1,3 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href="http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
|
17
test/dav13
Normal file
17
test/dav13
Normal file
@ -0,0 +1,17 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:href>
|
||||
http://webdav.sb.aol.com/workspace/webdav/proposal.doc
|
||||
</D:href>
|
||||
<D:href>
|
||||
http://webdav.sb.aol.com/workspace/webdav/
|
||||
</D:href>
|
||||
<D:status>HTTP/1.1 202 Accepted</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:href>http://foo.bar/blah</D:href>
|
||||
<D:status>HTTP/1.1 403 Forbidden</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
10
test/dav14
Normal file
10
test/dav14
Normal file
@ -0,0 +1,10 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/patch/" AS =
|
||||
"D"?>
|
||||
<D:resourceupdate>
|
||||
<D:replace XML-SPACE = "PRESERVE">
|
||||
<D:octet-range>14</D:octet-range>&003CTITLE&003ENew
|
||||
Title&003C/TITLE&003E</D:replace>
|
||||
<D:delete><D:octet-range>38-50</D:octet-range></D:delete>
|
||||
<D:insert XML-SPACE = "PRESERVE"><D:octet-range>86</D:octet-range>&003CP&003ENew paragraph&003C/P&003E</D:insert>
|
||||
</D:resourceupdate>
|
22
test/dav15
Normal file
22
test/dav15
Normal file
@ -0,0 +1,22 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<?namespace href = "http://www.foocorp.com/Project/" AS = "F"?>
|
||||
<D:prop>
|
||||
<D:Source>
|
||||
<D:link>
|
||||
<F:projfiles>Source</F:projfiles>
|
||||
<D:src>http://foo.bar/program</D:src>
|
||||
<D:dst>http://foo.bar/src/main.c</D:dst>
|
||||
</D:link>
|
||||
<D:link>
|
||||
<F:projfiles>Library</F:projfiles>
|
||||
<D:src>http://foo.bar/program</D:src>
|
||||
<D:dst>http://foo.bar/src/main.lib</D:dst>
|
||||
</D:link>
|
||||
<D:link>
|
||||
<F:projfiles>Makefile</F:projfiles>
|
||||
<D:src>http://foo.bar/program</D:src>
|
||||
<D:dst>http://foo.bar/src/makefile</D:dst>
|
||||
</D:link>
|
||||
</D:Source>
|
||||
</D:prop>
|
5
test/dav16
Normal file
5
test/dav16
Normal file
@ -0,0 +1,5 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<D:propfind>
|
||||
<D:prop><lockdiscovery/></D:prop>
|
||||
</D:propfind>
|
23
test/dav17
Normal file
23
test/dav17
Normal file
@ -0,0 +1,23 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href ="http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:prop>
|
||||
<D:lockdiscovery>
|
||||
<D:activelock>
|
||||
<D:locktype>write</D:locktype>
|
||||
<D:lockscope>exclusive</D:lockscope>
|
||||
<D:addlocks>
|
||||
<D:href>http://foo.com/doc/</D:href>
|
||||
</D:addlocks>
|
||||
<D:owner>Jane Smith</D:owner>
|
||||
<D:timeout>Infinite</D:timeout>
|
||||
<D:locktoken>
|
||||
<D:href>iamuri:unique!!!!!</D:href>
|
||||
</D:locktoken>
|
||||
</D:activelock>
|
||||
</D:lockdiscovery>
|
||||
</D:prop>
|
||||
<D:status>HTTP/1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
5
test/dav18
Normal file
5
test/dav18
Normal file
@ -0,0 +1,5 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<D:propfind>
|
||||
<D:prop><supportedlock/></D:prop>
|
||||
</D:propfind>
|
19
test/dav19
Normal file
19
test/dav19
Normal file
@ -0,0 +1,19 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href ="http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:prop>
|
||||
<D:supportedlock>
|
||||
<D:LockEntry>
|
||||
<D:locktype>Write</D:locktype>
|
||||
<D:lockscope>Exclusive</D:lockscope>
|
||||
</D:LockEntry>
|
||||
<D:LockEntry>
|
||||
<D:locktype>Write</D:locktype>
|
||||
<D:lockscope>Shared</D:lockscope>
|
||||
</D:LockEntry>
|
||||
</D:supportedlock>
|
||||
</D:prop>
|
||||
<D:status>HTTP/1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
26
test/dav2
Normal file
26
test/dav2
Normal file
@ -0,0 +1,26 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "S"?>
|
||||
<?namespace href = "http://www.foo.bar/boxschema/" AS = "R"?>
|
||||
<S:multistatus>
|
||||
<S:response>
|
||||
<S:href>http://www.foo.bar/container/</S:href>
|
||||
<S:prop>
|
||||
<R:bigbox>
|
||||
<R:BoxType>Box type A</R:BoxType>
|
||||
</R:bigbox>
|
||||
<R:author>
|
||||
<R:Name>Hadrian</R:Name>
|
||||
</R:author>
|
||||
</S:prop>
|
||||
<S:status>HTTP 1.1 200 OK</S:status>
|
||||
</S:response>
|
||||
<S:response>
|
||||
<S:href>http://www.foo.bar/container/index.html</S:href>
|
||||
<S:prop>
|
||||
<R:bigbox>
|
||||
<R:BoxType>Box type B</R:BoxType>
|
||||
</R:bigbox>
|
||||
</S:prop>
|
||||
<S:status>HTTP 1.1 200 OK</S:status>
|
||||
</S:response>
|
||||
</S:multistatus>
|
20
test/dav3
Normal file
20
test/dav3
Normal file
@ -0,0 +1,20 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<?namespace href = "http://www.foo.bar/boxschema/" AS = "R"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:href>http://www.foo.bar/container/</D:href>
|
||||
<D:prop>
|
||||
<R:bigbox/>
|
||||
<R:author/>
|
||||
</D:prop>
|
||||
<D:status>HTTP 1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:href>http://www.foo.bar/container/index.html</D:href>
|
||||
<D:prop>
|
||||
<R:bigbox/>
|
||||
</D:prop>
|
||||
<D:status>HTTP 1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
16
test/dav4
Normal file
16
test/dav4
Normal file
@ -0,0 +1,16 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<?namespace href = "http://www.w3.com/standards/z39.50/" AS = "Z"?>
|
||||
<D:propertyupdate>
|
||||
<D:set>
|
||||
<D:prop>
|
||||
<Z:authors>
|
||||
<Z:Author>Jim Whitehead</Z:Author>
|
||||
<Z:Author>Roy Fielding</Z:Author>
|
||||
</Z:authors>
|
||||
</D:prop>
|
||||
</D:set>
|
||||
<D:remove>
|
||||
<D:prop><Z:Copyright-Owner/></D:prop>
|
||||
</D:remove>
|
||||
</D:propertyupdate>
|
15
test/dav5
Normal file
15
test/dav5
Normal file
@ -0,0 +1,15 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href="http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<?namespace href="http://www.w3.com/standards/z39.50/" AS = "Z"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:prop><Z:Authors/></D:prop>
|
||||
<D:status>HTTP/1.1 420 Method Failure</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:prop><Z:Copyright-Owner/></D:prop>
|
||||
<D:status>HTTP/1.1 409 Conflict</D:status>
|
||||
</D:response>
|
||||
<D:responsedescription> Copyright Owner can not be deleted or
|
||||
altered.</D:responsedescription>
|
||||
</D:multistatus>
|
23
test/dav6
Normal file
23
test/dav6
Normal file
@ -0,0 +1,23 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "D"?>
|
||||
<D:multistatus>
|
||||
<D:response>
|
||||
<D:href>http://www.microsoft.com/user/yarong/dav_drafts/
|
||||
</D:href>
|
||||
<D:prop>
|
||||
<D:resourcetype>
|
||||
<D:collection/>
|
||||
</D:resourcetype>
|
||||
</D:prop>
|
||||
<D:status>HTTP 1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
<D:response>
|
||||
<D:href>
|
||||
http://www.microsoft.com/user/yarong/dav_drafts/base
|
||||
</D:href>
|
||||
<D:prop>
|
||||
<D:resourcetype/>
|
||||
</D:prop>
|
||||
<D:status>HTTP 1.1 200 OK</D:status>
|
||||
</D:response>
|
||||
</D:multistatus>
|
17
test/dav7
Normal file
17
test/dav7
Normal file
@ -0,0 +1,17 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "d"?>
|
||||
<d:multistatus>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/resource1</d:href>
|
||||
<d:href>http://www.foo.bar/container/resource2</d:href>
|
||||
<d:status>HTTP/1.1 200 OK</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/</d:href>
|
||||
<d:status>HTTP/1.1 420 Method Failure</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/resource3</d:href>
|
||||
<d:status>HTTP/1.1 412 Precondition Failed</d:status>
|
||||
</d:response>
|
||||
</d:multistatus>
|
15
test/dav8
Normal file
15
test/dav8
Normal file
@ -0,0 +1,15 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "d"?>
|
||||
<d:multistatus>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/othercontainer/resource1</d:href>
|
||||
<d:href>http://www.foo.bar/othercontainer/resource2</d:href>
|
||||
<d:href>http://www.foo.bar/othercontainer/</d:href>
|
||||
<d:href>http://www.foo.bar/othercontainer/R2/D2</d:href>
|
||||
<d:status>HTTP/1.1 201 Created</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/othercontainer/R2/</d:href>
|
||||
<d:status>HTTP/1.1 412 Precondition Failed</d:status>
|
||||
</d:response>
|
||||
</d:multistatus>
|
19
test/dav9
Normal file
19
test/dav9
Normal file
@ -0,0 +1,19 @@
|
||||
<?XML version="1.0">
|
||||
<?namespace href = "http://www.ietf.org/standards/dav/" AS = "d"?>
|
||||
<d:multistatus>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/resource1</d:href>
|
||||
<d:href>http://www.foo.bar/container/resource2</d:href>
|
||||
<d:href>http://www.foo.bar/container/</d:href>
|
||||
<d:href>http://www.foo.bar/container/C2/R2</d:href>
|
||||
<d:status>HTTP/1.1 201 Created</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/container/C2</d:href>
|
||||
<d:status>HTTP/1.1 420 Method Failure</d:status>
|
||||
</d:response>
|
||||
<d:response>
|
||||
<d:href>http://www.foo.bar/othercontainer/C2</d:href>
|
||||
<d:status>HTTP/1.1 409 Conflict</d:status>
|
||||
</d:response>
|
||||
</d:multistatus>
|
23
test/p3p
Normal file
23
test/p3p
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml:namespace ns="http//www.w3.org/TR/1998/WD-P3P10-syntax#proposal.DTD" prefix="p3p"?>
|
||||
<?xml:namespace ns="http://www.w3.org/TR/WD-rdf-syntax#" prefix="RDF"?>
|
||||
<RDF:RDF><PROP realm="http://www.CoolCatalog.com/catalogue/"
|
||||
entity="CoolCatalog" agreeID="94df1293a3e519bb"
|
||||
assurance="http://www.TrustUs.org">
|
||||
<USES>
|
||||
<STATEMENT purp="2,3" recpnt="0" id="0"
|
||||
consq="a site with clothes you'd appreciate.">
|
||||
<WITH><PREFIX name="User.">
|
||||
<REF name="Name.First"/>
|
||||
<REF name="Bdate.Year" optional="1"/>
|
||||
<REF name="Gender"/>
|
||||
</PREFIX></WITH>
|
||||
</STATEMENT>
|
||||
</USES>
|
||||
<USES>
|
||||
<STATEMENT action="read&write" purp="0" recpnt="0" id="1">
|
||||
<REF name="User.Shipping."/>
|
||||
</STATEMENT>
|
||||
</USES>
|
||||
<DISCLOSURE discURI="http://www.CoolCatalog.com/PrivacyPractice.html"
|
||||
access="3" other="0,1"/>
|
||||
</PROP></RDF:RDF>
|
102
tester.c
Normal file
102
tester.c
Normal file
@ -0,0 +1,102 @@
|
||||
/*
|
||||
* tester.c : a small tester program for XML input.
|
||||
*
|
||||
* See Copyright for the status of this software.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <malloc.h>
|
||||
|
||||
#include "xml_parser.h"
|
||||
#include "xml_tree.h"
|
||||
|
||||
#define MAX_BUF 500000
|
||||
|
||||
static CHAR buffer[MAX_BUF] =
|
||||
"\n\
|
||||
<?xml version=\"1.0\">\n\
|
||||
<?xml:namespace ns = \"http://www.ietf.org/standards/dav/\" prefix = \"D\"?>\n\
|
||||
<?xml:namespace ns = \"http://www.w3.com/standards/z39.50/\" prefix = \"Z\"?>\n\
|
||||
<D:propertyupdate>\n\
|
||||
<D:set a=\"'toto'\" b>\n\
|
||||
<D:prop>\n\
|
||||
<Z:authors>\n\
|
||||
<Z:Author>Jim Whitehead</Z:Author>\n\
|
||||
<Z:Author>Roy Fielding</Z:Author>\n\
|
||||
</Z:authors>\n\
|
||||
</D:prop>\n\
|
||||
</D:set>\n\
|
||||
<D:remove>\n\
|
||||
<D:prop><Z:Copyright-Owner/></D:prop>\n\
|
||||
</D:remove>\n\
|
||||
</D:propertyupdate>\n\
|
||||
\n\
|
||||
";
|
||||
|
||||
int readFile(char *filename) {
|
||||
int input;
|
||||
int res;
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
input = open (filename, O_RDONLY);
|
||||
if (input < 0) {
|
||||
fprintf (stderr, "Cannot read file %s :\n", filename);
|
||||
perror ("open failed");
|
||||
return(-1);
|
||||
}
|
||||
res = read(input, buffer, sizeof(buffer));
|
||||
if (res < 0) {
|
||||
fprintf (stderr, "Cannot read file %s :\n", filename);
|
||||
perror ("read failed");
|
||||
return(-1);
|
||||
}
|
||||
if (res >= MAX_BUF) {
|
||||
fprintf (stderr, "Read only %d byte of %s, increase MAX_BUF\n",
|
||||
res, filename);
|
||||
return(-1);
|
||||
}
|
||||
close(input);
|
||||
return(res);
|
||||
}
|
||||
|
||||
void parseAndPrint(CHAR *buf) {
|
||||
xmlDocPtr doc;
|
||||
|
||||
/*
|
||||
* build a fake XML document from a string;
|
||||
*/
|
||||
doc = xmlParseDoc(buf);
|
||||
|
||||
/*
|
||||
* print it.
|
||||
*/
|
||||
xmlDocDump(stdout, doc);
|
||||
|
||||
/*
|
||||
* free it.
|
||||
*/
|
||||
xmlFreeDoc(doc);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int i;
|
||||
|
||||
if (argc > 1) {
|
||||
for (i = 1; i < argc ; i++) {
|
||||
if (readFile(argv[i]) >= 0) {
|
||||
printf("\n\n------- %s -----------\n", argv[i]);
|
||||
parseAndPrint(buffer);
|
||||
}
|
||||
}
|
||||
} else
|
||||
parseAndPrint(buffer);
|
||||
|
||||
return(0);
|
||||
}
|
353
xml_entities.c
Normal file
353
xml_entities.c
Normal file
@ -0,0 +1,353 @@
|
||||
/*
|
||||
* entities.c : implementation for the XML entities handking
|
||||
*
|
||||
* See Copyright for the status of this software.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <malloc.h>
|
||||
#include <strings.h>
|
||||
#include "xml_entities.h"
|
||||
|
||||
/*
|
||||
* A buffer used for converting entities to their equivalent and back.
|
||||
*/
|
||||
static CHAR *buffer = NULL;
|
||||
static int buffer_size = 0;
|
||||
|
||||
void growBuffer(void) {
|
||||
buffer_size *= 2;
|
||||
buffer = (CHAR *) realloc(buffer, buffer_size * sizeof(CHAR));
|
||||
if (buffer == NULL) {
|
||||
perror("realloc failed");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* xmlFreeEntity : clean-up an entity record.
|
||||
*/
|
||||
|
||||
void xmlFreeEntity(xmlEntityPtr entity) {
|
||||
if (entity == NULL) return;
|
||||
|
||||
if (entity->value != NULL) free(entity->value);
|
||||
entity->value = NULL;
|
||||
if (entity->id != NULL)
|
||||
free((char *) entity->id);
|
||||
}
|
||||
|
||||
/*
|
||||
* xmlAddDocEntity : register a new entity for an entities table.
|
||||
*/
|
||||
static void xmlAddEntity(xmlEntitiesTablePtr table, CHAR *value,
|
||||
const CHAR *id) {
|
||||
int i;
|
||||
xmlEntityPtr cur;
|
||||
|
||||
for (i = 0;i < table->nb_entities;i++) {
|
||||
cur = &table->table[i];
|
||||
if (!xmlStrcmp(cur->id, id)) {
|
||||
free(cur->value);
|
||||
cur->value = xmlStrdup(value);
|
||||
}
|
||||
}
|
||||
if (table->nb_entities >= table->max_entities) {
|
||||
/*
|
||||
* need more elements.
|
||||
*/
|
||||
table->max_entities *= 2;
|
||||
table->table = (xmlEntityPtr)
|
||||
realloc(table->table, table->max_entities * sizeof(xmlEntity));
|
||||
if (table->table) {
|
||||
perror("realloc failed");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
cur = &table->table[table->nb_entities];
|
||||
cur->value = xmlStrdup(value);
|
||||
cur->id = xmlStrdup(id);
|
||||
table->nb_entities++;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* xmlAddDtdEntity : register a new entity for this document.
|
||||
*/
|
||||
void xmlAddDtdEntity(xmlDtdPtr dtd, CHAR *value, const CHAR *id) {
|
||||
xmlEntitiesTablePtr table;
|
||||
|
||||
table = (xmlEntitiesTablePtr) dtd->entities;
|
||||
if (table == NULL) {
|
||||
table = xmlCreateEntitiesTable();
|
||||
dtd->entities = table;
|
||||
}
|
||||
xmlAddEntity(table, value, id);
|
||||
}
|
||||
|
||||
/*
|
||||
* xmlAddDocEntity : register a new entity for this document.
|
||||
*/
|
||||
void xmlAddDocEntity(xmlDocPtr doc, CHAR *value, const CHAR *id) {
|
||||
xmlEntitiesTablePtr table;
|
||||
|
||||
table = (xmlEntitiesTablePtr) doc->entities;
|
||||
if (table == NULL) {
|
||||
table = xmlCreateEntitiesTable();
|
||||
doc->entities = table;
|
||||
}
|
||||
xmlAddEntity(table, value, id);
|
||||
}
|
||||
|
||||
/*
|
||||
* xmlGetEntity : do an entity lookup in the hash table and
|
||||
* returns the corrsponding CHAR *, if found, zero otherwise.
|
||||
*/
|
||||
CHAR *xmlGetEntity(xmlDocPtr doc, const CHAR *id) {
|
||||
int i;
|
||||
xmlEntityPtr cur;
|
||||
xmlEntitiesTablePtr table;
|
||||
|
||||
if (doc->entities == NULL) return(0);
|
||||
table = (xmlEntitiesTablePtr) doc->entities;
|
||||
for (i = 0;i < table->nb_entities;i++) {
|
||||
cur = &table->table[i];
|
||||
if (!xmlStrcmp(cur->id, id)) return(cur->value);
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* xmlReadEntities : read an entity.
|
||||
*/
|
||||
const CHAR *xmlReadEntity(xmlDocPtr doc, const CHAR **input) {
|
||||
static CHAR *entity = NULL;
|
||||
static int entity_size = 100;
|
||||
const CHAR *cur = *input;
|
||||
|
||||
if (entity == NULL) {
|
||||
entity = (CHAR *) malloc(entity_size * sizeof(CHAR));
|
||||
if (entity == NULL) {
|
||||
fprintf(stderr, "xmlReadEntity : cannot allocate %d bytes\n",
|
||||
entity_size * sizeof(CHAR));
|
||||
return(NULL);
|
||||
}
|
||||
}
|
||||
if (*cur == '&') {
|
||||
cur++;
|
||||
if (*cur == '#') {
|
||||
/* TODO !!!!
|
||||
fprintf(stderr, "Character reference not yet implemented\n"); */
|
||||
} else {
|
||||
/* TODO !!!!
|
||||
fprintf(stderr, "Entity search not yet implemented\n"); */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The few predefined entities.
|
||||
*/
|
||||
if ((cur[0] == 'a') && (cur[1] == 'm') && (cur[2] == 'p') &&
|
||||
(cur[3] == ';')) {
|
||||
entity[0] = '%';
|
||||
entity[1] = 0;
|
||||
cur += 3;
|
||||
*input = cur;
|
||||
return(entity);
|
||||
} else if ((cur[0] == 'q') && (cur[1] == 'u') && (cur[2] == 'o') &&
|
||||
(cur[3] == 't') && (cur[4] == ';')) {
|
||||
entity[0] = '"';
|
||||
entity[1] = 0;
|
||||
cur += 4;
|
||||
*input = cur;
|
||||
return(entity);
|
||||
} else if ((cur[0] == 'a') && (cur[1] == 'p') && (cur[2] == 'o') &&
|
||||
(cur[3] == 's') && (cur[4] == ';')) {
|
||||
entity[0] = '\'';
|
||||
entity[1] = 0;
|
||||
cur += 4;
|
||||
*input = cur;
|
||||
return(entity);
|
||||
} else if ((cur[0] == 'l') && (cur[1] == 't') && (cur[2] == ';')) {
|
||||
entity[0] = '<';
|
||||
entity[1] = 0;
|
||||
cur += 2;
|
||||
*input = cur;
|
||||
return(entity);
|
||||
} else if ((cur[0] == 'g') && (cur[1] == 't') && (cur[2] == ';')) {
|
||||
entity[0] = '>';
|
||||
entity[1] = 0;
|
||||
cur += 2;
|
||||
*input = cur;
|
||||
return(entity);
|
||||
}
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* xmlDecodeEntities : do a global entities lookup on a input string
|
||||
* and returns a duplicate after the entities substitution.
|
||||
*/
|
||||
CHAR *xmlDecodeEntities(xmlDocPtr doc, const CHAR *input, int len) {
|
||||
const CHAR *cur = input;
|
||||
CHAR *out = buffer;
|
||||
int i;
|
||||
|
||||
if (buffer == NULL) {
|
||||
buffer_size = 1000;
|
||||
buffer = (CHAR *) malloc(buffer_size * sizeof(CHAR));
|
||||
if (buffer == NULL) {
|
||||
perror("malloc failed");
|
||||
exit(1);
|
||||
}
|
||||
out = buffer;
|
||||
}
|
||||
for (i = 0;(*cur != 0) && (cur - input < len);cur++) {
|
||||
if (*cur == '&') {
|
||||
const CHAR *entity = xmlReadEntity(doc, &cur);
|
||||
if (entity != NULL)
|
||||
while (*entity != 0) {
|
||||
*out++ = *entity++;
|
||||
i++;
|
||||
if (i + 10 > buffer_size) {
|
||||
int index = out - buffer;
|
||||
|
||||
growBuffer();
|
||||
out = &buffer[index];
|
||||
}
|
||||
}
|
||||
} else if (*cur == '%') {
|
||||
/* TODO !!!!!
|
||||
fprintf(stderr, " \n"); */
|
||||
} else {
|
||||
*out++ = *cur;
|
||||
i++;
|
||||
}
|
||||
|
||||
if (i + 10 > buffer_size) {
|
||||
int index = out - buffer;
|
||||
|
||||
growBuffer();
|
||||
out = &buffer[index];
|
||||
}
|
||||
}
|
||||
*out++ = 0;
|
||||
return(buffer);
|
||||
}
|
||||
|
||||
/*
|
||||
* xmlEncodeEntities : do a global encoding of a string, replacing the
|
||||
* basic values with their entities form.
|
||||
*/
|
||||
CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input) {
|
||||
const CHAR *cur = input;
|
||||
CHAR *out = buffer;
|
||||
|
||||
if (buffer == NULL) {
|
||||
buffer_size = 1000;
|
||||
buffer = (CHAR *) malloc(buffer_size * sizeof(CHAR));
|
||||
if (buffer == NULL) {
|
||||
perror("malloc failed");
|
||||
exit(1);
|
||||
}
|
||||
out = buffer;
|
||||
}
|
||||
while (*cur != '\0') {
|
||||
if (out - buffer > buffer_size - 100) {
|
||||
int index = out - buffer;
|
||||
|
||||
growBuffer();
|
||||
out = &buffer[index];
|
||||
}
|
||||
|
||||
/*
|
||||
* By default one have to encode at least '<', '>', '"' and '&' !
|
||||
* One could try a better encoding using the entities defined and
|
||||
* used as a compression code !!!.
|
||||
*/
|
||||
if (*cur == '<') {
|
||||
*out++ = '&';
|
||||
*out++ = 'l';
|
||||
*out++ = 't';
|
||||
*out++ = ';';
|
||||
} else if (*cur == '>') {
|
||||
*out++ = '&';
|
||||
*out++ = 'g';
|
||||
*out++ = 't';
|
||||
*out++ = ';';
|
||||
} else if (*cur == '&') {
|
||||
*out++ = '&';
|
||||
*out++ = 'a';
|
||||
*out++ = 'm';
|
||||
*out++ = 'p';
|
||||
*out++ = ';';
|
||||
} else if (*cur == '"') {
|
||||
*out++ = '&';
|
||||
*out++ = 'q';
|
||||
*out++ = 'u';
|
||||
*out++ = 'o';
|
||||
*out++ = 't';
|
||||
*out++ = ';';
|
||||
} else if (*cur == '\'') {
|
||||
*out++ = '&';
|
||||
*out++ = 'a';
|
||||
*out++ = 'p';
|
||||
*out++ = 'o';
|
||||
*out++ = 's';
|
||||
*out++ = ';';
|
||||
} else {
|
||||
/*
|
||||
* default case, just copy !
|
||||
*/
|
||||
*out++ = *cur;
|
||||
}
|
||||
cur++;
|
||||
}
|
||||
*out++ = 0;
|
||||
return(buffer);
|
||||
}
|
||||
|
||||
/*
|
||||
* xmlCreateEntitiesTable : create and initialize an enmpty hash table
|
||||
*/
|
||||
xmlEntitiesTablePtr xmlCreateEntitiesTable(void) {
|
||||
xmlEntitiesTablePtr ret;
|
||||
|
||||
ret = (xmlEntitiesTablePtr)
|
||||
malloc(sizeof(xmlEntitiesTable));
|
||||
if (ret == NULL) {
|
||||
fprintf(stderr, "xmlCreateEntitiesTable : malloc(%d) failed\n",
|
||||
sizeof(xmlEntitiesTable));
|
||||
return(NULL);
|
||||
}
|
||||
ret->max_entities = XML_MIN_ENTITIES_TABLE;
|
||||
ret->nb_entities = 0;
|
||||
ret->table = (xmlEntityPtr )
|
||||
malloc(ret->max_entities * sizeof(xmlEntity));
|
||||
if (ret == NULL) {
|
||||
fprintf(stderr, "xmlCreateEntitiesTable : malloc(%d) failed\n",
|
||||
ret->max_entities * sizeof(xmlEntity));
|
||||
free(ret);
|
||||
return(NULL);
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* xmlFreeEntitiesTable : clean up and free an entities hash table.
|
||||
*/
|
||||
void xmlFreeEntitiesTable(xmlEntitiesTablePtr table) {
|
||||
int i;
|
||||
|
||||
if (table == NULL) return;
|
||||
|
||||
for (i = 0;i < table->nb_entities;i++) {
|
||||
xmlFreeEntity(&table->table[i]);
|
||||
}
|
||||
free(table->table);
|
||||
free(table);
|
||||
}
|
||||
|
58
xml_entities.h
Normal file
58
xml_entities.h
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* entities.h : interface for the XML entities handking
|
||||
*
|
||||
* See Copyright for the status of this software.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __XML_ENTITIES_H__
|
||||
#define __XML_ENTITIES_H__
|
||||
#include "xml_parser.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* An unit of storage for an entity, contains the string, the value
|
||||
* and the linkind data needed for the linking in the hash table.
|
||||
*/
|
||||
|
||||
typedef struct xmlEntity {
|
||||
const CHAR *id; /* The entity name */
|
||||
CHAR *value; /* The entity CHAR equivalent */
|
||||
} xmlEntity, *xmlEntityPtr;
|
||||
|
||||
/*
|
||||
* ALl entities are stored in a table there is one table per DTD
|
||||
* and one extra per document.
|
||||
*/
|
||||
|
||||
#define XML_MIN_ENTITIES_TABLE 32
|
||||
|
||||
typedef struct xmlEntitiesTable {
|
||||
int nb_entities; /* number of elements stored */
|
||||
int max_entities; /* maximum number of elements */
|
||||
xmlEntityPtr table; /* the table of entities */
|
||||
} xmlEntitiesTable, *xmlEntitiesTablePtr;
|
||||
|
||||
/*
|
||||
* External functions :
|
||||
*/
|
||||
|
||||
extern void xmlAddDocEntity(xmlDocPtr doc, CHAR *value, const CHAR *id);
|
||||
extern void xmlAddDtdEntity(xmlDtdPtr dtd, CHAR *value, const CHAR *id);
|
||||
extern CHAR *xmlGetEntity(xmlDocPtr doc, const CHAR *id);
|
||||
extern CHAR *xmlSubstituteEntities(xmlDocPtr doc, const CHAR *input);
|
||||
extern CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input);
|
||||
extern CHAR *xmlDecodeEntities(xmlDocPtr doc, const CHAR *input, int len);
|
||||
extern xmlEntitiesTablePtr xmlCreateEntitiesTable(void);
|
||||
extern void xmlFreeEntitiesTable(xmlEntitiesTablePtr table);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
# endif /* __XML_ENTITIES_H__ */
|
1183
xml_parser.c
Normal file
1183
xml_parser.c
Normal file
File diff suppressed because it is too large
Load Diff
61
xml_parser.h
Normal file
61
xml_parser.h
Normal file
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* parser.h : constants and stuff related to the XML parser.
|
||||
*
|
||||
* See Copyright for the status of this software.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __XML_PARSER_H__
|
||||
#define __XML_PARSER_H__
|
||||
|
||||
#include "xml_tree.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Constants.
|
||||
*/
|
||||
#define XML_DEFAULT_VERSION "1.0"
|
||||
|
||||
|
||||
typedef struct xmlParserCtxt {
|
||||
const char *filename; /* The file analyzed, if any */
|
||||
const CHAR *base; /* Base of the array to parse */
|
||||
const CHAR *cur; /* Current char being parsed */
|
||||
int line; /* Current line */
|
||||
int col; /* Current column */
|
||||
xmlDocPtr doc; /* the document being built */
|
||||
int depth; /* Depth of current element */
|
||||
int max_depth; /* Max depth allocated */
|
||||
xmlNodePtr *nodes; /* The node hierarchy being built */
|
||||
} xmlParserCtxt, *xmlParserCtxtPtr;
|
||||
|
||||
/*
|
||||
* Interfaces
|
||||
*/
|
||||
extern int xmlParseDocument(xmlParserCtxtPtr ctxt);
|
||||
extern xmlDocPtr xmlParseDoc(CHAR *cur);
|
||||
extern xmlDocPtr xmlParseMemory(char *buffer, int size);
|
||||
extern xmlDocPtr xmlParseFile(const char *filename);
|
||||
extern CHAR *xmlStrdup(const CHAR *input);
|
||||
extern CHAR *xmlStrndup(const CHAR *input, int n);
|
||||
extern CHAR *xmlStrchr(const CHAR *str, CHAR val);
|
||||
extern int xmlStrcmp(const CHAR *str1, const CHAR *str2);
|
||||
extern int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
|
||||
|
||||
extern void xmlInitParserCtxt(xmlParserCtxtPtr ctx);
|
||||
extern void xmlClearParserCtxt(xmlParserCtxtPtr ctx);
|
||||
extern void xmlSetupParserForBuffer(xmlParserCtxtPtr ctx, const CHAR* buffer,
|
||||
const char* filename);
|
||||
|
||||
extern void xmlReportError(xmlParserCtxtPtr ctx, const CHAR* msg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __XML_PARSER_H__ */
|
||||
|
731
xml_tree.c
Normal file
731
xml_tree.c
Normal file
@ -0,0 +1,731 @@
|
||||
/*
|
||||
* tree.c : implemetation of access function for an XML tree.
|
||||
*
|
||||
* See Copyright for the status of this software.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <malloc.h>
|
||||
#include <string.h> /* for memset() only ! */
|
||||
|
||||
#include "xml_tree.h"
|
||||
#include "xml_entities.h"
|
||||
|
||||
static CHAR xmlStringText[] = { 't', 'e', 'x', 't', 0 };
|
||||
int oldXMLWDcompatibility = 0;
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Allocation and deallocation of basic structures *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
/*
|
||||
* Creation of a new DTD.
|
||||
*/
|
||||
xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const CHAR *href, const CHAR *AS) {
|
||||
xmlDtdPtr cur;
|
||||
|
||||
/*
|
||||
* Allocate a new DTD and fill the fields.
|
||||
*/
|
||||
cur = (xmlDtdPtr) malloc(sizeof(xmlDtd));
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlNewDtd : malloc failed\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
cur->next = NULL;
|
||||
if (href != NULL)
|
||||
cur->href = xmlStrdup(href);
|
||||
else
|
||||
cur->href = NULL;
|
||||
if (AS != NULL)
|
||||
cur->AS = xmlStrdup(AS);
|
||||
else
|
||||
cur->AS = NULL;
|
||||
if (doc != NULL) {
|
||||
cur->next = doc->dtds;
|
||||
doc->dtds = cur;
|
||||
}
|
||||
|
||||
return(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Freeing a DTD
|
||||
*/
|
||||
void xmlFreeDtd(xmlDtdPtr cur) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlFreeDtd : DTD == NULL\n");
|
||||
return;
|
||||
}
|
||||
if (cur->href != NULL) free((char *) cur->href);
|
||||
if (cur->AS != NULL) free((char *) cur->AS);
|
||||
memset(cur, -1, sizeof(xmlDtd));
|
||||
free(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Freeing a DTD list
|
||||
*/
|
||||
void xmlFreeDtdList(xmlDtdPtr cur) {
|
||||
xmlDtdPtr next;
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlFreeDtdList : dtd == NULL\n");
|
||||
return;
|
||||
}
|
||||
while (cur != NULL) {
|
||||
next = cur->next;
|
||||
xmlFreeDtd(cur);
|
||||
cur = next;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Creation of a new document
|
||||
*/
|
||||
xmlDocPtr xmlNewDoc(const CHAR *version) {
|
||||
xmlDocPtr cur;
|
||||
|
||||
if (version == NULL) {
|
||||
fprintf(stderr, "xmlNewDoc : version == NULL\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate a new document and fill the fields.
|
||||
*/
|
||||
cur = (xmlDocPtr) malloc(sizeof(xmlDoc));
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlNewDoc : malloc failed\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
cur->version = xmlStrdup(version);
|
||||
cur->root = NULL;
|
||||
cur->dtds = NULL;
|
||||
return(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Freeing a document : all the tree is freed too.
|
||||
*/
|
||||
void xmlFreeDoc(xmlDocPtr cur) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlFreeDoc : document == NULL\n");
|
||||
return;
|
||||
}
|
||||
free((char *) cur->version);
|
||||
if (cur->root != NULL) xmlFreeNode(cur->root);
|
||||
if (cur->dtds != NULL) xmlFreeDtdList(cur->dtds);
|
||||
memset(cur, -1, sizeof(xmlDoc));
|
||||
free(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Creation of a new property element in a given DTD.
|
||||
*/
|
||||
xmlPropPtr xmlNewProp(xmlNodePtr node, const CHAR *name, const CHAR *value) {
|
||||
xmlPropPtr cur;
|
||||
|
||||
if (name == NULL) {
|
||||
fprintf(stderr, "xmlNewProp : name == NULL\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate a new property and fill the fields.
|
||||
*/
|
||||
cur = (xmlPropPtr) malloc(sizeof(xmlProp));
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlNewProp : malloc failed\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
cur->node = node;
|
||||
cur->name = xmlStrdup(name);
|
||||
if (value != NULL)
|
||||
cur->value = xmlStrdup(value);
|
||||
else
|
||||
cur->value = NULL;
|
||||
if (node != NULL) {
|
||||
cur->next = node->properties;
|
||||
node->properties = cur;
|
||||
} else
|
||||
cur->next = NULL;
|
||||
return(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Freeing a property list : Free a property and all its siblings,
|
||||
* this is a recursive behaviour, all the childs
|
||||
* are freed too.
|
||||
*/
|
||||
void xmlFreePropList(xmlPropPtr cur) {
|
||||
xmlPropPtr next;
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlFreePropList : property == NULL\n");
|
||||
return;
|
||||
}
|
||||
while (cur != NULL) {
|
||||
next = cur->next;
|
||||
xmlFreeProp(cur);
|
||||
cur = next;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Freeing a property.
|
||||
*/
|
||||
void xmlFreeProp(xmlPropPtr cur) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlFreeProp : property == NULL\n");
|
||||
return;
|
||||
}
|
||||
if (cur->name != NULL) free((char *) cur->name);
|
||||
if (cur->value != NULL) free((char *) cur->value);
|
||||
memset(cur, -1, sizeof(xmlProp));
|
||||
free(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Creation of a new node element in a given DTD.
|
||||
* We assume that the "name" has already being strdup'd !
|
||||
*/
|
||||
xmlNodePtr xmlNewNode(xmlDtdPtr dtd, const CHAR *name, CHAR *content) {
|
||||
xmlNodePtr cur;
|
||||
|
||||
if (name == NULL) {
|
||||
fprintf(stderr, "xmlNewNode : name == NULL\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate a new node and fill the fields.
|
||||
*/
|
||||
cur = (xmlNodePtr) malloc(sizeof(xmlNode));
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlNewNode : malloc failed\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
cur->parent = NULL;
|
||||
cur->next = NULL;
|
||||
cur->childs = NULL;
|
||||
cur->properties = NULL;
|
||||
cur->type = 0;
|
||||
cur->name = name;
|
||||
cur->dtd = dtd;
|
||||
if (content != NULL)
|
||||
cur->content = xmlStrdup(content);
|
||||
else
|
||||
cur->content = NULL;
|
||||
return(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Creation of a new node contening text.
|
||||
*/
|
||||
xmlNodePtr xmlNewText(CHAR *content) {
|
||||
xmlNodePtr cur;
|
||||
|
||||
/*
|
||||
* Allocate a new node and fill the fields.
|
||||
*/
|
||||
cur = (xmlNodePtr) malloc(sizeof(xmlNode));
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlNewNode : malloc failed\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
cur->parent = NULL;
|
||||
cur->next = NULL;
|
||||
cur->childs = NULL;
|
||||
cur->properties = NULL;
|
||||
cur->type = XML_TYPE_TEXT;
|
||||
cur->name = xmlStrdup(xmlStringText);;
|
||||
cur->dtd = NULL;
|
||||
if (content != NULL)
|
||||
cur->content = xmlStrdup(content);
|
||||
else
|
||||
cur->content = NULL;
|
||||
return(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Creation of a new child element, added at the end.
|
||||
*/
|
||||
xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlDtdPtr dtd,
|
||||
const CHAR *name, CHAR *content) {
|
||||
xmlNodePtr cur, prev;
|
||||
|
||||
if (parent == NULL) {
|
||||
fprintf(stderr, "xmlNewChild : parent == NULL\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
if (name == NULL) {
|
||||
fprintf(stderr, "xmlNewChild : name == NULL\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate a new node
|
||||
*/
|
||||
if (dtd == NULL)
|
||||
cur = xmlNewNode(parent->dtd, name, content);
|
||||
else
|
||||
cur = xmlNewNode(dtd, name, content);
|
||||
if (cur == NULL) return(NULL);
|
||||
|
||||
/*
|
||||
* add the new element at the end of the childs list.
|
||||
*/
|
||||
cur->parent = parent;
|
||||
if (parent->childs == NULL) {
|
||||
parent->childs = cur;
|
||||
} else {
|
||||
prev = parent->childs;
|
||||
while (prev->next != NULL) prev = prev->next;
|
||||
prev->next = cur;
|
||||
}
|
||||
|
||||
return(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add a new child element, added at the end.
|
||||
*/
|
||||
xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
|
||||
xmlNodePtr prev;
|
||||
|
||||
if (parent == NULL) {
|
||||
fprintf(stderr, "xmladdChild : parent == NULL\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmladdChild : child == NULL\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* add the new element at the end of the childs list.
|
||||
*/
|
||||
cur->parent = parent;
|
||||
if (parent->childs == NULL) {
|
||||
parent->childs = cur;
|
||||
} else {
|
||||
prev = parent->childs;
|
||||
while (prev->next != NULL) prev = prev->next;
|
||||
prev->next = cur;
|
||||
}
|
||||
|
||||
return(cur);
|
||||
}
|
||||
|
||||
/*
|
||||
* Freeing a node list : Free a node and all its siblings,
|
||||
* this is a recursive behaviour, all the childs
|
||||
* are freed too.
|
||||
*/
|
||||
void xmlFreeNodeList(xmlNodePtr cur) {
|
||||
xmlNodePtr next;
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlFreeNodeList : node == NULL\n");
|
||||
return;
|
||||
}
|
||||
while (cur != NULL) {
|
||||
next = cur->next;
|
||||
xmlFreeNode(cur);
|
||||
cur = next;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Freeing a node : this is a recursive behaviour, all the childs
|
||||
* are freed too.
|
||||
*/
|
||||
void xmlFreeNode(xmlNodePtr cur) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlFreeNode : node == NULL\n");
|
||||
return;
|
||||
}
|
||||
if (cur->properties != NULL) xmlFreePropList(cur->properties);
|
||||
if (cur->childs != NULL) xmlFreeNodeList(cur->childs);
|
||||
if (cur->content != NULL) free(cur->content);
|
||||
if (cur->name != NULL) free((char *) cur->name);
|
||||
memset(cur, -1, sizeof(xmlNode));
|
||||
free(cur);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Content access functions *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
/*
|
||||
* Changing the content of a node.
|
||||
*/
|
||||
void xmlNodeSetContent(xmlNodePtr cur, CHAR *content) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlNodeSetContent : node == NULL\n");
|
||||
return;
|
||||
}
|
||||
if (cur->content != NULL) free(cur->content);
|
||||
if (content != NULL)
|
||||
cur->content = xmlStrdup(content);
|
||||
else
|
||||
cur->content = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Search a Dtd registered under a given name space for a document.
|
||||
*/
|
||||
xmlDtdPtr xmlSearchDtd(xmlDocPtr doc, CHAR *nameSpace) {
|
||||
xmlDtdPtr cur;
|
||||
|
||||
if ((doc == NULL) || (nameSpace == NULL)) return(NULL);
|
||||
|
||||
cur = doc->dtds;
|
||||
while (cur != NULL) {
|
||||
if ((cur->AS != NULL) && (!xmlStrcmp(cur->AS, nameSpace)))
|
||||
return(cur);
|
||||
cur = cur->next;
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Reading the content of a given property.
|
||||
*/
|
||||
const CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name) {
|
||||
xmlPropPtr prop = node->properties;
|
||||
|
||||
while (prop != NULL) {
|
||||
if (!xmlStrcmp(prop->name, name)) return(prop->value);
|
||||
prop = prop->next;
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Output : to a FILE or in memory *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
/*
|
||||
* routine which manage and grows an output buffer. One can write
|
||||
* standard char array's (8 bits char) or CHAR's arrays.
|
||||
*/
|
||||
static CHAR *buffer = NULL;
|
||||
static int buffer_index = 0;
|
||||
static int buffer_size = 0;
|
||||
|
||||
static void xmlBufferWriteCHAR(const CHAR *string) {
|
||||
const CHAR *cur;
|
||||
|
||||
if (buffer == NULL) {
|
||||
buffer_size = 50000;
|
||||
buffer = (CHAR *) malloc(buffer_size * sizeof(CHAR));
|
||||
if (buffer == NULL) {
|
||||
fprintf(stderr, "xmlBufferWrite : out of memory!\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (string == NULL) return;
|
||||
for (cur = string;*cur != 0;cur++) {
|
||||
if (buffer_index + 10 >= buffer_size) {
|
||||
buffer_size *= 2;
|
||||
buffer = (CHAR *) realloc(buffer, buffer_size * sizeof(CHAR));
|
||||
if (buffer == NULL) {
|
||||
fprintf(stderr, "xmlBufferWrite : out of memory!\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
buffer[buffer_index++] = *cur;
|
||||
}
|
||||
buffer[buffer_index] = 0;
|
||||
}
|
||||
|
||||
static void xmlBufferWriteChar(const char *string) {
|
||||
const CHAR *cur;
|
||||
|
||||
if (buffer == NULL) {
|
||||
buffer_size = 50000;
|
||||
buffer = (CHAR *) malloc(buffer_size * sizeof(CHAR));
|
||||
if (buffer == NULL) {
|
||||
fprintf(stderr, "xmlBufferWrite : out of memory!\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (string == NULL) return;
|
||||
for (cur = string;*cur != 0;cur++) {
|
||||
if (buffer_index + 10 >= buffer_size) {
|
||||
buffer_size *= 2;
|
||||
buffer = (CHAR *) realloc(buffer, buffer_size * sizeof(CHAR));
|
||||
if (buffer == NULL) {
|
||||
fprintf(stderr, "xmlBufferWrite : out of memory!\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
buffer[buffer_index++] = *cur;
|
||||
}
|
||||
buffer[buffer_index] = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Dump a DTD to the given FD
|
||||
*/
|
||||
static void xmlDtdDump(xmlDtdPtr cur) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlDtdDump : DTD == NULL\n");
|
||||
return;
|
||||
}
|
||||
if (oldXMLWDcompatibility) {
|
||||
xmlBufferWriteChar("<?namespace");
|
||||
if (cur->href != NULL) {
|
||||
xmlBufferWriteChar(" href=\"");
|
||||
xmlBufferWriteCHAR(cur->href);
|
||||
xmlBufferWriteChar("\"");
|
||||
}
|
||||
if (cur->AS != NULL) {
|
||||
xmlBufferWriteChar(" AS=\"");
|
||||
xmlBufferWriteCHAR(cur->AS);
|
||||
xmlBufferWriteChar("\"");
|
||||
}
|
||||
xmlBufferWriteChar("?>\n");
|
||||
} else {
|
||||
xmlBufferWriteChar("<?xml:namespace");
|
||||
if (cur->href != NULL) {
|
||||
xmlBufferWriteChar(" ns=\"");
|
||||
xmlBufferWriteCHAR(cur->href);
|
||||
xmlBufferWriteChar("\"");
|
||||
}
|
||||
if (cur->AS != NULL) {
|
||||
xmlBufferWriteChar(" prefix=\"");
|
||||
xmlBufferWriteCHAR(cur->AS);
|
||||
xmlBufferWriteChar("\"");
|
||||
}
|
||||
xmlBufferWriteChar("?>\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Dump an XML property to the given FD
|
||||
*/
|
||||
|
||||
static void xmlPropDump(xmlDocPtr doc, xmlPropPtr cur) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlPropDump : property == NULL\n");
|
||||
return;
|
||||
}
|
||||
xmlBufferWriteChar(" ");
|
||||
xmlBufferWriteCHAR(cur->name);
|
||||
if (cur->value) {
|
||||
xmlBufferWriteChar("=\"");
|
||||
xmlBufferWriteCHAR(xmlEncodeEntities(doc, cur->value));
|
||||
xmlBufferWriteChar("\"");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Dump an XML property list to the given FD
|
||||
*/
|
||||
|
||||
static void xmlPropListDump(xmlDocPtr doc, xmlPropPtr cur) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlPropListDump : property == NULL\n");
|
||||
return;
|
||||
}
|
||||
while (cur != NULL) {
|
||||
xmlPropDump(doc, cur);
|
||||
cur = cur->next;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Dump an XML node list to the given FD
|
||||
*/
|
||||
|
||||
static void xmlNodeDump(xmlDocPtr doc, xmlNodePtr cur, int level);
|
||||
static void xmlNodeListDump(xmlDocPtr doc, xmlNodePtr cur, int level) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlNodeListDump : node == NULL\n");
|
||||
return;
|
||||
}
|
||||
while (cur != NULL) {
|
||||
xmlNodeDump(doc, cur, level);
|
||||
cur = cur->next;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Dump an XML node to the given FD
|
||||
*/
|
||||
|
||||
static void xmlNodeDump(xmlDocPtr doc, xmlNodePtr cur, int level) {
|
||||
int i;
|
||||
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlNodeDump : node == NULL\n");
|
||||
return;
|
||||
}
|
||||
if (cur->type == XML_TYPE_TEXT) {
|
||||
if (cur->content != NULL)
|
||||
xmlBufferWriteCHAR(xmlEncodeEntities(doc, cur->content));
|
||||
return;
|
||||
}
|
||||
for (i = 0;i < level;i++)
|
||||
xmlBufferWriteChar(" ");
|
||||
|
||||
xmlBufferWriteChar("<");
|
||||
if ((cur->dtd != NULL) && (cur->dtd->AS != NULL)) {
|
||||
xmlBufferWriteCHAR(cur->dtd->AS);
|
||||
xmlBufferWriteChar(":");
|
||||
}
|
||||
|
||||
xmlBufferWriteCHAR(cur->name);
|
||||
if (cur->properties != NULL)
|
||||
xmlPropListDump(doc, cur->properties);
|
||||
|
||||
if ((cur->content == NULL) && (cur->childs == NULL)) {
|
||||
xmlBufferWriteChar("/>\n");
|
||||
return;
|
||||
}
|
||||
xmlBufferWriteChar(">");
|
||||
if (cur->content != NULL)
|
||||
xmlBufferWriteCHAR(xmlEncodeEntities(doc, cur->content));
|
||||
if (cur->childs != NULL) {
|
||||
xmlBufferWriteChar("\n");
|
||||
xmlNodeListDump(doc, cur->childs, level + 1);
|
||||
for (i = 0;i < level;i++)
|
||||
xmlBufferWriteChar(" ");
|
||||
}
|
||||
xmlBufferWriteChar("</");
|
||||
if ((cur->dtd != NULL) && (cur->dtd->AS != NULL)) {
|
||||
xmlBufferWriteCHAR(cur->dtd->AS);
|
||||
xmlBufferWriteChar(":");
|
||||
}
|
||||
|
||||
xmlBufferWriteCHAR(cur->name);
|
||||
xmlBufferWriteChar(">\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Dump an XML DTD list to the given FD
|
||||
*/
|
||||
|
||||
static void xmlDtdListDump(xmlDtdPtr cur) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlDtdListDump : DTD == NULL\n");
|
||||
return;
|
||||
}
|
||||
while (cur != NULL) {
|
||||
xmlDtdDump(cur);
|
||||
cur = cur->next;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Dump an XML document to memory.
|
||||
*/
|
||||
|
||||
void xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlDocDump : document == NULL\n");
|
||||
*mem = NULL;
|
||||
*size = 0;
|
||||
return;
|
||||
}
|
||||
buffer_index = 0;
|
||||
if (oldXMLWDcompatibility)
|
||||
xmlBufferWriteChar("<?XML version=\"");
|
||||
else
|
||||
xmlBufferWriteChar("<?xml version=\"");
|
||||
xmlBufferWriteCHAR(cur->version);
|
||||
xmlBufferWriteChar("\"?>\n");
|
||||
if (cur->dtds != NULL)
|
||||
xmlDtdListDump(cur->dtds);
|
||||
if (cur->root != NULL)
|
||||
xmlNodeDump(cur, cur->root, 0);
|
||||
|
||||
*mem = buffer;
|
||||
*size = buffer_index;
|
||||
}
|
||||
|
||||
/*
|
||||
* Dump an XML document to the given FD
|
||||
*/
|
||||
|
||||
void xmlDocDump(FILE *f, xmlDocPtr cur) {
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlDocDump : document == NULL\n");
|
||||
return;
|
||||
}
|
||||
buffer_index = 0;
|
||||
if (oldXMLWDcompatibility)
|
||||
xmlBufferWriteChar("<?XML version=\"");
|
||||
else
|
||||
xmlBufferWriteChar("<?xml version=\"");
|
||||
xmlBufferWriteCHAR(cur->version);
|
||||
xmlBufferWriteChar("\"?>\n");
|
||||
if (cur->dtds != NULL)
|
||||
xmlDtdListDump(cur->dtds);
|
||||
if (cur->root != NULL)
|
||||
xmlNodeDump(cur, cur->root, 0);
|
||||
|
||||
fwrite(buffer, sizeof(CHAR), buffer_index, f);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Debug *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
#ifdef DEBUG_TREE
|
||||
int main(void) {
|
||||
xmlDocPtr doc;
|
||||
xmlNodePtr tree, subtree;
|
||||
xmlDtdPtr dtd1;
|
||||
xmlDtdPtr dtd2;
|
||||
|
||||
/*
|
||||
* build a fake XML document
|
||||
*/
|
||||
doc = xmlNewDoc("1.0");
|
||||
dtd1 = xmlNewDtd(doc, "http://www.ietf.org/standards/dav/", "D");
|
||||
dtd2 = xmlNewDtd(doc, "http://www.w3.com/standards/z39.50/", "Z");
|
||||
doc->root = xmlNewNode(dtd1, "multistatus", NULL);
|
||||
tree = xmlNewChild(doc->root, NULL, "response", NULL);
|
||||
subtree = xmlNewChild(tree, NULL, "prop", NULL);
|
||||
xmlNewChild(subtree, dtd2, "Authors", NULL);
|
||||
subtree = xmlNewChild(tree, NULL, "status", "HTTP/1.1 420 Method Failure");
|
||||
tree = xmlNewChild(doc->root, NULL, "response", NULL);
|
||||
subtree = xmlNewChild(tree, NULL, "prop", NULL);
|
||||
xmlNewChild(subtree, dtd2, "Copyright-Owner", NULL);
|
||||
subtree = xmlNewChild(tree, NULL, "status", "HTTP/1.1 409 Conflict");
|
||||
tree = xmlNewChild(doc->root, NULL, "responsedescription",
|
||||
"Copyright Owner can not be deleted or altered");
|
||||
|
||||
/*
|
||||
* print it.
|
||||
*/
|
||||
xmlDocDump(stdout, doc);
|
||||
|
||||
/*
|
||||
* free it.
|
||||
*/
|
||||
xmlFreeDoc(doc);
|
||||
return(0);
|
||||
}
|
||||
#endif
|
113
xml_tree.h
Normal file
113
xml_tree.h
Normal file
@ -0,0 +1,113 @@
|
||||
/*
|
||||
* tree.h : describes the structures found in an tree resulting
|
||||
* from an XML parsing.
|
||||
*
|
||||
* See Copyright for the status of this software.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __XML_TREE_H__
|
||||
#define __XML_TREE_H__
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Type definitions
|
||||
*/
|
||||
#ifdef UNICODE
|
||||
typedef unsigned short CHAR;
|
||||
#else
|
||||
typedef unsigned char CHAR;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Constants.
|
||||
*/
|
||||
#define XML_TYPE_TEXT 1
|
||||
|
||||
/*
|
||||
* An XML DTD defining a given name space.
|
||||
*/
|
||||
typedef struct xmlDtd {
|
||||
struct xmlDtd *next; /* next Dtd link for this document */
|
||||
const CHAR *href; /* URL for the DTD */
|
||||
const CHAR *AS; /* URL for the DTD */
|
||||
void *entities; /* Hash table for entities if any */
|
||||
} xmlDtd, *xmlDtdPtr;
|
||||
|
||||
/*
|
||||
* A property of an XML node.
|
||||
*/
|
||||
typedef struct xmlProp {
|
||||
struct xmlNode *node; /* prop->node link */
|
||||
struct xmlProp *next; /* parent->childs link */
|
||||
const CHAR *name; /* the name of the property */
|
||||
const CHAR *value; /* the value of the property */
|
||||
} xmlProp, *xmlPropPtr;
|
||||
|
||||
/*
|
||||
* A node in an XML tree.
|
||||
*/
|
||||
typedef struct xmlNode {
|
||||
struct xmlNode *parent; /* child->parent link */
|
||||
struct xmlNode *next; /* next sibling link */
|
||||
struct xmlNode *childs; /* parent->childs link */
|
||||
struct xmlProp *properties; /* properties list */
|
||||
int type; /* type number in the DTD */
|
||||
const CHAR *name; /* the name of the node */
|
||||
xmlDtd *dtd; /* pointer to the DTD */
|
||||
CHAR *content; /* the content */
|
||||
} xmlNode, *xmlNodePtr;
|
||||
|
||||
/*
|
||||
* An XML document.
|
||||
*/
|
||||
typedef struct xmlDoc {
|
||||
const CHAR *version; /* the XML version string */
|
||||
struct xmlDtd *dtds; /* referenced DTDs */
|
||||
struct xmlNode *root; /* parent->childs link */
|
||||
void *entities; /* Hash table for entities if any */
|
||||
} xmlDoc, *xmlDocPtr;
|
||||
|
||||
/*
|
||||
* Variables.
|
||||
*/
|
||||
extern xmlDtdPtr baseDTD;
|
||||
extern int oldXMLWDcompatibility;/* maintain compatibility with old WD */
|
||||
|
||||
/*
|
||||
* Functions.
|
||||
*/
|
||||
extern xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const CHAR *href, const CHAR *AS);
|
||||
extern void xmlFreeDtd(xmlDtdPtr cur);
|
||||
extern xmlDocPtr xmlNewDoc(const CHAR *version);
|
||||
extern void xmlFreeDoc(xmlDocPtr cur);
|
||||
extern xmlPropPtr xmlNewProp(xmlNodePtr node, const CHAR *name,
|
||||
const CHAR *value);
|
||||
extern const CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name);
|
||||
extern void xmlFreePropList(xmlPropPtr cur);
|
||||
extern void xmlFreeProp(xmlPropPtr cur);
|
||||
extern xmlNodePtr xmlNewNode(xmlDtdPtr dtd, const CHAR *name, CHAR *content);
|
||||
extern xmlNodePtr xmlNewText(CHAR *content);
|
||||
extern xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur);
|
||||
extern void xmlFreeNodeList(xmlNodePtr cur);
|
||||
extern void xmlFreeNode(xmlNodePtr cur);
|
||||
extern void xmlNodeSetContent(xmlNodePtr cur, CHAR *content);
|
||||
extern xmlDtdPtr xmlSearchDtd(xmlDocPtr doc, CHAR *nameSpace);
|
||||
extern xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlDtdPtr dtd,
|
||||
const CHAR *name, CHAR *content);
|
||||
|
||||
extern void xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size);
|
||||
extern void xmlDocDump(FILE *f, xmlDocPtr doc);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __XML_TREE_H__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user