$request:body
2004-01-30 paf
* src/classes/xdoc.C: bugfix: libxml: russian letters in attributes
or documents-results of transform now not xx;
* src/classes/date.C: bugfix: ^date::create[invalid fields now
produce exception.
* src/: classes/date.C, include/pa_string.h, main/pa_string.C:
bugfix: ^date::create[invalid fields now produce exception.
* ChangeLog, src/classes/date.C, www/htdocs/.htaccess: bugfix:
^date::create[invalid year] now produces exception. todo: check
other fields
2004-01-29 paf
* src/include/pa_memory.h: typo error
* src/include/pa_memory.h: bugfix: [potential] strdup copied one
more byte then specified, then zeroed it << useless and
potentially harmful(could gpf)
2004-01-22 paf
* src/classes/xdoc.C: bugfix: when stylesheet contains error, gpf
* src/main/untaint.C: merged: bugfix from 3.1.1 on whitespace
optimization
* src/main/untaint.C: bugfix: whitespace now optimized properly
[were bug: ^taint[1 & 2]="1 &2"
* src/main/pa_globals.C: beauty: bigger buffer for xml-related
errors
* src/main/pa_common.C: merged: bugfix from 3.1.1 on memory
overflow
* src/main/pa_common.C: bugfix: buffer overflow * in libxml&xsl
error-reporting code * in parser-error reporting code [when no
@unhandled_exception defined]
fixed in one place: my *snprintf override
2004-01-13 paf
* operators.txt: typo erro
2003-12-25 paf
* src/main/pa_common.C: bugfix: ^file::load[binary;http:// now not
garbled [pieces after zero bytes were removed]
2003-12-22 paf
* src/include/Makefile.am: bugfix: removed from dist:
src/include/pa_config_auto.h which were configured for
make-dist-platform and badly updated proper config file in target
[when .tar used for updating existing source tree]
* ChangeLog, operators.txt, src/classes/op.C,
src/include/pa_sql_connection.h,
src/include/pa_sql_driver_manager.h,
src/main/pa_sql_driver_manager.C, src/sql/pa_sql_driver.h,
www/htdocs/.htaccess: feature: sql introducing ability to
transcode charsets
2003-12-19 paf
* src/main/pa_sql_driver_manager.C: beauty: more straighforward
error message
* src/main/pa_charset.C: bugfix: memory for charsethandler
structure for libxml now allocated properly
2003-12-17 paf
* src/types/pa_vfile.C: beauty: removed outdated cast
* src/main/pa_common.C: bugfix: empty http response caused gpf
* src/include/pa_string.h: bugfix: removed too strong a assert
* src/main/pa_globals.C: bugfix: removed false warning [warning:
unreported xmlGenericErrors]
2003-12-15 paf
* src/classes/xdoc.C: bugfix: taint uri under ^xdoc::create{now
works}
2003-12-11 paf
* operators.txt, src/types/pa_vstatus.C: !$status:pid process
id
!$status:tid thread id
* src/: include/pa_cache_managers.h, main/pa_cache_managers.C,
main/pa_globals.C, main/pa_request.C, types/pa_vstatus.C:
bugfix(solaris): removed dependency on object initialization
order [one more place]
* src/: classes/file.C, classes/mail.C, classes/op.C,
classes/xdoc.C, main/pa_request.C, types/pa_vimage.C,
types/pa_vmath.C, types/pa_vstatus.C: beauty cancel: gcc does not
understand that
* src/: classes/file.C, classes/mail.C, classes/op.C,
classes/xdoc.C, include/pa_cache_managers.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stylesheet_manager.h, main/pa_request.C,
main/pa_stylesheet_manager.C, types/pa_vimage.C,
types/pa_vmath.C, types/pa_vstatus.C: beauty: removed redundant
ctor call [relying on implicit String::Body(cstr) call]
* src/main/: pa_cache_managers.C, pa_sql_driver_manager.C,
pa_stylesheet_manager.C: bugfix(solaris): removed dependency on
object initialization order [two places]
2003-12-10 paf
* src/include/pa_sql_connection.h, www/htdocs/.htaccess: bugfix:
$status:sql.cache back << time now ok
* operators.txt, src/main/pa_sql_driver_manager.C,
src/main/pa_stylesheet_manager.C: $status:stylesheet.cache back
operational
* ChangeLog, operators.txt, src/classes/xdoc.C,
src/include/pa_charset.h, src/include/pa_sql_connection.h,
src/main/pa_charset.C, src/main/pa_sql_driver_manager.C,
src/main/pa_string.C, src/types/pa_vxdoc.h, www/htdocs/.htaccess:
$status:sql.cache back operational
2003-12-02 paf
* src/types/pa_vmail.C: bugfix:
^mail:send[$.file[$.value[>>xxxx<<]] now untaints properly [were:
as-is forced]
* src/main/pa_xml_io.C: bugfix: on some platforms one can't throw
exceptions out of libxml callbacks: reimplemented error handling
of http://localhost, parser://method and safemode check callbacks
* src/main/pa_string.C: bugfix: SPARC gpf on %4!=0 address int ref
[merged from HEAD]
* src/classes/image.C: nothing: comment removed
* src/main/pa_string.C: bugfix: sparc gpf on reading %4!=0
addresses to int
2003-12-01 paf
* src/main/pa_xml_io.C: bugfix: typo
* src/main/pa_globals.C: bugfix: win32: compile prob
* src/classes/xdoc.C: bugfix: typo
* src/main/pa_xml_io.C: todo: safe mode check not to throw
exception
* src/main/pa_xml_io.C: bugfix: http://localhost typo error
2003-11-28 paf
* src/main/pa_xml_io.C: installed safe-mode checker as filter of
all xml documents read
* src/main/pa_xml_io.C: http://localhost/ now checked for safe mode
* src/: classes/xdoc.C, include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, main/pa_stylesheet_manager.C:
replaced original open mech of xdoc::create & co to use libxml
open, so that this would work for root document todo: safe mode
checks to libxml: ideally to some 1 point
* src/main/pa_xml_io.C: comment
* operators.txt, src/main/pa_xml_io.C: leading / in
http://parser[abscent params]
* operators.txt, src/include/pa_request.h, src/main/pa_xml_io.C:
works. todo: maybe replace original open mech of xdoc::create &
co to use libxml open, so that this would work for root document
$xdoc[^xdoc::create{ &test^; }]
^taint[^xdoc.string[]]
@method[param]
2003-11-27 paf
* src/main/pa_xml_io.C: libxml: started parser://methodcall/params
* src/classes/date.C: bugfix: typo error
2003-11-26 paf
* operators.txt, src/include/Makefile.am, src/include/pa_globals.h,
src/main/Makefile.am, src/main/main.vcproj,
src/main/pa_globals.C, src/main/pa_request.C,
src/include/pa_xml_io.h, src/main/pa_xml_io.C: simplification:
xml errors to hash reorganization: xml io moved
to pa_xml_io.C/h
* src/types/pa_value.h: warnings: --
2003-11-25 paf
* src/classes/table.C: bugfix: wrong sequence. [sadly no waring
whatever)
* src/classes/table.C: bugfix: a, c?x:y, z in gcc considered(?) as
a, (c?x:y, z)
* src/main/untaint.C: bugfix: consequences of not reading this
comment: CORD_pos_chars_left /* Number of characters in cache.
<= 0 ==> none */
* src/include/pa_array.h: removed needless checks
2003-11-24 paf
* src/: main/pa_request.C, types/pa_vform.C, types/pa_vform.h:
removed limit: now $form:xxx can be accessed anytime, even in
@auto/conf [and request/response:charset still can be changed
anytime]
* src/main/pa_common.C: bugfix: ^file::load[binary;http://...]
now not transcodes response body
* operators.txt, src/types/pa_vxnode.C, src/types/pa_vxnode.h:
$xdoc[^xdoc::create[test]] $tn[^xdoc.createTextNode[text node
value]] $dummy[^xdoc.firstChild.appendChild[$tn]]
$xdoc.firstChild.firstChild.nodeValue[different]
^taint[^xdoc.string[]]
* src/: include/pa_hash.h, types/types.vcproj: linker HPUX nongnu
workaround: static Hash::allocates -> static Hash_allocates
2003-11-21 paf
* Makefile.am, configure, configure.in, src/classes/Makefile.am,
src/include/pa_config_auto.h.in, src/targets/cgi/Makefile.am,
src/types/Makefile.am: rearrange: gd&smtp moved to src/lib
* src/classes/classes.vcproj: rearrange: gd&smtp moved to src/lib
* src/classes/mail.C: bugfix: typo
* parser3.sln, src/classes/Makefile.am, src/lib/Makefile.am,
src/lib/gd/Makefile.am, src/lib/gd/gd.vcproj, src/lib/gd/gif.C,
src/lib/gd/gif.h, src/lib/gd/gifio.C, src/lib/gd/mtables.h,
src/lib/smtp/Makefile.am, src/lib/smtp/comms.C,
src/lib/smtp/smtp.C, src/lib/smtp/smtp.h,
src/lib/smtp/smtp.vcproj: rearrange: gd&smtp moved to src/lib
* src/main/pa_exec.C: bug in safe mode
* src/include/Makefile.am: pa_xml_exception.h
* src/targets/isapi/parser3isapi.C: more warnings --
2003-11-20 paf
* src/: classes/math.C, classes/op.C, classes/string.C,
main/pa_charset.C, main/pa_dictionary.C, main/pa_string.C,
types/pa_value.C, main/pa_dir.C, main/pa_table.C: more warnings
--
* src/: main/pa_charset.C, main/pa_string.C, types/pa_vxnode.C:
more warnings --
* src/classes/xdoc.C: more warnings --
* src/classes/: date.C, image.C, xdoc.C: more warnings --
* src/: main/pa_sql_driver_manager.C, main/untaint.C,
types/pa_vcookie.C, types/pa_vmail.C: more warnings --
* src/: classes/date.C, classes/file.C, classes/hash.C,
classes/image.C, classes/mail.C, classes/op.C, classes/string.C,
classes/table.C, include/pa_cache_managers.h,
include/pa_stylesheet_connection.h, main/pa_request.C,
types/pa_vdate.h, types/pa_vhashfile.C, types/pa_vimage.h,
types/pa_vmethod_frame.C, types/pa_vmethod_frame.h: more warnings
--
* src/main/: execute.C, pa_request.C: old forgotten todo: when
can't report problem (undefined @unhandled_exception) problem
source string were not reported
* src/: classes/classes.C, classes/classes.h, classes/date.C,
classes/double.C, classes/file.C, classes/form.C, classes/hash.C,
classes/hashfile.C, classes/image.C, classes/int.C,
classes/mail.C, classes/math.C, classes/memory.C, classes/op.C,
classes/response.C, classes/string.C, classes/table.C,
classes/void.C, classes/xdoc.C, classes/xnode.C, classes/xnode.h,
include/pa_array.h, include/pa_cache_managers.h,
include/pa_charset.h, include/pa_charsets.h, include/pa_common.h,
include/pa_config_fixed.h, include/pa_dictionary.h,
include/pa_dir.h, include/pa_exception.h, include/pa_exec.h,
include/pa_globals.h, include/pa_hash.h, include/pa_memory.h,
include/pa_opcode.h, include/pa_operation.h, include/pa_os.h,
include/pa_request.h, include/pa_request_charsets.h,
include/pa_request_info.h, include/pa_sapi.h, include/pa_socks.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stack.h, include/pa_string.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
include/pa_threads.h, include/pa_types.h, include/pa_uue.h,
include/pa_xml_exception.h, lib/md5/pa_md5.h, lib/md5/pa_md5c.c,
lib/sdbm/apr_file_io.C, lib/sdbm/apr_strings.C, main/compile.C,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/pa_cache_managers.C, main/pa_charset.C, main/pa_charsets.C,
main/pa_common.C, main/pa_dictionary.C, main/pa_dir.C,
main/pa_exception.C, main/pa_exec.C, main/pa_globals.C,
main/pa_memory.C, main/pa_os.C, main/pa_pool.C,
main/pa_request.C, main/pa_socks.C, main/pa_sql_driver_manager.C,
main/pa_string.C, main/pa_stylesheet_manager.C, main/pa_table.C,
main/pa_uue.C, main/pa_xml_exception.C, main/untaint.C,
sql/pa_sql_driver.h, targets/cgi/pa_threads.C,
targets/cgi/parser3.C, targets/isapi/pa_threads.C,
targets/isapi/parser3isapi.C, types/pa_junction.h,
types/pa_method.h, types/pa_value.C, types/pa_value.h,
types/pa_vbool.h, types/pa_vclass.C, types/pa_vclass.h,
types/pa_vcode_frame.h, types/pa_vconsole.h, types/pa_vcookie.C,
types/pa_vcookie.h, types/pa_vdate.h, types/pa_vdouble.h,
types/pa_venv.h, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vhash.h,
types/pa_vhashfile.C, types/pa_vhashfile.h, types/pa_vimage.C,
types/pa_vimage.h, types/pa_vint.h, types/pa_vjunction.h,
types/pa_vmail.C, types/pa_vmail.h, types/pa_vmath.C,
types/pa_vmath.h, types/pa_vmemory.h, types/pa_vmethod_frame.C,
types/pa_vmethod_frame.h, types/pa_vobject.C, types/pa_vobject.h,
types/pa_vrequest.C, types/pa_vrequest.h, types/pa_vresponse.C,
types/pa_vresponse.h, types/pa_vstateless_class.C,
types/pa_vstateless_class.h, types/pa_vstateless_object.h,
types/pa_vstatus.C, types/pa_vstatus.h, types/pa_vstring.C,
types/pa_vstring.h, types/pa_vtable.C, types/pa_vtable.h,
types/pa_vvoid.h, types/pa_vxdoc.C, types/pa_vxdoc.h,
types/pa_vxnode.C, types/pa_vxnode.h, types/pa_wcontext.C,
types/pa_wcontext.h, types/pa_wwrapper.h: static const char *
const IDENT
* src/: include/pa_array.h, include/pa_pool.h,
include/pa_request.h, include/pa_string.h, include/pa_table.h,
main/compile_tools.h, main/pa_common.C, types/pa_vhash.h,
types/pa_wcontext.h: more warnings --
* src/: classes/classes.vcproj, classes/date.C, classes/double.C,
classes/file.C, classes/hash.C, classes/hashfile.C,
classes/image.C, classes/int.C, classes/mail.C, classes/math.C,
classes/memory.C, classes/op.C, classes/string.C,
classes/table.C, classes/xdoc.C, classes/xnode.C,
include/pa_config_includes.h, include/pa_operation.h,
include/pa_sql_connection.h, include/pa_table.h,
include/pa_types.h, lib/ltdl/config_fixed.h,
lib/ltdl/ltdl.vcproj, lib/md5/md5.vcproj, lib/pcre/maketables.c,
lib/pcre/pcre_dftables.vcproj, lib/pcre/pcre_parser_ctype.vcproj,
lib/sdbm/apr_file_io.C, main/compile.tab.C, main/execute.C,
main/main.vcproj, main/pa_cache_managers.C, main/pa_charset.C,
main/pa_common.C, main/pa_dir.C, main/pa_exec.C,
main/pa_globals.C, main/pa_os.C, main/pa_request.C,
main/pa_string.C, main/pa_table.C, targets/cgi/parser3.vcproj,
targets/isapi/parser3isapi.vcproj, types/pa_value.h,
types/pa_vconsole.h, types/pa_vdate.h, types/pa_vfile.h,
types/pa_vhashfile.C, types/pa_vimage.C, types/pa_vimage.h,
types/pa_vmail.C, types/pa_vobject.C,
types/pa_vstateless_class.h, types/pa_vtable.C,
types/pa_vtable.h, types/pa_vvoid.h, types/pa_vxdoc.h,
types/pa_vxnode.h, types/types.vcproj: turned on warnings level4
on all projects (except libltdl=off & libsdbm=level3) found
several unitialized vars
2003-11-19 paf
* src/classes/op.C: more ansi C++ comp
* operators.txt, src/classes/op.C, src/include/pa_request.h,
src/main/pa_request.C: ^cache[...]{body}{catch block with
$exception.handled[cache] meaning "get expired cache, if any.
else error"}
* src/: classes/op.C, include/pa_os.h, include/pa_request.h,
main/pa_common.C: cache: ^cache[] fallback todo: kinda ^try:
^cache[...]{body}{catch code with $exception.cache field}
2003-11-12 paf
* src/classes/xnode.C: replaceChild: 2nd param now named oldChild
[copy/paste bug]
2003-11-11 paf
* src/types/: pa_value.h, pa_vfile.h: more C++ compatible [HP C++
failed]
* bin/auto.p.dist.in: colno
2003-11-10 paf
* src/types/pa_vconsole.h: flush
* operators.txt, src/main/pa_request.C, src/types/Makefile.am,
src/types/types.vcproj, src/types/pa_vconsole.h: $console:line
read/write [for nntp]
* operators.txt: mysql: transaction support: ?autocommit=0
* operators.txt: comment: updated
* src/types/: pa_vhashfile.C, pa_vhashfile.h: add: hashfile old
serialize version and exipire now removes entries
* operators.txt: ^hashfile.delete[] removes files altogether [and
dir, if could]
* src/: classes/hashfile.C, include/pa_common.h, main/pa_common.C,
types/pa_vhashfile.C, types/pa_vhashfile.h: ^hashfile.delete[]
removes files altogether [and dir, if could]
* src/lib/sdbm/sdbm.c: bugfix: sdbm: .h said it's OK to remove
nonexistent pair. .c coded that that was error. fixed
* src/types/pa_vhashfile.C: sdbm: exception type change to
file.access [regretfull can't split it to different exceptions
without modifying sdbm source wich would prefer not to]
2003-11-07 paf
* src/: classes/date.C, classes/file.C, classes/hash.C,
classes/hashfile.C, classes/image.C, classes/table.C,
classes/xdoc.C, include/Makefile.am, include/pa_array.h,
include/pa_pool.h, include/pa_request.h, main/Makefile.am,
main/execute.C, main/main.vcproj, main/pa_pool.C,
main/pa_request.C, targets/cgi/parser3.C, types/pa_vclass.C,
types/pa_vclass.h, types/pa_vhashfile.h, types/pa_vobject.h,
types/pa_vstateless_class.h: resurrected: pool idea. now only for
destructing objects at request processing end
2003-11-06 paf
* src/: classes/Makefile.am, types/Makefile.am: .am sdbm INCLUDES
updates
* parser3.sln, src/targets/cgi/Makefile.am: .vcproj & .am updated
to include sdbm
* src/include/: pa_config_includes.h, pa_version.h: our
replacements of max& co only for cpp
* src/lib/sdbm/: Makefile.am, apr_file_io.C, apr_strings.C: move to
upper dir, .am updated
* tests/todo.txt: hashfile: done
* operators.txt, src/types/pa_vhashfile.C: hashfile: clear &
expiration [time in value. todo: move time to key]
* src/types/pa_vhashfile.C: hashfile: foreach body can bodify $self
* src/types/pa_vhashfile.C: hashfile: clear now works [were trying
to do that in foreach, no errors, but surely wrong]
* operators.txt, src/types/pa_vhashfile.C,
src/types/pa_vhashfile.h: hashfile: clear and proper locking
* operators.txt, src/classes/hash.C, src/classes/hashfile.C,
src/types/pa_vhashfile.C, src/types/pa_vhashfile.h: hashfile:
foreach
* src/classes/hashfile.C, src/types/pa_vhashfile.C,
src/types/pa_vhashfile.h, operators.txt: hashfile: hash
* operators.txt, src/classes/hashfile.C, src/types/pa_vhashfile.C,
src/types/pa_vhashfile.h, tests/todo.txt: hashfile: delete
* src/include/pa_memory.h, src/targets/cgi/parser3.C,
src/types/pa_value.C, src/types/pa_value.h,
src/types/pa_vcookie.C, src/types/pa_vhashfile.C,
src/types/pa_vhashfile.h, www/htdocs/.htaccess: hashfile
implemented get/put [raw]
* src/: classes/op.C, main/pa_os.C: just linked
* src/: classes/xdoc.C, classes/xnode.C, types/pa_vxnode.h:
XmlException changes
* src/: include/pa_charset.h, include/pa_globals.h,
include/pa_stylesheet_connection.h, main/pa_exception.C:
XmlException changes
* src/lib/sdbm/: sdbm.c, sdbm.vcproj: just compiled
* src/: include/pa_common.h, include/pa_exception.h,
main/main.vcproj, main/pa_common.C, include/pa_os.h,
include/pa_xml_exception.h, main/pa_os.C, lib/sdbm/sdbm.vcproj,
main/pa_xml_exception.C: locking move to pa_os [along with
pa_sleep] apr-impl locking done
* configure, configure.in, operators.txt, parser3.sln,
src/classes/classes.vcproj, src/classes/hashfile.C,
src/classes/xdoc.C, src/include/pa_config_fixed.h,
src/include/pa_exception.h, src/include/pa_globals.h,
src/include/pa_memory.h, src/include/pa_version.h,
src/lib/ltdl/libltdl.vcproj, src/lib/ltdl/libltdl.vcproj.vspscc,
src/lib/ltdl/ltdl.vcproj, src/lib/ltdl/ltdl.vcproj.vspscc,
src/main/compile.tab.C, src/main/main.vcproj,
src/main/pa_charset.C, src/targets/cgi/parser3.vcproj,
src/types/Makefile.am, src/types/pa_vhash.C,
src/types/pa_vhashfile.C, src/types/pa_vhashfile.h,
src/types/pa_vxnode.h, src/types/types.vcproj,
www/htdocs/.htaccess: hashfile: started again with sdbm from
apache
2003-11-05 paf
* src/: classes/classes.vcproj, include/pa_config_fixed.h,
main/main.vcproj, targets/cgi/parser3.vcproj: not has to be in
\parser3project dir anymore
* src/main/pa_charset.C: bugfix: had broken binary search [copied
thoughtlessly from xalan]
* src/lib/sdbm/: Makefile.am, sdbm.c, sdbm_hash.c, sdbm_lock.c,
sdbm_pair.c, sdbm_pair.h, sdbm_private.h, sdbm_tune.h: original
from httpd-2.0.43\srclib\apr-util\dbm\sdbm
* src/main/helpers/CaseFolding.txt:
http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
2003-11-04 paf
* operators.txt: comment: ^mail:send[$.options[
* src/classes/table.C: compiled on unix
* src/classes/Makefile.am: classes.C to rebuild last
* src/classes/mail.C: compiled on unix
* operators.txt, src/classes/mail.C, src/types/pa_vmail.C,
src/types/pa_vmail.h: !^mail:send[
$.options[unix: string to append to sendmail command
line]
* operators.txt, src/classes/table.C, src/main/pa_string.C,
tests/todo.txt: ^table.save[... $.separator[^#09]
$.encloser["] by default
* operators.txt, src/classes/table.C, tests/todo.txt: ^table::load
!$.separator[^#09] !$.encloser["] by
default
2003-11-03 paf
* operators.txt, src/classes/table.C, src/main/pa_common.C:
^table::load[; options: !$.column-separator[^#09]
!$.column-encloser["]
* operators.txt, src/include/pa_config_fixed.h,
src/types/pa_vrequest.C: $request:document-root
* src/targets/cgi/parser3.C: beauty: SIGUSRX removed qs= printing
[already included into uri=xxx]
* operators.txt, src/classes/image.C, tests/todo.txt,
www/htdocs/auto.p: ^image.gif[filename] for $response:download
* src/classes/date.C: minor precaution
* operators.txt, src/classes/date.C: !^date::unix-timestamp()
!^date.unix-timestamp[]
2003-10-30 paf
* operators.txt, src/classes/date.C, src/types/pa_vdate.h: merged
from 3.0.8: ^date.roll[TZ;GMT] $date.hour
* src/classes/: date.C, image.C: improvement diagnostics:
$now[^date::create[$undefined]] now is error
* src/main/pa_common.C: read errors would now be reported 'actually
read -1 bytes'
2003-10-24 paf
* Makefile.am, src/classes/Makefile.am, src/lib/cord/Makefile.am,
src/lib/md5/Makefile.am, src/lib/pcre/Makefile.am,
src/main/Makefile.am, src/targets/cgi/Makefile.am,
src/targets/isapi/Makefile.am: .dsp/w -> .vcproj/sln
2003-10-22 paf
* src/include/pa_request.h: fixed: $h[^hash::create[]] $$h[1]
2003-10-21 paf
* operators.txt, src/include/pa_string.h, src/main/pa_string.C:
fixed: string.match[g] without <'> option produced columns with
NULL's, which gpf'ed at table.save time
* src/: classes/op.C, include/pa_request.h: fixed: false 'endless
recoursion' message with intensive throw-catches fixed: incorrect
name and line (one name upper then needed) in error message about
problems inside try block
2003-10-10 paf
* src/include/pa_string.h, src/main/compile.tab.C,
www/htdocs/.htaccess: CORD_chr does not check offset argument for
validity did that in String::Body::pos myself
http://i2/tasks/edit/?id=4577425257580789777
2003-10-07 paf
* src/main/: compile.tab.C, compile.y: ^if ( better error:
.html(1:4): parse error, expecting `'['' or `'{'' or `'('' now
2003-10-03 paf
* parser3.sln, src/include/pa_dictionary.h,
src/main/pa_dictionary.C, src/main/pa_string.C,
src/targets/cgi/parser3.vcproj, www/htdocs/.htaccess: dictionary
optimized by precalculating cstr&length
2003-10-02 paf
* src/classes/op.C, src/include/pa_request.h,
src/include/pa_stack.h, src/main/execute.C,
src/main/pa_request.C, src/main/pa_sql_driver_manager.C,
src/main/pa_stylesheet_manager.C, www/htdocs/.htaccess: bugfix:
^throw context were saved/restored incompletely
http://www.parser.ru/forum/?id=21484
2003-09-30 paf
* src/main/pa_string.C: string::replace bug fix [were ignoring
occurrances after lang-mismatched
2003-09-29 paf
* src/main/: utf8-to-lower.inc, utf8-to-upper.inc: generated by
helper
* src/main/pa_string.C: string::serialize bug fix with
zero-terminator
* src/classes/table.C: ^nameless_table.save column row now has no
\t at the end
* src/: include/pa_request.h, main/execute.C, main/pa_request.C:
@postprocess now takes $response:body/download
* src/classes/form.C: better error message: MAX_POST_SIZE_NAME to
error message
* src/classes/string.C: bugfix: s.right(>s.length) returned nothing
* src/classes/table.C: bugfix: flip: must produce nameless
http://i2/tasks/edit/?id=4573405524674081244
* www/htdocs/: base.p, derived.p, font.gif, global.xsl, index.html,
mailreceive.eml, mailreceive.html, operators.p,
parser-status.html, people.dtd, some.p: removing old tests
* src/include/pa_charset.h, src/main/pa_charset.C,
src/main/pa_string.C, src/main/helpers/simple_folding.pl,
www/htdocs/auto.p: utf-8 upper/lower
* src/main/pa_common.C: bugfix: utf signature were not ignored due
to typo error http://i2/tasks/edit/?id=4573354650786434584
2003-09-26 paf
* src/main/untaint.C: removed needless field
* src/main/untaint.C: removed needless const
* src/include/pa_string.h, src/main/pa_common.C,
src/main/pa_string.C, www/htdocs/.htaccess: String.for_each bug
fixed [omited one-char cases]
* src/include/pa_stack.h: bugfix: before collecting garbage,
runtime-executor stack were cleared... BADLY
* src/main/pa_string.C, www/htdocs/.htaccess, www/htdocs/auto.p:
^stirng.replace code used old param-convention on langs.append,
fixed that search fo the like, found none
* src/classes/op.C, src/include/pa_string.h, src/main/pa_string.C,
www/htdocs/.htaccess: string::serialize/deserialize implemented
Language enum assigned meaningful letters [more convinient for
debugging. read warning before adding/changing anything]
2003-09-25 paf
* src/: include/pa_string.h, include/pa_version.h,
main/pa_string.C, main/untaint.C: templates and anonymous unions
differences on unix
* parser3.sln, src/classes/file.C, src/classes/image.C,
src/classes/mail.C, src/classes/op.C, src/classes/table.C,
src/classes/xdoc.C, src/classes/xnode.C,
src/include/pa_cache_managers.h, src/include/pa_charset.h,
src/include/pa_charsets.h, src/include/pa_common.h,
src/include/pa_request.h, src/include/pa_sql_driver_manager.h,
src/include/pa_string.h, src/include/pa_stylesheet_manager.h,
src/include/pa_table.h, src/lib/cord/cordbscs.c,
src/lib/cord/cordprnt.c, src/lib/cord/cordxtra.c,
src/lib/cord/include/cord.h, src/main/compile.tab.C,
src/main/compile_tools.h, src/main/pa_charset.C,
src/main/pa_charsets.C, src/main/pa_common.C, src/main/pa_exec.C,
src/main/pa_request.C, src/main/pa_sql_driver_manager.C,
src/main/pa_string.C, src/main/pa_stylesheet_manager.C,
src/main/untaint.C, src/types/pa_value.h, src/types/pa_vimage.C,
src/types/pa_vmail.C, src/types/pa_vmath.C,
src/types/pa_vstateless_class.h, src/types/pa_vstatus.C,
src/types/pa_vxnode.C, www/htdocs/.htaccess:
string_fragments_to_cord merged to HEAD
* src/main/: compile.tab.C, pa_string.C: string: debug: .v()
functions aligned to that of eeparser3 look
* src/lib/cord/cordprnt.c: removed warnings
2003-09-24 paf
* src/: classes/file.C, classes/image.C, classes/mail.C,
classes/op.C, classes/xdoc.C, classes/xnode.C,
include/pa_cache_managers.h, include/pa_charset.h,
include/pa_charsets.h, include/pa_common.h, include/pa_request.h,
include/pa_sql_driver_manager.h, include/pa_string.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
main/compile_tools.h, main/pa_charset.C, main/pa_charsets.C,
main/pa_common.C, main/pa_exec.C, main/pa_request.C,
main/pa_sql_driver_manager.C, main/pa_string.C,
main/pa_stylesheet_manager.C, main/untaint.C, types/pa_value.h,
types/pa_vimage.C, types/pa_vmail.C, types/pa_vmath.C,
types/pa_vstateless_class.h, types/pa_vstatus.C,
types/pa_vxnode.C: v() functions of String::Body,
String::Languages and String itself StringBody->String::Body
* src/: include/pa_string.h, lib/cord/cordbscs.c,
lib/cord/include/cord.h: CORD_append_block showed no efficiency =
never optimized anything. todo: somehow speed up harder cases:
concatenationA+concatenationB when last block of A and first of B
contain same letters
* src/: include/pa_string.h, lib/cord/cordbscs.c,
lib/cord/include/cord.h: langs: speed up by joining adjucent
blocks of same char [CORD_append_block]
* src/: include/pa_string.h, lib/cord/cordbscs.c,
lib/cord/include/cord.h, main/pa_string.C: aval/ works! todo:
save space by extending blocks when appending block with c ==
lastblock.c
* src/: include/pa_string.h, main/pa_string.C: aval is not actually
working yet :( but more working &understood :)
* src/: classes/table.C, include/pa_string.h,
lib/cord/include/cord.h, main/pa_string.C: aval/ works!
2003-09-23 paf
* src/main/untaint.C: $a[ok!] $a works!
* src/main/untaint.C: something even more works :)
* src/: include/pa_string.h, main/pa_string.C, main/untaint.C:
something more works :)
* src/: include/pa_string.h, lib/cord/cordbscs.c,
lib/cord/cordxtra.c: something already works :)
* src/: include/pa_string.h, main/untaint.C: just compiled todo:
serialize&deserialize
* src/: classes/table.C, include/pa_string.h, lib/cord/cordbscs.c,
lib/cord/cordxtra.c, lib/cord/include/cord.h, main/pa_string.C,
main/untaint.C: main idea implemented, details left
2003-09-22 paf
* src/: classes/memory.C, include/pa_memory.h: #ifdef GC_DEBUG
* src/classes/xnode.C: copy/paste comment bugfix
* src/: include/pa_memory.h, main/pa_globals.C: when xml memory
allocator returns 0, just die.
http://i2/tasks/edit/?id=4570798492410259445
* src/classes/xdoc.C: copy/paste comment bugfix
* src/classes/: xdoc.C, xnode.C: new DOM2 methods from Alexandr
Egorov (all?) xdoc: createAttributeNS createElementNS
xnode: getAttributeNS setAttributeNS removeAttributeNS
getAttributeNodeNS setAttributeNodeNS hasAttribute hasAttributeNS
* src/lib/cord/cordxtra.c: CORD_pos bugfix [failed to find 8bit
chars due to bitwise operation signed-char error]
2003-09-19 paf
* src/types/pa_wcontext.C: output message: more practical
suggestion
* src/main/pa_common.C, operators.txt: merged
$f[^file::load[binary;http://...]] $f.tables
2003-09-02 paf
* src/main/pa_common.C: printf is buffered, write(1 is not. can't
flush stdout without referencing 'stdout' symbol. to hell with
non-ansi libraries without 'stdout' symbol
* src/main/pa_common.C: got rid of 'stdout' symbol reference on
unix (users reported problems with some old libc)
* src/types/pa_vdate.h: forgot initializer
2003-09-01 paf
* src/: classes/date.C, include/pa_common.h, main/compile.tab.C,
main/pa_common.C, types/pa_vdate.h: $date.TZ ^date.roll[TZ;new
zone]
* src/classes/image.C: memory handling bugs [unpatched 'new' calls]
2003-08-19 paf
* src/types/: pa_value.C, pa_value.h, pa_vdate.h, pa_vrequest.C,
pa_vstring.h, pa_vxdoc.C, pa_vxnode.C: bark intefrace obsoleted,
simplified a little
* src/types/: pa_vhash.C, pa_vhash.h: _default+foreach bug refix
[lost fix from 3.0.8]
* src/types/pa_vcookie.C: in VC7 if(type var=xxx){ }else{ now
visible here }
bug fix
* src/: include/pa_memory.h, types/pa_value.h: -= few warnings
* src/main/compile.tab.C: initialized couple of variables about
which user reported runtime problems when parser were compiled
with VC7, warning level4. study shows that later in bison
they've fixed that. would migrate to latest bison someday
* src/types/pa_vmail.C: turned off recoding in gmime (were still
recoding headers)
* src/types/pa_vmail.C: works as before, same charset problems:
gmime recodes to UTF-8 only headers, not body. so not recoding
anything for now
* src/types/: pa_vmail.C, pa_vmail.h: parses headers, still
problems with body
* src/types/pa_vmail.C: mail_receive just compiled
2003-08-18 paf
* src/: classes/classes.vcproj, include/pa_config_fixed.h,
main/main.vcproj, types/types.vcproj: win32: continued process
detaching from \parser3project directory
* gnu.dsp, parser3.dsw, src/classes/classes.dsp,
src/lib/cord/cord.dsp, src/lib/ltdl/libltdl.dsp,
src/lib/md5/md5.dsp, src/lib/pcre/pcre.dsp,
src/lib/pcre/pcre_dftables.dsp,
src/lib/pcre/pcre_parser_ctype.dsp, src/main/main.dsp,
src/targets/cgi/parser3.dsp, src/targets/isapi/parser3isapi.dsp,
src/types/types.dsp: moved to MSVC 7
* gnu.vcproj.vspscc, parser3.vssscc,
src/classes/classes.vcproj.vspscc,
src/lib/cord/cord.vcproj.vspscc,
src/lib/ltdl/libltdl.vcproj.vspscc,
src/lib/md5/md5.vcproj.vspscc,
src/lib/pcre/pcre_dftables.vcproj.vspscc,
src/lib/pcre/pcre_parser_ctype.vcproj.vspscc,
src/lib/pcre/pcre.vcproj.vspscc, src/main/main.vcproj.vspscc,
src/targets/isapi/parser3isapi.vcproj.vspscc,
src/types/types.vcproj.vspscc, src/targets/cgi/parser3.vcproj:
moved to MSVC 7
* parser3.sln, gnu.vcproj, src/classes/classes.vcproj,
src/lib/cord/cord.vcproj, src/lib/ltdl/libltdl.vcproj,
src/lib/md5/md5.vcproj, src/lib/pcre/pcre.vcproj,
src/lib/pcre/pcre_dftables.vcproj,
src/lib/pcre/pcre_parser_ctype.vcproj, src/main/main.vcproj,
src/targets/cgi/parser3.vcproj,
src/targets/isapi/parser3isapi.vcproj, src/types/types.vcproj:
new VS project files
* ~sak5c961f3101c36563.tmp: Temporary file created by Visual Studio
.NET to detect Jalindi Igloo capabilities.
* ChangeLog, configure, configure.in, src/classes/Makefile.am,
src/classes/classes.awk, src/doc/footer.htm,
src/include/pa_config_fixed.h, src/include/pa_version.h,
src/lib/Makefile.am, src/main/compile.tab.C,
src/main/pa_charset.C, src/main/pa_string.C, src/main/untaint.C,
src/types/pa_vmail.C, www/htdocs/.htaccess, www/htdocs/auto.p:
merged 3.1.0 latest changes
2003-08-15 paf
* src/main/untaint.C: email addresses in forms: "non-ascii"
non-ascii now encoded correctly [kinda merge from 3.0.8]
* src/main/untaint.C: email addresses in forms: "non-ascii"
non-ascii now encoded correctly
2003-07-29 paf
* src/classes/: Makefile.am, classes.awk: classes.awk added to make
dist
* src/types/pa_vmail.C: just started --with-mail-receive
2003-07-28 paf
* src/: classes/Makefile.am, lib/Makefile.am: removed circular
dependence in src/classes, src/lib/gc now in dist
* src/main/pa_string.C: ^cache bug fix [were not working at all]
2003-07-25 paf
* src/doc/footer.htm: year
2003-07-24 paf
* src/: include/pa_config_fixed.h, main/pa_charset.C: bad #endif
fix
* src/include/pa_version.h: release
* src/lib/gc/include/: Makefile.am, gc.h: moved tempate_gc to HEAD
* ChangeLog, src/classes/classes.dsp, src/main/main.dsp,
src/main/pa_globals.C, src/targets/cgi/parser3.dsp,
src/targets/isapi/parser3isapi.dsp, src/types/types.dsp: cvs:
getting rid of win32xml pseudo project
* src/main/: compile.tab.C, pa_memory.C: moved tempate_gc to HEAD
* ChangeLog, INSTALL, Makefile.am, acsite.m4, configure,
configure.in, operators.txt, parser3.dsw,
etc/parser3.charsets/koi8-r.cfg,
etc/parser3.charsets/windows-1251.cfg, src/classes/Makefile.am,
src/classes/classes.C, src/classes/classes.awk,
src/classes/classes.dsp, src/classes/classes.h,
src/classes/date.C, src/classes/double.C, src/classes/file.C,
src/classes/form.C, src/classes/hash.C, src/classes/image.C,
src/classes/int.C, src/classes/mail.C, src/classes/math.C,
src/classes/memory.C, src/classes/op.C, src/classes/response.C,
src/classes/string.C, src/classes/table.C, src/classes/void.C,
src/classes/xdoc.C, src/classes/xnode.C, src/classes/xnode.h,
src/doc/exception.dox, src/doc/index.dox, src/doc/memory.dox,
src/doc/string.dox, src/include/Makefile.am,
src/include/pa_array.h, src/include/pa_cache_managers.h,
src/include/pa_charset.h, src/include/pa_charsets.h,
src/include/pa_common.h, src/include/pa_config_auto.h.in,
src/include/pa_config_fixed.h, src/include/pa_config_includes.h,
src/include/pa_dictionary.h, src/include/pa_dir.h,
src/include/pa_exception.h, src/include/pa_exec.h,
src/include/pa_globals.h, src/include/pa_hash.h,
src/include/pa_memory.h, src/include/pa_opcode.h,
src/include/pa_operation.h, src/include/pa_pool.h,
src/include/pa_pragma_pack_begin.h,
src/include/pa_pragma_pack_end.h, src/include/pa_request.h,
src/include/pa_request_charsets.h, src/include/pa_request_info.h,
src/include/pa_sapi.h, src/include/pa_socks.h,
src/include/pa_sql_connection.h,
src/include/pa_sql_driver_manager.h, src/include/pa_stack.h,
src/include/pa_string.h, src/include/pa_stylesheet_connection.h,
src/include/pa_stylesheet_manager.h, src/include/pa_table.h,
src/include/pa_threads.h, src/include/pa_types.h,
src/include/pa_uue.h, src/lib/Makefile.am,
src/lib/cord/Makefile.am, src/lib/cord/cord.dsp,
src/lib/cord/cordbscs.c, src/lib/cord/cordprnt.c,
src/lib/cord/cordxtra.c, src/lib/cord/source.url,
src/lib/cord/include/Makefile.am, src/lib/cord/include/cord.h,
src/lib/cord/include/ec.h,
src/lib/cord/include/private/Makefile.am,
src/lib/cord/include/private/cord_pos.h, src/lib/gc/Makefile.am,
src/lib/ltdl/libltdl.dsp, src/lib/md5/pa_md5.h,
src/lib/md5/pa_md5c.c, src/lib/pcre/pcre.h,
src/lib/pcre/pcre_parser_ctype.c, src/main/Makefile.am,
src/main/compile.C, src/main/compile.tab.C, src/main/compile.y,
src/main/compile_tools.C, src/main/compile_tools.h,
src/main/execute.C, src/main/main.dsp, src/main/pa_array.C,
src/main/pa_cache_managers.C, src/main/pa_charset.C,
src/main/pa_charsets.C, src/main/pa_common.C,
src/main/pa_dictionary.C, src/main/pa_dir.C,
src/main/pa_exception.C, src/main/pa_exec.C,
src/main/pa_globals.C, src/main/pa_hash.C, src/main/pa_pool.C,
src/main/pa_request.C, src/main/pa_socks.C,
src/main/pa_sql_driver_manager.C, src/main/pa_string.C,
src/main/pa_stylesheet_manager.C, src/main/pa_table.C,
src/main/pa_uue.C, src/main/untaint.C, src/sql/pa_sql_driver.h,
src/targets/Makefile.am, src/targets/cgi/Makefile.am,
src/targets/cgi/getopt.c, src/targets/cgi/getopt.h,
src/targets/cgi/pa_pool.C, src/targets/cgi/pa_threads.C,
src/targets/cgi/parser3.C, src/targets/cgi/parser3.dsp,
src/targets/cgi/pool_storage.h, src/targets/cgi/pp3.cmd,
src/targets/isapi/Makefile.am, src/targets/isapi/pa_pool.C,
src/targets/isapi/pa_threads.C, src/targets/isapi/parser3isapi.C,
src/targets/isapi/parser3isapi.dsp,
src/targets/isapi/pool_storage.h, src/types/Makefile.am,
src/types/pa_junction.h, src/types/pa_method.h,
src/types/pa_value.C, src/types/pa_value.h, src/types/pa_vbool.h,
src/types/pa_vclass.C, src/types/pa_vclass.h,
src/types/pa_vcode_frame.h, src/types/pa_vcookie.C,
src/types/pa_vcookie.h, src/types/pa_vdate.h,
src/types/pa_vdouble.h, src/types/pa_venv.h,
src/types/pa_vfile.C, src/types/pa_vfile.h, src/types/pa_vform.C,
src/types/pa_vform.h, src/types/pa_vhash.C, src/types/pa_vhash.h,
src/types/pa_vimage.C, src/types/pa_vimage.h,
src/types/pa_vint.h, src/types/pa_vjunction.h,
src/types/pa_vmail.C, src/types/pa_vmail.h, src/types/pa_vmath.C,
src/types/pa_vmath.h, src/types/pa_vmemory.h,
src/types/pa_vmethod_frame.C, src/types/pa_vmethod_frame.h,
src/types/pa_vobject.C, src/types/pa_vobject.h,
src/types/pa_vrequest.C, src/types/pa_vrequest.h,
src/types/pa_vresponse.C, src/types/pa_vresponse.h,
src/types/pa_vstateless_class.C, src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, src/types/pa_vstatus.C,
src/types/pa_vstatus.h, src/types/pa_vstring.C,
src/types/pa_vstring.h, src/types/pa_vtable.C,
src/types/pa_vtable.h, src/types/pa_vvoid.h,
src/types/pa_vxdoc.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.C, src/types/pa_vxnode.h,
src/types/pa_wcontext.C, src/types/pa_wcontext.h,
src/types/pa_wwrapper.h, src/types/types.dsp,
www/htdocs/.htaccess, www/htdocs/auto.p, www/htdocs/index.html:
moved tempate_gc to HEAD
* tests/: 001.html, 002.html, 003.html, 004.html, 005.html,
006.html, 007.html, 008.html, 009.html, 010.html, 011.html,
012.html, 013.html, 014.html, 015.html, 016.html, 017.html,
018.html, 019.html, 019paf2001.gif, 020.html, 021.html, 022.html,
023.html, 024.html, 025.html, 026.html, 027.html, 028.html,
029.html, 030.html, 031.html, 032.html, 033.html, 034.html,
035.html, 036.html, 037.html, 038.html, 039.html, 040.html,
041.html, 042.html, 043.html, 044.html, 045.html, 046.html,
047.html, 048.html, 049.html, 050.html, 051.html, 051b.p, 051t.p,
052.html, 053.html, 054.html, 055.html, 056.html, 057.html,
058.html, 058_paf2000.png, 059.html, 060.html, 061.dat, 061.html,
062.html, 063.html, 064.html, 065.html, 066.html, 067.html,
068.html, 069.html, 070.html, 071.html, 072.html, 073.html,
074.html, 075.html, 076.html, 077.html, 078.html, 079.html,
080.html, 081.html, 082.html, 083.html, 084.html, 085.html,
086.html, 087.html, 088.html, 089.html, 090.html, 091.html,
092.html, 093.html, 094.html, 095.html, 096.html, 097.html,
098.html, 098font.gif, 099.html, 100.html, 101.html, 102.html,
103.html, 103mark.gif, 103paf2001.gif, 104.html, 105.html,
106.html, 107.html, 108.html, 108.xsl, 109.html, 110.html,
111.html, 112.html, 113.html, 114.html, 115.html, 116.html,
117.html, 118.html, 119.html, 120.html, 121.html, 122.html,
123.html, 124.html, 125.html, 126.html, 127.html, 128.html,
129.html, 130.html, 131.html, 132.html, 133.html, 134.html,
135.html, 136.html, 137.html, 138.html, 139.html, 140.html,
141.html, Makefile, descript.ion, run_parser.sh, 022_dir/a.html,
022_dir/b.txt, 022_dir/c.htm, 096_dir/163.jpg, 096_dir/188.jpg,
outputs/create-dir, results/001.processed, results/002.processed,
results/003.processed, results/004.processed,
results/005.processed, results/006.processed,
results/007.processed, results/008.processed,
results/009.processed, results/010.processed,
results/011.processed, results/012.processed,
results/013.processed, results/014.processed,
results/015.processed, results/016.processed,
results/017.processed, results/018.processed,
results/019.processed, results/020.processed,
results/021.processed, results/022.processed,
results/023.processed, results/024.processed,
results/025.processed, results/026.processed,
results/027.processed, results/028.processed,
results/029.processed, results/030.processed,
results/031.processed, results/032.processed,
results/033.processed, results/034.processed,
results/035.processed, results/036.processed,
results/037.processed, results/038.processed,
results/039.processed, results/040.processed,
results/041.processed, results/042.processed,
results/043.processed, results/044.processed,
results/045.processed, results/046.processed,
results/047.processed, results/048.processed,
results/049.processed, results/050.processed,
results/051.processed, results/052.processed,
results/053.processed, results/054.processed,
results/055.processed, results/056.processed,
results/057.processed, results/058.processed,
results/059.processed, results/060.processed,
results/061.processed, results/062.processed,
results/063.processed, results/064.processed,
results/065.processed, results/066.processed,
results/067.processed, results/068.processed,
results/069.processed, results/070.processed,
results/071.processed, results/072.processed,
results/073.processed, results/074.processed,
results/075.processed, results/076.processed,
results/077.processed, results/078.processed,
results/079.processed, results/080.processed,
results/081.processed, results/082.processed,
results/083.processed, results/084.processed,
results/085.processed, results/086.processed,
results/087.processed, results/088.processed,
results/089.processed, results/090.processed,
results/091.processed, results/092.processed,
results/093.processed, results/094.processed,
results/095.processed, results/096.processed,
results/097.processed, results/098.processed,
results/099.processed, results/100.processed,
results/101.processed, results/102.processed,
results/103.processed, results/104.processed,
results/105.processed, results/106.processed,
results/107.processed, results/108.processed,
results/109.processed, results/110.processed,
results/111.processed, results/112.processed,
results/113.processed, results/114.processed,
results/115.processed, results/116.processed,
results/117.processed, results/118.processed,
results/119.processed, results/120.processed,
results/121.processed, results/122.processed,
results/123.processed, results/124.processed,
results/125.processed, results/126.processed,
results/127.processed, results/128.processed,
results/129.processed, results/130.processed,
results/131.processed, results/132.processed,
results/133.processed, results/134.processed,
results/135.processed, results/136.processed,
results/137.processed, results/138.processed,
results/139.processed, results/140.processed,
results/141.processed: merged(copied) to HEAD from template_gc
* src/targets/: cgi/parser3.dsp, isapi/parser3isapi.dsp: more step
towards \parser3project not having to be in root
* src/: classes/math.C, lib/md5/pa_md5.h, lib/md5/pa_md5c.c: apache
module compiled [were minor unnecessary changes in lib/md5
interface]
* src/include/pa_version.h: release
* parser3.dsw, src/main/pa_globals.C, www/htdocs/.htaccess:
relative paths to xml&gc libs
* src/classes/math.C: merged uuid bugfix
* tests/: 141.html, results/141.processed: fixed bug with
too-small-a-buffer
* src/classes/math.C: uuid bugfix
* tests/: 141.html, Makefile, results/005.processed,
results/030.processed, results/075.processed,
results/078.processed: to reflect date format change (were -
become ' ')
* src/classes/math.C: uuid bugfix
* parser3.dsw, src/main/pa_globals.C, www/htdocs/.htaccess: few
paths for libxml debug/release changes
* src/lib/md5/pa_md5c.c: PA_ -> pa_
2003-07-23 paf
* src/: classes/math.C, lib/md5/pa_md5.h, lib/md5/pa_md5c.c:
renamed a little [to move to comman naming conv]
* src/targets/Makefile.am: apache13 splitted to simplify apache
build
* src/: include/pa_request.h, include/pa_stack.h, main/execute.C,
main/pa_request.C, main/pa_sql_driver_manager.C,
main/pa_stylesheet_manager.C, targets/isapi/parser3isapi.dsp:
stack top_index() fixed
* src/main/pa_globals.C: minor style changes
* src/: classes/op.C, include/pa_sql_connection.h: connection
closing/caching fixed [connections were not closed/put to cache]
2003-07-22 paf
* INSTALL: gc part updated stightly
* src/targets/isapi/: parser3isapi.C, parser3isapi.dsp: updated to
new sapi interface
* src/classes/file.C: comment on OS
* src/main/pa_string.C: removed reduntant invariant check [there is
one deeper in cord lib]
* src/main/pa_exec.C: on win32 bugfix in handling shbang
* src/main/pa_memory.C: out of memory is no longer coredump
* INSTALL: disable-threads adviced
2003-07-21 paf
* src/classes/Makefile.am: removed circular dependency on classes.C
* src/classes/file.C: file::exec/cgi environment variables now must
be UPPERCASE and A-Z 0-9 _-
* src/classes/file.C: env passing fixed
* src/main/pa_common.C: http:// CRLF now [merged from HEAD]
* src/main/pa_common.C: http:// CRLF now
2003-07-02 paf
* operators.txt, src/types/pa_vstatus.C: renamed $memory:status
fields to reflect their real meaning
2003-06-27 paf
* src/: classes/file.C, include/pa_charset.h, include/pa_exec.h,
include/pa_hash.h, main/pa_charset.C: merged from HEAD
file::exec/cgi .charset
2003-06-26 paf
* ChangeLog, src/classes/file.C, src/classes/hash.C,
src/classes/image.C, src/classes/op.C, src/classes/string.C,
src/classes/table.C, www/htdocs/.htaccess: fixed several
uninitialized local structures. notably ^hash.foreach now
inserts delimiters properly [were inserting it before first body]
2003-06-24 paf
* src/include/pa_hash.h: simplified HASH_ALLOCATES_COUNT
2003-06-20 paf
* operators.txt, src/include/pa_globals.h, src/main/pa_common.C,
src/main/pa_globals.C: introducing
$f[^file::load[binary;http://...]] $f.tables
2003-06-06 paf
* src/types/: pa_vhash.h: $hash.field lookup first now: along with
table. [were method lookup: inconsistent]
2003-06-02 paf
* src/include/pa_memory.h: empty string clone fixed to return
writable memory
* src/main/pa_common.C: fix_line_breaks bug fix [terminating zero
were not appended] which violated string invariant
2003-05-30 paf
* src/types/pa_value.C: date format now Sun, 06 Nov 1994 08:49:37
GMT ; RFC 822, updated by RFC 1123 [as in HEAD]
* src/main/pa_common.C: date format now Sun, 06 Nov 1994 08:49:37
GMT ; RFC 822, updated by RFC 1123
* src/: classes/file.C, classes/form.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C: initialized request_info properly
* src/classes/xnode.C: found minor bug, commended for future
2003-05-28 paf
* src/classes/form.C: request_info.content_length can't be <0,
size_t for some time
2003-05-26 paf
* src/: classes/file.C, classes/string.C, main/pa_string.C: few
forgotten <0 changed to !=STRING_NOT_FOUND
* src/classes/math.C: merged ffffu from HEAD
2003-05-11 paf
* src/main/pa_globals.C: xml memory debugging functions (ifdefed)
* src/types/: pa_vxdoc.h, pa_vxnode.h: think that found cause of
premature doc free. transformed document had xmlDoc reference
stored to non-gc-memory (libgdome) added holding-reference
2003-04-29 paf
* src/main/pa_globals.C: started digging on double free. on win32
found that that's perfectly normal.
2003-04-25 paf
* src/classes/table.C: table.join bug fix [bad limit check]
* src/classes/math.C: merged from HEAD: simpiler hash_string
* src/classes/math.C: snprintf(buf, 3) become (buf,2) and failed to
print anything. changed to quicker and simplier code
* src/classes/hash.C: allowed ^hash::create[^rem{xxx}] [were to
strict a check]
* src/: classes/table.C, lib/md5/pa_md5c.c: minor compile errors
2003-04-24 paf
* src/include/pa_table.h: too strict assert loosened
* src/lib/: md5/pa_md5c.c, pcre/pcre.h: thanks to Ilia Soldis
for reporing this ansi c fiolation syntax
report
2003-04-21 paf
* src/targets/cgi/Makefile.am: pp3 added to .am
* src/main/pa_globals.C: pcre memory management changed to use GC
memory
* src/main/pa_globals.C: 2.5.6 version of libxml allows to install
xmlMallocAtomic [author agreed to my suggestion], used that
* src/types/pa_vmail.C: ^mail:send[$.body backward compatibility
* src/: targets/cgi/parser3.C, types/pa_value.C, types/pa_value.h,
types/pa_vmail.C: attributed_meaning_to_string added
L_UNSPECIFIED piece which was sortof OK, but violated string
invariant [assertion barked on that] changed to L_PASS_APPEND,
made that param obligatory
* src/main/pa_string.C: String::ArrayFragment::append_positions bug
fixed [assert helped]
* src/include/pa_string.h: assert added [looking for bug]
* src/main/pa_request.C: merged from HEAD: "x:..." and "\\..." file
names on Win32 considered disk-global
* src/main/pa_request.C: "x:..." and "\\..." file names on Win32
considered disk-global
2003-04-18 paf
* src/main/untaint.C: merged from HEAD: enabled '~' letter in
filenames
* src/main/untaint.C: enabled '~' letter in filenames
2003-04-16 paf
* src/classes/file.C: small bug introduced in autoptr times fixed
* etc/parser3.charsets/: koi8-r.cfg, windows-1251.cfg: merged from
HEAD
* src/classes/table.C: fix: gcc reported tiny error
2003-04-15 paf
* operators.txt, src/classes/math.C, src/lib/md5/pa_md5.h,
src/lib/md5/pa_md5c.c, tests/141.html,
tests/results/141.processed, www/htdocs/.htaccess: merged from
head ^math:uuid[] ^math:uid64[] ^math:md5[string]
test added: 141.html
* operators.txt, src/classes/math.C: ^math:uid64[]
* src/classes/math.C: ^math:uuid[]
* operators.txt, src/classes/math.C: ^math:uuid[]
* operators.txt, src/classes/math.C, src/lib/md5/pa_md5.h,
src/lib/md5/pa_md5c.c: ^math:md5[string] 16-byte digest
* operators.txt, src/classes/file.C, src/include/pa_common.h,
src/include/pa_config_fixed.h, src/main/pa_common.C:
^file::load[mode;name; $.offset $.limit
2003-04-14 paf
* src/: classes/math.C, lib/md5/pa_md5.h, lib/md5/pa_md5c.c:
started ^math:md5
* src/classes/table.C, src/include/pa_array.h,
src/include/pa_table.h, src/main/pa_table.C, tests/140.html,
tests/results/140.processed: table $.reverse option works in
create&co table $.distinct[tables] bug fix merged
* src/: classes/table.C, include/pa_table.h: table
$.distinct[tables] bug fixed
* src/classes/table.C: more warnings
* src/include/pa_array.h, src/include/pa_table.h,
src/main/pa_table.C, www/htdocs/.htaccess: removed checks in
table::set_current, moved them back to table::locate implemented
table::create/join ñ $.reverse
* src/: include/pa_table.h, main/pa_array.C, main/pa_table.C:
removed checks in table::set_current, moved them back to
table::locate
2003-04-11 paf
* operators.txt, src/classes/date.C, src/classes/table.C,
src/include/pa_array.h, src/include/pa_common.h,
src/include/pa_config_includes.h, src/include/pa_string.h,
src/include/pa_table.h, src/main/pa_request.C,
src/main/pa_sql_driver_manager.C, src/main/pa_string.C,
src/main/pa_table.C, www/htdocs/.htaccess: merged from HEAD from
before_append_array_limit_sense_change to
after_append_array_limit_sense_change
* src/classes/table.C: typo
* www/htdocs/.htaccess, operators.txt, src/classes/date.C,
src/classes/table.C, src/include/pa_array.h,
src/include/pa_common.h, src/include/pa_config_includes.h,
src/include/pa_globals.h, src/include/pa_table.h,
src/main/pa_array.C, src/main/pa_globals.C,
src/main/pa_request.C, src/main/pa_sql_driver_manager.C,
src/main/pa_string.C, src/main/pa_table.C:
append_array_limit_sense_change locate accepts options same as
create new option: $.reverse(1) [do not work in table::create]
* src/: include/pa_common.h, main/pa_common.C: gcc didn't like
(stat xxx,
* src/classes/: table.C: typo
* tests/: 130.html, 131.html, 132.html, 133.html, 134.html,
135.html, 136.html, 137.html, 138.html, 139.html, descript.ion,
results/130.processed, results/131.processed,
results/132.processed, results/133.processed,
results/134.processed, results/135.processed,
results/136.processed, results/137.processed,
results/138.processed, results/139.processed: added few mustfail
tests 130.html mustfail: empty regexp 131.html mustfail: invalid
date/time 132.html mustfail: access to junction outside of
context 133.html mustfail: access to junction outside of context,
case version 134.html mustfail: hash: adding a key inside of
foreach 135.html mustfail: modifying system class 136.html
mustfail: $.name outside of $hash[here] 137.html mustfail:
appendChild without import 138.html mustfail: invalid encoding
inside of xml 139.html mustfail: bad XPath
* operators.txt, src/classes/table.C, tests/084.html,
tests/125.html, tests/126.html, tests/127.html, tests/128.html,
tests/129.html, tests/results/125.processed,
tests/results/126.processed, tests/results/127.processed,
tests/results/128.processed, tests/results/129.processed: merged
from HEAD ^table.hash[key][$.distinct[tables]]
maked appropriate tests [changed one old nonconforming]
* operators.txt, src/classes/table.C:
^table.hash[key][$.distinct[tables]]
* src/: classes/xdoc.C, classes/xnode.C, include/pa_charset.h:
merged fix for found very old xml (dom) bug: were passing
domString objects and later ERROREOUSLY freed them
* INSTALL, src/include/pa_charset.h, src/lib/Makefile.am,
src/main/pa_charset.C: re-added libgdome patch. regretfully
libgdome bug can not be worked around
2003-04-10 paf
* src/: classes/xdoc.C, classes/xnode.C, include/pa_charset.h:
found very old xml (dom) bug: were passing domString objects and
later ERROREOUSLY freed them
* src/doc/string.dox, src/include/pa_memory.h,
src/include/pa_string.h, src/lib/cord/cordbscs.c,
src/main/pa_string.C, src/types/pa_vform.C, src/types/pa_vform.h,
tests/123.html, tests/124.html, tests/results/001.processed,
tests/results/002.processed, tests/results/003.processed,
tests/results/004.processed, tests/results/005.processed,
tests/results/006.processed, tests/results/008.processed,
tests/results/009.processed, tests/results/010.processed,
tests/results/011.processed, tests/results/012.processed,
tests/results/013.processed, tests/results/014.processed,
tests/results/015.processed, tests/results/016.processed,
tests/results/017.processed, tests/results/018.processed,
tests/results/020.processed, tests/results/021.processed,
tests/results/022.processed, tests/results/023.processed,
tests/results/024.processed, tests/results/025.processed,
tests/results/026.processed, tests/results/027.processed,
tests/results/028.processed, tests/results/029.processed,
tests/results/030.processed, tests/results/031.processed,
tests/results/032.processed, tests/results/033.processed,
tests/results/034.processed, tests/results/035.processed,
tests/results/036.processed, tests/results/037.processed,
tests/results/038.processed, tests/results/039.processed,
tests/results/040.processed, tests/results/041.processed,
tests/results/042.processed, tests/results/043.processed,
tests/results/044.processed, tests/results/045.processed,
tests/results/046.processed, tests/results/047.processed,
tests/results/048.processed, tests/results/049.processed,
tests/results/050.processed, tests/results/051.processed,
tests/results/052.processed, tests/results/053.processed,
tests/results/054.processed, tests/results/055.processed,
tests/results/056.processed, tests/results/057.processed,
tests/results/058.processed, tests/results/059.processed,
tests/results/060.processed, tests/results/061.processed,
tests/results/062.processed, tests/results/063.processed,
tests/results/064.processed, tests/results/065.processed,
tests/results/066.processed, tests/results/067.processed,
tests/results/068.processed, tests/results/069.processed,
tests/results/070.processed, tests/results/071.processed,
tests/results/072.processed, tests/results/073.processed,
tests/results/074.processed, tests/results/075.processed,
tests/results/076.processed, tests/results/077.processed,
tests/results/078.processed, tests/results/079.processed,
tests/results/080.processed, tests/results/081.processed,
tests/results/082.processed, tests/results/083.processed,
tests/results/084.processed, tests/results/085.processed,
tests/results/086.processed, tests/results/087.processed,
tests/results/088.processed, tests/results/089.processed,
tests/results/090.processed, tests/results/091.processed,
tests/results/092.processed, tests/results/093.processed,
tests/results/094.processed, tests/results/095.processed,
tests/results/096.processed, tests/results/097.processed,
tests/results/101.processed, tests/results/102.processed,
tests/results/104.processed, tests/results/105.processed,
tests/results/106.processed, tests/results/107.processed,
tests/results/108.processed, tests/results/109.processed,
tests/results/110.processed, tests/results/111.processed,
tests/results/112.processed, tests/results/113.processed,
tests/results/114.processed, tests/results/115.processed,
tests/results/116.processed, tests/results/117.processed,
tests/results/118.processed, tests/results/119.processed,
tests/results/120.processed, tests/results/121.processed,
tests/results/122.processed, tests/results/123.processed,
tests/results/124.processed: new convention: char* never 0.
assert in cord on that
* src/main/pa_charset.C: couple more asserts
* src/: main/pa_charset.C, include/pa_charset.h: little transcodes
speedup
* src/main/pa_charset.C: couple assertions on fantastic situations
added [may be those is the case now?]
* src/main/pa_charset.C: bugfix on memory buffer overrun [but
that's memory from gc_malloc, not from g_malloc :(, but would
hope]
* src/main/pa_charset.C: bugfix on memory buffer overrun [but
that's memory from gc_malloc, not from g_malloc :(, but would
hope]
* src/main/pa_charset.C: checked custom malloc for returning 0
2003-04-09 paf
* src/classes/date.C: merged ^date.roll changes
* src/classes/date.C: ^date.roll bug fix
* src/classes/date.C: ^date.roll now throws less errors: month
shifts handles end of month situation by reducing day number
hour-hole shift reduces hour to recover
* src/targets/cgi/pp3.cmd: custom profiling script: plist/ST <<
Sort by function time
* operators.txt, src/main/pa_charset.C, src/main/pa_common.C:
http:// $.charset[] param done
* tests/: 122.html, results/122.processed: 122 date test <= and ==
added [after volatile fix. passes on win&intel-solaris]
2003-04-08 paf
* src/: classes/file.C, classes/op.C, classes/table.C,
classes/xdoc.C, include/pa_charset.h, include/pa_charsets.h,
include/pa_common.h, include/pa_request_charsets.h,
main/pa_charset.C, main/pa_charsets.C, main/pa_common.C,
main/pa_exec.C, main/pa_request.C, main/untaint.C,
types/pa_value.h, types/pa_vmail.C, types/pa_vrequest.C,
types/pa_vresponse.C: started http:// $.charset[] param and
http response charset detection just compiled. todo:test
* src/main/pa_common.C: merged PA_USE_ALARM bugfix from HEAD
* src/: classes/string.C, include/pa_string.h, main/pa_string.C,
main/untaint.C, targets/isapi/parser3isapi.C, types/pa_vform.C,
types/pa_vmail.C: changed transcode param converntion along with
string creating convention -- all strings are zero-terminated,
this allowed to fix one remaining String("123", 2) case
* src/: classes/date.C, classes/file.C, classes/hash.C,
classes/op.C, classes/string.C, classes/table.C,
include/pa_charset.h, include/pa_memory.h, include/pa_string.h,
main/compile.tab.C, main/pa_charset.C, main/pa_exec.C,
main/pa_request.C, main/pa_string.C, main/pa_uue.C,
main/untaint.C, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vmail.C: pa_vform
violated String::invariant. started fixing [not compiled now]
* src/classes/string.C, src/include/pa_string.h,
src/lib/cord/cordbscs.c, src/main/compile.tab.C,
src/main/compile.y, src/main/pa_string.C, src/main/untaint.C,
src/targets/cgi/parser3.C, www/htdocs/.htaccess: number of string
style improvements & optimizations
* src/classes/xnode.C: =0 bug fix [left from autoptr default ctor
:(]
* src/main/untaint.C: removed redundant & in CORD_pos param passing
[for it's a pointer really]
* src/main/untaint.C: CORD_pos_advance turned out to have limit on
'n' param. worked that around
* src/lib/cord/: Makefile.am, cordbscs.c, source.url: From: "Boehm,
Hans" To: "'Alexandr Petrosian (PAF)'"
; "Boehm, Hans" Sent: Tuesday,
April 08, 2003 2:16 AM Subject: RE: libgc 6.2.alpha4
cord/cordbscs.c/CORD_cat bug [were: CORD__extend_path bug?
Thanks for the bug report and patch.
I hadn't looked at this code in a while. Reading it now, it
seems to me that the tests should also be ">= MAX_DEPTH" to
comply with the invariant, though that may not matter a lot. I
changed that, too.
Hans
2003-04-07 paf
* src/: include/pa_common.h, main/pa_common.C, main/pa_exec.C:
merged from head:safe mode error message now includes numbers
* src/main/execute.C: n-th attempt to make a=a work with double.
problem: as_double returns it's result in fp-register compiler
optimizes access to that register after b->as_double, and just
compares ALREADY_STORED_VALUE with prev-calculated a->as_double
from memory. _SAME_ double values do not match here. when
forced to REload fp-register, values do match.
tried to make them volatile.
* src/main/execute.C: n-th attempt to make a=a work with double.
problem: as_double returns it's result in fp-register compiler
optimizes access to that register after b->as_double, and just
compares ALREADY_STORED_VALUE with prev-calculated a->as_double
from memory. _SAME_ double values do not match here. when
forced to REload fp-register, values do match.
tried to make them volatile.
* src/types/pa_vobject.h: small style change
* src/: lib/cord/cordbscs.c, include/pa_string.h: CORD_cat bugfix
* src/: include/pa_common.h, main/pa_common.C, main/pa_exec.C: safe
mode error message now includes numbers
* src/main/untaint.C, src/targets/cgi/parser3.C,
www/htdocs/.htaccess: unknown untaint lang now causes death
2003-04-04 paf
* src/: classes/file.C, include/pa_exec.h, main/pa_exec.C:
incorportated pa_exec patch by From: "Victor Fedoseev"
To: "Alexandr Petrosian (PAF)"
Sent: Thursday, January 23, 2003 9:14 AM
huge speedup on ^file::cgi with big result
* src/classes/table.C: sort table with 0 rows bug fixed
* src/types/pa_vhash.h: $hash._default showed in foreach & co bug
fix http://i2/tasks/edit/?id=4493701604654042676
@main[] $with_default[ $.a[1] $._default[default from
with_default] ] ^show[$with_default]
$to_add_to[ $.b[2] ] ^to_add_to.add[$with_default]
=$to_add_to.xxx=
^show[$to_add_to]
$cloned[^hash::create[$with_default]] =$cloned.xxx=
^show[$cloned]
@show[hash] ^hash.foreach[k;v]{ $k = $v
}
* src/classes/hash.C: $hash._default showed in foreach & co bug fix
http://i2/tasks/edit/?id=4493701604654042676
@main[] $with_default[ $.a[1] $._default[default from
with_default] ] ^show[$with_default]
$to_add_to[ $.b[2] ] ^to_add_to.add[$with_default]
=$to_add_to.xxx=
^show[$to_add_to]
$cloned[^hash::create[$with_default]] =$cloned.xxx=
^show[$cloned]
@show[hash] ^hash.foreach[k;v]{ $k = $v
}
* src/types/pa_vmail.C: mail receive: .txt attachemnts bug fix
http://i2/tasks/edit/?id=4507350336410850921
* src/classes/xdoc.C: memory allocation func bugfix
http://i2/tasks/edit/?id=4499303470368629745
* src/classes/math.C: allowed random 1...
* src/classes/math.C: allowed random 0..
* src/main/pa_globals.C: exif mem leak
http://i2/tasks/edit/?id=4480590323629807263
* src/: classes/classes.dsp, main/main.dsp,
targets/cgi/parser3.dsp, types/pa_vmail.C, types/types.dsp: buf
fix http://i2/tasks/edit/?id=4493946731322521294
$.to[billgates@microsoft.com BCc: send-spam-to@someemails.ru ]
* src/: classes/classes.dsp, lib/ltdl/libltdl.dsp, lib/md5/md5.dsp,
lib/pcre/pcre.dsp, main/compile.tab.C, main/main.dsp,
main/pa_globals.C, targets/cgi/parser3.dsp, types/types.dsp:
links to xml libs made relative, no need to unpack parser3project
to /parser3project.
* src/main/: compile.tab.C, compile.y, compile_tools.h: error
column more precise - tab handling bug fixed
* src/main/: compile.tab.C, compile.y: more understandable error
message in case @CLASS with more then one line inside
* src/targets/cgi/parser3.C: more understandable error message in
case of errors in @unhandled_exception
2003-04-03 paf
* INSTALL, src/include/pa_operation.h, src/include/pa_request.h,
src/main/compile.tab.C, src/main/compile.y,
src/main/compile_tools.C, src/main/compile_tools.h,
src/main/execute.C, src/main/pa_request.C: debug info format
simplified, now it's: OP_VALUE Operation::Origin << here value*
higher limits: file number (max: 255) line number (max:
64535) column number (max: 255)
* src/classes/math.C: top limit
* src/main/: compile.C, compile.tab.C, compile.y, compile_tools.h:
precise parse error position in case of
^bug ]
* src/classes/op.C, src/main/pa_request.C, tests/042.html: test 042
changed to realities, and passed [bug fixed]
* src/: classes/op.C, include/pa_request.h, main/compile.C,
main/compile.tab.C, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/pa_request.C: introducing
^process...[main-method-alias]
* src/: classes/date.C, classes/image.C, classes/op.C,
classes/string.C, classes/table.C, classes/xdoc.C,
types/pa_vmethod_frame.h: MethodParams& now [methods without
params receive zero reference, but they are expected not to look
there]
* operators.txt, src/classes/date.C, src/classes/double.C,
src/classes/file.C, src/classes/hash.C, src/classes/image.C,
src/classes/int.C, src/classes/mail.C, src/classes/math.C,
src/classes/memory.C, src/classes/op.C, src/classes/response.C,
src/classes/string.C, src/classes/table.C, src/classes/void.C,
src/classes/xdoc.C, src/classes/xnode.C, src/classes/xnode.h,
src/main/execute.C, src/types/pa_method.h: MethodParams& now
[methods without params receive zero reference, but they are
expected not to look there]
* operators.txt, src/classes/op.C, src/include/pa_request.h,
src/main/pa_request.C, src/types/pa_vmethod_frame.h:
^process...[filename] useful for better error reporting
[file/line/col]
* src/: main/execute.C, types/pa_value.C, types/pa_value.h,
types/pa_vstring.h: slightly improved error messages text: 1. is
'%s', it 2. method undefined in case of ^void[]
* src/: classes/op.C, include/pa_request.h, include/pa_stack.h,
include/pa_types.h, main/execute.C, main/pa_request.C: exception
handling done. now we have error columns todo: test it
* src/: classes/op.C, include/pa_request.h: removed from trace 'a'
exception when ^try{ ^throw[a;1] }{ ^throw[b;2] }
this makes life easier: were: bad stack order -- were in
exception catch unwind order, which didn't match execution order
@main[] ^try{ ^first[] }{ ^throw[c;3] }
@first[] ^throw[a;1]
showed throw a first throw b try
which is no good
* src/: classes/op.C, include/pa_request.h, include/pa_stack.h,
main/compile.tab.C, main/execute.C, main/pa_request.C: strack
trace reset after handled exception [old bug fixed]
* src/main/: compile.tab.C, compile.y: parse position old bug
fixed. position reporting made precise [both, in parse erros and
runtime errors]
2003-04-02 paf
* src/: include/pa_operation.h, include/pa_request.h,
main/compile.C, main/compile.tab.C, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/pa_exception.C, main/pa_request.C: debug info: started
using. todo:complete
* src/classes/op.C, src/include/pa_operation.h,
src/include/pa_request.h, src/main/compile.C,
src/main/compile.tab.C, src/main/compile.y,
src/main/compile_tools.C, src/main/compile_tools.h,
src/main/execute.C, src/main/pa_request.C, www/htdocs/.htaccess:
prepared debug info todo:use it
* src/include/pa_operation.h: strange mistake fixed: forgot to
return Operation class->union after switching from autoptrs.
* tests/: Makefile, results/108.processed, results/117.processed:
meta considered OK [it's up to coder now to remove it not needed]
* src/main/pa_dictionary.C, tests/Makefile: replace bug fix [broke
Dictionary constructor when moved to gc]
* src/main/pa_common.C: uncommented http:// file loading
* src/include/pa_array.h, src/main/execute.C,
src/targets/cgi/parser3.C, tests/run_parser.sh: gif encoder bug
fix [gdGrowingBuf]
* configure.in, src/lib/Makefile.am, www/htdocs/.htaccess: removed
patches
* configure, src/include/pa_config_auto.h.in,
src/main/pa_charset.C: --enable-assertions autoconf-ed
* src/main/pa_common.C, www/htdocs/.htaccess: uncommented http://
file loading
* src/: classes/xdoc.C, types/pa_vxdoc.h: removed ref leak in
xdoc::create/load
* src/: classes/form.C, classes/hash.C, classes/image.C,
classes/string.C, classes/table.C, classes/void.C,
include/pa_common.h, main/pa_common.C, main/pa_request.C,
main/pa_sql_driver_manager.C, main/pa_string.C: all calls to
String::String(str,helper_length) are checked. found/fixed one
place: $request:body now zero-terminated,
* src/: classes/op.C, classes/table.C, include/pa_request.h,
main/compile_tools.C, main/execute.C, types/pa_value.h,
types/pa_vbool.h, types/pa_vclass.h, types/pa_vdate.h,
types/pa_vdouble.h, types/pa_vfile.h, types/pa_vhash.h,
types/pa_vimage.h, types/pa_vint.h, types/pa_vjunction.h,
types/pa_vobject.C, types/pa_vobject.h, types/pa_vstring.h,
types/pa_vtable.h, types/pa_vvoid.h, types/pa_vxdoc.h,
types/pa_vxnode.h: more locally scoped vars in execute (more
easily optimizable)
* src/: classes/table.C, include/pa_table.h, main/pa_table.C: few
for(size_t i=0...) -> for(Array_iterator... i(..); i.has_next()
* src/: include/pa_array.h, include/pa_stack.h,
include/pa_string.h, main/compile_tools.C, main/main.dsp,
main/pa_table.C, types/pa_vmethod_frame.C: array get/put check
become assertion iterator in methodframe filler
* src/: include/pa_array.h, include/pa_stack.h, main/main.dsp,
targets/cgi/parser3.C: array::get/put inlined
* src/: lib/cord/cordbscs.c, main/pa_globals.C: globals.c:
gc_substitute_memory_management_functions +installed CORD_oom
function
* configure.in, src/classes/xnode.C, src/include/pa_config_fixed.h,
src/include/pa_config_includes.h, src/include/pa_string.h,
src/lib/cord/cordbscs.c, src/main/pa_memory.C,
src/targets/cgi/parser3.C: converted debug hacks to ANSI
assertions started configure.in --enable-assertions
2003-04-01 paf
* src/classes/xdoc.C, src/classes/xnode.h, src/include/pa_memory.h,
src/main/pa_memory.C, src/targets/cgi/parser3.C,
src/types/pa_vxdoc.h, src/types/pa_vxnode.C,
src/types/pa_vxnode.h, www/htdocs/.htaccess: memory bug debugged
down: gdome uses glib memory, and stores last pointer to xmlDoc
there, gc misses that and collects valid memory fixed by
remembering xmlDoc from dom object in xdoc. todo: do something
with premature free of xdoc with xnodes/node values referring
into it
* src/classes/: mail.C: typo fix
* src/main/pa_memory.C: bug() to set bpt in (memory.c) some .am
changes
* src/: include/pa_memory.h, main/pa_common.C, main/pa_globals.C,
main/pa_memory.C: moved memory debugging to global level: to
pa_gc_malloc
* src/: main/pa_globals.C, targets/cgi/parser3.C: xml memory
debugging showed no errors. todo: debug parser memory
* src/targets/cgi/: parser3.C, parser3.dsp: more build
configurations
* src/: classes/classes.dsp, include/pa_config_fixed.h,
main/compile.tab.C, main/main.dsp, main/pa_globals.C,
targets/cgi/parser3.dsp, targets/isapi/parser3isapi.dsp,
types/types.dsp: prepared xml-static configuration
2003-03-31 paf
* INSTALL, src/classes/xdoc.C, src/main/pa_globals.C,
src/targets/cgi/parser3.C, src/targets/cgi/parser3.dsp,
www/htdocs/.htaccess: started xml lib memory debugging, simple
checks failed: it seems that library does realloc(bad ptr), and
recording those ptrs in heap [for debugging] was bad: heap
situation changes = everything works fine
* src/: main/pa_charset.C, include/pa_charset.h: worked around
xmlRegisterCharEncodingHandler limitation [currently imposed
limit of 10 user-defined charsets]
2003-03-28 paf
* src/main/execute.C: execution stack copied to local register
variable, removed lots [~2e7) of memory accesses
2003-03-27 paf
* src/: classes/xdoc.C, main/pa_globals.C: XML memory funcs to GC
works in debug, but fails in release todo: fix that
* src/: classes/xdoc.C, main/compile.tab.C, main/pa_globals.C,
targets/cgi/parser3.C: forgot to merge XML memory funcs
replacement from gc branch
* src/main/pa_exec.C: introducing append_help_length [radical
improvement here]
* src/targets/cgi/parser3.C: GC_java_finalization turned off [was
'not recommened' in gc.h, on win32 noticed no difference]
* src/include/pa_array.h: returned checked array get [were disabled
for debugging] result:not slower [don't understand that, it were
INLINED] todo: find out a way of inlining it!
* src/: include/pa_string.h, lib/gc/include/gc.h,
lib/gc/include/gc_fake.h, main/compile.tab.C,
targets/cgi/parser3.C, main/pa_memory.C, targets/cgi/parser3.dsp:
convention changed: all resulting strings are zero-terminated
* src/: classes/date.C, classes/file.C, classes/hash.C,
classes/string.C, classes/table.C, classes/void.C,
include/pa_string.h, lib/cord/cord.dsp, lib/cord/cordbscs.c,
lib/cord/include/cord.h, main/compile.tab.C, main/compile.y,
main/compile_tools.h, main/pa_common.C, main/pa_exec.C,
main/pa_request.C, main/pa_string.C, main/pa_uue.C,
sql/pa_sql_driver.h, types/pa_value.C, types/pa_venv.h,
types/pa_vfile.C, types/pa_vmail.C: introducing
append_help_length [radical improvement here]
* src/: classes/memory.C, include/pa_array.h, include/pa_hash.h,
include/pa_memory.h, lib/cord/cord.dsp, lib/cord/cordxtra.c,
lib/gc/include/gc.h, main/pa_memory.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, types/pa_vstatus.C: disabled gc, become
even slower
* src/: classes/string.C, classes/table.C, include/pa_array.h,
include/pa_stack.h, include/pa_string.h, main/compile_tools.C,
main/pa_string.C, main/untaint.C, types/pa_vmethod_frame.C: fixed
clients of &get(): most to use non-ref version, some[in tight
places] to get_unchecked_ref
* src/doc/memory.dox: forgot to add
* src/classes/classes.dsp, src/classes/memory.C,
src/classes/xdoc.C, src/include/pa_array.h,
src/include/pa_request.h, src/include/pa_stack.h,
src/include/pa_string.h, src/lib/cord/cord.dsp,
src/lib/ltdl/libltdl.dsp, src/lib/md5/md5.dsp,
src/lib/pcre/pcre.dsp, src/main/compile.tab.C,
src/main/compile.y, src/main/compile_tools.C,
src/main/compile_tools.h, src/main/main.dsp,
src/main/pa_string.C, src/targets/cgi/parser3.C,
src/targets/cgi/parser3.dsp, src/types/pa_vmail.C,
src/types/pa_vmethod_frame.C, src/types/types.dsp,
www/htdocs/.htaccess: Array::put(index, T>>&<< removed after
Stack::pop wiping removed [moved to separate func] other Array &
removed
2003-03-26 paf
* src/: classes/classes.dsp, classes/file.C, classes/op.C,
classes/table.C, include/pa_array.h, include/pa_charset.h,
include/pa_stack.h, include/pa_string.h, include/pa_table.h,
lib/cord/cord.dsp, lib/ltdl/libltdl.dsp, lib/md5/md5.dsp,
lib/pcre/pcre.dsp, main/compile.tab.C, main/compile.y,
main/main.dsp, main/pa_charset.C, main/pa_common.C,
main/pa_exec.C, main/pa_sql_driver_manager.C,
main/pa_stylesheet_manager.C, main/pa_table.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp,
types/pa_vmethod_frame.C, types/pa_vmethod_frame.h,
types/pa_vobject.C, types/pa_vobject.h, types/types.dsp:
pre-evaluated .count() in some places
* src/: classes/classes.dsp, lib/ltdl/libltdl.dsp, lib/md5/md5.dsp,
lib/pcre/pcre.dsp, main/main.dsp, targets/cgi/parser3.dsp,
types/types.dsp: .dsp profiling updated
* src/: classes/classes.dsp, lib/cord/cord.dsp,
lib/ltdl/libltdl.dsp, lib/md5/md5.dsp, main/main.dsp,
targets/cgi/parser3.dsp, types/types.dsp: started profiling
* src/: classes/classes.dsp, lib/cord/cord.dsp, main/compile.tab.C,
main/compile_tools.h, main/main.dsp, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.dsp, types/types.dsp: .dsp updated to
use lib/gc,lib/cord
* acsite.m4, src/classes/Makefile.am, src/classes/mail.C,
src/classes/math.C, src/classes/op.C, src/include/pa_common.h,
src/include/pa_config_auto.h.in, src/include/pa_config_fixed.h,
src/include/pa_config_includes.h, src/include/pa_request.h,
src/include/pa_sql_driver_manager.h, src/include/pa_string.h,
src/include/pa_stylesheet_connection.h, src/include/pa_version.h,
src/lib/Makefile.am, src/lib/cord/Makefile.am,
src/lib/cord/include/Makefile.am,
src/lib/cord/include/private/Makefile.am, src/main/Makefile.am,
src/main/pa_exec.C, src/main/pa_string.C, src/main/untaint.C,
src/targets/cgi/Makefile.am, src/types/Makefile.am,
src/types/pa_vclass.h, src/types/pa_vcookie.h,
src/types/pa_vform.h, src/types/pa_vhash.h,
src/types/pa_vimage.h, src/types/pa_vint.h, src/types/pa_vmail.h,
src/types/pa_vresponse.h, src/types/pa_vstateless_class.h,
src/types/pa_vstatus.C, src/types/pa_vstatus.h,
src/types/pa_vtable.h, src/types/pa_vxdoc.h: configured math
funcs ported pa_exec
* src/lib/: cord/include/gc.h, gc/include/gc.h: introducing lib/gc
* src/lib/cord/include/: cord.h, ec.h, gc.h, private/cord_pos.h:
bundled gc includes
* src/classes/op.C, src/include/pa_array.h,
src/include/pa_sql_connection.h, src/include/pa_string.h,
src/include/pa_version.h, src/main/compile.tab.C,
src/main/compile.y, src/main/execute.C, src/main/pa_common.C,
src/main/pa_exception.C, src/main/pa_request.C,
src/main/pa_string.C, src/targets/cgi/parser3.C,
src/targets/cgi/parser3.dsp, www/htdocs/.htaccess: a number of
bugfixes [while testing first real site (aval)]
2003-03-25 paf
* operators.txt, src/main/pa_sql_driver_manager.C,
src/types/pa_vstatus.C: $status.memory used free since_compact
process
* src/: include/pa_sql_connection.h, main/pa_globals.C,
main/untaint.C, sql/pa_sql_driver.h: untaint.C L_SQL
* src/main/: pa_charset.C, untaint.C: untaint.C L_MAIL_HEADER
* src/main/pa_request.C, src/main/untaint.C, src/types/pa_value.C,
src/types/pa_value.h, src/types/pa_vfile.h,
src/types/pa_vobject.C, src/types/pa_vobject.h,
src/types/pa_vstring.C, src/types/pa_vstring.h, tests/121.html,
tests/results/121.processed: untaint.C L_URI
* operators.txt, src/classes/Makefile.am, src/classes/classes.dsp,
src/classes/op.C, src/main/pa_request.C, src/types/Makefile.am,
src/types/pa_venv.h, src/types/types.dsp, www/htdocs/.htaccess,
src/classes/memory.C, src/types/pa_vmemory.h: ^memory:compact[]
* tests/results/109.processed: it was a bug in parser. updated 109
test result
* src/classes/xdoc.C, tests/Makefile: fixed transform params2
* src/main/pa_charset.C, src/targets/cgi/parser3.C, tests/Makefile,
tests/results/107.processed: fixed dom language [values are now
considered tainted. it was a bug in parser. updated 107 test
result
* src/classes/xdoc.C: fixed transform params
* src/: include/pa_stylesheet_manager.h,
main/pa_stylesheet_manager.C: fixed stylesheet caching
* src/: include/pa_memory.h, main/pa_charset.C: memory: new 'new'
overloads for structure handling
* src/: classes/image.C, classes/xdoc.C, classes/xnode.C,
include/pa_string.h, main/pa_string.C, types/pa_vxnode.C: removed
StringBody(0) ambiguilty, introducting static
StringBody::Format(int)
* src/: main/pa_request.C, types/pa_vxnode.C: vxnode compiled xml
linked
* src/types/pa_vxdoc.C: vxdoc compiled
* src/: classes/xnode.C, classes/xnode.h, include/pa_memory.h,
types/pa_vxdoc.h, types/pa_vxnode.h: xnode.C compiled, doc/node
finalizers isntalled
* src/: classes/image.C, classes/xdoc.C, classes/xnode.h,
doc/exception.dox, doc/index.dox, include/pa_charset.h,
include/pa_memory.h, include/pa_request.h, include/pa_string.h,
main/pa_charset.C, main/pa_memory.C, main/pa_string.C: xdoc.C
compiled todo: xnode.C / finalizers
* src/doc/string.dox: updated: new string internals
2003-03-24 paf
* src/: classes/xdoc.C, classes/xnode.C, classes/xnode.h,
include/pa_charset.h, include/pa_config_fixed.h,
include/pa_request.h, include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, main/pa_charset.C,
main/pa_exception.C, main/pa_globals.C, main/pa_request.C,
main/pa_stylesheet_manager.C, types/pa_vxdoc.h,
types/pa_vxnode.h: started XML
* src/main/: pa_common.C, pa_sql_driver_manager.C: http://
* src/: classes/file.C, classes/image.C, classes/mail.C,
include/pa_string.h, main/pa_common.C,
main/pa_sql_driver_manager.C: introducing string[body]::pos(char)
* src/: classes/file.C, classes/image.C, classes/mail.C,
include/pa_memory.h, include/pa_string.h, main/pa_common.C,
main/pa_request.C, main/pa_sql_driver_manager.C,
types/pa_vimage.h: size_t pos everywhere checks changed to check
for eq STRING_NOT_FOUND
* src/main/pa_string.C, src/main/untaint.C, tests/Makefile: string
optimize bit implemented
* src/: include/pa_string.h, main/pa_string.C, main/untaint.C:
String::ArrayFragment::append_positions fixed
* src/: classes/table.C, include/pa_string.h, main/pa_string.C:
String::this_starts fixed
* src/main/pa_string.C, tests/Makefile: string::pos fixed
* src/: include/pa_hash.h, main/execute.C, main/pa_string.C:
hashcode implemented fully, including per-char callback [it can
be - substr CORD node]
* src/: include/pa_array.h, main/compile.tab.C: gif encoding
rewritten to rewalloc with 100byte buf ahead
* src/classes/image.C, src/classes/op.C, src/classes/table.C,
src/include/pa_string.h, src/main/compile.tab.C,
src/main/compile.y, src/main/execute.C, src/main/pa_common.C,
src/main/untaint.C, tests/Makefile: attempt to do gif encoding to
CORD_ec [bad] would rewrite as realloc now
* src/: classes/date.C, classes/file.C, classes/form.C,
classes/image.C, classes/math.C, classes/op.C, classes/table.C,
include/pa_cache_managers.h, include/pa_charsets.h,
include/pa_common.h, include/pa_request.h,
include/pa_sql_driver_manager.h, include/pa_table.h,
main/pa_charset.C, main/pa_exception.C, main/pa_exec.C,
main/pa_globals.C, main/pa_request.C, main/pa_uue.C,
targets/isapi/parser3isapi.C, types/pa_value.C, types/pa_value.h,
types/pa_vmail.C, types/pa_vmethod_frame.C,
types/pa_vstateless_class.h: 2*2 worked :)
* parser3.dsw, src/classes/date.C, src/classes/file.C,
src/include/pa_exec.h, src/include/pa_string.h,
src/main/pa_exec.C, src/main/pa_sql_driver_manager.C: empty run
passed OK
* src/: classes/hash.C, classes/string.C, classes/table.C,
types/pa_value.C: all linked todo: debug
* src/: classes/mail.C, main/pa_request.C, targets/cgi/parser3.C,
types/pa_vstateless_class.C: all compiled. todo:link
* src/types/pa_wcontext.C: pa_wcontext.C compiled
* src/types/pa_vtable.C: pa_vtable.C compiled
* src/types/pa_vstring.C: pa_vstring.C compiled
* src/types/pa_vstatus.C: pa_vstatus.C compiled
* src/types/: pa_vmath.C, pa_vmethod_frame.C, pa_vmethod_frame.h,
pa_vobject.C, pa_vrequest.C, pa_vresponse.C,
pa_vstateless_class.C, pa_vstateless_class.h:
pa_vstateless_class.C compiled
* src/: classes/xdoc.C, types/pa_vmail.C, types/pa_vmail.h,
types/pa_vmath.C: pa_vmail.C compiled
* src/types/: pa_vhash.C, pa_vimage.C: pa_vimage.C compiled
* src/types/pa_vform.C: pa_vform.C compiled
* src/types/pa_vfile.C: pa_vfile.C compiled
* src/types/: pa_value.h, pa_vclass.C, pa_vcookie.C,
pa_vstateless_class.C: pa_vcookie.C compiled
* src/: classes/string.C, types/pa_value.C, types/pa_value.h,
types/pa_vhash.h: pa_value.C compiled
* src/: main/execute.C, main/pa_string.C, types/pa_wcontext.h:
classes.lib main.lib compiled
* src/classes/void.C: void.C compiled
* src/: classes/string.C, classes/table.C, include/pa_string.h,
main/pa_string.C, types/pa_vtable.C, types/pa_vtable.h: table.C
compiled
* src/: classes/string.C, include/pa_request.h,
include/pa_string.h, main/pa_string.C: string.C compiled
* src/: classes/op.C, classes/string.C, classes/table.C,
classes/void.C, include/pa_sql_connection.h, include/pa_string.h,
main/pa_request.C, main/pa_string.C: op.C compiled
* src/classes/: math.C, op.C: math.C compiled
* src/: classes/mail.C, classes/string.C, classes/table.C,
types/pa_vmail.h: mail.C compiled
* src/classes/: int.C, table.C: int.C compiled
* src/: classes/hash.C, classes/image.C, classes/string.C,
classes/table.C, include/pa_memory.h, include/pa_string.h,
main/pa_memory.C, types/pa_vimage.h, types/pa_vmail.C: image.C
compiled
* src/: classes/hash.C, classes/string.C, classes/table.C,
classes/void.C, classes/xdoc.C, include/pa_request.h,
include/pa_sql_connection.h: hash.C compiled
* src/: classes/classes.C, classes/classes.awk, classes/classes.h,
classes/date.C, classes/double.C, classes/file.C, classes/form.C,
classes/hash.C, classes/image.C, classes/int.C, classes/mail.C,
classes/math.C, classes/op.C, classes/response.C,
classes/string.C, classes/table.C, classes/void.C,
classes/xdoc.C, classes/xnode.C, include/pa_memory.h,
include/pa_request.h, include/pa_sapi.h, include/pa_string.h,
main/pa_string.C, types/pa_vdate.h, types/pa_vmethod_frame.h:
file.C table.C compiled
* src/: include/pa_string.h, main/pa_string.C, main/pa_uue.C,
main/untaint.C: main.lib compiled
2003-03-21 paf
* src/: classes/op.C, include/pa_cache_managers.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stylesheet_manager.h, main/pa_exception.C,
main/pa_globals.C, main/pa_sql_driver_manager.C,
sql/pa_sql_driver.h, types/pa_vimage.C: pa_sql_driver_manager.C
compiled
* src/: classes/hash.C, classes/image.C, classes/op.C,
classes/xdoc.C, classes/xnode.C, include/pa_common.h,
include/pa_hash.h, include/pa_request.h, include/pa_string.h,
main/compile.C, main/pa_common.C, main/pa_request.C,
types/pa_vmail.C, types/pa_vresponse.C, types/pa_vxnode.C:
pa_request.C compiled
* src/: classes/hash.C, classes/mail.C, classes/op.C,
include/pa_request.h, main/execute.C, main/pa_request.C,
types/pa_value.C, types/pa_value.h, types/pa_vcookie.C,
types/pa_vhash.h, types/pa_vimage.C, types/pa_vmethod_frame.h,
types/pa_vobject.C, types/pa_vobject.h, types/pa_vrequest.C,
types/pa_vresponse.h, types/pa_vtable.C: pa_request.C 50%
compiled
* src/: include/pa_exec.h, include/pa_string.h, main/pa_exec.C,
main/pa_string.C: pa_exec.C compiled [win32 only for now] todo:
on unix
* src/: include/pa_charset.h, include/pa_charsets.h,
include/pa_exec.h, main/compile.tab.C, main/pa_charset.C,
main/pa_charsets.C, main/pa_dictionary.C, main/pa_exec.C:
pa_charsets.C compiled
* src/: classes/image.C, classes/mail.C, classes/op.C,
include/pa_request.h, include/pa_string.h, main/compile.tab.C,
main/compile.y, main/execute.C, main/pa_common.C,
main/pa_request.C, types/pa_junction.h, types/pa_method.h,
types/pa_vcode_frame.h, types/pa_vimage.h,
types/pa_vmethod_frame.h: execute.C compiled
* src/: classes/classes.C, classes/classes.h, classes/date.C,
classes/double.C, classes/file.C, classes/form.C, classes/hash.C,
classes/image.C, classes/int.C, classes/mail.C, classes/math.C,
classes/op.C, classes/string.C, classes/table.C, classes/void.C,
classes/xdoc.C, classes/xnode.C, classes/xnode.h,
include/pa_cache_managers.h, include/pa_charsets.h,
include/pa_common.h, include/pa_exec.h, include/pa_memory.h,
include/pa_operation.h, include/pa_request.h, include/pa_sapi.h,
include/pa_sql_driver_manager.h, include/pa_string.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
main/compile.C, main/compile.tab.C, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/pa_charset.C, main/pa_charsets.C, main/pa_common.C,
main/pa_exec.C, main/pa_request.C, main/pa_sql_driver_manager.C,
main/pa_string.C, main/pa_stylesheet_manager.C, main/untaint.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C,
types/pa_junction.h, types/pa_method.h, types/pa_value.C,
types/pa_value.h, types/pa_vbool.h, types/pa_vclass.C,
types/pa_vclass.h, types/pa_vcode_frame.h, types/pa_vcookie.C,
types/pa_vcookie.h, types/pa_vdate.h, types/pa_vdouble.h,
types/pa_venv.h, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vhash.h,
types/pa_vimage.C, types/pa_vimage.h, types/pa_vint.h,
types/pa_vjunction.h, types/pa_vmail.C, types/pa_vmail.h,
types/pa_vmath.C, types/pa_vmath.h, types/pa_vmethod_frame.C,
types/pa_vmethod_frame.h, types/pa_vobject.C, types/pa_vobject.h,
types/pa_vrequest.C, types/pa_vrequest.h, types/pa_vresponse.C,
types/pa_vresponse.h, types/pa_vstateless_class.C,
types/pa_vstateless_class.h, types/pa_vstateless_object.h,
types/pa_vstatus.C, types/pa_vstatus.h, types/pa_vstring.C,
types/pa_vstring.h, types/pa_vtable.C, types/pa_vtable.h,
types/pa_vvoid.h, types/pa_vxdoc.C, types/pa_vxdoc.h,
types/pa_vxnode.C, types/pa_vxnode.h, types/pa_wcontext.C,
types/pa_wcontext.h, types/pa_wwrapper.h: introducing StringBody
[C++ CORD wrapper]
* src/: lib/cord/cordbscs.c, main/pa_string.C: test14 [bug fixed]
* src/: classes/file.C, include/pa_charset.h, main/pa_charset.C:
$file::exec/cgi[script; $.charset[this is script's charset]
command line, env values, input got transcoded before call
stdout, stderr got transcoded after call
* src/classes/file.C: ^file::exec/cgi now does not pass post data
by default. use: ^file::exec[...;$.stdin[$request.body]
* src/main/pa_common.C: } typo bug fix
* src/main/pa_common.C: } typo bug fix
2003-03-20 paf
* src/: include/pa_string.h, lib/cord/cordbscs.c, main/pa_string.C,
main/untaint.C: cord bug fix, but still errors todo: clear out
* src/include/pa_string.h: more tests
* src/main/pa_string.C: string.pos fixed
* src/lib/: ltdl/config_fixed.h, ltdl/configure, ltdl/configure.in,
ltdl/libltdl.dsp, ltdl/ltdl.c, ltdl/ltdl.h, pcre/dftables.c,
pcre/get.c, pcre/internal.h, pcre/maketables.c, pcre/pcre.c,
pcre/pcre.h, pcre/pcre_parser_ctype.c, pcre/study.c: undone bad
replaces
* src/: classes/image.C, include/pa_dictionary.h,
include/pa_string.h, lib/ltdl/ltdl.c, lib/ltdl/ltdl.h,
lib/pcre/internal.h, lib/pcre/pcre.c, lib/pcre/study.c,
main/compile.tab.C, main/pa_dictionary.C, main/pa_string.C,
main/untaint.C, types/pa_vmail.C: more tests [bugs fixed]
* src/include/pa_string.h: warning
* src/include/pa_string.h: this_starts fixed
* src/: include/pa_string.h, main/pa_string.C: added: assertion on
new String ctor & append params convention
* src/: classes/file.C, classes/hash.C, classes/image.C,
classes/mail.C, classes/op.C, classes/string.C, classes/table.C,
classes/xdoc.C, include/pa_common.h, include/pa_memory.h,
include/pa_string.h, main/compile.tab.C, main/pa_common.C,
main/pa_exception.C, main/pa_exec.C,
main/pa_sql_driver_manager.C, main/pa_string.C,
main/pa_stylesheet_manager.C, main/untaint.C,
targets/isapi/parser3isapi.C, types/pa_vimage.C,
types/pa_vmail.C: more tests OK
* src/: include/pa_array.h, include/pa_hash.h, include/pa_memory.h,
include/pa_string.h, main/pa_memory.C, main/pa_string.C: test:
gc/exit runned OK
* src/types/pa_vmail.C: another naming problem: should not name
vars like that: unpredictable close caused problems with later
sending mail: Mar 20 06:39:53 pt-6 sendmail[19044]: File
descriptors missing on startup: stdin; Bad file number
todo: find out why so many filters(stream) here. probably wrong?
* src/: include/pa_dictionary.h, include/pa_string.h,
main/pa_common.C, main/pa_dictionary.C, main/pa_string.C,
main/untaint.C: test compiled
* src/: classes/image.C, classes/mail.C, classes/math.C,
classes/string.C, include/pa_dictionary.h, include/pa_hash.h,
include/pa_memory.h, include/pa_string.h, lib/cord/cordbscs.c,
lib/cord/cordxtra.c, lib/pcre/dftables.c, lib/pcre/get.c,
lib/pcre/maketables.c, lib/pcre/pcre.c, lib/pcre/pcre.h,
lib/pcre/pcre_parser_ctype.c, lib/pcre/study.c,
main/compile.tab.C, main/pa_common.C, main/pa_dictionary.C,
main/pa_exec.C, main/pa_memory.C, main/pa_request.C,
main/pa_string.C, main/untaint.C, types/pa_vfile.h,
types/pa_vmail.C: untaint.C 99% [except mail&sql&optimize]
* parser3.dsw, src/classes/file.C, src/classes/image.C,
src/classes/op.C, src/classes/string.C, src/classes/table.C,
src/classes/xdoc.C, src/classes/xnode.C, src/include/pa_common.h,
src/include/pa_memory.h, src/include/pa_request.h,
src/include/pa_request_charsets.h,
src/include/pa_sql_connection.h, src/include/pa_string.h,
src/main/compile.tab.C, src/main/execute.C,
src/main/pa_charset.C, src/main/pa_common.C,
src/main/pa_exception.C, src/main/pa_exec.C,
src/main/pa_request.C, src/main/pa_sql_driver_manager.C,
src/main/pa_stylesheet_manager.C, src/main/untaint.C,
src/sql/pa_sql_driver.h, src/targets/cgi/parser3.C,
src/targets/isapi/parser3isapi.C, src/types/pa_value.C,
src/types/pa_vcode_frame.h, src/types/pa_vcookie.C,
src/types/pa_venv.h, src/types/pa_vform.C, src/types/pa_vmail.C,
src/types/pa_vmethod_frame.C, src/types/pa_vmethod_frame.h,
src/types/pa_vobject.C, src/types/pa_vresponse.C,
src/types/pa_vstatus.C, src/types/pa_vstring.C,
src/types/pa_vxdoc.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.C, src/types/pa_wcontext.h: untaint.C 30%,
pa_common.C [done, without http for now]
2003-03-19 paf
* src/: classes/date.C, classes/form.C, classes/hash.C,
classes/image.C, classes/mail.C, classes/op.C, classes/xdoc.C,
classes/xnode.C, include/pa_array.h, include/pa_config_fixed.h,
include/pa_exception.h, include/pa_memory.h, include/pa_sapi.h,
include/pa_string.h, include/pa_table.h, main/compile.C,
main/compile_tools.C, main/execute.C, main/pa_charset.C,
main/pa_common.C, main/pa_exception.C, main/pa_request.C,
main/pa_socks.C, main/pa_string.C, main/pa_table.C,
main/untaint.C, targets/cgi/parser3.C, targets/cgi/parser3.dsp,
types/pa_value.C, types/pa_vcookie.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vmail.C, types/pa_vmethod_frame.h,
types/pa_vstateless_class.h, types/pa_vtable.C,
types/pa_vtable.h, types/pa_vxdoc.h, types/pa_vxnode.C,
types/pa_vxnode.h, types/pa_wcontext.C, types/pa_wcontext.h,
types/pa_wwrapper.h: started test
* src/lib/pcre/: dftables.c, get.c, maketables.c, pcre.c, pcre.dsp,
pcre.h, pcre_parser_ctype.c, study.c: restored bad replaces
* src/: classes/op.C, include/pa_array.h, include/pa_memory.h,
include/pa_string.h, main/pa_string.C: string compiled todo: test
it
* src/: classes/classes.dsp, classes/string.C, classes/table.C,
include/pa_array.h, include/pa_common.h, include/pa_dictionary.h,
include/pa_exception.h, include/pa_string.h, include/pa_table.h,
lib/cord/cord.dsp, main/compile.tab.C, main/main.dsp,
main/pa_common.C, main/pa_string.C, targets/cgi/parser3.dsp,
types/pa_method.h, types/pa_value.h, types/pa_vmethod_frame.C,
types/pa_vmethod_frame.h, types/types.dsp: string
reimplementation with cord+array: 70%
2003-03-18 paf
* src/: classes/date.C, classes/file.C, classes/form.C,
classes/hash.C, classes/image.C, classes/mail.C, classes/math.C,
classes/op.C, classes/string.C, classes/table.C, classes/xdoc.C,
classes/xnode.C, include/pa_hash.h, include/pa_string.h,
main/pa_string.C, types/pa_vmail.C: lots of replacements, todo:we
can ignore lang in cmp and pos really, but would
split properly!
* src/lib/cord/: cord.dsp, cordbscs.c, cordprnt.c, cordxtra.c: gc:
cord part made parser/src/lib: it's not compiled into libgc by
default
* parser3.dsw, src/classes/classes.dsp, src/classes/classes.h,
src/classes/date.C, src/classes/double.C, src/classes/file.C,
src/classes/form.C, src/classes/hash.C, src/classes/image.C,
src/classes/int.C, src/classes/mail.C, src/classes/math.C,
src/classes/op.C, src/classes/response.C, src/classes/string.C,
src/classes/table.C, src/classes/void.C, src/classes/xdoc.C,
src/classes/xnode.C, src/classes/xnode.h,
src/include/Makefile.am, src/include/pa_cache_managers.h,
src/include/pa_charset.h, src/include/pa_charsets.h,
src/include/pa_common.h, src/include/pa_dictionary.h,
src/include/pa_exception.h, src/include/pa_exec.h,
src/include/pa_globals.h, src/include/pa_hash.h,
src/include/pa_memory.h, src/include/pa_pool.h,
src/include/pa_request.h, src/include/pa_request_charsets.h,
src/include/pa_sapi.h, src/include/pa_sql_connection.h,
src/include/pa_sql_driver_manager.h, src/include/pa_string.h,
src/include/pa_stylesheet_connection.h,
src/include/pa_stylesheet_manager.h, src/include/pa_table.h,
src/include/pa_uue.h, src/lib/pcre/get.c, src/main/Makefile.am,
src/main/compile.C, src/main/compile.tab.C,
src/main/compile_tools.C, src/main/compile_tools.h,
src/main/execute.C, src/main/main.dsp, src/main/pa_charset.C,
src/main/pa_charsets.C, src/main/pa_common.C,
src/main/pa_dictionary.C, src/main/pa_exception.C,
src/main/pa_exec.C, src/main/pa_globals.C, src/main/pa_memory.C,
src/main/pa_pool.C, src/main/pa_request.C,
src/main/pa_sql_driver_manager.C, src/main/pa_string.C,
src/main/pa_stylesheet_manager.C, src/main/pa_table.C,
src/main/pa_uue.C, src/main/untaint.C, src/targets/cgi/parser3.C,
src/targets/cgi/parser3.dsp, src/targets/isapi/parser3isapi.C,
src/types/pa_junction.h, src/types/pa_method.h,
src/types/pa_value.C, src/types/pa_value.h,
src/types/pa_vclass.C, src/types/pa_vclass.h,
src/types/pa_vcode_frame.h, src/types/pa_vcookie.C,
src/types/pa_vcookie.h, src/types/pa_vdate.h,
src/types/pa_vdouble.h, src/types/pa_venv.h,
src/types/pa_vfile.C, src/types/pa_vfile.h, src/types/pa_vform.C,
src/types/pa_vform.h, src/types/pa_vhash.C, src/types/pa_vhash.h,
src/types/pa_vimage.C, src/types/pa_vimage.h,
src/types/pa_vint.h, src/types/pa_vmail.C, src/types/pa_vmail.h,
src/types/pa_vmath.C, src/types/pa_vmath.h,
src/types/pa_vmethod_frame.C, src/types/pa_vmethod_frame.h,
src/types/pa_vobject.C, src/types/pa_vobject.h,
src/types/pa_vrequest.C, src/types/pa_vrequest.h,
src/types/pa_vresponse.C, src/types/pa_vresponse.h,
src/types/pa_vstateless_class.C, src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, src/types/pa_vstatus.C,
src/types/pa_vstatus.h, src/types/pa_vstring.C,
src/types/pa_vstring.h, src/types/pa_vtable.C,
src/types/pa_vtable.h, src/types/pa_vvoid.h,
src/types/pa_vxdoc.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.C, src/types/pa_vxnode.h,
src/types/pa_wcontext.C, src/types/pa_wcontext.h,
src/types/pa_wwrapper.h, src/types/types.dsp: started porting to
gc: PA_Object done lots of replacements also
* src/: include/pa_pool.h, main/execute.C, targets/cgi/pa_pool.C:
gc logging
2003-03-17 paf
* src/classes/date.C, src/classes/file.C, src/classes/form.C,
src/classes/image.C, src/classes/mail.C, src/classes/op.C,
src/classes/table.C, src/classes/xdoc.C, src/classes/xnode.C,
src/include/pa_pool.h, src/include/pa_pragma_pack_begin.h,
src/include/pa_pragma_pack_end.h, src/include/pa_string.h,
src/include/pa_types.h, src/main/compile.C,
src/main/compile.tab.C, src/main/execute.C,
src/main/pa_charset.C, src/main/pa_common.C,
src/main/pa_exception.C, src/main/pa_exec.C,
src/main/pa_globals.C, src/main/pa_pool.C, src/main/pa_request.C,
src/main/pa_sql_driver_manager.C, src/main/pa_string.C,
src/main/pa_stylesheet_manager.C, src/main/pa_uue.C,
src/main/untaint.C, src/targets/cgi/pa_pool.C,
src/targets/cgi/parser3.C, src/targets/cgi/parser3.dsp,
src/targets/cgi/pool_storage.h, src/types/pa_vcookie.C,
src/types/pa_vdouble.h, src/types/pa_vfile.C,
src/types/pa_vform.C, src/types/pa_vint.h, src/types/pa_vmail.C,
src/types/pa_vxdoc.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.C, src/types/pa_vxnode.h,
www/htdocs/.htaccess, www/htdocs/auto.p: libgc attempt
2003-03-13 paf
* src/: include/pa_sql_driver_manager.h,
main/pa_sql_driver_manager.C, targets/cgi/parser3.C: lt_dlexit
called
* src/include/pa_request.h, src/lib/ltdl/libltdl.dsp,
src/lib/md5/md5.dsp, src/main/compile.tab.C, src/main/execute.C,
src/main/pa_request.C, src/targets/cgi/parser3.C,
src/types/pa_value.C, src/types/pa_value.h,
src/types/pa_vobject.h, src/types/pa_vstateless_class.h,
src/types/pa_vstatus.C, src/types/types.dsp,
www/htdocs/.htaccess: set_base, set_derived simplified [counter
leaks fixed]
* ChangeLog, src/include/pa_config_fixed.h, src/types/pa_vstatus.C,
src/types/types.dsp: incorporated status class patch From:
"Victor Fedoseev" Sent: Thursday, January 23,
2003 8:14 AM
now we have $status.rusage.maxrss,tv_sec,tv_usec un WIN32 [plus
Win32 specific: QuotaPeakNonPagedPoolUsage
QuotaPeakPagedPoolUsage PeakPagefileUsage]
2003-03-12 paf
* configure, configure.in, src/lib/ltdl/configure,
src/lib/ltdl/configure.in, src/targets/cgi/Makefile.am:
lib/ltdl/Makefile now created by /configure.in only [were by
lib/ltdl/configure.in OVERWRITE]
* configure, configure.in, src/targets/cgi/Makefile.am: libstdc++
linkage fixed for g++ 3.2.2
* src/include/pa_stylesheet_manager.h: gcc 3.2 rightliy complained
on using privately declared class [fixed]
* src/: include/pa_sql_driver_manager.h, main/compile.tab.C: gcc
3.2 rightliy complained on using privately declared class [fixed]
* src/targets/cgi/parser3.C: 1. more detailed log on signals. 2.
sigpipe before request constructor now causes death
* src/: include/pa_request.h, main/compile.tab.C, main/execute.C,
targets/cgi/parser3.C: SIGPIPE now can be intercepted and does
not cause exception in exception handler
* configure, configure.in, src/targets/cgi/Makefile.am: configure
now default links libstdc++ statically. that can be overriden by
--with-dynamic-stdcpp
2003-03-11 paf
* src/main/compile.tab.C, src/main/compile.y,
src/sql/pa_sql_driver.h, src/types/pa_vstateless_class.C,
src/types/pa_vstateless_class.h, www/htdocs/.htaccess: removed
necessity of libstdc++
* src/include/pa_request.h: ANTI_ENDLESS_EXECUTE_RECOURSION doubled
* src/include/pa_request.h: ANTI_ENDLESS_EXECUTE_RECOURSION doubled
2003-03-08 paf
* tests/Makefile: make install & co
* src/: include/pa_request.h, classes/op.C: removing
vclass,object.h -> pa_request.h dependency
* src/: classes/mail.C, classes/response.C, include/pa_request.h,
main/pa_request.C: removing vform,response,cookie.h ->
pa_request.h dependency
* src/include/pa_request.h: removing vmail.h -> pa_request.h
dependency [testing...]
* src/: include/pa_config_fixed.h, types/pa_vxdoc.C: yet another
return 0; fixed
* src/: include/pa_config_fixed.h, types/pa_vmail.C,
types/pa_vmail.h: vmail.C received just compiled [not tested]
* src/classes/xdoc.C: forgotten: global xdoc when ndef XML
* src/main/pa_request.C: forgotten: ifdef XML
* src/main/pa_request.C, www/htdocs/.htaccess: forgotten: ifdef XML
* src/targets/cgi/parser3.C: todo: move to latest xml version on
win32 and run memleak tests again
* src/targets/cgi/parser3.C: charsets: see some strange things with
old xml lib-- it's internal memory handling has faults
* src/: include/pa_types.h, main/pa_charset.C: charsets: fixed
problems when transcode from charset A to A.
* src/: main/untaint.C, types/pa_vmail.C: mail: transcode fixed.
todo: still problems when transcode from charset A to A.
* src/classes/hash.C, src/classes/mail.C, src/classes/string.C,
src/classes/table.C, src/include/pa_array.h,
src/main/pa_sql_driver_manager.C, src/types/pa_vmail.C,
src/types/pa_vmail.h, www/htdocs/.htaccess,
www/htdocs/index.html: started full-scale-site-test [~
http://parser.ru sources]
some fixes
* tests/: 021.html, 031.html, 033.html, 109.html, 110.html,
111.html, 112.html, 113.html, 114.html, 115.html, 116.html,
117.html, 118.html, 119.html, 120.html, results/109.processed,
results/110.processed, results/111.processed,
results/112.processed, results/113.processed,
results/114.processed, results/115.processed,
results/116.processed, results/117.processed,
results/118.processed, results/119.processed,
results/120.processed: xml: tests 109 dom create/show 110 xpath
selectSingle 111 xdoc.create from tainted & 112
xdoc.create/output with russian attr value 113 xpath
selectString/Number 114 dom attributes.count 115 xpath selectBool
116 output media-type change 117 transform by dom stylesheet 118
empty transform result 119 dom setAttribute 120 nbsp letter
output
=END OF PREPARED XML TESTS=
2003-03-07 paf
* src/classes/xdoc.C, src/include/pa_charset.h,
src/include/pa_stylesheet_connection.h, tests/108.html,
tests/108.xsl, tests/results/108.processed: xml: test 108
transform with params [bugs fixed]
* src/: main/pa_charset.C, targets/cgi/parser3.C: fixed: mem leak
from copy/paste bug
* src/classes/xdoc.C, src/include/pa_charset.h,
src/include/pa_request.h, src/main/execute.C,
src/main/pa_charset.C, src/main/pa_exception.C,
src/main/pa_globals.C, src/main/pa_request.C,
src/types/pa_vxdoc.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.C, tests/107.html,
tests/results/107.processed: xml: test: 107 bug fixes
* src/: classes/xdoc.C, classes/xnode.C, classes/xnode.h,
types/pa_value.h, types/pa_vxdoc.C, types/pa_vxdoc.h,
types/pa_vxnode.C, types/pa_vxnode.h: test: 107 bug fixes
* tests/: 106.html, results/106.processed: test: 106 xdoc create,
string
* src/include/pa_charset.h, src/main/pa_charset.C,
www/htdocs/.htaccess: xml: charset two mem alloc functions used
for different cases [libxml, libxsl]
* src/classes/classes.C: fixed: prevent system classes from
modification to lock ALL the classes, not only directly used
* src/: classes/xdoc.C, types/pa_vxdoc.h, types/pa_vxnode.h: xml:
linked
* src/: classes/xdoc.C, types/pa_vxdoc.h: xdoc.C compiled
2003-03-06 paf
* src/classes/xdoc.C: xdoc.C 50%
* src/: classes/xnode.C, classes/xnode.h, include/pa_charset.h,
include/pa_memory.h, include/pa_request.h, include/pa_string.h,
main/pa_globals.C, main/pa_request.C,
main/pa_stylesheet_manager.C: xnode.C compiled
* src/: include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, main/pa_sql_driver_manager.C,
main/pa_stylesheet_manager.C: xml: stylesheet&manager done
* src/: include/pa_memory.h, include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, main/pa_stylesheet_manager.C:
xml: stylesheet&manager STARTED
* src/: include/pa_globals.h, main/pa_charset.C,
main/pa_exception.C, main/pa_globals.C: xml: exceptions
* src/: include/pa_charset.h, include/pa_config_fixed.h,
include/pa_memory.h, include/pa_pool.h, main/pa_charset.C,
main/pa_memory.C, main/pa_pool.C, types/pa_vxdoc.C,
types/pa_vxdoc.h, types/pa_vxnode.C, types/pa_vxnode.h: xml:
charsets
* tests/023.html: in some cases it rounded up badly. postponing
solution of that problem, making more simple test
* tests/: 058_paf2000.png, results/058.processed: .png added with
-kb now
* src/include/pa_charset.h, src/include/pa_charsets.h,
src/main/pa_charset.C, src/main/pa_charsets.C,
www/htdocs/.htaccess: charset_utf8 declaration moved to
charsets.C
2003-03-05 paf
* src/classes/string.C, src/include/pa_string.h,
src/main/pa_string.C, tests/105.html,
tests/results/105.processed: String::match bug fixed
* src/classes/op.C, src/main/main.dsp, tests/104.html,
tests/results/104.processed, www/htdocs/.htaccess: ^bpt operator
added [does int3 in debug build on win32]
* tests/: 057.html, results/057.processed: test bug fixed
* www/htdocs/: auto.p, autoptr.html, base.p, derived.p, font.gif,
global.xsl, index.html, mailreceive.eml, mailreceive.html,
operators.p, parser-status.html, people.dtd, some.p: removed old
tests
* src/targets/cgi/Makefile.am: linker needed more tricks to link OK
* src/classes/math.C: can be: crypt in -lcrypt OK, but crypt.h be
missing
* src/: include/Makefile.am, main/Makefile.am, types/Makefile.am:
forgotten files added to Makes
* ltmain.sh: ltmain.sh added
* src/types/: pa_vhash.C, pa_vhash.h: hash_default_element_name
change undone ;(
* src/types/: pa_vhash.C, pa_vhash.h: hash_default_element_name
made static
* src/: classes/math.C, classes/op.C, classes/string.C,
main/pa_exec.C, targets/cgi/Makefile.am: gcc more happy.
todo:make linker happy
* src/: classes/file.C, include/pa_exec.h, main/pa_exec.C: pa_exec
env param made optional
2003-03-04 paf
* src/: classes/image.C, include/pa_request.h, include/pa_stack.h,
types/pa_vimage.h: number of gcc compiler bugs fixed
* tests/: 103.html, 103mark.gif, 103paf2001.gif,
results/103.processed: tests: 103 image.copy transparence test
* src/main/execute.C, tests/101.html, tests/102.html,
tests/results/101.processed, tests/results/102.processed: tests:
101 method/variable name conflict test 102 form fields change
should not not change anything [bug fix]
* tests/: 057.html, 099.html, 100.html, results/057.processed,
results/099.processed, results/100.processed: tests: 57 date
create 2002: added 99,100 response:body/download
* src/classes/image.C, tests/098.html, tests/098font.gif,
tests/results/098.processed: test: 98 image font text [bug fixed]
* src/main/pa_common.C, src/targets/cgi/parser3.C, tests/097.html,
tests/results/097.processed: test: 97 file::load http:// [bugs
fixed]
* src/classes/hash.C, src/classes/image.C, src/classes/table.C,
src/include/pa_memory.h, tests/096.html, tests/096_dir/163.jpg,
tests/096_dir/188.jpg, tests/results/096.processed: tests: 96
image EXIF [bug fixed]
* src/classes/table.C, src/main/execute.C, tests/061.dat,
tests/061.html, tests/062.html, tests/063.html, tests/064.html,
tests/065.html, tests/066.html, tests/067.html, tests/068.html,
tests/069.html, tests/070.html, tests/071.html, tests/072.html,
tests/073.html, tests/074.html, tests/075.html, tests/076.html,
tests/077.html, tests/078.html, tests/080.html, tests/081.html,
tests/082.html, tests/083.html, tests/084.html, tests/085.html,
tests/086.html, tests/087.html, tests/088.html, tests/089.html,
tests/090.html, tests/091.html, tests/092.html, tests/093.html,
tests/094.html, tests/095.html, tests/results/061.processed,
tests/results/062.processed, tests/results/063.processed,
tests/results/064.processed, tests/results/065.processed,
tests/results/066.processed, tests/results/067.processed,
tests/results/068.processed, tests/results/069.processed,
tests/results/070.processed, tests/results/071.processed,
tests/results/072.processed, tests/results/073.processed,
tests/results/074.processed, tests/results/075.processed,
tests/results/076.processed, tests/results/077.processed,
tests/results/078.processed, tests/results/080.processed,
tests/results/081.processed, tests/results/082.processed,
tests/results/083.processed, tests/results/084.processed,
tests/results/085.processed, tests/results/086.processed,
tests/results/087.processed, tests/results/088.processed,
tests/results/089.processed, tests/results/090.processed,
tests/results/091.processed, tests/results/092.processed,
tests/results/093.processed, tests/results/094.processed,
tests/results/095.processed, tests/079.html,
tests/results/079.processed: tests: 61 file::stat size 62
string->int autoconvert 63 double .int,dec,div,mul 64 date
compare 65 file: basename,justname,justext 66 math:crypt 67
string.match simple on long 68 string.match normalized simple on
long 69 string.int 70 file::stat content-type 71 table.join 72
hash parameter conditional pass 73 date daylightsaving,yearday 74
date arithmetics 75 response date values/attributes 76 string.pos
of void, void.pos 77 syntax parsing 78 cookie tainting 79 switch
with local 80 scientific numeric literal in string autoconvert 81
xor: logical and numerical 82 for delims 83 menu delims 84
table.hash distinct 85 long string replace 86 throw+catch
current language preserve 87 bit shifts 88 junction tests +
$caller test 89 hash.foreach selfmodification 90 int/void to int
91 $caller test 92 junction is + def junction tests 93 $caller
test 94 syntax test 95 table.hash(keygenerator) [bug fixed]
* src/main/: execute.C, pa_table.C: test: 59 table.locate [bug
fixed] 60 string eq string [bug fixed]
* tests/: 053.html, 054.html, 055.html, 056.html, 057.html,
058.html, 058_paf2000.png, 059.html, 060.html,
results/053.processed, results/054.processed,
results/055.processed, results/056.processed,
results/057.processed, results/058.processed,
results/059.processed, results/060.processed: test: 53
string.replace 54 junctions 55 table.hash 56 call indirect 57
date.create[string] 58 image.measure[png]
* tests/: 052.html, outputs/049.processed, outputs/050.processed,
outputs/051.processed, results/052.processed: test: 52
pre/match/post test: passed AS-IT-WERE, but wrong :) separate
task: fix that
2003-03-03 paf
* tests/: 043.html, 044.html, 045.html, 046.html, 047.html,
048.html, 049.html, 050.html, 051.html, 051b.p, 051t.p, Makefile,
parser-cygwin.sh, parser-unix.sh, run_parser.sh,
outputs/049.processed, outputs/050.processed,
outputs/051.processed, results/001.processed,
results/002.processed, results/003.processed,
results/005.processed, results/006.processed,
results/008.processed, results/009.processed,
results/011.processed, results/012.processed,
results/013.processed, results/014.processed,
results/015.processed, results/016.processed,
results/017.processed, results/020.processed,
results/021.processed, results/022.processed,
results/024.processed, results/025.processed,
results/026.processed, results/027.processed,
results/028.processed, results/029.processed,
results/030.processed, results/031.processed,
results/049.processed, results/050.processed,
results/051.processed, results/043.processed,
results/044.processed, results/045.processed,
results/046.processed, results/047.processed,
results/048.processed: tests: 43,44,45 date rolls 46
autoevaluating junction 47 table.select 48 name with subvar 49
hash-creating switch 50 process 51 started parent/child, works as
it were but it were NOT GOOD, created separate task to fix that
* tests/: 042.html, results/042.processed: test: 42
exception.handled
* tests/: 041.html, results/041.processed: test: 41 table.locate by
expression
* tests/: 040.html, results/040.processed: test: 39 method result
of type table 40 method param junction auto evaluate
* tests/: 039.html, results/039.processed: test: 37 method result
of type table
* src/main/pa_request.C, src/types/pa_vmath.C, tests/033.html,
tests/034.html, tests/035.html, tests/036.html, tests/037.html,
tests/038.html, tests/results/033.processed,
tests/results/034.processed, tests/results/035.processed,
tests/results/036.processed, tests/results/037.processed,
tests/results/038.processed: tests: 33 string.replace 34
string.upper 35 table created 36 local/global vars with juntions
37 table clone 38 math PI & number formatting
math class registring typo fixed
* src/classes/op.C, src/include/pa_request.h,
src/include/pa_string.h, src/main/execute.C,
src/main/pa_request.C, src/main/pa_string.C, src/main/untaint.C,
src/types/pa_vcode_frame.h, src/types/pa_wcontext.h,
tests/032.html, tests/results/032.processed: uchar changed to
String_UL in all places [was not everywhere] untaint test: 032
* src/targets/cgi/parser3.C, tests/004.html, tests/Makefile,
tests/results/004.processed, www/htdocs/.htaccess,
tests/parser-cygwin.sh, tests/parser-unix.sh: removed -H command
line key, now testing using .sh file with SERVER_SOFTWARE=xxx
2003-02-26 paf
* src/main/execute.C, src/types/pa_vstateless_class.h,
tests/024.html, tests/025.html, tests/026.html, tests/027.html,
tests/028.html, tests/029.html, tests/030.html, tests/031.html,
tests/results/024.processed, tests/results/025.processed,
tests/results/026.processed, tests/results/027.processed,
tests/results/028.processed, tests/results/029.processed,
tests/results/030.processed, tests/results/031.processed: fixed
bug with name_cstr mutable CharPtr more tests
* src/: include/pa_sapi.h, main/pa_globals.C, main/pa_memory.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C: SAPI::abort
<< abort. die now just exits
* src/classes/classes.awk, src/classes/classes.h,
src/classes/date.C, src/classes/double.C, src/classes/file.C,
src/classes/form.C, src/classes/hash.C, src/classes/image.C,
src/classes/int.C, src/classes/mail.C, src/classes/math.C,
src/classes/op.C, src/classes/response.C, src/classes/string.C,
src/classes/table.C, src/classes/void.C, src/classes/xdoc.C,
src/classes/xnode.C, src/include/pa_memory.h,
src/include/pa_sapi.h, src/targets/cgi/parser3.C,
src/targets/isapi/parser3isapi.C, src/types/pa_venv.h,
src/types/pa_vform.C, tests/015.html, tests/016.html,
tests/017.html, tests/018.html, tests/019.html,
tests/019paf2001.gif, tests/020.html, tests/021.html,
tests/022.html, tests/023.html, tests/022_dir/a.html,
tests/022_dir/b.txt, tests/022_dir/c.htm,
tests/results/015.processed, tests/results/016.processed,
tests/results/017.processed, tests/results/018.processed,
tests/results/019.processed, tests/results/020.processed,
tests/results/021.processed, tests/results/022.processed,
tests/results/023.processed: methoded_array now contains all Mxxx
classes SAPI::get_env now returns info on pool more tests
* src/include/pa_array.h, src/include/pa_hash.h,
src/include/pa_memory.h, src/main/pa_charset.C, tests/001.html,
tests/002.html, tests/003.html, tests/004.html, tests/005.html,
tests/006.html, tests/007.html, tests/008.html, tests/009.html,
tests/010.html, tests/011.html, tests/012.html, tests/013.html,
tests/014.html, tests/Makefile, tests/outputs/create-dir,
tests/results/001.processed, tests/results/002.processed,
tests/results/003.processed, tests/results/004.processed,
tests/results/005.processed, tests/results/006.processed,
tests/results/007.processed, tests/results/008.processed,
tests/results/009.processed, tests/results/010.processed,
tests/results/011.processed, tests/results/012.processed,
tests/results/013.processed, tests/results/014.processed: hash
cloning fixed
2003-02-25 paf
* src/main/pa_common.C: typo fixed
2003-02-24 paf
* src/types/pa_vcookie.C: fixed all places with bad get_string(0)
[one remained]
* src/: include/pa_request.h, main/execute.C: few bad get_string(0)
[should have been get_string(&pool)] todo: check other such calls
* src/: main/compile.tab.C, main/execute.C, types/pa_vfile.h:
test10, bad lookups
xxx* xxx=smartptr.get(); << is bad style, after ";" original
object got destructed, and xxx points to sky
* ChangeLog, src/classes/string.C: match bug fixed
* src/types/pa_vmail.C: body [text/html] transcoded to
$.charset[specified] now
* src/main/pa_common.C: stupid gcc [2.95.4] generated bad code
which failed to handle sigsetjmp+throw: crashed inside of
pre-throw code. rewritten simplier [though duplicating
closesocket code]
* src/main/pa_common.C: stupid gcc [2.95.4] generated bad code
which failed to handle sigsetjmp+throw: crashed inside of
pre-throw code. rewritten simplier [though duplicating
closesocket code]
2003-02-21 paf
* operators.txt, src/targets/cgi/parser3.C, src/types/pa_vcookie.C:
$cookie:name[$.expires[date << can be now]]
written makefile with regression tests [raw]
* src/targets/cgi/parser3.C: MAKE_TEST must be used inside of 'make
tests' only [it's not forcing CGI mode now] now use -H to output
CGI header when parser used in command line [useful for tests
also]
* src/targets/cgi/parser3.C: MAKE_TEST environment variable
switches on CGI mode, and is used in regression tests
* src/: include/pa_request.h, main/pa_request.C,
targets/cgi/parser3.C, types/pa_vcookie.h, types/pa_venv.h: env
fixed
* src/: include/pa_memory.h, main/pa_memory.C: inlined memory
handling pa_*
* src/: include/pa_memory.h, main/pa_memory.C, include/pa_array.h,
include/pa_exception.h, include/pa_pool.h, main/Makefile.am,
main/main.dsp, main/pa_array.C, main/pa_pool.C: reorganized
memory handling files
* src/main/pa_array.C: pool::format_integer terminator fixed
* src/main/execute.C, src/targets/cgi/parser3.C,
www/htdocs/autoptr.html: release mode now compiles OK test to
show benefits of free
* src/: classes/file.C, classes/image.C, classes/mail.C,
classes/op.C, classes/xdoc.C, main/pa_charset.C, main/pa_exec.C,
main/pa_sql_driver_manager.C, main/pa_stylesheet_manager.C,
types/pa_vimage.C, types/pa_vxdoc.h: fixed all cstr's that must
use pool [as the one in ^process]
* src/classes/op.C: fixed process. sould now check for all cstr's
-- some must use pool [as the one in ^process]
2003-02-20 paf
* src/classes/date.C, src/classes/double.C, src/classes/file.C,
src/classes/hash.C, src/classes/image.C, src/classes/int.C,
src/classes/mail.C, src/classes/math.C, src/classes/op.C,
src/classes/response.C, src/classes/string.C,
src/classes/table.C, src/classes/void.C, src/classes/xdoc.C,
src/classes/xnode.C, src/main/pa_string.C, src/types/pa_method.h,
src/types/pa_value.C, src/types/pa_vmethod_frame.h,
www/htdocs/autoptr.html: string cmp fixed
* src/: include/pa_config_fixed.h, targets/cgi/parser3.C: form
values passed OK now
2003-02-19 paf
* src/: classes/form.C, include/pa_charset.h, include/pa_pool.h,
main/pa_charset.C, main/pa_exception.C, main/pa_request.C,
main/pa_stylesheet_manager.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.dsp, types/pa_vcookie.C,
types/pa_vform.C, types/pa_vmail.C, types/pa_vxnode.C: found&kill
all remaning leaks resulted from pooled::malloc calls [excluding
in gd -- planning complete rewrite extremely ugly code]
* src/targets/isapi/: pa_pool.C, pool_storage.h: removed unneeded
files
2003-02-17 paf
* src/: classes/date.C, classes/double.C, classes/file.C,
classes/image.C, classes/int.C, classes/mail.C, classes/math.C,
classes/response.C, classes/string.C, classes/table.C,
classes/xdoc.C, classes/xnode.h, include/pa_stack.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, sql/pa_sql_driver.h,
types/pa_vdate.h, types/pa_vdouble.h, types/pa_vfile.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vimage.h,
types/pa_vstatus.h, types/pa_vstring.h, types/pa_vtable.h,
types/pa_vvoid.h, types/pa_vxdoc.h, types/pa_vxnode.h,
types/pa_wcontext.h, types/pa_wwrapper.h: fixed all remained bugs
of unitialized simple-typed field
* src/: classes/classes.C, classes/classes.h, main/execute.C,
main/pa_charset.C, main/pa_request.C: another bug of unitialized
simple-typed field fixed. todo: find&kill all like that one
* src/: main/execute.C, targets/cgi/pa_pool.C,
targets/cgi/parser3.C, targets/cgi/pool_storage.h: few bugs in
debug output fixed
* src/: include/pa_stack.h, main/compile.C, main/execute.C,
main/pa_request.C: stack-stored items need extra .ref to prevent
object_ptr from delete[them]
* src/: classes/date.C, classes/op.C, classes/table.C,
classes/xdoc.C, classes/xnode.C, include/pa_array.h,
include/pa_charset.h, main/Makefile.am, main/main.dsp,
main/pa_charset.C, main/pa_common.C,
main/pa_sql_driver_manager.C, main/pa_stylesheet_manager.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C,
types/pa_vmail.C: fixed more leaks resulted from pooled::malloc
calls
* src/: main/pa_request.C, targets/cgi/parser3.C, types/pa_vfile.C:
couple mem leaks rusulted from old pooled::malloc usage.
todo:find more like those
* src/main/: compile.C, compile_tools.C: 2*2!
* src/: include/pa_array.h, include/pa_request.h, main/execute.C:
stackItem fixed [there were no string on stack before]
* src/: main/execute.C, main/pa_request.C,
types/pa_vmethod_frame.C: first letters out OK
* src/: classes/classes.C, include/pa_array.h, include/pa_hash.h,
include/pa_pool.h, include/pa_request.h, main/pa_request.C,
main/pa_string.C, main/untaint.C, types/pa_value.h,
types/pa_vint.h, types/pa_vstateless_class.h, types/pa_vstring.h,
types/pa_vvoid.h, types/pa_wcontext.h: class fields of simple
type not initialized with zeros :( while class fields of class
types initialized with default constructors. learn C++
* src/: classes/classes.awk, classes/double.C, classes/file.C,
classes/form.C, classes/image.C, classes/int.C, classes/mail.C,
classes/math.C, classes/xdoc.C, classes/xnode.C,
include/pa_array.h, include/pa_string.h, main/pa_exec.C,
types/pa_vmail.C: parser3.exe - 0 error(s), 0 warning(s)
2003-02-14 paf
* src/: include/pa_common.h, main/pa_common.C, main/pa_request.C:
13 link errors
* src/: classes/file.C, include/pa_request.h, main/pa_request.C,
main/pa_sql_driver_manager.C, targets/cgi/parser3.C,
types/pa_vfile.C, types/pa_vfile.h, types/pa_vform.C,
types/pa_vimage.C, types/pa_vtable.C: all compiled, only 14 link
errors :)
* src/: classes/classes.C, classes/classes.awk, classes/file.C,
classes/hash.C, classes/mail.C, classes/op.C,
include/pa_common.h, include/pa_request.h, include/pa_sapi.h,
main/pa_common.C, main/pa_request.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, targets/isapi/parser3isapi.C:
classes.lib - 0 error(s), 0 warning(s) parser.C compiled
* src/: classes/classes.dsp, classes/op.C, classes/string.C,
classes/table.C, include/pa_common.h, include/pa_globals.h,
include/pa_pool.h, include/pa_request.h, main/pa_globals.C,
main/pa_request.C, types/pa_value.h, types/pa_vhash.h,
types/pa_vint.h, types/types.dsp: op compiled
* src/: classes/classes.dsp, classes/response.C, classes/string.C,
include/pa_dictionary.h, include/pa_string.h, main/pa_string.C,
main/untaint.C, types/pa_vtable.h: string, response compiled
2003-02-07 paf
* src/: classes/table.C, types/pa_vtable.h: table compiled
2003-02-06 paf
* src/: classes/mail.C, include/pa_request.h, main/pa_request.C:
mail compiled
* src/: classes/image.C, classes/string.C, classes/xdoc.C,
include/pa_common.h, include/pa_hash.h, main/pa_common.C,
types/pa_vfile.h, types/pa_vimage.h: image compiled
* src/classes/: file.C, form.C: form compiled
* src/: classes/classes.dsp, classes/file.C, include/pa_common.h,
include/pa_exec.h, main/pa_common.C, main/pa_exec.C,
types/pa_vfile.C, types/pa_vfile.h: file compiled
* src/: classes/hash.C, classes/math.C, types/pa_vmath.C,
types/pa_vmath.h: math compiled [win32]
* src/: classes/hash.C, include/pa_hash.h, include/pa_table.h,
types/pa_vstring.h: hash compiled
2003-02-04 paf
* src/: classes/date.C, classes/hash.C, include/pa_exec.h,
include/pa_hash.h, include/pa_request.h, include/pa_string.h,
include/pa_table.h, main/pa_common.C, main/pa_exec.C,
main/pa_string.C, types/pa_method.h, types/pa_vform.C,
types/pa_vhash.h: hash 50% compiled
* src/: classes/date.C, classes/file.C, classes/hash.C,
classes/image.C, classes/mail.C, classes/math.C, classes/op.C,
classes/string.C, classes/table.C, classes/xdoc.C,
classes/xnode.C, include/pa_request.h, main/pa_globals.C,
main/pa_string.C: date compiled
* src/classes/: classes.dsp, double.C: double compiled
* src/: classes/date.C, classes/double.C, classes/file.C,
classes/form.C, classes/hash.C, classes/image.C, classes/int.C,
classes/mail.C, classes/math.C, classes/op.C, classes/response.C,
classes/string.C, classes/table.C, classes/void.C,
classes/xdoc.C, classes/xnode.C, types/pa_vdouble.h,
types/pa_vhash.h, types/pa_vint.h, types/pa_vstring.h,
types/pa_vtable.h, types/pa_vxdoc.h, types/pa_vxnode.h: int
compiled
* src/: classes/date.C, classes/double.C, classes/file.C,
classes/hash.C, classes/image.C, classes/int.C, classes/mail.C,
classes/math.C, classes/op.C, classes/response.C,
classes/string.C, classes/table.C, classes/void.C,
classes/xdoc.C, classes/xnode.C, classes/xnode.h,
types/pa_vvoid.h: void compiled :)
* src/: include/pa_globals.h, main/pa_cache_managers.C,
main/pa_charset.C, main/pa_charsets.C, main/pa_common.C,
main/pa_dir.C, main/pa_exception.C, main/pa_exec.C,
main/pa_globals.C, main/pa_pool.C, main/pa_sql_driver_manager.C,
main/pa_string.C, main/pa_uue.C, main/untaint.C,
types/pa_value.C, types/pa_vcookie.C, types/pa_vfile.C,
types/pa_vimage.C, types/pa_vmath.C, types/pa_vrequest.C,
types/pa_vresponse.C, types/pa_vstateless_class.C,
types/pa_vstatus.C, types/pa_vstring.C, types/pa_vtable.C,
types/pa_wcontext.C, types/types.dsp: removed stupid
value_includes.h
* src/types/: pa_value.C, pa_value_includes.h, pa_vrequest.C:
trying to remove stupid value_includes.h
* src/main/pa_exec.C: pa_exec compiled on win32
* src/main/pa_exec.C: libmain.a compiled on six [unix]
* src/: include/pa_globals.h, include/pa_request.h,
types/pa_value.C, types/pa_value.h, types/pa_vclass.C,
types/pa_vcookie.C, types/pa_vdate.h, types/pa_vfile.C,
types/pa_vfile.h, types/pa_vmail.C, types/pa_vobject.C,
types/pa_vrequest.C, types/pa_vstateless_class.C,
types/pa_vstatus.C, types/pa_vtable.C: libtypes.a compiled gcc
* src/: include/pa_config_includes.h, include/pa_dictionary.h,
main/pa_common.C, main/pa_dictionary.C, main/pa_exec.C,
main/pa_socks.C: libmain.a gcc and mail.lib msvc++ compiled
* src/: include/pa_array.h, include/pa_config_includes.h,
include/pa_dictionary.h, main/pa_dictionary.C, main/pa_exec.C,
main/pa_socks.C, main/pa_sql_driver_manager.C: gcc libmain.a
compiled
* src/main/pa_globals.C: merged changes from 1.149-1.150 (stupid
name conflicts)
* src/: main/compile_tools.h, main/execute.C, main/pa_table.C,
types/pa_vmethod_frame.h, types/pa_vvoid.h: yuk: gcc on cygwin
yelds "virtual memory exhausted" while trying to compile
execute.C [eating up to 127MB]
2003-02-03 paf
* src/: include/pa_config_includes.h, include/pa_hash.h,
include/pa_operation.h, include/pa_pool.h, include/pa_string.h,
main/pa_common.C, types/pa_value.C, types/pa_value.h,
types/pa_vdouble.h, types/pa_vfile.h, types/pa_vhash.h,
types/pa_vint.h, types/pa_vjunction.h,
types/pa_vstateless_class.h, types/pa_vstring.h, types/types.dsp:
started gcc compiling pa_common compiled
* src/: include/pa_exception.h, include/pa_pool.h,
main/pa_exception.C: exception gcc change #1
* src/include/: Makefile.am, pa_hash.h, pa_pool.h: gcc refused to
compile _P identifier. it replaced it to some strange 0x0000040
* src/types/: pa_vmath.C, pa_vmethod_frame.C: vmath compiled
* src/types/pa_vtable.C: vtable compiled
* src/types/: pa_vstring.C, pa_vstring.h: vstring compiled
* src/: include/pa_cache_managers.h, main/pa_request.C,
types/pa_vstatus.C, types/pa_vstatus.h: vstatus compiled
* src/types/pa_vstateless_class.C: vstateless_class compiled
* src/types/: pa_vresponse.C, pa_vresponse.h: vresponse compiled
* src/types/pa_vrequest.C: vrequest compiled
* src/types/: pa_value.C, pa_value.h, pa_vclass.C, pa_vclass.h,
pa_vobject.C, pa_vobject.h: vobject compiled
* src/: classes/form.C, classes/mail.C, include/pa_request.h,
main/pa_globals.C, main/pa_request.C, types/pa_value.h,
types/pa_vform.C, types/pa_vmail.C, types/pa_vmail.h: vmail
compiled
* src/types/: pa_vimage.C, pa_vimage.h: vimage compiled
* src/: include/pa_pool.h, main/pa_request.C, types/pa_value.C,
types/pa_vclass.C, types/pa_vcookie.C, types/pa_vcookie.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vobject.h: vform
compiled
* src/: include/pa_request.h, main/execute.C, main/pa_request.C:
main.lib - 0 error(s), 0 warning(s)
* src/: include/pa_request.h, main/execute.C, main/pa_request.C,
types/pa_value.h, types/pa_vmethod_frame.h: execute compiled
2003-01-31 paf
* src/: include/pa_array.h, include/pa_operation.h,
include/pa_request.h, main/execute.C, main/main.dsp,
types/pa_vjunction.h: started last file from main library:
execute
* src/: include/pa_request.h, include/pa_sapi.h,
main/compile.tab.C, main/compile.y, main/compile_tools.h,
main/pa_request.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vhash.h: pa_request compiled
* src/: classes/op.C, classes/string.C, include/pa_common.h,
include/pa_globals.h, include/pa_request.h,
include/pa_sql_connection.h, main/compile.tab.C, main/compile.y,
main/execute.C, main/main.dsp, main/pa_common.C,
main/pa_globals.C, main/pa_request.C, types/pa_value.h,
types/pa_vcode_frame.h, types/pa_vcookie.h, types/pa_vform.h,
types/pa_vmail.C, types/pa_vmail.h, types/pa_vresponse.h,
types/pa_vtable.h, types/pa_wcontext.C, types/pa_wcontext.h,
types/types.dsp: most pa_request compiled
* src/: classes/classes.C, classes/classes.h, classes/date.C,
classes/double.C, classes/file.C, classes/form.C, classes/hash.C,
classes/image.C, classes/int.C, classes/mail.C, classes/math.C,
classes/op.C, classes/response.C, classes/string.C,
classes/table.C, classes/void.C, classes/xdoc.C, classes/xnode.C,
classes/xnode.h, include/pa_array.h, include/pa_cache_managers.h,
include/pa_charset.h, include/pa_charsets.h, include/pa_common.h,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_dictionary.h, include/pa_dir.h,
include/pa_exception.h, include/pa_exec.h, include/pa_globals.h,
include/pa_hash.h, include/pa_opcode.h, include/pa_operation.h,
include/pa_pool.h, include/pa_request.h,
include/pa_request_charsets.h, include/pa_request_info.h,
include/pa_sapi.h, include/pa_socks.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stack.h, include/pa_string.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
include/pa_threads.h, include/pa_types.h, include/pa_uue.h,
lib/ltdl/config_fixed.h, lib/ltdl/ltdl.c, lib/ltdl/ltdl.h,
lib/md5/pa_md5.h, lib/md5/pa_md5c.c, lib/pcre/dftables.c,
lib/pcre/get.c, lib/pcre/maketables.c, lib/pcre/pcre.c,
lib/pcre/pcre.h, lib/pcre/pcre_parser_ctype.c, lib/pcre/study.c,
main/compile.C, main/compile.tab.C, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/main.dsp, main/pa_cache_managers.C, main/pa_charset.C,
main/pa_charsets.C, main/pa_common.C, main/pa_dictionary.C,
main/pa_dir.C, main/pa_exception.C, main/pa_exec.C,
main/pa_globals.C, main/pa_pool.C, main/pa_request.C,
main/pa_socks.C, main/pa_sql_driver_manager.C, main/pa_string.C,
main/pa_stylesheet_manager.C, main/pa_table.C, main/pa_uue.C,
main/untaint.C, sql/pa_sql_driver.h, targets/cgi/getopt.c,
targets/cgi/getopt.h, targets/cgi/pa_pool.C,
targets/cgi/pa_threads.C, targets/cgi/parser3.C,
targets/cgi/pool_storage.h, targets/isapi/pa_pool.C,
targets/isapi/pa_threads.C, targets/isapi/parser3isapi.C,
targets/isapi/pool_storage.h, types/pa_value.C, types/pa_value.h,
types/pa_value_includes.h, types/pa_vbool.h, types/pa_vclass.C,
types/pa_vclass.h, types/pa_vcode_frame.h, types/pa_vcookie.C,
types/pa_vcookie.h, types/pa_vdate.h, types/pa_vdouble.h,
types/pa_venv.h, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vhash.h,
types/pa_vimage.C, types/pa_vimage.h, types/pa_vint.h,
types/pa_vjunction.h, types/pa_vmail.C, types/pa_vmail.h,
types/pa_vmath.C, types/pa_vmath.h, types/pa_vmethod_frame.C,
types/pa_vmethod_frame.h, types/pa_vobject.C, types/pa_vobject.h,
types/pa_vrequest.C, types/pa_vrequest.h, types/pa_vresponse.C,
types/pa_vresponse.h, types/pa_vstateless_class.C,
types/pa_vstateless_class.h, types/pa_vstateless_object.h,
types/pa_vstatus.C, types/pa_vstatus.h, types/pa_vstring.C,
types/pa_vstring.h, types/pa_vtable.C, types/pa_vtable.h,
types/pa_vvoid.h, types/pa_vxdoc.C, types/pa_vxdoc.h,
types/pa_vxnode.C, types/pa_vxnode.h, types/pa_wcontext.C,
types/pa_wcontext.h, types/pa_wwrapper.h: grammar compiled
* ChangeLog, src/classes/classes.h, src/classes/op.C,
src/include/pa_cache_managers.h, src/include/pa_charset.h,
src/include/pa_charsets.h, src/include/pa_common.h,
src/include/pa_dictionary.h, src/include/pa_exception.h,
src/include/pa_exec.h, src/include/pa_pool.h,
src/include/pa_request.h, src/include/pa_sapi.h,
src/include/pa_sql_connection.h,
src/include/pa_sql_driver_manager.h, src/include/pa_string.h,
src/include/pa_table.h, src/include/pa_uue.h, src/main/compile.C,
src/main/compile.tab.C, src/main/compile_tools.C,
src/main/compile_tools.h, src/main/main.dsp,
src/main/pa_charset.C, src/main/pa_charsets.C,
src/main/pa_common.C, src/main/pa_dictionary.C,
src/main/pa_exception.C, src/main/pa_exec.C,
src/main/pa_request.C, src/main/pa_sql_driver_manager.C,
src/main/pa_string.C, src/main/pa_table.C, src/main/pa_uue.C,
src/main/untaint.C, src/types/pa_value.C, src/types/pa_value.h,
src/types/pa_vclass.h, src/types/pa_vcookie.C,
src/types/pa_vcookie.h, src/types/pa_vdate.h,
src/types/pa_vdouble.h, src/types/pa_venv.h,
src/types/pa_vfile.C, src/types/pa_vfile.h, src/types/pa_vform.h,
src/types/pa_vhash.h, src/types/pa_vimage.C,
src/types/pa_vimage.h, src/types/pa_vint.h, src/types/pa_vmail.C,
src/types/pa_vmail.h, src/types/pa_vmath.C, src/types/pa_vmath.h,
src/types/pa_vmethod_frame.C, src/types/pa_vmethod_frame.h,
src/types/pa_vobject.C, src/types/pa_vobject.h,
src/types/pa_vrequest.C, src/types/pa_vrequest.h,
src/types/pa_vresponse.C, src/types/pa_vresponse.h,
src/types/pa_vstateless_class.C, src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, src/types/pa_vstatus.h,
src/types/pa_vstring.h, src/types/pa_vtable.h,
src/types/pa_vvoid.h, src/types/pa_wcontext.C,
src/types/pa_wcontext.h, src/types/pa_wwrapper.h,
www/htdocs/.htaccess: ConstStringPtr died, long live StringPtr
2003-01-30 paf
* src/: include/pa_charset.h, include/pa_request.h,
include/pa_sql_driver_manager.h, main/compile.tab.C,
main/compile.y, main/compile_tools.h, main/pa_request.C,
types/pa_vobject.h, types/pa_vstatus.h: grammar compiled
* src/: classes/classes.h, include/pa_pool.h, main/compile.C,
main/compile.tab.C, types/pa_value.h, types/pa_vfile.h,
types/pa_vhash.h, types/pa_vmethod_frame.h,
types/pa_vstateless_class.C, types/pa_vstateless_class.h,
types/types.dsp: vstateless_class compiled
* src/main/compile.C: compile compiled
* src/: include/pa_array.h, include/pa_operation.h,
include/pa_table.h, main/compile_tools.C, main/compile_tools.h,
main/pa_table.C: compile_tools compiled
* src/: include/pa_operation.h, main/compile.y,
main/compile_tools.C, main/compile_tools.h: started
compile_tools. vagues ideas of how to free compiled code
* src/: include/pa_opcode.h, main/compile_tools.h, main/execute.C,
main/main.dsp, types/pa_value.C, types/pa_value.h,
types/pa_vmethod_frame.h, types/pa_vstateless_class.h: value
compiled
2003-01-29 paf
* src/: include/pa_globals.h, include/pa_request.h,
main/pa_globals.C, main/pa_request.C, types/pa_value.h,
types/pa_vmethod_frame.h, types/pa_vstateless_class.h,
types/pa_wcontext.h, types/types.dsp: vmethodframe, pa_request.h
compiled
* src/lib/ltdl/config_fixed.h: libltdl compiled without warnings
now
* src/: include/pa_array.h, include/pa_exception.h,
include/pa_pool.h, main/pa_exception.C: gd compiled
* src/types/: pa_vfile.C, pa_vfile.h, pa_vimage.C, pa_vimage.h: gd
compiled
* src/: classes/file.C, include/pa_globals.h, main/pa_globals.C,
types/pa_value.C, types/pa_value.h, types/pa_vfile.C,
types/pa_vfile.h: vfile compiled
* src/: include/pa_common.h, include/pa_globals.h,
include/pa_string.h, main/pa_globals.C, types/pa_value.C,
types/pa_value.h, types/pa_vcookie.C, types/pa_vcookie.h,
types/pa_vform.C, types/pa_vform.h: vcookie compiled
* src/: include/pa_exception.h, main/pa_cache_managers.C,
main/pa_charsets.C, main/pa_common.C, main/pa_dir.C,
main/pa_exception.C, main/pa_exec.C, main/pa_pool.C,
main/pa_socks.C, main/pa_sql_driver_manager.C, main/pa_string.C,
main/pa_uue.C: #include "pa_value_includes.h" everywhere in main
* src/: include/pa_request_charsets.h, include/pa_request_info.h,
main/main.dsp, main/untaint.C: more compiled
* src/: include/pa_charsets.h, include/pa_request.h,
include/pa_request_info.h, include/pa_string.h,
main/pa_charsets.C, types/pa_vrequest.C, types/pa_vresponse.C,
types/pa_vresponse.h: vrequest compiled
* src/types/: pa_value.h, pa_vdate.h, pa_vform.h, pa_vhash.h,
pa_vobject.C, pa_vobject.h, pa_vrequest.C, pa_vresponse.C,
pa_vresponse.h, pa_wcontext.h: vrequest compiled
* src/: classes/classes.h, include/pa_charset.h,
include/pa_charsets.h, include/pa_globals.h, include/pa_pool.h,
include/pa_request.h, include/pa_string.h, main/main.dsp,
main/pa_charset.C, main/pa_charsets.C, main/pa_globals.C,
main/untaint.C, types/pa_value.h, types/pa_vdouble.h,
types/pa_vfile.h, types/pa_vint.h, types/pa_vmath.C,
types/pa_vrequest.C, types/pa_vrequest.h,
types/pa_vstateless_class.h, types/pa_vstring.h,
types/pa_vvoid.h: vrequest,vdouble,vint compiled
* src/: classes/classes.h, classes/math.C, include/pa_pool.h,
include/pa_request.h, include/pa_sapi.h, include/pa_string.h,
main/main.dsp, types/pa_value.h, types/pa_vbool.h,
types/pa_vclass.h, types/pa_vdouble.h, types/pa_venv.h,
types/pa_vfile.h, types/pa_vform.C, types/pa_vform.h,
types/pa_vjunction.h, types/pa_vmath.C, types/pa_vmath.h,
types/pa_vobject.h, types/pa_vstateless_class.h,
types/pa_vstateless_object.h, types/pa_vstatus.h,
types/pa_vstring.h, types/types.dsp: vmath compiled
2003-01-28 paf
* src/: classes/classes.h, classes/date.C, classes/file.C,
classes/hash.C, classes/image.C, classes/table.C, classes/xdoc.C,
classes/xnode.h, main/execute.C, main/main.dsp, types/pa_value.h,
types/pa_vclass.C, types/pa_vclass.h, types/pa_vobject.C,
types/pa_vobject.h, types/pa_vstateless_class.h: started main:
compile_tools
* src/: include/pa_charset.h, include/pa_exception.h,
include/pa_request.h, include/pa_string.h, main/untaint.C:
untaint compiled
* ChangeLog, src/include/pa_array.h, src/include/pa_string.h,
src/main/execute.C, src/main/untaint.C, src/types/pa_vmail.C:
more compiled. struck with string::store_to needing to know
source/client charsets
* src/: include/pa_exception.h, include/pa_uue.h, main/pa_uue.C,
types/pa_vfile.h: uue compiled
* src/: include/pa_table.h, main/pa_string.C, main/pa_table.C:
table compiled
* src/: include/pa_cache_managers.h, main/pa_cache_managers.C,
main/pa_globals.C, main/pa_sql_driver_manager.C: globals compiled
* src/: include/pa_charset.h, main/pa_charset.C,
main/pa_charsets.C: charset/s simplified [charset::pool_for_load
introduced]
* src/: classes/date.C, include/pa_charset.h,
include/pa_charsets.h, include/pa_globals.h, main/pa_charset.C,
main/pa_charsets.C, main/pa_globals.C, main/pa_request.C:
pa_charsets compiled
* src/: include/pa_array.h, include/pa_exec.h, include/pa_hash.h,
include/pa_pool.h, main/pa_exec.C: pa_exec win32 compiled
* src/: include/pa_pool.h, main/pa_common.C, types/pa_vdouble.h:
common compiled
* src/: include/pa_charsets.h, main/pa_charsets.C,
main/pa_sql_driver_manager.C: pa_charsets compiled
* src/: include/pa_array.h, include/pa_charset.h,
include/pa_charsets.h, include/pa_pool.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stack.h, include/pa_string.h,
main/pa_sql_driver_manager.C, types/pa_vhash.h, types/pa_vint.h:
sql_driver_manager compiled
* etc/parser3.charsets/: koi8-r.cfg, windows-1251.cfg: ukranian
letter i with two dots added to koi, all ukranian letters added
to win1251.
typographic simbol 0xb9 deleted from win1251 [strange one & were
abscent from koi]
2003-01-27 paf
* src/: include/pa_exception.h, include/pa_sql_connection.h,
include/pa_sql_driver_manager.h, include/pa_string.h,
main/pa_common.C, main/pa_exec.C, main/pa_sql_driver_manager.C,
sql/pa_sql_driver.h: paused on sql_manager
* src/: include/pa_cache_managers.h, include/pa_pool.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stack.h, main/pa_sql_driver_manager.C,
types/pa_vtable.h, types/pa_vvoid.h: vtable compiled
* src/: classes/op.C, include/pa_globals.h, include/pa_hash.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_table.h, main/pa_sql_driver_manager.C,
main/pa_table.C: table compiled
* src/: include/pa_cache_managers.h, main/pa_cache_managers.C:
cache_managers compiled
* src/: include/pa_array.h, include/pa_charset.h,
include/pa_pool.h, main/pa_charset.C: charset compiled
* src/: include/pa_pool.h, main/pa_common.C: common compiled
* src/: include/pa_array.h, include/pa_common.h, include/pa_hash.h,
include/pa_pool.h, include/pa_string.h, main/pa_common.C,
main/pa_string.C, types/pa_value.C, types/pa_value.h,
types/pa_vhash.h, types/pa_vint.h, types/pa_vstateless_class.h,
types/pa_wcontext.C, types/pa_wcontext.h: wcontext compiled
2003-01-24 paf
* src/: classes/classes.C, classes/classes.h, include/pa_array.h,
include/pa_common.h, include/pa_globals.h, include/pa_hash.h,
include/pa_pool.h, include/pa_string.h, main/pa_common.C,
main/pa_globals.C, main/pa_string.C, types/pa_value.h,
types/pa_vbool.h, types/pa_vdouble.h, types/pa_vhash.h,
types/pa_vint.h, types/pa_vjunction.h,
types/pa_vstateless_class.h, types/pa_vstateless_object.h,
types/pa_vstatus.h, types/pa_vstring.h: more patched
* src/: classes/op.C, include/pa_array.h, include/pa_exception.h,
include/pa_hash.h, include/pa_pool.h, include/pa_string.h,
include/pa_table.h, main/pa_dictionary.C, main/pa_exception.C,
main/pa_string.C, main/pa_table.C: string compiled
* src/: include/pa_array.h, include/pa_common.h,
include/pa_dictionary.h, include/pa_exception.h,
include/pa_pool.h, include/pa_string.h, include/pa_table.h,
main/pa_common.C, main/pa_dictionary.C, main/pa_exception.C,
main/pa_string.C: dictionary compiled
2003-01-23 paf
* src/: include/pa_array.h, include/pa_common.h,
include/pa_exception.h, include/pa_globals.h, include/pa_pool.h,
include/pa_request.h, include/pa_string.h, main/pa_common.C,
main/pa_exception.C, main/pa_globals.C, types/pa_value.C,
types/pa_value.h: resurrected pool in new sense: now it's
factory, producing&accounting memory chunks for read[autofree]
buffers
* src/: include/pa_array.h, include/pa_exception.h,
include/pa_hash.h, include/pa_pool.h, include/pa_table.h,
main/pa_exception.C, main/pa_table.C: table compiled
* src/: classes/image.C, classes/op.C, include/pa_array.h,
include/pa_exception.h, include/pa_globals.h, include/pa_hash.h,
include/pa_pool.h, include/pa_pragma_pack_begin.h,
include/pa_pragma_pack_end.h, include/pa_sapi.h,
include/pa_string.h, include/pa_table.h, include/pa_types.h,
main/pa_exception.C, main/pa_globals.C, main/pa_string.C,
main/pa_table.C: aint that easy
* src/: include/pa_array.h, include/pa_hash.h, include/pa_pool.h,
main/main.dsp: continued with Hash
* src/main/pa_common.C: connect_string allocated on heap[wes on
stack] now. and exception can be reported OK now [can be reported
outside of pro c with that stack]
2003-01-22 paf
* src/: include/pa_array.h, include/pa_charset.h,
include/pa_dictionary.h, include/pa_hash.h, include/pa_pool.h,
include/pa_string.h, main/pa_array.C, main/pa_hash.C,
main/pa_pool.C, main/pa_string.C: started auto_ptr. PA_Object is
base: contains references_count. auto_ptr template calls
add_ref/release
2003-01-21 paf
* src/: classes/classes.C, classes/classes.h, classes/date.C,
classes/double.C, classes/file.C, classes/form.C, classes/hash.C,
classes/image.C, classes/int.C, classes/mail.C, classes/math.C,
classes/op.C, classes/response.C, classes/string.C,
classes/table.C, classes/void.C, classes/xdoc.C, classes/xnode.C,
classes/xnode.h, include/pa_array.h, include/pa_cache_managers.h,
include/pa_charset.h, include/pa_charsets.h, include/pa_common.h,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_dictionary.h, include/pa_dir.h,
include/pa_exception.h, include/pa_exec.h, include/pa_globals.h,
include/pa_hash.h, include/pa_opcode.h, include/pa_pool.h,
include/pa_pragma_pack_begin.h, include/pa_pragma_pack_end.h,
include/pa_request.h, include/pa_sapi.h, include/pa_socks.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stack.h, include/pa_string.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
include/pa_threads.h, include/pa_types.h, include/pa_uue.h,
lib/md5/pa_md5.h, lib/md5/pa_md5c.c,
lib/pcre/pcre_parser_ctype.c, main/compile.C,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/pa_array.C, main/pa_cache_managers.C, main/pa_charset.C,
main/pa_charsets.C, main/pa_common.C, main/pa_dictionary.C,
main/pa_dir.C, main/pa_exception.C, main/pa_exec.C,
main/pa_globals.C, main/pa_hash.C, main/pa_pool.C,
main/pa_request.C, main/pa_socks.C, main/pa_sql_driver_manager.C,
main/pa_string.C, main/pa_stylesheet_manager.C, main/pa_table.C,
main/pa_uue.C, main/untaint.C, sql/pa_sql_driver.h,
targets/cgi/pa_pool.C, targets/cgi/pa_threads.C,
targets/cgi/parser3.C, targets/cgi/pool_storage.h,
targets/isapi/pa_pool.C, targets/isapi/pa_threads.C,
targets/isapi/parser3isapi.C, targets/isapi/pool_storage.h,
types/pa_value.C, types/pa_value.h, types/pa_vbool.h,
types/pa_vclass.C, types/pa_vclass.h, types/pa_vcode_frame.h,
types/pa_vcookie.C, types/pa_vcookie.h, types/pa_vdate.h,
types/pa_vdouble.h, types/pa_venv.h, types/pa_vfile.C,
types/pa_vfile.h, types/pa_vform.C, types/pa_vform.h,
types/pa_vhash.h, types/pa_vimage.C, types/pa_vimage.h,
types/pa_vint.h, types/pa_vjunction.h, types/pa_vmail.C,
types/pa_vmail.h, types/pa_vmath.h, types/pa_vmethod_frame.h,
types/pa_vobject.C, types/pa_vobject.h, types/pa_vrequest.C,
types/pa_vrequest.h, types/pa_vresponse.C, types/pa_vresponse.h,
types/pa_vstateless_class.C, types/pa_vstateless_class.h,
types/pa_vstateless_object.h, types/pa_vstatus.C,
types/pa_vstatus.h, types/pa_vstring.C, types/pa_vstring.h,
types/pa_vtable.C, types/pa_vtable.h, types/pa_vvoid.h,
types/pa_vxdoc.C, types/pa_vxdoc.h, types/pa_vxnode.C,
types/pa_vxnode.h, types/pa_wcontext.C, types/pa_wcontext.h,
types/pa_wwrapper.h, main/compile.tab.C, main/compile.y:
2002->2003
2003-01-16 paf
* www/htdocs/index.html: image.copy fixed transparent resampling
* operators.txt, src/include/pa_globals.h, src/main/pa_common.C,
src/main/pa_globals.C, www/htdocs/index.html: http:// introducing
$.any-status(1)
* operators.txt, src/include/pa_config_fixed.h,
src/main/pa_common.C, www/htdocs/index.html: http request now
return status. and not fail on status!=200
2003-01-15 paf
* src/main/pa_globals.C: localized pa_xmlFileRead/Close
2003-01-14 paf
* src/lib/ltdl/: config.guess, config.sub, install-sh, missing,
mkinstalldirs: removed some ancient files [they in / really]
* src/lib/ltdl/: config_fixed.h, libltdl.dsp, ltdl.c: ltdl.c
regretfully needed patch in two places. in config_fixed.h made
stubs for lib to compile in MSVC
2003-01-13 paf
* config.guess, config.sub, ltmain.sh: removed last piece of
configure.in(libtool) hacks
* src/lib/ltdl/: COPYING.LIB, acinclude.m4, config.h,
config_auto.h.in, configure, configure.in, libltdl.dsp, ltdl.c,
ltdl.h: moved to latest libtool (1.4.3)
2003-01-10 paf
* src/lib/ltdl/: configure, configure.in: PROG_NM
* src/main/pa_globals.C: moved to latest xml lib versions, changed
patches. libxml2 >= 2.5.1
[ftp://xmlsoft.org/libxml2-2.5.1.tar.gz] libxslt >= 1.0.23
[ftp://xmlsoft.org/libxslt-1.0.23.tar.gz] gdome2 >= 0.7.2
[http://gdome2.cs.unibo.it/tarball/gdome2-0.7.2.tar.gz]
* INSTALL: moved to latest versions of xml libs libxml2 >=
2.5.1 [ftp://xmlsoft.org/libxml2-2.5.1.tar.gz] libxslt >=
1.0.23 [ftp://xmlsoft.org/libxslt-1.0.23.tar.gz] gdome2 >=
0.7.2 [http://gdome2.cs.unibo.it/tarball/gdome2-0.7.2.tar.gz]
2003-01-09 paf
* INSTALL: xml,xslt,gdome lib urls updated
* config.guess, config.sub, missing, mkinstalldirs,
src/include/pa_config_auto.h.in, src/lib/ltdl/config_auto.h.in,
src/lib/ltdl/configure, src/lib/ltdl/configure.in,
src/targets/cgi/Makefile.am: moved to autoconf 2.57 & automake
1.7.2
* depcomp: moving to automake 1.7.2
2002-12-27 paf
* src/include/pa_version.h: 0007
* src/doc/aliased.dox, src/doc/index.dox, src/doc/module.dox,
src/doc/pooled.dox, www/htdocs/index.html: removed outdated
parts, made links to language docs
* src/include/pa_config_auto.h.in: comment
2002-12-26 paf
* src/classes/file.C: ^file:fullpath[a.gif] when document root did
not contain trailing / fixed.
* INSTALL: changing SAFE_MODE politics
* src/include/pa_config_auto.h.in: changing SAFE_MODE politics
* src/main/: pa_common.C, pa_exec.C: changing SAFE_MODE politics
2002-12-25 paf
* src/main/pa_globals.C: optimized-xml
* src/main/pa_globals.C: optimized-as-is
2002-12-24 paf
* src/main/: pa_common.C, pa_pool.C: pool::copy on zero size|ptr
fixed [were really called with zero size when .html?a=&b=]
* src/classes/mail.C: $MAIL in @conf now invalid when configured
with --with-sendmail
* src/main/pa_exec.C, www/htdocs/index.html: fork/pipe error now
[old always-pipe-error fixed]
2002-12-23 paf
* src/types/pa_vcookie.C: $cookie:field[put value] fixed [were
ignoring parameters & were storing only string with default
expires
* src/main/pa_charset.C: From: "Victor Fedoseev"
To: "Alexandr Petrosian (PAF)" Sent: Monday,
December 23, 2002 4:22 AM Subject: bug â
Charset::transcode_buf2xchar
2002-12-20 paf
* src/targets/cgi/parser3.C: removed last \n appending in non-win32
non-cgi [script] runs
2002-12-19 paf
* INSTALL: --without-iconv recommended [it crashes on some systems
[tested on elik]] moreover, it's not needed there [parser
registers charsets itself]
* INSTALL: --without-iconv recommended [it crashes on some systems
[tested on elik]]
* operators.txt, src/include/pa_globals.h,
src/include/pa_request.h, src/main/pa_globals.C,
src/main/pa_request.C, www/htdocs/index.html: $response:download
* src/classes/mail.C: 'to' check bugfix [now checked only on ms
compiler [win32]].
2002-12-18 paf
* src/classes/xdoc.C: doc->URL on xdoc.load set correctly now
2002-12-17 paf
* src/targets/cgi/parser3.C: merged die&iis changes
* src/targets/cgi/parser3.C: 1. on win32 in die: abort() reverted
to exit(1) 2. more flexible iilegal call check
2002-12-16 paf
* ltmain.sh: some automakes silly insist on having this handy
* src/main/untaint.C: filespec russian small 'r' changed to latin
'p' bug fix
2002-12-15 paf
* src/main/untaint.C: filespec russian small 'r' changed to latin
'p'
* configure.in, src/include/pa_config_auto.h.in,
src/main/compile.C, src/main/pa_common.C: merged small changes
from branch 6 to HEAD
* src/main/compile.C: removed warning
* src/main/pa_common.C: ftruncate having checked
* configure.in, src/include/pa_version.h: new version
2002-12-14 paf
* www/htdocs/index.html: exception type fixed
* src/classes/table.C: removed unnecessary code
* src/sql/pa_sql_driver.h: exception type fixed
2002-12-09 paf
* src/types/pa_vvoid.h, www/htdocs/index.html: $void.store[now]
error
* src/targets/cgi/parser3.C: ::die now tries to write core dump
* src/targets/: cgi/parser3.C, isapi/parser3isapi.C: ::die now
tries to write core dump
* src/targets/cgi/parser3.C: ::die now tries to write core dump
* src/: classes/hash.C, classes/string.C, classes/table.C,
classes/void.C, main/pa_sql_driver_manager.C,
sql/pa_sql_driver.h: changed exception handling mech in sql
handlers #2
* src/: main/pa_sql_driver_manager.C, sql/pa_sql_driver.h: changed
exception handling mech in sql handlers
* src/sql/pa_sql_driver.h: changed exception handling mech in sql
handlers
* src/: classes/hash.C, classes/string.C, classes/table.C,
classes/void.C, main/pa_sql_driver_manager.C,
sql/pa_sql_driver.h: changed exception handling mech in sql
handlers
* configure.in: removed configure.in:AC_LIBTOOL, it caused automake
to write makefile which used libtool to install things, which is
not needed
2002-12-06 paf
* operators.txt, src/main/compile.tab.C, src/types/pa_vhash.h:
$hash.fields -- pseudo field to make 'hash' more like 'table'
2002-12-05 paf
* src/classes/mail.C, src/types/pa_vmail.C, src/types/pa_vmail.h,
www/htdocs/index.html: smtp cc/bcc OK now
* src/main/untaint.C, www/htdocs/index.html: mail header closed
properly
* src/main/pa_common.C, src/main/untaint.C, src/types/pa_vmail.C,
www/htdocs/index.html: mail header ',' allowed. still bugs in
smtp [only one receiptient works, cc, bcc ignored now, and MAILED
;)]
[strncpy killed, memnchr used]
* src/main/pa_table.C: table-copy now current=0
* src/main/pa_array.C, src/main/pa_table.C, www/htdocs/index.html:
wow! found/fixed bug in lowlevel proc
* src/targets/cgi/parser3.C: more checks on
http://domain/parser.cgi start [maybe some getenv returns "",
checked that now
* src/targets/cgi/parser3.C: more checks on
http://domain/parser.cgi start [maybe some getenv returns "",
checked that now
* src/targets/cgi/parser3.C, www/htdocs/index.html: error logging
made unbuffered [so that out-of-mem errors reached log]
* src/classes/mail.C, src/targets/cgi/parser3.C,
src/types/pa_vmail.C, www/htdocs/index.html: mail:send
MIME-Version default
* src/main/main.dsp: pa_version included into main.dsp
* www/htdocs/index.html: smtp line ends fixed. now \r\n [not \r].
some smtp servers [win32] leave \n intact, and some clients [bat]
fail to show letter correctly
2002-12-04 paf
* src/types/pa_vform.C: $form:field string value cut by premature 0
* parser3.dsw, src/main/compile.tab.C, src/main/main.dsp,
www/htdocs/.htaccess, www/htdocs/index.html: lib/libltdl ->
lib/ltdl Win32 changes. s
* src/classes/classes.awk: more strict *.C$
* gnu.dsp: restored
* configure.in, gnu.dsp, src/lib/Makefile.am,
src/lib/ltdl/Makefile.am, src/lib/ltdl/README,
src/lib/ltdl/acinclude.m4, src/lib/ltdl/config.guess,
src/lib/ltdl/config.h, src/lib/ltdl/config.sub,
src/lib/ltdl/config_auto.h.in, src/lib/ltdl/config_fixed.h,
src/lib/ltdl/configure, src/lib/ltdl/configure.in,
src/lib/ltdl/install-sh, src/lib/ltdl/libltdl.dsp,
src/lib/ltdl/ltdl.c, src/lib/ltdl/ltdl.h: src/lib/ltdl/Makefile
now created with /configure, not ltdl/configure, so it does have
no problems with automake. ltdl/configure
AC_OUTPUT(Makefile<>attachment<<
* src/classes/image.C, www/htdocs/index.html: ^image.font << bad
font file-size now properly reported
2002-11-26 paf
* src/main/pa_request.C: fixed lang in reponse header
* src/main/pa_common.C, www/htdocs/.htaccess: utf8 prefix ignored
@read text
* operators.txt, src/main/pa_common.C, www/htdocs/index.html:
http:// response status!=200 made exception: http.status with
source=bad status#
2002-11-25 paf
* configure.in, src/classes/image.C,
src/include/pa_config_auto.h.in,
src/include/pa_config_includes.h, src/main/Makefile.am,
src/main/pa_common.C, src/main/pa_globals.C: http:// and image
const void related probs fixed
* operators.txt, src/main/pa_common.C, www/htdocs/index.html: http
fields now UPPERCASE
$file[^file::load[http://there]] $file.SERVER
* src/classes/file.C, src/classes/image.C, src/classes/xdoc.C,
src/include/pa_common.h, src/main/pa_common.C,
src/main/pa_request.C, www/htdocs/index.html: checked http
options [invalid onces now reported] made default user-agent: paf
* operators.txt, src/classes/file.C, src/classes/table.C,
src/classes/xdoc.C, src/include/pa_common.h,
src/include/pa_globals.h, src/main/pa_common.C,
src/main/pa_globals.C, src/main/pa_request.C,
src/types/pa_vfile.C, src/types/pa_vfile.h,
www/htdocs/index.html: table/xdoc/file::load now understand
http:// prefix and additional params, sample:
$rates[^xdoc::load[http://www.cbr.ru/scripts/XML_daily.asp?date_req=02/03/2002;
$.USER-AGENT[parser3] ]]
2002-11-22 paf
* src/classes/image.C, src/include/pa_globals.h,
src/main/execute.C, src/main/pa_globals.C, src/types/pa_vimage.C,
src/types/pa_vimage.h, www/htdocs/.htaccess,
www/htdocs/index.html, operators.txt: $image.exif support
$image.exif.DateTime & co
2002-11-21 paf
* src/main/: pa_exec.C, untaint.C: cstr(UL_UNSPECIFIED) [not
_PASS_APPENDED)
* src/classes/image.C: jpeg size measure fixed: were badly skipping
EXIF information [were big block and it's size were considered
negative :(]
* operators.txt, src/classes/image.C, src/include/pa_common.h,
src/main/pa_common.C, src/types/pa_vmail.C,
www/htdocs/index.html: image.measure internals rewritten. no
there's reader.seek, and all's ready for EXIF extraction [now we
fail to measure files with EXIF info]
* src/main/pa_common.C: O_TRUNCATE killed, ftruncate used instead:
O_TRUNC truncates even exclusevely write-locked file [thanks to
Igor Milyakov for discovering]
2002-11-20 paf
* src/targets/cgi/parser3.C: logging @signal += query_string
* configure.in, src/include/pa_config_auto.h.in,
src/include/pa_config_includes.h, src/targets/cgi/parser3.C:
comment
* src/targets/cgi/parser3.C: SIGNALS overriden @ main top
* src/: include/pa_request.h, main/execute.C, main/pa_request.C,
targets/cgi/parser3.C: SIGUSR1 >> writes to error_log uri of
currently processed document SIGPIPE >> interrupts request
processing [exception = DB rollback]
* src/main/pa_exec.C: comment
* src/main/pa_exec.C: pa_exec: data written only if size>0
* operators.txt, src/classes/file.C: ^file::exec/cgi[file;$.stdin[]
<< disable HTTP-POST repassing
* src/: include/pa_config_fixed.h, main/pa_common.C,
main/pa_exec.C, targets/cgi/parser3.C: ^file:exec/cgi [pa_exec]
pipe read errors now checked
2002-11-19 paf
* src/targets/cgi/parser3.C: removed #ifdef WIN32 around check of
CGI: Illegal call
2002-11-01 paf
* src/main/execute.C: comment
2002-10-31 paf
* src/main/execute.C: found out why, checked that for now. todo:
find out a way for that user could do that
* www/htdocs/: base.p, derived.p, index.html: this example creates
base object, which is wrong, todo: find out why
* src/types/pa_vstateless_object.h: object put replaces static
parent if any
* src/types/pa_vobject.C: object put replaces static parent if any
* src/classes/form.C, src/classes/mail.C, src/classes/op.C,
src/classes/xnode.h, src/main/compile.tab.C, src/main/execute.C,
src/main/pa_request.C, src/types/pa_value.h,
src/types/pa_vclass.C, src/types/pa_vclass.h,
src/types/pa_vcode_frame.h, src/types/pa_vcookie.C,
src/types/pa_vcookie.h, src/types/pa_vdate.h,
src/types/pa_venv.h, src/types/pa_vfile.h, src/types/pa_vform.C,
src/types/pa_vform.h, src/types/pa_vhash.h,
src/types/pa_vimage.h, src/types/pa_vmail.C,
src/types/pa_vmail.h, src/types/pa_vmath.h,
src/types/pa_vmethod_frame.h, src/types/pa_vobject.C,
src/types/pa_vobject.h, src/types/pa_vrequest.C,
src/types/pa_vrequest.h, src/types/pa_vresponse.C,
src/types/pa_vresponse.h, src/types/pa_vstateless_class.C,
src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, src/types/pa_vstatus.C,
src/types/pa_vstatus.h, src/types/pa_vstring.h,
src/types/pa_vtable.C, src/types/pa_vtable.h,
src/types/pa_vvoid.h, src/types/pa_vxdoc.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.C, src/types/pa_vxnode.h,
src/types/pa_wwrapper.h, www/htdocs/base.p, www/htdocs/derived.p,
www/htdocs/index.html: static fix merged
* src/: main/compile.tab.C, types/pa_vobject.C: killed
$virtual_fields in dynamic, but one can reach derived
static[class] variable from base
* src/: classes/op.C, types/pa_value.h, types/pa_vmethod_frame.h,
types/pa_vobject.C, types/pa_vobject.h,
types/pa_vstateless_class.C, types/pa_vstateless_class.h: fixed
statics, left $virtual_fields in dynamic
* src/types/: pa_vobject.C, pa_vstateless_class.C: realized that
one can't remember derivates in base class: there's so many of
them. also there can be no virtual method calls in static
classes
* src/classes/form.C, src/classes/mail.C, src/classes/op.C,
src/classes/xnode.h, src/main/execute.C, src/main/pa_request.C,
src/types/pa_value.h, src/types/pa_vclass.C,
src/types/pa_vclass.h, src/types/pa_vcode_frame.h,
src/types/pa_vcookie.C, src/types/pa_vcookie.h,
src/types/pa_vdate.h, src/types/pa_venv.h, src/types/pa_vfile.h,
src/types/pa_vform.C, src/types/pa_vform.h, src/types/pa_vhash.h,
src/types/pa_vimage.h, src/types/pa_vmail.C,
src/types/pa_vmail.h, src/types/pa_vmath.h,
src/types/pa_vmethod_frame.h, src/types/pa_vobject.C,
src/types/pa_vobject.h, src/types/pa_vrequest.C,
src/types/pa_vrequest.h, src/types/pa_vresponse.C,
src/types/pa_vresponse.h, src/types/pa_vstateless_class.C,
src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, src/types/pa_vstatus.C,
src/types/pa_vstatus.h, src/types/pa_vstring.h,
src/types/pa_vtable.C, src/types/pa_vtable.h,
src/types/pa_vvoid.h, src/types/pa_vxdoc.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.C, src/types/pa_vxnode.h,
src/types/pa_wwrapper.h, www/htdocs/base.p, www/htdocs/derived.p,
www/htdocs/index.html: static call $self fixed
* src/main/execute.C: comment
* src/classes/op.C, src/types/pa_value.h, src/types/pa_vobject.h,
www/htdocs/base.p, www/htdocs/derived.p, www/htdocs/index.html,
www/htdocs/operators.p, www/htdocs/some.p:
^process[$caller.self]{...} now compiles to last derived object
part of that 'self'
2002-10-30 paf
* www/htdocs/: derived.p, some.p: include method overriding tested
OK
2002-10-29 paf
* src/targets/isapi/parser3isapi.C: comment on 404 bad status
re-passing [iis to blame]
* src/classes/string.C: changed string.save to pass current sql
connection to cstr thus one can ^connect[some server]{
$s[insert into table x (x) values (^taint[sql]{value})]
^s.save[some.sql] } and he'd get in some.sql file code with
properly escaped. [tried in mssql->mysql export->import of
binary data]
2002-10-28 paf
* www/htdocs/: index.html: bad email handling test
2002-10-25 paf
* src/types/pa_vresponse.C: case insensitive response user fields
get/put
* src/: include/pa_hash.h, main/pa_hash.C, main/pa_request.C,
types/pa_vresponse.C: saving for maybe-future
2002-10-23 paf
* operators.txt, src/classes/table.C: ^table.hash{code}...
^table.hash(expr)...
* src/types/pa_vmail.C, www/htdocs/index.html: email whitespace
trimBoth-ed
2002-10-22 paf
* src/types/: pa_vform.C, pa_vform.h: removed needless
VForm::Append...(...Value)
* src/main/execute.C: $.name outside of $name[...] checked
* src/main/: compile.tab.C, compile.y: lexer changed to fix
^call[]^#HH bug [that situation yelded no EON, which whas wrong]
2002-10-21 paf
* operators.txt, src/types/pa_vform.C, src/types/pa_vform.h:
$form:qtail $form:imap.x/y
* operators.txt, src/types/pa_vform.C: $form:nameless =
"?value&...", "...&value&...", "...&value"
* operators.txt, src/types/pa_vform.C: $form:image-map
* operators.txt, src/classes/file.C, www/htdocs/index.html:
/some/page.html: ^file:fullpath[a.gif] => /some/a.gif
2002-10-17 paf
* src/main/: compile.tab.C, compile.y: operators precedence changed
a little: logical not and bitwise negation precedence made
highest, << and >> bitshits precedence made equal [were << higher
than >>]
* src/classes/op.C: exception handling fixed [were bad with
contexts]
2002-10-16 paf
* www/htdocs/index.html: bad compile to system class test
* src/classes/op.C, src/include/pa_request.h, src/main/execute.C,
src/main/pa_request.C, www/htdocs/index.html,
www/htdocs/derived.p: Request::self considered equal to
VMethodFrame::self, and removed, Request::get_self() mapped to
VMethodFrame.self()
* src/: classes/op.C, main/pa_request.C: VMainClass now has name =
$hash in open field now gives old good error meesage
2002-10-15 paf
* src/types/pa_vjunction.h, www/htdocs/index.html: ^if(def
$junction){was true}{now false} use ^if($junction is
junction){was and now true}
* src/classes/xdoc.C, src/classes/xnode.C,
src/include/pa_charset.h, src/include/pa_pool.h,
src/main/pa_charset.C, src/main/pa_pool.C, src/types/pa_vxnode.C,
www/htdocs/index.html: xml->parser strings now have origin, which
points to place where value left xml library and came to parser:
place of dom field extraction/call
* src/classes/op.C, src/include/pa_opcode.h,
src/include/pa_request.h, src/main/compile.tab.C,
src/main/compile.y, src/main/execute.C,
src/types/pa_vmethod_frame.h, www/htdocs/derived.p: removed last
pieces of old code allowing $junction.xxx at compile time
* ChangeLog, src/classes/op.C, src/main/compile.tab.C,
src/main/compile.y, src/types/pa_vmethod_frame.h: process[self]
objects also considered [were only classes]
* ChangeLog, src/classes/op.C, src/include/pa_request.h,
src/types/pa_vmethod_frame.h, www/htdocs/derived.p,
www/htdocs/index.html: ^process[CLASS]{body} now executed with
CLASS self. [ (request&method_frame).self temporarily changed
]
* src/classes/hash.C, src/classes/op.C, www/htdocs/index.html,
www/htdocs/operators.p: method_frame now always changed, with no
exception to native calls. for&foreach changed to use
method_frame.caller for their var's name context
* src/main/execute.C, src/targets/cgi/parser3.C,
src/types/pa_vstateless_class.C, src/types/pa_vstateless_class.h,
www/htdocs/operators.p: compiling to system classes disabled
* www/htdocs/: derived.p, index.html: test of ^process from
operator called from user class
* operators.txt, src/classes/op.C, www/htdocs/operators.p:
^process[$caller.CLASS]{code-string} added
* operators.txt, src/classes/op.C, src/main/compile.tab.C,
src/main/compile.y, src/main/execute.C, src/main/pa_request.C,
src/types/Makefile.am, src/types/pa_vjunction.C,
src/types/pa_vjunction.h, src/types/pa_vmethod_frame.h,
src/types/types.dsp, www/htdocs/operators.p: removed
$junction.get $junction.set[] introducing $caller
* src/types/pa_value.h: removed outdated comments. doxygen would
find them lower by inheritance tree
* src/types/pa_vjunction.C: ident
2002-10-14 paf
* src/classes/op.C: process compiles to code's class class
* src/classes/form.C, src/classes/mail.C, src/classes/op.C,
src/include/pa_request.h, src/main/compile.C,
src/main/compile.tab.C, src/main/compile.y, src/main/execute.C,
src/main/pa_request.C, src/types/pa_vstateless_class.h,
www/htdocs/index.html: operators now main-class-methods
* src/classes/op.C, src/include/pa_request.h,
www/htdocs/index.html, www/htdocs/operators.p: ^try{^call{}} now
has better stack trace [has "call" & co there]
* src/: include/pa_request.h, main/execute.C, main/pa_request.C:
operators @auto now executed in MAIN context
* src/main/execute.C: operator execution context now = MAIN, not
closest stack frame
@touchit[] $i[after]
----t.html $i[before] << local ^touchit[] $i << now 'before',
were 'after'
---t.html $i[before] << notlocal [main] ^touchit[] $i << now
'after'
* src/main/execute.C: comment
* src/types/pa_vclass.C, src/types/pa_vobject.h,
src/types/pa_vstateless_class.C, src/types/pa_vstateless_class.h,
www/htdocs/index.html, www/htdocs/operators.p: $form:CLASS
resurrected [wes killed in action]
* src/types/pa_vxnode.C: misreplace fixed
* configure, configure.in, src/include/pa_config_auto.h.in,
src/types/pa_vstatus.C, operators.txt, www/htdocs/index.html:
$status:rusage.tv_secs/usecs introduced
2002-10-09 paf
* src/classes/double.C, src/classes/int.C, src/classes/string.C,
www/htdocs/derived.p, www/htdocs/index.html: ^string.int[] now
failes on empty string [or uses (default)]
2002-10-08 paf
* src/main/untaint.C: mail header quoted printable changed after
RFC reread
* operators.txt: plan on ^if(method
* src/types/pa_vxnode.C: misreplace
2002-09-24 paf
* src/targets/cgi/Makefile.am: LIBS were bad name in .am
* src/types/pa_vmail.C: HAVE_TIMEZONE & co now checked and
mailreceive would compile on freebsd now
* src/include/pa_config_fixed.h, src/types/pa_vmail.C, acconfig.h,
configure, configure.in, src/include/pa_config_auto.h.in,
src/targets/cgi/Makefile.am: HAVE_TIMEZONE & co now checked and
mailreceive would compile on freebsd now
* src/classes/file.C, src/main/untaint.C, www/htdocs/index.html: 1.
file spec language changed: now there are only few chars are
untainted: * ? ' " < > | and, on unix, : \ ~ [russian letters and
SPACES now enabled, one should use ^untaint[uri]{...} now]
2. $list[^file:list[dir]] now returns simply tainted names in
$list.name, not tainted as filespec
@russianindex[] #dir with files with russian-lang names
$where[dir]
$dir[^file:list[$where;\.txt^$]] ^dir.menu{ $dir.name
}
2002-09-23 paf
* src/types/pa_vdouble.h: double->int round added
* src/classes/date.C: date bug fix, now
round(floatDays*secondsPerDay)
* src/classes/date.C: date bug fix, now
round(floatDays*secondsPerDay)
2002-09-20 paf
* src/main/execute.C, www/htdocs/index.html: code junction calls
disabled [before: code was compiled in such a way, that there
were no code-junctions in OP_CALL]
this now error: @badjunctioncall[] ^badjunctioncallinside{code}
@badjunctioncallinside[code] ^code[]
* src/main/compile.tab.C, src/main/compile.y,
www/htdocs/index.html: changed grammer on junction expanding to
include ^junction.method
* src/main/pa_common.C: -d "DIR/" now true
* src/classes/xdoc.C, www/htdocs/index.html: xdoc::create[name] now
sets $request:charset as internal xdoc encoding, and after
decoding attributes set by dom functions now encoded OK, not as
digital entities
* src/classes/xdoc.C: empty transform result, being taken as file
now returns empty file, not raises stupid error about "stat-ed
file"
* src/types/pa_vhash.h, www/htdocs/operators.p: hash.foreach
modification of existing keys allowed
* src/types/types.dsp: introducing $junction.get/put(1) one can
write iterators now:
^user-foreach[key;value]{$key=$value
}
@user-foreach[key;value;code] ^for[i](1;10){ $code.key($i)
$code.value($i*2) $code }
* src/main/compile_tools.h: mistype
* src/targets/cgi/Makefile.am: binaries now depend on makefiles,
thus taking linking options configure changes into account [were:
ignoring]
* src/types/: pa_vjunction.C, Makefile.am: introducing
$junction.get/put(1) one can write iterators now:
^user-foreach[key;value]{$key=$value
}
@user-foreach[key;value;code] ^for[i](1;10){ $code.key($i)
$code.value($i*2) $code }
* src/include/pa_opcode.h, src/include/pa_request.h,
src/main/compile.tab.C, src/main/compile.y, src/main/execute.C,
src/main/main.dsp, src/targets/cgi/parser3.dsp,
src/types/pa_vjunction.h, www/htdocs/.htaccess,
www/htdocs/index.html: introducing $junction.get/put(1) one can
write iterators now:
^user-foreach[key;value]{$key=$value
}
@user-foreach[key;value;code] ^for[i](1;10){ $code.key($i)
$code.value($i*2) $code }
2002-09-19 paf
* Makefile.am: new: make commit
* aclocal.m4: forced to be older
2002-09-18 paf
* parser3.dsw, src/include/pa_opcode.h, src/main/compile.tab.C,
src/main/compile.y, src/main/execute.C, www/htdocs/index.html: <<
>> int shifts
* src/: include/pa_common.h, include/pa_request.h,
main/pa_common.C, main/pa_request.C: auto.p exists but unreadable
- now this - fatal error
* src/classes/file.C, www/htdocs/index.html,
www/htdocs/mailreceive.eml: ^file::exec/cgi $.stdin[can be file
now] so that one can pass binary data there
* src/classes/date.C, src/classes/double.C, src/classes/file.C,
src/classes/hash.C, src/classes/image.C, src/classes/int.C,
src/classes/mail.C, src/classes/op.C, src/classes/response.C,
src/classes/string.C, src/classes/table.C, src/classes/void.C,
src/classes/xdoc.C, src/classes/xnode.C,
src/include/pa_request.h, www/htdocs/index.html: pa_request
contexts made privated, plus get_{self/method_frame} to read.
Request_context_saver used in ^try to save flang too. [were not
saved]
* src/types/pa_vresponse.C: header value chains joined before
output, this should help $.subject[$var $var] from being
converted to subject: ?koi8-r?Q?...?= ?koi8-r?Q?...?=
2002-09-17 paf
* src/: main/execute.C, types/pa_value.h, types/pa_vmethod_frame.h:
removed changes, operators executed with calling self. lots of
code with ^include code relies on defined/defining self variables
$a[1] ^include[print_a.p] print_a.p: $a
^include[set_a.p] a=$a set_a.p: $a[1]
* src/classes/op.C, src/main/execute.C, src/main/pa_request.C,
src/types/pa_value.C, src/types/pa_value.h,
src/types/pa_vmethod_frame.h, src/types/pa_vstateless_class.h,
www/htdocs/operators.p: operators now executed with MAIN self.
it's for ^include sake, too strong a change
* src/classes/op.C, www/htdocs/index.html, www/htdocs/operators.p:
made place for ^process to compile it's code to in case of no
self
* src/main/execute.C, www/htdocs/index.html: found ancient param to
Junction, removed. allowed passing self to native_code_operators
[for ^process to work, she needs self]
* src/: main/execute.C, types/pa_value.C, types/pa_value.h,
types/pa_vstateless_class.h: found ancient param to Junction,
removed. allowed passing self to native_code_operators [for
^process to work, she needs self]
* src/main/execute.C, src/main/pa_request.C, src/types/pa_value.C,
src/types/pa_value.h, src/types/pa_vmethod_frame.h,
src/types/pa_vstateless_class.h, www/htdocs/index.html,
www/htdocs/operators.p: allowed Request.self to be 0, checked
that in VMethodFrame get/put and $self.
* src/classes/table.C, src/classes/xdoc.C, www/htdocs/index.html:
table::sql options table::create copy options options checked,
wrong option now fatal error
* src/main/pa_string.C, www/htdocs/index.html: string.replace fixed
[were missing words on pieces boundaries]
* bin/auto.p.dist.in: strange \n
* configure, configure.in: .so now detected [can be .sl on hpux,
.dll on cygwin, .so in other cases)
* configure, configure.in, bin/auto.p.dist.in: .so now detected
[can be .sl on hpux, .dll on cygwin, .so in other cases)
* operators.txt, src/classes/hash.C, src/classes/table.C,
src/include/pa_globals.h, src/main/pa_globals.C,
www/htdocs/index.html: table.sql hash::sql flag to allow
duplicate keys [$.distinct(1/0)] first record taken [were last]
* src/classes/hash.C, src/classes/table.C,
src/include/pa_sql_connection.h, www/htdocs/index.html: table.sql
hash::sql duplicate keys now errors
* src/classes/hash.C: foreach delims bug fixed [were ,2,3]
* src/classes/op.C, src/classes/table.C, www/htdocs/index.html:
menu/for delims bug fixed [were ,2,3]
2002-09-16 paf
* src/classes/file.C, www/htdocs/index.html: file::cgi line ends
can be both unix & dos. and they can be unix [\n\n] on win when
'use CGI' used, it causes stdout to be binary. now detected
closest header break.
* src/: main/untaint.C, types/pa_vmail.C: mail:send closing ?= now
closed right
2002-09-13 paf
* operators.txt, src/main/compile.tab.C, src/main/compile.y,
src/main/compile_tools.h, www/htdocs/index.html: (expression
#comment)
(multiline expression #comment line2 #comment )
(expression #comment with (brackets) comment) << OK
* operators.txt, src/main/compile.tab.C, src/main/compile.y,
www/htdocs/index.html: !| bitwise !|| numerical xor now
[preparing for expression #comments]
* src/main/compile.tab.C, src/main/compile.y,
www/htdocs/index.html: @method[$name] now parse error
* src/: include/pa_config_fixed.h, main/pa_socks.C: HAVE_WINSOCK_H
cheched in pa_socks.C
* configure, configure.in, src/include/pa_config_auto.h.in:
HAVE_WINSOCK_H created in configure.in
* src/main/compile.tab.C, src/main/compile.y,
src/types/pa_vresponse.C, www/htdocs/index.html: cookie date now
clean [were mistakenly tainted & that worked bad with opera --
'happily' that worked OK with msie]
2002-09-12 paf
* src/types/: pa_vclass.C, pa_vmail.C, pa_vobject.C: VObject &
VClass get_element now first looks to fields, next to methods &
co todo: the rest reason: more speed
* src/main/untaint.C: quoted printable encoding stops before
\s*<...>$
* src/main/untaint.C, www/htdocs/index.html: quoted printable ' '
now =20 and encoding stops before <...>$
2002-09-11 paf
* src/main/pa_charset.C, src/targets/cgi/parser3.dsp,
www/htdocs/index.html: while fixing (
xmlCharEncodingInput/OutputFunc callbacks returned bad value )
forgot to check users of those funcs. not all were using that
return value convention
* src/lib/pcre/ibm-1254.ucm, etc/parser3.charsets/windows-1254.cfg:
windows-1254 added
2002-09-10 paf
* src/: classes/op.C, main/execute.C, types/pa_wcontext.h:
VCodeFrame parent param were specified badly
* src/: main/execute.C, types/pa_value.h, types/pa_wwrapper.h:
WWrapper which used in constructing objects(second param to sql
method) ^...sql{}[$.default{code}] now has parent, wich helps
code in hash to survivi
* src/: include/pa_request.h, main/execute.C: removed redundant
param to execute [stack said 'thanks']
* src/: classes/op.C, main/execute.C, types/pa_value.C,
types/pa_value.h, types/pa_vcode_frame.h,
types/pa_vmethod_frame.h, types/pa_wcontext.C,
types/pa_wcontext.h, types/pa_wwrapper.h: moved junction kill
responsibility to wcontext
* src/classes/file.C: decided not to log exec's with stderr, that
could be warnings, and it's up to scritper to log/show them
* src/classes/double.C, src/main/execute.C, www/htdocs/index.html:
double:sql badly called write_assign_lang, not write_no_lang,
thus doing unnecessary double/string converstion, which were
loosing time&precesion
* src/main/pa_charset.C, src/types/pa_vmail.C,
www/htdocs/index.html: xmlCharEncodingInput/OutputFunc callbacks
returned bad value in case of unfinished in buffer processing,
causing accidental transcode stop [in case that source enc !=
utf-8 & there is incomplete utf-8 sequence at the end of
16000block iside of libxml lib] tfm readed & code updated
2002-09-04 paf
* configure: makes with sjlj
* INSTALL, src/include/pa_config_fixed.h,
src/include/pa_sql_connection.h,
src/main/pa_sql_driver_manager.C, www/htdocs/index.html:
-with-sjlj-exceptions define checked. on win32 it made default
* src/include/pa_config_auto.h.in: sjlj define
* configure, configure.in: introducing --with-sjlj-exceptions [hpux
can not work with longjump/throw pair, and one must switch that
on there. todo: detect that automatically]
* src/types/pa_vxnode.C, www/htdocs/index.html: removed too strong
checks of xnode.elements. now, for instance, if element does not
have any attributes, $xnode.attributes is void, not error
2002-09-02 paf
* operators.txt, src/main/execute.C, src/targets/cgi/parser3.dsp,
www/htdocs/index.html: removed double_result, didn't help
* src/main/execute.C: double_result made to move that var away from
hungry g++ optimizer (-O2), before: it were optimized and
comparison operators worked badly
* src/types/pa_vdate.h: removed debug
* Makefile.am, src/types/pa_vdate.h: happy now only install-exec
* src/main/execute.C: fixed numeric < & co so that thay now use
c=a-b, c OPERATOR 0. this works fine on solaris/intel for still
unknown reason.
2002-08-29 paf
* parser3.dsw, src/classes/classes.dsp, src/classes/hash.C,
src/classes/op.C, src/classes/string.C, src/include/pa_request.h,
src/lib/md5/md5.dsp, src/main/execute.C, src/main/main.dsp,
src/main/pa_request.C, src/targets/cgi/parser3.dsp,
src/types/pa_value.C, src/types/pa_value.h, src/types/pa_vmail.C,
src/types/pa_vmethod_frame.h, src/types/pa_wcontext.h,
src/types/types.dsp, www/htdocs/index.html: junction_cleaner
moved to auto VMethodFrame [called less frequent, allowed to
remove ugly Junction.change_context-s from many places, switch,
mail:send..html{}, ..] request.root renamed to method_frame [more
easyreading] ancient {...PUSH/POPs...} changed to stack vars
[speed up]
2002-08-28 paf
* src/types/pa_vcookie.C, www/htdocs/index.html: $cookie:name[&]
$cookie:name << now tainted
* src/types/pa_vcookie.C, www/htdocs/index.html: fixed cookie
delete when $cookie:name[$.value[]]
* operators.txt, src/classes/string.C, www/htdocs/derived.p,
www/htdocs/index.html: ^string.split[delim[;options]]
2002-08-27 paf
* etc/parser3.charsets/Makefile.am: merged from 3.0.0005
* operators.txt, src/main/compile.tab.C, src/main/compile.y,
www/htdocs/index.html, www/htdocs/mailreceive.eml: # now
delimiter
* INSTALL: recommended latest gmime 1.0.5
2002-08-26 paf
* configure, configure.in: apache13/hook added to make dist.
2002-08-23 paf
* src/include/pa_common.h, src/main/pa_common.C,
src/targets/cgi/parser3.C, src/targets/isapi/parser3isapi.C,
www/htdocs/index.html: when auto.p beside binary [cgi, isapi] not
accessible [due to bad rights or whatever] it's error now
2002-08-21 paf
* www/htdocs/derived.p: "BASE:" "BASE::" syntax allowed, means
"base class". compiled as if here they named base class
* Makefile.am: can use: make happy equals to make update install
* src/main/compile.tab.C, src/main/compile.y,
src/main/compile_tools.C, src/main/compile_tools.h,
www/htdocs/derived.p: "BASE:" "BASE::" syntax allowed, means
"base class". compiled as if here they named base class
* src/main/pa_string.C, www/htdocs/index.html: fixed bad language
bug, [were wrong string cloning constructor]
* src/main/execute.C, src/types/pa_vobject.h, www/htdocs/base.p,
www/htdocs/derived.p, www/htdocs/index.html: fixed virtual calls
* bin/auto.p.dist.in, src/targets/cgi/parser3.C,
src/types/pa_vfile.C, src/types/pa_vmail.C,
www/htdocs/mailreceive.eml, www/htdocs/mailreceive.html:
$mail.received.file.value.content-type fixed
2002-08-20 paf
* src/classes/file.C, www/htdocs/index.html: fixed language of
file:file result
* operators.txt, src/classes/void.C, www/htdocs/index.html:
^void.pos[...] = -1 merged from 3.0.0005
* operators.txt, src/classes/void.C: ^void.pos[...] = -1
* operators.txt, src/classes/void.C, www/htdocs/index.html:
^void.length[] = 0 merged from 3.0.0005
* src/classes/void.C, operators.txt: ^void.length[] = 0
2002-08-19 paf
* src/classes/xdoc.C: xdoc getElementsByTagName, ...NS overriden,
work now
* src/: classes/xnode.C, types/pa_vxdoc.C: xdoc.fields fixed [were
error in xnode, which were not catched in xdoc]
* src/: include/pa_stylesheet_connection.h, main/pa_globals.C:
prepared: // validate each document after load/create (?)
//xmlDoValidityCheckingDefaultValue = 1;
2002-08-15 paf
* src/classes/classes.h, www/htdocs/index.html: write to static var
caused useless Exception, introduced Methoded::put_element wich
consumes those
* operators.txt, src/include/pa_common.h, src/main/pa_common.C,
src/types/pa_vcookie.C, src/types/pa_vdate.h,
src/types/pa_vresponse.C, src/types/pa_vresponse.h,
www/htdocs/index.html: $response:field[date]
$response:field[$.xxx[date]]
* src/classes/hash.C, src/classes/string.C, src/classes/table.C,
src/classes/void.C, src/include/pa_sql_connection.h,
www/htdocs/index.html: fixed source of ^hash::sql{bad}
* operators.txt: $request:body unprecessed POST request body
* src/types/pa_vrequest.C, www/htdocs/index.html: $request:body
unprecessed POST request
* src/types/pa_value.h, src/types/pa_vdate.h,
src/types/pa_vrequest.C, src/types/pa_vxdoc.C,
src/types/pa_vxnode.C, www/htdocs/index.html: few barks: bark("%s
field not found", 0, &aname)
* operators.txt, src/classes/form.C, src/include/pa_pool.h,
src/include/pa_request.h, src/main/pa_pool.C,
src/types/pa_vform.C, src/types/pa_vform.h, www/htdocs/.htaccess:
planning/preparing_to $request:body r.post_data now const
* src/classes/image.C, src/classes/op.C, src/classes/xdoc.C,
src/classes/xnode.C, src/main/execute.C, src/types/pa_value.h,
src/types/pa_vhash.h, src/types/pa_vobject.C,
src/types/pa_vobject.h, src/types/pa_vtable.h,
www/htdocs/index.html: instead of type() checking everywhere used
Value.as now user descendants can be used in params.
VObject::as_*, is_defined now taken from bases. xtable(table)
^if($xtable) now OK
* src/: main/execute.C, types/pa_value.h, types/pa_vclass.C,
types/pa_vclass.h, types/pa_vobject.C, types/pa_vobject.h,
types/pa_vxdoc.C, types/pa_vxdoc.h: is->as
2002-08-14 paf
* src/classes/xnode.h, src/main/execute.C,
src/targets/cgi/parser3.dsp, src/types/pa_value.h,
src/types/pa_vclass.C, src/types/pa_vclass.h,
src/types/pa_vcode_frame.h, src/types/pa_vcookie.C,
src/types/pa_vcookie.h, src/types/pa_vdate.h,
src/types/pa_venv.h, src/types/pa_vfile.h, src/types/pa_vform.C,
src/types/pa_vform.h, src/types/pa_vhash.h,
src/types/pa_vimage.h, src/types/pa_vmail.C,
src/types/pa_vmail.h, src/types/pa_vmath.h,
src/types/pa_vmethod_frame.h, src/types/pa_vobject.C,
src/types/pa_vobject.h, src/types/pa_vrequest.C,
src/types/pa_vrequest.h, src/types/pa_vresponse.C,
src/types/pa_vresponse.h, src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, src/types/pa_vstatus.C,
src/types/pa_vstatus.h, src/types/pa_vstring.h,
src/types/pa_vtable.C, src/types/pa_vtable.h,
src/types/pa_vvoid.h, src/types/pa_vxdoc.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.C, src/types/pa_vxnode.h,
src/types/pa_wwrapper.h, www/htdocs/index.html: is now works with
VObject & VClass
* src/types/pa_vmail.C: mail: turned off utf8 to source transcoding
* src/targets/cgi/: fixopt.C, fixopt.h, parser3.C, Makefile.am:
removed fixopt stupidity. on stupid linux use cd /document/root
../cgi/parser3 script
* src/targets/cgi/fixopt.C: fixopt now preprocesses command line
params, splitting them by space, excluding argv[0], argv[argc-1]
* src/targets/cgi/: Makefile.am, parser3.C, parser3.dsp, fixopt.C,
fixopt.h: fixopt now preprocesses command line params, splitting
them by space, excluding argv[0], argv[argc-1]
* src/targets/cgi/parser3.C: -f config file
* src/targets/cgi/parser3.C, www/htdocs/auto.p,
www/htdocs/derived.p, www/htdocs/index.html: fixed .log file dir
2002-08-13 paf
* src/types/pa_vobject.C, www/htdocs/derived.p,
www/htdocs/index.html: allow override parent variables, useful
for form descendants [in vobject too, were in vclass]
* src/types/pa_vclass.C, www/htdocs/index.html: allow override
parent variables, useful for form descendants
* src/types/pa_vclass.C, www/htdocs/derived.p: checked:
form[vclass]fields can be overwritten in derived(table)
* src/: classes/form.C, classes/mail.C, classes/op.C,
classes/xnode.h, include/pa_request.h, main/execute.C,
main/pa_request.C, types/pa_value.h, types/pa_vclass.C,
types/pa_vclass.h, types/pa_vcode_frame.h, types/pa_vcookie.C,
types/pa_vcookie.h, types/pa_vdate.h, types/pa_venv.h,
types/pa_vfile.h, types/pa_vform.C, types/pa_vform.h,
types/pa_vhash.h, types/pa_vimage.h, types/pa_vmail.C,
types/pa_vmail.h, types/pa_vmath.h, types/pa_vmethod_frame.h,
types/pa_vobject.C, types/pa_vobject.h, types/pa_vrequest.C,
types/pa_vrequest.h, types/pa_vresponse.C, types/pa_vresponse.h,
types/pa_vstateless_class.h, types/pa_vstateless_object.h,
types/pa_vstatus.C, types/pa_vstatus.h, types/pa_vstring.h,
types/pa_vtable.C, types/pa_vtable.h, types/pa_vvoid.h,
types/pa_vxdoc.C, types/pa_vxdoc.h, types/pa_vxnode.C,
types/pa_vxnode.h, types/pa_wwrapper.h: introduced
Value::get_element(..., bool looking_down) [needed to exclude
endless recoursion]
* src/types/: pa_vclass.C, pa_vobject.C: reorganized modules todo:
fix bug with put endless recoursion todo: check 'as'
* src/types/: Makefile.am, pa_vclass.h, pa_vobject.h, types.dsp:
reorganized modules todo: fix bug with put endless recoursion
todo: check 'as'
* src/types/pa_vobject.h, www/htdocs/derived.p: checked: table
fields can be overwritten in derived(table)
* www/htdocs/derived.p: sample: dont convinient that table fields
can be overridden
* src/types/pa_vobject.h, www/htdocs/derived.p,
www/htdocs/index.html: derived classes can have fields of their
own now
* src/classes/table.C, src/types/pa_vtable.C,
src/types/pa_vtable.h, www/htdocs/derived.p: fixed error message
on using non-created table
* src/classes/form.C, src/classes/hash.C, src/classes/mail.C,
src/classes/op.C, src/classes/xnode.h, src/include/pa_request.h,
src/main/compile.C, src/main/compile.tab.C, src/main/execute.C,
src/main/pa_request.C, src/types/pa_value.h,
src/types/pa_vclass.h, src/types/pa_vcode_frame.h,
src/types/pa_vcookie.C, src/types/pa_vcookie.h,
src/types/pa_vdate.h, src/types/pa_venv.h, src/types/pa_vfile.h,
src/types/pa_vform.C, src/types/pa_vform.h, src/types/pa_vhash.h,
src/types/pa_vimage.C, src/types/pa_vimage.h,
src/types/pa_vmail.C, src/types/pa_vmail.h, src/types/pa_vmath.h,
src/types/pa_vmethod_frame.h, src/types/pa_vobject.h,
src/types/pa_vrequest.C, src/types/pa_vrequest.h,
src/types/pa_vresponse.C, src/types/pa_vresponse.h,
src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, src/types/pa_vstatus.C,
src/types/pa_vstatus.h, src/types/pa_vstring.h,
src/types/pa_vtable.C, src/types/pa_vtable.h,
src/types/pa_vvoid.h, src/types/pa_vxdoc.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.C, src/types/pa_vxnode.h,
src/types/pa_wwrapper.h, www/htdocs/derived.p: VObject.get/out
now looking down/up tree todo: fix error message on
non-constructed parents
2002-08-12 paf
* src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, www/htdocs/derived.p: table
derived OK
* src/main/execute.C: ^base:create[] dynamic call rewritten todo:
thorough testing
* src/: main/compile.tab.C, main/compile.y, main/execute.C,
main/pa_request.C, types/pa_value.h, types/pa_vclass.h,
types/pa_vobject.h, types/pa_vstateless_class.h,
types/pa_vstateless_object.h, types/pa_wcontext.h,
types/pa_valiased.C, types/pa_valiased.h, types/Makefile.am:
^base:create[] dynamic call rewritten todo: thorough testing
* www/htdocs/: base.p, derived.p: not good - along upward-virtual
call self eq child
* src/types/pa_value.h, src/types/pa_vclass.h,
src/types/pa_vobject.h, www/htdocs/base.p, www/htdocs/derived.p:
VObject ctor now instantates base class, remembers it and saves
child in parent VObject.get_class now returns last child =
downward virtual calls OK
* src/main/execute.C, src/types/pa_value.h, src/types/pa_vclass.h,
src/types/pa_vdate.h, src/types/pa_vdouble.h,
src/types/pa_vfile.h, src/types/pa_vimage.h, src/types/pa_vint.h,
src/types/pa_vmethod_frame.h, src/types/pa_vobject.h,
src/types/pa_vresponse.h, src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, src/types/pa_vstring.h,
src/types/pa_vtable.h, src/types/pa_vxdoc.h,
src/types/pa_vxnode.h, src/types/pa_wcontext.h,
src/types/types.dsp, www/htdocs/index.html: killed VAliased
[redundant], moved $CLASS to VObject only [parser class instance]
* bin/auto.p.dist.in: more like in dist on parser.ru
* bin/auto.p.dist.in: fixed sendmail default comment
* src/main/pa_request.C: $response:body[file] content-type check
fixed [were bad when content-type is hash]
2002-08-09 paf
* src/main/execute.C, src/types/pa_value.h, src/types/pa_vclass.h,
src/types/pa_vobject.h, src/types/pa_vxdoc.h,
www/htdocs/index.html: started as()
2002-08-08 paf
* operators.txt, src/classes/date.C, src/include/pa_globals.h,
src/main/pa_globals.C, www/htdocs/index.html: year column in
month calendar [week year]
* src/main/execute.C, www/htdocs/index.html: error reporting on
object writes to MAIN improved [were ruind with fixing
$obj[^if(1){$obj}] ]
* operators.txt, src/types/pa_vdate.h, www/htdocs/index.html:
$date.yearday $date.daylightsaving
* src/classes/mail.C, src/types/pa_vmail.C, www/htdocs/auto.p,
www/htdocs/index.html: in letter texts one can use tainted data
now. only she must specify the language.
^mail:send[ $.from[paf@mail.design.ru]
$.to[paf@mail.design.ru] $.subject[^taint[uri][ìîñêâà]=2]
$.text[^taint[uri][ìîñêâà]=] ]
* www/htdocs/index.html: ^process now prints more precise origin
* src/classes/file.C, src/classes/op.C, src/types/pa_vfile.C,
www/htdocs/index.html: ^process now prints more precise origin
* src/include/pa_string.h, www/htdocs/index.html:
String::first_char now not fails on empty strings ^if(-f '') now
ok and in 3 other places.
* operators.txt, src/include/pa_string.h, src/main/pa_string.C:
String::first_char now not fails on empty strings ^if(-f '') now
ok and in 3 other places.
2002-08-07 paf
* src/classes/string.C, src/main/pa_string.C,
www/htdocs/index.html: ^string.mid(0;bad) fixed
* src/main/pa_string.C, www/htdocs/index.html: ^string.mid(0;bad)
fixed
* src/main/execute.C, src/types/pa_vcode_frame.h,
src/types/pa_vmethod_frame.h, src/types/pa_wcontext.C,
src/types/pa_wcontext.h, src/types/pa_wwrapper.h,
www/htdocs/index.html: vcodeframe were mistakenly not completely
transparent to object writes. $hash[^if(1){$hash}] now works
* operators.txt, src/classes/op.C: ^cache...{...^cache<client only
when text/* or simple onoverridden $response:body
2002-08-01 paf
* src/: classes/classes.C, classes/classes.h, classes/date.C,
classes/double.C, classes/file.C, classes/form.C, classes/hash.C,
classes/image.C, classes/int.C, classes/mail.C, classes/math.C,
classes/op.C, classes/response.C, classes/string.C,
classes/table.C, classes/void.C, classes/xdoc.C, classes/xnode.C,
classes/xnode.h, include/pa_array.h, include/pa_cache_managers.h,
include/pa_charset.h, include/pa_charsets.h, include/pa_common.h,
include/pa_config_fixed.h, include/pa_dictionary.h,
include/pa_dir.h, include/pa_exception.h, include/pa_exec.h,
include/pa_globals.h, include/pa_hash.h, include/pa_opcode.h,
include/pa_pool.h, include/pa_request.h, include/pa_sapi.h,
include/pa_socks.h, include/pa_sql_connection.h,
include/pa_sql_driver_manager.h, include/pa_stack.h,
include/pa_string.h, include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
include/pa_threads.h, include/pa_types.h, include/pa_uue.h,
lib/md5/pa_md5.h, lib/md5/pa_md5c.c,
lib/pcre/pcre_parser_ctype.c, main/compile.C, main/compile.tab.C,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/pa_array.C, main/pa_cache_managers.C, main/pa_charset.C,
main/pa_charsets.C, main/pa_common.C, main/pa_dictionary.C,
main/pa_dir.C, main/pa_exception.C, main/pa_exec.C,
main/pa_globals.C, main/pa_hash.C, main/pa_pool.C,
main/pa_request.C, main/pa_socks.C, main/pa_sql_driver_manager.C,
main/pa_string.C, main/pa_stylesheet_manager.C, main/pa_table.C,
main/pa_uue.C, main/untaint.C, sql/pa_sql_driver.h,
targets/cgi/pa_pool.C, targets/cgi/pa_threads.C,
targets/cgi/parser3.C, targets/cgi/pool_storage.h,
targets/isapi/pa_pool.C, targets/isapi/pa_threads.C,
targets/isapi/parser3isapi.C, targets/isapi/pool_storage.h,
types/pa_valiased.C, types/pa_valiased.h, types/pa_value.C,
types/pa_value.h, types/pa_vbool.h, types/pa_vclass.h,
types/pa_vcode_frame.h, types/pa_vcookie.C, types/pa_vcookie.h,
types/pa_vdate.h, types/pa_vdouble.h, types/pa_venv.h,
types/pa_vfile.C, types/pa_vfile.h, types/pa_vform.C,
types/pa_vform.h, types/pa_vhash.h, types/pa_vimage.C,
types/pa_vimage.h, types/pa_vint.h, types/pa_vjunction.h,
types/pa_vmail.C, types/pa_vmail.h, types/pa_vmath.h,
types/pa_vmethod_frame.h, types/pa_vobject.h,
types/pa_vrequest.C, types/pa_vrequest.h, types/pa_vresponse.C,
types/pa_vresponse.h, types/pa_vstateless_class.C,
types/pa_vstateless_class.h, types/pa_vstateless_object.h,
types/pa_vstatus.C, types/pa_vstatus.h, types/pa_vstring.C,
types/pa_vstring.h, types/pa_vtable.C, types/pa_vtable.h,
types/pa_vvoid.h, types/pa_vxdoc.C, types/pa_vxdoc.h,
types/pa_vxnode.C, types/pa_vxnode.h, types/pa_wcontext.C,
types/pa_wcontext.h, types/pa_wwrapper.h: $Date: 2013/10/29 16:21:27 $
* src/: classes/classes.C, classes/classes.dsp, classes/classes.h,
classes/date.C, classes/double.C, classes/file.C, classes/form.C,
classes/hash.C, classes/image.C, classes/int.C, classes/mail.C,
classes/math.C, classes/op.C, classes/response.C,
classes/string.C, classes/table.C, classes/void.C,
classes/xdoc.C, classes/xnode.C, classes/xnode.h,
include/pa_array.h, include/pa_cache_managers.h,
include/pa_charset.h, include/pa_charsets.h, include/pa_common.h,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_dictionary.h, include/pa_dir.h,
include/pa_exception.h, include/pa_exec.h, include/pa_globals.h,
include/pa_hash.h, include/pa_opcode.h, include/pa_pool.h,
include/pa_pragma_pack_begin.h, include/pa_pragma_pack_end.h,
include/pa_request.h, include/pa_sapi.h, include/pa_socks.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stack.h, include/pa_string.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
include/pa_threads.h, include/pa_types.h, include/pa_uue.h,
lib/md5/pa_md5.h, lib/md5/pa_md5c.c, main/compile.C,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/main.dsp, main/pa_array.C, main/pa_cache_managers.C,
main/pa_charset.C, main/pa_charsets.C, main/pa_common.C,
main/pa_dictionary.C, main/pa_dir.C, main/pa_exception.C,
main/pa_exec.C, main/pa_globals.C, main/pa_hash.C,
main/pa_pool.C, main/pa_request.C, main/pa_socks.C,
main/pa_sql_driver_manager.C, main/pa_string.C,
main/pa_stylesheet_manager.C, main/pa_table.C, main/pa_uue.C,
main/untaint.C, sql/pa_sql_driver.h, targets/cgi/pa_pool.C,
targets/cgi/pa_threads.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, targets/cgi/pool_storage.h,
targets/isapi/pa_pool.C, targets/isapi/pa_threads.C,
targets/isapi/parser3isapi.C, targets/isapi/parser3isapi.dsp,
targets/isapi/pool_storage.h, types/pa_valiased.C,
types/pa_valiased.h, types/pa_value.C, types/pa_value.h,
types/pa_vbool.h, types/pa_vclass.h, types/pa_vcode_frame.h,
types/pa_vcookie.C, types/pa_vcookie.h, types/pa_vdate.h,
types/pa_vdouble.h, types/pa_venv.h, types/pa_vfile.C,
types/pa_vfile.h, types/pa_vform.C, types/pa_vform.h,
types/pa_vhash.h, types/pa_vimage.C, types/pa_vimage.h,
types/pa_vint.h, types/pa_vjunction.h, types/pa_vmail.C,
types/pa_vmail.h, types/pa_vmath.h, types/pa_vmethod_frame.h,
types/pa_vobject.h, types/pa_vrequest.C, types/pa_vrequest.h,
types/pa_vresponse.C, types/pa_vresponse.h,
types/pa_vstateless_class.C, types/pa_vstateless_class.h,
types/pa_vstateless_object.h, types/pa_vstatus.C,
types/pa_vstatus.h, types/pa_vstring.C, types/pa_vstring.h,
types/pa_vtable.C, types/pa_vtable.h, types/pa_vvoid.h,
types/pa_vxdoc.C, types/pa_vxdoc.h, types/pa_vxnode.C,
types/pa_vxnode.h, types/pa_wcontext.C, types/pa_wcontext.h,
types/pa_wwrapper.h, types/types.dsp, Makefile.am,
classes/Makefile.am, main/Makefile.am, targets/cgi/Makefile.am,
types/Makefile.am: ident.C* removed
* operators.txt, src/classes/file.C, src/main/pa_request.C:
file:find[/can/do/this/now.txt]
* src/targets/cgi/parser3.C: usage to stdout now
2002-07-31 paf
* src/types/pa_vmail.C: mail: errors-to: now default "postmaster"
* src/: classes/mail.C, types/pa_vmail.C: mail: errors-to: now
default "postmaster"
* src/: classes/mail.C, types/pa_vmail.C: mail from/to now must be.
-f postmaster now default sendmail key word "postmaster"
replaced to $.from
2002-07-30 paf
* configure, configure.in, src/targets/cgi/pa_config_paths.h.in,
src/targets/cgi/parser3.C: removed pa_config_paths.h
* src/main/pa_charset.C: comment
* src/main/pa_charset.C, www/htdocs/auto.p: UTF-8 to 1byte charset
convert, no char in table, decimal;
* src/main/pa_request.C: comment
* etc/parser3.charsets/windows-1251.cfg: section sign [russian
paragraf]
2002-07-11 paf
* src/main/pa_exec.C: build command line badly added params twice
[and first time without ' ']. double wrong. fixed.
* src/main/pa_exec.C: invalid .exe caused error message with params
wich parser did not provide = reported badly. fixed that.
* src/classes/mail.C: $MAIL[ # xxx ]
now ok
* operators.txt: plan: sql detailed exception
2002-07-01 paf
* src/: classes/form.C, main/pa_request.C: @conf bug fixed
[MForm.configure_admin were called when request.main_class ==0
* src/classes/form.C: 10*0x400*400 bug fix [4M not 10M]
* src/classes/form.C: content_length type fix
2002-06-30 paf
* src/classes/mail.C: merged from 4
* src/classes/mail.C: restored $MAIL
2002-06-28 paf
* configure, configure.in: removed paths.h
* configure, src/include/pa_version.h,
src/targets/cgi/pa_config_paths.h.in: lates changes from 4 build
merged, makes updated
* ChangeLog, configure, operators.txt, src/classes/xdoc.C,
src/include/pa_charset.h, src/include/pa_config_fixed.h,
src/include/pa_pool.h, src/include/pa_version.h,
src/main/pa_charset.C, src/main/pa_pool.C,
src/targets/cgi/parser3.dsp, src/targets/isapi/parser3isapi.dsp,
src/types/pa_vmail.C, www/htdocs/index.html: merged latest
updates to head
2002-06-27 paf
* src/targets/: cgi/parser3.dsp, isapi/parser3isapi.dsp: post-build
not error now
* operators.txt, src/classes/xdoc.C, src/include/pa_charset.h,
src/include/pa_config_fixed.h, src/include/pa_pool.h,
src/main/pa_charset.C, src/main/pa_pool.C, www/htdocs/index.html:
^xdoc::create[[uri]]... base uri for document being created,
imports and other relative file names would be relative to this
uri default uri=path_translated
* src/classes/xdoc.C, www/htdocs/index.html: xsltParseStylesheetDoc
bug workaround
2002-06-26 paf
* configure, configure.in, src/include/pa_version.h:
release_3_0_0004
* src/main/pa_string.C: blank string '', ' ' considered
0 now
* src/targets/cgi/parser3.C: /cgi-bin/parser empty filename checked
2002-06-25 paf
* www/htdocs/index.html, src/main/pa_string.C: emtpy string, or
string of whitespaces considered bad number now
* www/htdocs/index.html: ^xdoc.transform[xdoc <
* configure: parser3.conf renamed to auto.p autoconf changes
* INSTALL, configure.in, operators.txt, bin/Makefile.am,
bin/auto.p.dist.in, src/doc/doxygen.cfg,
src/include/pa_globals.h, src/targets/cgi/parser3.C,
src/targets/isapi/parser3isapi.C, www/htdocs/auto.p,
www/htdocs/index.html: parser3.conf renamed to auto.p
2002-06-18 paf
* configure, configure.in, src/include/pa_version.h: version to
configure.in
* INSTALL: reflected .conf.dist dir change
* Makefile.am, configure, configure.in, bin/Makefile.am,
etc/parser3.charsets/Makefile.am: parser3.conf.dist moved to bin,
.in & *.am updated
* src/classes/file.C: strncasecmp
* src/classes/file.C: strcasecmp
* bin/Makefile.am, etc/Makefile.am, www/htdocs/index.html:
bin/parser3.conf.dist [moved from etc
* src/classes/file.C: ^file::exec[script;$.bad error case
insensitive check now
* src/classes/file.C, www/htdocs/index.html:
^file::exec[script;$.bad now error, not skip
* configure, configure.in, src/include/pa_pool.h,
src/include/pa_types.h: pack configure.in detection simplified.
figured out that gcc on sparc not that stupid as thought
previously: on sparc: when it sees packed class it modifies it's
field-access-code to byte operations [stb, ldub] instead of 4byte
operations [st, lduh] so packed must be all parts of packed
class, i.e. it's parents&fields(classes). for now it's only
String that packed and what was wrong is that it's parent -
Pooled, were not packed. fixed that.
2002-06-14 paf
* operators.txt: more precise xml-to-text options
* operators.txt, src/types/pa_vxnode.C: xnode
attribute_node.name/value xnode pi.node.data
2002-06-12 paf
* configure, configure.in, src/targets/cgi/Makefile.am,
src/targets/cgi/parser3.C: removed root conf define creation
* INSTALL, configure.in, operators.txt, etc/Makefile.am,
src/include/pa_globals.h, src/include/pa_request.h,
src/main/compile.tab.C, src/main/pa_globals.C,
src/main/pa_request.C, src/targets/cgi/parser3.C,
src/targets/isapi/parser3isapi.C: parser3.conf now one and only
* src/classes/mail.C: sendmail -ti [default now]
* src/: classes/mail.C, main/pa_request.C: $MAIL $CHARSETS allowed
to be strings. for convinient #ing
* src/: include/pa_globals.h, include/pa_request.h, main/execute.C,
main/pa_globals.C, main/pa_request.C: @rootconf [were @conf]
* src/: include/pa_globals.h, include/pa_request.h, main/main.dsp,
main/pa_globals.C, main/pa_request.C: @conf
2002-06-11 paf
* src/classes/file.C: check simplified
* src/classes/file.C, src/targets/cgi/parser3.dsp,
src/targets/isapi/parser3isapi.C, www/htdocs/.htaccess,
www/htdocs/index.html: suexec env keys filter plus CGI_ as valid
prefix
* src/classes/file.C, src/include/pa_request.h,
src/include/pa_sapi.h, src/targets/cgi/parser3.C,
src/targets/isapi/parser3isapi.C, www/htdocs/index.html:
file::exec/cgi to pass HTTP_ vars introducing SAPI::environment
2002-06-10 paf
* operators.txt, src/classes/op.C, src/include/pa_common.h,
src/main/pa_common.C: lock failures reported now
* src/main/compile_tools.C, www/htdocs/index.html: ^if(" 1 "){y}
bug fixed optimization string->double @ compile time were
not-enough-checking...
* src/main/compile.tab.C, src/main/pa_string.C,
www/htdocs/index.html: whitespace after number in autoconvert now
ignored
* src/types/pa_vform.C, src/types/pa_vform.h,
www/htdocs/index.html: $form: not determined yet check
* src/classes/mail.C: mail netscape attachment name fixed. todo:
$response:body content-type:name
* configure, configure.in: hpux check, nsl link, no socket
* operators.txt: old merge conflict removed
* configure, configure.in: pack even address access on sparc&co
arch checked in configure
* configure, src/include/pa_version.h: makes
* configure, configure.in, src/include/pa_version.h: makes
* src/main/untaint.C: (bug#2) mail subject got always prepended
with charset even when all letters were 7bit one
* src/main/pa_common.C: merged fixed -d (bug)
* src/main/pa_common.C: fixed -d (bug)
2002-06-03 paf
* ChangeLog, operators.txt, etc/parser3.charsets/windows-1251.cfg,
src/classes/classes.dsp, src/main/compile.tab.C,
src/main/main.dsp, src/main/pa_globals.C,
src/targets/cgi/parser3.C, src/targets/cgi/parser3.dsp,
src/targets/isapi/parser3isapi.dsp, src/types/types.dsp,
www/htdocs/index.html: fixed .dsp-s along with reorganized cvs
modules dirs structure
* src/: classes/classes.dsp, main/compile.tab.C, main/main.dsp,
main/pa_globals.C, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.dsp, types/types.dsp: reorganized cvs
modules
2002-05-28 paf
* src/targets/cgi/parser3.C: info.uri now ""
2002-05-17 paf
* src/classes/: table.C: ^table.save << checked empty
pre/match/post columns
2002-05-16 paf
* src/classes/image.C, www/htdocs/index.html: image::measure can
png now
2002-05-15 paf
* operators.txt, src/classes/date.C, www/htdocs/index.html:
^date::create[%H:%M[:%S]] added
* etc/parser3.charsets/windows-1251.cfg: 0x forgot, fixed
* operators.txt, src/classes/date.C, www/htdocs/.htaccess,
www/htdocs/auto.p, www/htdocs/index.html:
^date::create[%Y[-%m[-%d[ %H[:%M[:%S]]]]]] [-%m now
2002-05-14 paf
* etc/parser3.charsets/: windows-1251.cfg: added 3 quotes
2002-05-07 paf
* ChangeLog, src/classes/classes.dsp, src/classes/op.C,
src/include/pa_globals.h, src/include/pa_request.h,
src/include/pa_table.h, src/main/compile.tab.C,
src/main/compile.y, src/main/main.dsp, src/main/pa_globals.C,
src/main/pa_request.C, src/main/pa_table.C,
src/targets/isapi/pa_pool.C, src/targets/isapi/parser3isapi.C,
src/targets/isapi/parser3isapi.dsp,
src/targets/isapi/pool_storage.h, src/types/types.dsp,
www/htdocs/parser-status.html: Table name2number field now &.
main_method_name now on Request pool rather on global_pool
[Junction+VJunction created on same pool as name = were created
on global pool, causing mem leaks]
* src/classes/classes.dsp, src/classes/op.C,
src/include/pa_globals.h, src/include/pa_request.h,
src/include/pa_table.h, src/main/compile.tab.C,
src/main/compile.y, src/main/main.dsp, src/main/pa_globals.C,
src/main/pa_request.C, src/main/pa_table.C,
src/targets/isapi/pa_pool.C, src/targets/isapi/parser3isapi.C,
src/targets/isapi/parser3isapi.dsp,
src/targets/isapi/pool_storage.h, src/types/types.dsp,
www/htdocs/parser-status.html: Table name2number field now &.
main_method_name now on Request pool rather on global_pool
[Junction+VJunction created on same pool as name = were created
on global pool, causing mem leaks]
2002-05-06 paf
* src/: main/pa_globals.C, targets/cgi/parser3.C,
targets/cgi/pool_storage.h, targets/isapi/parser3isapi.C: removed
100*40 bytes per request memory leak [nonpool malloc in globals]
* src/: main/pa_globals.C, targets/cgi/parser3.C,
targets/cgi/pool_storage.h, targets/isapi/parser3isapi.C: removed
100*40 bytes per request memory leak [nonpool malloc in globals]
2002-04-30 paf
* configure, src/include/pa_version.h: version now not b
* src/targets/cgi/parser3.C, www/htdocs/global.xsl,
www/htdocs/index.html: request.uri now never 0
2002-04-29 paf
* configure.in: removed b
* src/: classes/op.C, include/pa_exception.h, main/pa_request.C:
Exception::comment/type checked in (), no there's no empty
type/comment by default
* ChangeLog, src/doc/ClassExample1.dox, src/doc/ClassExample3.dox,
src/doc/aliased.dox, src/doc/methoded.dox, src/doc/string.dox,
src/doc/value.dox, src/include/pa_exception.h,
src/main/pa_request.C, src/targets/cgi/parser3.C: merged from
0001
2002-04-26 paf
* src/doc/doxygen.cfg, src/targets/cgi/parser3.dsp,
www/htdocs/index.html: doxygen dot image size reduced
2002-04-25 paf
* src/targets/cgi/: parser3.C: setenv in .htaccess when cgi is not
under that dir got REDIRECT_ prefix before HTTP_PARSER_x_CONFIG,
now that took into account
* operators.txt, src/classes/date.C: ^date::create[2002-12-33
01:03:04]
* ChangeLog, operators.txt, src/classes/date.C,
www/htdocs/index.html: ^date::create[2002-12-33 01:03:04]
* ChangeLog: updated changelog
* www/htdocs/index.html: sample of 'using junction out of context'
* src/classes/table.C, www/htdocs/.htaccess, www/htdocs/index.html:
removed restriction on column count to ^table.hash to work, now
must be >0 [were >1]
2002-04-24 paf
* src/: classes/classes.dsp, main/compile.tab.C, main/main.dsp,
targets/cgi/parser3.C, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.dsp, types/types.dsp: MSVC profile
targets
2002-04-23 paf
* operators.txt, src/classes/string.C, www/htdocs/index.html:
int/double/string:sql{}[$.default{code}] fixed [were barking:
"junction used outside of context"]
2002-04-22 paf
* types.txt, src/classes/string.C, src/include/pa_string.h,
src/main/pa_string.C, src/types/pa_vstring.C,
src/types/pa_vstring.h: ^string.optimize[]
* src/: include/pa_globals.h, include/pa_table.h,
main/pa_globals.C, main/pa_string.C, main/pa_table.C: fixed match
table template
* src/classes/: string.C: optimize removed from string
.left/right/pos
* src/main/execute.C: rolled back to
before_killing_userjunction_contexts
* src/main/execute.C, www/htdocs/index.html: user junctions context
killed
* src/main/execute.C, www/htdocs/index.html: junctions to local
contexts got cleanized&checked later
2002-04-19 paf
* src/classes/string.C, src/include/pa_request.h,
src/include/pa_string.h, src/main/pa_request.C,
src/main/pa_string.C, src/types/pa_vstring.C,
src/types/pa_vstring.h, www/htdocs/index.html: string now
optimized prior to .left .right .mid .pos .match when that is
profitable, and always before .replace when $ORIGINS(1)
optimization disabled economy from not wasting mem on lots of
strings which occur by lots of String:mid calls to get parts of
source string between found_occurances
* src/classes/file.C: ovector now local economy: 16 bytes per
^file:list
* src/: include/pa_globals.h, include/pa_table.h,
main/pa_globals.C, main/pa_string.C: String::match table columns
globalized, not created @ each ^match anymore economy:
sizeof(Array)+space on 3+x cells=24+ bytes per ^match
* src/: classes/op.C, classes/string.C, types/pa_value.h: VTable
removed from each String::match replace iteration, and made
stacked sizeof(VTable)=12bytes economy on each replace code
* src/doc/footer.htm: 2001,
* src/classes/string.C, src/include/pa_string.h,
src/main/pa_string.C, www/htdocs/index.html: string.match[][']
option enables generation of $match.prematch .match .postmatch
columns
* src/main/pa_string.C: String::match options analized without
cstr-ing them now
* src/doc/: doxygen.cfg, footer.htm, html2chm.cmd, postbuild.txt,
sources2html.cmd, view_chm.cmd, view_html.cmd, chmhelper.pl:
config updated to doxygen 1.2.15, created helper which fixes
minor bugs in chm project files & htm tree. changed extension to
.htm
2002-04-18 paf
* src/doc/doxygen.cfg: .chi generation disabled
* src/classes/classes.h, src/classes/xdoc.C, src/classes/xnode.C,
src/classes/xnode.h, src/types/pa_vxdoc.C, www/htdocs/index.html:
xdoc(xnode) now fully - fields&methods
* src/: classes/classes.h, classes/hash.C, types/pa_value.h,
types/pa_vbool.h, types/pa_vcookie.h, types/pa_vdate.h,
types/pa_vdouble.h, types/pa_venv.h, types/pa_vfile.h,
types/pa_vhash.h, types/pa_vimage.h, types/pa_vint.h,
types/pa_vjunction.h, types/pa_vobject.h, types/pa_vrequest.h,
types/pa_vresponse.h, types/pa_vstateless_class.h,
types/pa_vstateless_object.h, types/pa_vstatus.h,
types/pa_vstring.h, types/pa_vtable.h, types/pa_vvoid.h,
types/pa_vxdoc.h, types/pa_vxnode.h: fclass_real lowered from
VStateless_class to VObject
* src/main/pa_request.C, src/types/pa_valiased.h,
src/types/pa_vstateless_class.h,
src/types/pa_vstateless_object.h, src/types/pa_vstring.h,
www/htdocs/index.html: VStateless_string_object speicalized light
version of VStateless_object
* src/classes/op.C: ^throw comment param made optional
* src/types/pa_valiased.C, src/types/pa_valiased.h,
src/types/pa_vclass.h, src/types/pa_vobject.h,
src/types/pa_wcontext.C, www/htdocs/index.html: VAliased get/set
alias now virtual and implemented down in VClass, fclass_alias
removed,
* src/types/pa_value.C: forced to cut that from .h because of
VStateless_class usage [undefined in .h]
* src/include/pa_opcode.h, src/main/compile.tab.C,
src/main/compile.y, src/main/compile_tools.C,
src/main/compile_tools.h, src/main/execute.C,
src/main/pa_request.C, src/types/pa_vmethod_frame.h,
www/htdocs/index.html: OP_GET_METHOD_FRAME merged with OP_CALL,
VCodeFrame move to stack [no more heap waste on each CALL]
* src/classes/classes.h, src/classes/date.C, src/classes/double.C,
src/classes/file.C, src/classes/form.C, src/classes/hash.C,
src/classes/image.C, src/classes/int.C, src/classes/mail.C,
src/classes/math.C, src/classes/op.C, src/classes/response.C,
src/classes/string.C, src/classes/table.C, src/classes/void.C,
src/classes/xnode.C, src/include/pa_globals.h,
src/include/pa_request.h, src/main/execute.C,
src/main/pa_globals.C, src/main/pa_request.C,
src/types/Makefile.am, src/types/pa_value.h,
src/types/pa_vdouble.h, src/types/pa_vform.C,
src/types/pa_vhash.h, src/types/pa_vint.h, src/types/pa_vmath.h,
src/types/pa_vmethod_frame.h, src/types/pa_vstateless_class.h,
src/types/pa_wcontext.C, src/types/pa_wcontext.h,
src/types/pa_wwrapper.h, src/types/types.dsp,
www/htdocs/index.html: removed Value::fname
2002-04-17 paf
* src/: doc/ClassExample1.dox, doc/ClassExample2.dox,
doc/ClassExample3.dox, doc/compiler.dox, doc/module.dox,
doc/pooled.dox, doc/string.dox, doc/targets.dox,
include/pa_pool.h, include/pa_types.h: dox updated to current
state, PTHROW freshen to throw & co
* src/types/pa_vhash.h: vstring wrong parent fixed
* src/classes/op.C: taint local result var bug fixed
2002-04-16 paf
* asm.txt, form.txt, lang.txt, sql.txt: removed outdated. see in
Attic asm.txt as most interesting
* src/main/pa_request.C, src/targets/isapi/parser3isapi.C,
www/htdocs/index.html: removed check, preventing content-length:
0 from appearing
* src/main/execute.C, www/htdocs/index.html: $result in @main now
taken into account as in usual functions
* src/doc/postbuild.txt, src/main/execute.C, www/htdocs/index.html:
$result in @postprocess & @unhandled_exception now taken into
account as in usual functions
* src/doc/postbuild.txt: instructions on post .html build
* src/doc/: doxygen.cfg, html2chm.cmd: .chm file only now, no .chi
* src/classes/file.C, src/main/pa_exec.C, www/htdocs/index.html:
stderr of execs mark as tainted
* src/main/pa_request.C: uri in error log
* src/: classes/date.C, main/compile.tab.C, targets/cgi/parser3.C:
cheched date:create(days) param for validity [later were assumed
valid and crashed on invalid onces]
* src/: include/pa_opcode.h, main/compile.tab.C, main/compile.y,
main/execute.C, targets/cgi/parser3.C: OP_CALL -> OP_CALL__WRITE
and used that for removing VString wrapper
* src/classes/op.C: exception2vhash file now tainted
* src/classes/op.C: _process pseudo origin copied from local var to
heap
* src/classes/op.C, www/htdocs/auto.p: extra check on empty file in
origin in _execute
2002-04-15 paf
* src/: main/execute.C, types/pa_value.h: fixed name update
* src/classes/: file.C, op.C, table.C: finished dual write_xxx_lang
functions
* src/: classes/file.C, classes/hash.C, classes/op.C,
include/pa_request.h, main/execute.C, types/pa_wcontext.h:
started dual write_xxx_lang functions, if checked & works
* src/: classes/date.C, classes/file.C, classes/mail.C,
classes/string.C, classes/xnode.C, include/pa_request.h,
types/pa_value.h, types/pa_wcontext.h: removed absolutely
unnecessary VString shells
* src/main/execute.C: CodeFrame soul fixed [mistakenly killed by
prev changes]
* src/: classes/image.C, classes/op.C, classes/string.C,
classes/table.C, include/pa_request.h, main/execute.C,
types/pa_value.h, types/pa_vmethod_frame.h, types/pa_wcontext.h:
StringOrValue wcontext result, now ready for dual writes
* src/targets/cgi/parser3.C: ctime sometimes can be just "",
checked that
* src/main/: compile.tab.C, compile.y, compile_tools.C,
compile_tools.h, execute.C: OP_GET_ELEMENT+OP_GET_ELEMENT__WRITE
changed to OP_WRITE_VALUE in var get cases
* src/classes/op.C, src/include/pa_globals.h,
src/include/pa_opcode.h, src/include/pa_request.h,
src/main/compile.tab.C, src/main/compile.y,
src/main/compile_tools.C, src/main/compile_tools.h,
src/main/execute.C, src/main/pa_globals.C, src/main/pa_request.C,
src/targets/cgi/parser3.C, www/htdocs/index.html: switch in hash
constructor fixed [were problems with using of stacked wwrapper
after it's death]
2002-04-12 paf
* operators.txt, src/classes/table.C, www/htdocs/index.html:
table.select(expression) 0
2002-04-11 paf
* src/: classes/string.C, include/pa_request.h, main/execute.C:
Request::process_internal codeFrame & wwrapper stacked [not
wasting heap anymore]
2002-04-10 paf
* src/: classes/double.C, classes/file.C, classes/hash.C,
classes/image.C, classes/int.C, classes/math.C, classes/op.C,
classes/string.C, classes/table.C, classes/void.C,
classes/xdoc.C, include/pa_request.h, main/execute.C,
main/pa_string.C: killed Request::process() wrapping
VString(String) in case we need only String
* src/include/pa_string.h, src/main/pa_string.C,
src/main/untaint.C, www/htdocs/index.html: killed 8 bytes from
String.head
2002-04-09 paf
* src/: main/compile.tab.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C: removed { char *a; { /*sub
local*/char b[...]; a=b; situations
* operators.txt, src/classes/xdoc.C: xslt params made literal
* src/classes/xdoc.C, www/htdocs/global.xsl, www/htdocs/index.html:
xslt params fixed
* src/: main/pa_common.C, targets/cgi/parser3.C,
types/pa_vdouble.h, types/pa_vint.h: int/double get_string now
not pool.malloc(MAX_NUMBER) but really neaded
* operators.txt, src/classes/double.C, src/classes/int.C,
www/htdocs/global.xsl: int/double.int/double(default)
2002-04-04 paf
* src/include/pa_string.h, src/main/pa_string.C,
www/htdocs/index.html: fixed string.replace [when reconstructing
pieces were split by max_integral(piece.size), thus some strings
to replace happen to be split into two = not replaced)
* src/targets/cgi/: parser3.C, parser3.dsp: document root in
standalone version = current dir
* src/targets/cgi/parser3.C: document root in standalone version =
current dir
2002-04-03 paf
* configure, configure.in: more checks on nonexistent charset
* INSTALL, configure, configure.in: root config configure options
2002-04-02 paf
* src/main/compile.C: parser.compile [exception name more like in
doc]
2002-04-01 paf
* src/: classes/mail.C, include/pa_string.h, main/untaint.C,
targets/isapi/parser3isapi.dsp: mail subject encoding taken from
.content-type.charset, not .charset
2002-03-29 paf
* etc/parser3.charsets/koi8-r.cfg: koi8-r += ukranian letters
* operators.txt, src/classes/date.C, www/htdocs/index.html:
^date::create now may not supply day, default 1. checked 29.03
-> 29.02 roll on non 366 days' year. | 31.05->31.04 roll
2002-03-28 paf
* operators.txt, src/classes/date.C, src/classes/op.C,
src/include/pa_globals.h, src/include/pa_hash.h,
src/main/pa_globals.C, src/types/pa_vdate.h,
www/htdocs/index.html: ^cache[file][date]{ ^cache(seconds)
^cache[date] }
* src/classes/: xdoc.C, xnode.C, xnode.h: removed redundant pool
param
2002-03-27 paf
* operators.txt, src/classes/date.C, src/classes/double.C,
src/classes/file.C, src/classes/form.C, src/classes/hash.C,
src/classes/image.C, src/classes/int.C, src/classes/mail.C,
src/classes/math.C, src/classes/op.C, src/classes/string.C,
src/classes/table.C, src/classes/void.C, src/classes/xdoc.C,
src/classes/xnode.C, src/include/pa_exception.h,
src/include/pa_request.h, src/include/pa_stylesheet_connection.h,
src/main/compile.C, src/main/compile_tools.C, src/main/execute.C,
src/main/pa_array.C, src/main/pa_charset.C,
src/main/pa_charsets.C, src/main/pa_common.C,
src/main/pa_dictionary.C, src/main/pa_exception.C,
src/main/pa_exec.C, src/main/pa_pool.C, src/main/pa_request.C,
src/main/pa_socks.C, src/main/pa_sql_driver_manager.C,
src/main/pa_string.C, src/main/pa_table.C, src/main/untaint.C,
src/targets/cgi/parser3.C, src/targets/isapi/parser3isapi.C,
src/types/pa_value.h, src/types/pa_vcookie.C,
src/types/pa_vfile.h, src/types/pa_vform.C, src/types/pa_vhash.h,
src/types/pa_vmethod_frame.h, src/types/pa_vstatus.C,
src/types/pa_vtable.C, src/types/pa_vxdoc.h,
src/types/pa_vxnode.h, src/types/pa_wcontext.C,
src/types/pa_wwrapper.h, www/htdocs/index.html: assigned
exception types
* operators.txt, src/classes/op.C, src/include/pa_config_fixed.h,
src/include/pa_request.h, src/main/execute.C,
src/main/pa_request.C: decided agains resetting exception_trace,
just changed name
2002-03-26 paf
* src/: include/pa_common.h, main/pa_exec.C: windows exec chdir
fixed
* src/classes/op.C, www/htdocs/index.html: forced language of
$source field of exception to 'tainted', so that sql-langed-frags
could be outputed outside of connect
* operators.txt: removed date.roll limit of +-1 offset
* src/classes/date.C, www/htdocs/index.html: removed date.roll
limit of +-1 offset
* operators.txt, src/classes/date.C, www/htdocs/index.html: fixed
date roll on daylightsaving days mktime took into account
tm_isdst flag, which remained from BEFORE roll, but should have
been reset
2002-03-25 paf
* operators.txt, src/targets/cgi/parser3.C:
http_site_config_filespec
* src/: classes/file.C, classes/mail.C, include/pa_exec.h,
main/pa_exec.C: f(!forced_allow) to allow --with-sendmail to work
with any/both --disable-foreign-group-files --disable-execs
* INSTALL: "--with=sendmail=COMMAND" comment
* INSTALL, configure, configure.in, src/classes/mail.C,
src/include/pa_config_auto.h.in, src/main/pa_exec.C,
src/targets/cgi/Makefile.am: --disable-foreign-group-files now
disables execs also. introducing --sendmail
* operators.txt: pgsql options comment
* INSTALL: comment on --disable-link-stdcpp
* INSTALL, configure, configure.in, src/targets/cgi/Makefile.am:
libstdc++ link skipping configure option
* src/: classes/op.C, include/pa_sql_connection.h: sql connection
with error were put to cache with 'marked_to_rollback' flag, all
consequent even OK requests rolled back
2002-03-22 paf
* src/main/pa_exec.C: createprocess nowindow flag check on readfile
false return
* operators.txt: few comments on sets
2002-03-18 paf
* operators.txt, src/classes/op.C, src/include/pa_exception.h,
src/include/pa_globals.h, src/include/pa_request.h,
src/include/pa_stack.h, src/main/pa_globals.C,
src/main/pa_request.C, www/htdocs/index.html: introducing ^try
* src/: main/pa_charset.C, targets/isapi/pa_threads.C,
types/pa_vdouble.h: removed some tested @tests
2002-03-15 paf
* operators.txt, src/classes/table.C, www/htdocs/index.html:
^table.locate(logical expr)
2002-03-13 paf
* src/main/pa_exception.C: checked not-pooled malloc
2002-03-11 paf
* INSTALL, configure, configure.in,
src/include/pa_config_auto.h.in: --disable-foreign-group-files
* src/main/pa_common.C: --disable-foreign-group-files
* INSTALL, www/htdocs/index.html: --disable-execs
* src/main/pa_exec.C, www/htdocs/index.html: --disable-execs
* configure, configure.in, src/include/pa_config_auto.h.in:
--disable-execs
* src/include/pa_config_fixed.h, src/main/pa_exec.C,
www/htdocs/index.html: --disable-execs
* src/types/pa_vfile.C: $file.text now 0A linebreaks,
file::exec/cgi linebreaks "0D0A" changed to 0A onces
2002-03-05 paf
* operators.txt, src/classes/date.C: date week calendar columns
named
* operators.txt, src/classes/date.C: date week calendar columns
named
* src/targets/isapi/: parser3isapi.C, parser3isapi.dsp: iis5 now
requires headers to be terminated with \r\n manually [refuses to
separate header/body itself]
* src/main/pa_globals.C, src/targets/cgi/parser3.C,
src/targets/isapi/parser3isapi.C, www/htdocs/index.html: isapi
site config beside .dll
2002-03-04 paf
* src/classes/op.C, src/types/pa_vfile.C, www/htdocs/index.html:
process body now evaluated in PASS language
* src/: classes/op.C, include/pa_string.h, main/pa_string.C: string
deserialize checks on broken file
* src/targets/isapi/: pa_threads.C, parser3isapi.C,
parser3isapi.dsp: isapi updated
2002-03-01 paf
* src/main/pa_exec.C: execle -> execve, now argc OK
2002-02-28 paf
* src/main/untaint.C: removed some debug comments
* src/main/pa_charsets.C: when placing charset to cache using
global name now [were request]
* configure, configure.in: apache module updated
* www/htdocs/auto.p: apache module updated
* src/main/pa_string.C: origin by first piece preferred before last
piece
2002-02-27 paf
* src/main/pa_charset.C: size_t
* INSTALL: shared/static-xml with-pathlink
* operators.txt: SMTP comment
2002-02-26 paf
* src/main/pa_exec.C: more precise names for vars, cosmetic
* src/classes/xnode.C, www/htdocs/auto.p, www/htdocs/global.xsl,
www/htdocs/index.html: in some situation, xpath query returned
result with type NODESET, but empty nodeset member field, checked
that
2002-02-22 paf
* INSTALL: without-zlib comment
* etc/parser3.charsets/windows-1251.cfg: °
* configure, configure.in: glib###.a detection fixed
* INSTALL: hashfile removed from INSTALL
* Makefile.am: make update
* src/main/pa_string.C: string iterators fixed again, so were
String::join_chain
* src/main/pa_string.C: string iterators fixed again, so were
String::join_chain
* src/include/pa_string.h, src/main/pa_string.C, www/htdocs/auto.p,
www/htdocs/index.html: string iterators fixed again, so were
String::join_chain
* src/types/pa_vcookie.C: cookie "expires=0" = "session"
* operators.txt, src/types/pa_vcookie.C: cookie "expires=0" =
"session"
* configure, configure.in, src/include/pa_config_auto.h.in:
--with-shared-xml --with-static-xml
* src/: classes/classes.dsp, main/compile.tab.C, main/main.dsp,
targets/cgi/parser3.dsp, targets/isapi/parser3isapi.dsp,
types/types.dsp: *.dsp: removed refereces to win32db & ancient
xalan&xml
* acconfig.h: acconfig move in cvs[from src/libltdl to /]
* operators.txt, src/classes/classes.dsp, src/main/main.dsp,
src/types/types.dsp: removed hashfile support from sources for
now
* configure, configure.in, src/classes/Makefile.am,
src/classes/hashfile.C, src/include/Makefile.am,
src/include/pa_config_auto.h.in, src/include/pa_db_connection.h,
src/include/pa_db_manager.h, src/include/pa_db_table.h,
src/main/Makefile.am, src/main/pa_db_connection.C,
src/main/pa_db_manager.C, src/main/pa_db_table.C,
src/main/pa_globals.C, src/targets/cgi/Makefile.am,
src/types/Makefile.am, src/types/pa_vhashfile.C,
src/types/pa_vhashfile.h: removed hashfile support for now
2002-02-21 paf
* src/main/untaint.C: removed debug code, activated commented-for
debug parts
* Makefile.am: make cvsupdate
* src/: include/pa_string.h, include/pa_types.h, main/pa_string.C,
main/untaint.C: STRING_*FOREACH_ROW changed to stop at
append_row, not at link zero now string to string appending works
2002-02-20 paf
* src/include/pa_string.h, src/main/execute.C, src/main/untaint.C,
src/targets/cgi/pa_pool.C, src/targets/cgi/parser3.C,
www/htdocs/index.html: //#define DEBUG_STRING_APPENDS_VS_EXPANDS
* src/: include/pa_string.h, main/pa_string.C, main/untaint.C:
economy: 22%
* src/: include/pa_string.h, main/pa_string.C, main/untaint.C:
space uptimized: string::link_row removed
* src/include/pa_string.h, src/include/pa_stylesheet_connection.h,
src/main/pa_db_manager.C, src/main/pa_dictionary.C,
src/main/pa_string.C, src/main/untaint.C,
src/targets/cgi/parser3.C, src/types/pa_vcookie.C,
src/types/pa_vstring.h, www/htdocs/index.html: speed uptimized:
string::is_empty
* operators.txt, src/include/pa_common.h,
src/include/pa_config_fixed.h, src/include/pa_string.h,
src/include/pa_types.h, src/main/compile.tab.C,
src/main/execute.C, src/main/pa_string.C, src/main/untaint.C,
src/targets/cgi/pa_pool.C, src/targets/cgi/parser3.C,
www/htdocs/auto.p, www/htdocs/global.xsl, www/htdocs/index.html:
strign to string append optimiziation idea and estimates
2002-02-19 paf
* src/classes/math.C: not used directly [but erroreously reported
that 'is', thus registering twice&other probs]
* src/classes/: xdoc.C, xnode.C: getElementsByTagName and *NS moved
to node [element]
* src/main/compile.C: without string_origins parse error
file+line+col possible
* src/main/: compile.C: without string_origins not worked
2002-02-18 paf
* src/types/pa_vdouble.h: since we have in_expression removed that
trick i've installed into double::as_string
* src/main/pa_globals.C: extern "C" was removed too fast
* src/include/pa_opcode.h, src/include/pa_request.h,
src/main/compile.tab.C, src/main/compile.y, src/main/execute.C,
src/types/pa_wcontext.h, www/htdocs/index.html: in_expression
aimed to solve old problem with string/nonstring values, now in
expressions double/int values are passed as-is, without stupid
tostring/fromstring conversions
* src/main/: main.dsp, pa_globals.C: removed unneded #ifdef
__cplusplus } #endif
* src/main/compile.tab.C: bison env set so one could compile
without cygwin installed
* src/: classes/classes.dsp, main/main.dsp, main/pa_globals.C,
targets/cgi/parser3.dsp, types/types.dsp: win32xml now contains
gnome xml libs parser .dsp-s changed accordingly
* operators.txt, src/targets/cgi/parser3.C: PARSER_ROOT_CONFIG
* operators.txt, src/classes/date.C: date::create [were date::set,
with backward comp
* src/classes/math.C, www/htdocs/index.html: math:random range
check fixed
* src/main/compile.tab.C, src/main/compile.y,
www/htdocs/global.xsl, www/htdocs/index.html: integer division
stops name
* INSTALL: local install comment
* ltconfig, ltmain.sh: removed libtool subpart files
* acinclude.m4, aclocal.m4, configure, configure.in,
src/include/pa_config_auto.h.in,
src/include/pa_config_includes.h, src/targets/cgi/Makefile.am,
src/targets/cgi/parser3.C: removed libtool usage from build mech
* operators.txt: \ comment
2002-02-13 paf
* src/include/pa_config_includes.h: sys/time time both included
now. vaguely remember confilicts on this on some system [not on
six|ablv] so when would see them again would think up proper
check
* INSTALL, configure, configure.in, src/targets/cgi/Makefile.am:
--with-glib-config CXXLINK=$(CC) for targets/cgi/parser3
* src/main/pa_common.C: truncation never occured when writing files
on unix [since i've changed cache mech] fix
* src/main/pa_common.C: strnchr: sanity check added
* etc/parser3.charsets/windows-1257.cfg: id added
* etc/parser3.charsets/windows-1257.cfg, src/targets/cgi/parser3.C:
baltic charset file generated, in generation script ispunct check
added
2002-02-08 paf
* src/: include/Makefile.am, sql/Makefile.am,
targets/isapi/Makefile.am: forgotten makes
* src/types/: pa_vcookie.C: VCookie::fill_fields one check
forgotten
* src/types/pa_vcookie.C: VCookie::fill_fields one check forgotten
* INSTALL, README: install&others updated
* AUTHORS, COPYING, ChangeLog, INSTALL: install&others updated
* Makefile.am, configure, configure.in,
etc/parser3.charsets/Makefile.am, src/Makefile.am,
src/classes/Makefile.am, src/main/Makefile.am,
src/main/pa_status_provider.C, src/targets/Makefile.am,
src/targets/cgi/Makefile.am, src/types/Makefile.am: 'make dist'
works
* src/: classes/classes.C, classes/classes.h, classes/date.C,
classes/double.C, classes/file.C, classes/form.C, classes/hash.C,
classes/hashfile.C, classes/int.C, classes/mail.C,
classes/math.C, classes/op.C, classes/response.C,
classes/string.C, classes/table.C, classes/void.C,
classes/xdoc.C, classes/xnode.C, classes/xnode.h,
include/pa_array.h, include/pa_cache_managers.h,
include/pa_charset.h, include/pa_charsets.h, include/pa_common.h,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_db_connection.h, include/pa_db_manager.h,
include/pa_db_table.h, include/pa_dictionary.h, include/pa_dir.h,
include/pa_exception.h, include/pa_exec.h, include/pa_globals.h,
include/pa_hash.h, include/pa_opcode.h, include/pa_pool.h,
include/pa_pragma_pack_begin.h, include/pa_pragma_pack_end.h,
include/pa_request.h, include/pa_sapi.h, include/pa_socks.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stack.h, include/pa_string.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
include/pa_threads.h, include/pa_types.h, main/compile.C,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/pa_array.C, main/pa_cache_managers.C, main/pa_charsets.C,
main/pa_db_connection.C, main/pa_db_manager.C,
main/pa_db_table.C, main/pa_dictionary.C, main/pa_dir.C,
main/pa_exception.C, main/pa_globals.C, main/pa_hash.C,
main/pa_pool.C, main/pa_request.C, main/pa_socks.C,
main/pa_sql_driver_manager.C, main/pa_status_provider.C,
main/pa_string.C, main/pa_stylesheet_manager.C, main/pa_table.C,
sql/pa_sql_driver.h, targets/cgi/pa_pool.C,
targets/cgi/pa_threads.C, targets/cgi/pool_storage.h,
targets/isapi/pa_pool.C, targets/isapi/pa_threads.C,
targets/isapi/parser3isapi.C, targets/isapi/pool_storage.h,
types/pa_valiased.C, types/pa_valiased.h, types/pa_value.h,
types/pa_vbool.h, types/pa_vclass.h, types/pa_vcode_frame.h,
types/pa_vcookie.h, types/pa_vdate.h, types/pa_vdouble.h,
types/pa_venv.h, types/pa_vfile.h, types/pa_vform.h,
types/pa_vhash.h, types/pa_vhashfile.h, types/pa_vimage.h,
types/pa_vint.h, types/pa_vjunction.h, types/pa_vmath.h,
types/pa_vmethod_frame.h, types/pa_vobject.h,
types/pa_vrequest.h, types/pa_vresponse.h,
types/pa_vstateless_class.C, types/pa_vstateless_class.h,
types/pa_vstateless_object.h, types/pa_vstatus.C,
types/pa_vstatus.h, types/pa_vstring.h, types/pa_vtable.h,
types/pa_vvoid.h, types/pa_vxdoc.h, types/pa_vxnode.h,
types/pa_wcontext.C, types/pa_wcontext.h, types/pa_wwrapper.h,
classes/image.C, main/pa_common.C, main/pa_exec.C,
main/untaint.C, targets/cgi/parser3.C, types/pa_vcookie.C,
types/pa_vfile.C, types/pa_vform.C, types/pa_vhashfile.C,
types/pa_vimage.C, types/pa_vrequest.C, types/pa_vresponse.C,
types/pa_vstring.C, types/pa_vtable.C, types/pa_vxdoc.C,
types/pa_vxnode.C, main/pa_charset.C: name spelling
* src/: classes/classes.C, classes/classes.h, classes/date.C,
classes/double.C, classes/file.C, classes/form.C, classes/hash.C,
classes/hashfile.C, classes/image.C, classes/int.C,
classes/mail.C, classes/math.C, classes/op.C, classes/response.C,
classes/string.C, classes/table.C, classes/void.C,
classes/xdoc.C, classes/xnode.C, classes/xnode.h,
include/pa_array.h, include/pa_cache_managers.h,
include/pa_charset.h, include/pa_charsets.h, include/pa_common.h,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_db_connection.h, include/pa_db_manager.h,
include/pa_db_table.h, include/pa_dictionary.h, include/pa_dir.h,
include/pa_exception.h, include/pa_exec.h, include/pa_globals.h,
include/pa_hash.h, include/pa_opcode.h, include/pa_pool.h,
include/pa_pragma_pack_begin.h, include/pa_pragma_pack_end.h,
include/pa_request.h, include/pa_sapi.h, include/pa_socks.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stack.h, include/pa_string.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
include/pa_threads.h, include/pa_types.h, main/compile.C,
main/compile.tab.C, main/compile_tools.C, main/compile_tools.h,
main/execute.C, main/pa_array.C, main/pa_cache_managers.C,
main/pa_charset.C, main/pa_charsets.C, main/pa_common.C,
main/pa_db_connection.C, main/pa_db_manager.C,
main/pa_db_table.C, main/pa_dictionary.C, main/pa_dir.C,
main/pa_exception.C, main/pa_exec.C, main/pa_globals.C,
main/pa_hash.C, main/pa_pool.C, main/pa_request.C,
main/pa_socks.C, main/pa_sql_driver_manager.C,
main/pa_status_provider.C, main/pa_string.C,
main/pa_stylesheet_manager.C, main/pa_table.C, main/untaint.C,
sql/pa_sql_driver.h, targets/cgi/pa_pool.C,
targets/cgi/pa_threads.C, targets/cgi/parser3.C,
targets/cgi/pool_storage.h, targets/isapi/pa_pool.C,
targets/isapi/pa_threads.C, targets/isapi/parser3isapi.C,
targets/isapi/pool_storage.h, types/pa_valiased.C,
types/pa_valiased.h, types/pa_value.h, types/pa_vbool.h,
types/pa_vclass.h, types/pa_vcode_frame.h, types/pa_vcookie.C,
types/pa_vcookie.h, types/pa_vdate.h, types/pa_vdouble.h,
types/pa_venv.h, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vhash.h,
types/pa_vhashfile.C, types/pa_vhashfile.h, types/pa_vimage.C,
types/pa_vimage.h, types/pa_vint.h, types/pa_vjunction.h,
types/pa_vmath.h, types/pa_vmethod_frame.h, types/pa_vobject.h,
types/pa_vrequest.C, types/pa_vrequest.h, types/pa_vresponse.C,
types/pa_vresponse.h, types/pa_vstateless_class.C,
types/pa_vstateless_class.h, types/pa_vstateless_object.h,
types/pa_vstatus.C, types/pa_vstatus.h, types/pa_vstring.C,
types/pa_vstring.h, types/pa_vtable.C, types/pa_vtable.h,
types/pa_vvoid.h, types/pa_vxdoc.C, types/pa_vxdoc.h,
types/pa_vxnode.C, types/pa_vxnode.h, types/pa_wcontext.C,
types/pa_wcontext.h, types/pa_wwrapper.h: 2002
2002-02-07 paf
* src/main/pa_socks.C: swapped headers to avoid compiler warnings
* configure, configure.in, src/include/pa_config_auto.h.in,
src/main/pa_common.C, src/main/pa_socks.C: compiled under cygwin
added yet another locking function: fcntl
* config.sub: on cygwin configure passes it with strange i1586
const, hacked it to mean i586
* src/main/: compile.C, compile.tab.C, compile.y, compile_tools.h:
disabled $if reference due to conflicts with local variables
* operators.txt, src/classes/xdoc.C, src/include/pa_config_fixed.h:
xdoc::set obsolete now, now xdoc::create, with both sences
* operators.txt, src/classes/table.C, src/include/pa_array.h,
src/include/pa_table.h, src/main/pa_array.C, src/main/pa_table.C,
www/htdocs/auto.p, www/htdocs/index.html: table::create now //
'set' name obsolete now table clone.
* operators.txt, src/classes/string.C,
src/include/pa_config_fixed.h, src/main/compile.tab.C:
^int/double/string.format now can be called with normal []
brackets, not stupid {} as it were implemented for some strange
reason. retaining backward compatibility due to some
already-implemented servers
* src/: include/pa_array.h, main/compile.C, main/compile.tab.C,
main/compile.y, main/compile_tools.C, main/compile_tools.h:
operators now detected by check at name_without_curly_rdive_read
rule whether diving code constists only of
OP_VALUE+string+OP_GET_ELEMENT. and last op code substituted
with OP_GET_ELEMENT_OR_OPERATOR to form
OP_VALUE+string+OP_GET_ELEMENT_OR_OPERATOR. code
2002-02-06 paf
* configure, configure.in: prefix expanded, grr
* operators.txt, src/classes/mail.C: mail:send config changed
2002-02-05 paf
* operators.txt: regex options commented
* src/main/: pa_exec.C: argv0 now correct
* src/types/pa_vstatus.C: status:rusage 3
* src/types/pa_vstatus.C: status:rusage 2
* operators.txt: status:rusage described int operators
* src/types/pa_vstatus.C: status:rusage 1
* configure.in, src/types/Makefile.am, src/types/pa_vstatus.h,
src/types/types.dsp: status:rusage
* configure.in, operators.txt, src/classes/file.C,
src/classes/op.C, src/include/pa_common.h,
src/include/pa_config_includes.h, src/main/compile.tab.C,
src/main/pa_common.C, www/htdocs/index.html: rewritten ^cache to
use non-blocking-exclusive-caches
* src/main/pa_common.C: text file read mode on win32 adjusted
[speed impact. was off for debugging purpose, but forgotten
afterwards]
2002-02-01 paf
* src/classes/op.C: file_write does EX lock after create, while
file_read does SH after open, so there's a moment after create
but before EX lock when read can sneak into, and read
just-created-for-writing-and-not-yet-locked file, added a check
for that in ^cache...read
2002-01-31 paf
* src/main/: compile.y, compile.tab.C: disabled operator call after
^xxx:
* src/main/: compile.tab.C, execute.C: made operators lookup first
in ^xxx situation. so that one could not do $if[1] ^if[xxx]
* src/: include/pa_opcode.h, include/pa_request.h, main/compile.C,
main/compile.tab.C, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/execute.C, types/pa_wcontext.h:
operators check 6.1 rewritten. now check is done at compile time
* src/main/execute.C: operators check 5 floated up old error of
staying in 'entered class/object' state after $a($a..) it
prevented operators from being called thereafter
* src/: include/pa_opcode.h, main/compile.tab.C, main/compile.y,
main/execute.C: operators check 4 floated up old error of staying
in 'entered object' state after ^a.a(a) it prevented operators
from being called thereafter
* src/main/execute.C: operators check 3 floated up old error of
staying in 'entered class' state after $a:a(a) it prevented
operators from being called thereafter
* src/main/execute.C, src/types/pa_wcontext.h, www/htdocs/auto.p,
www/htdocs/index.html: operators check 2 floated up old error of
staying in 'entered class' state after $a:a[a] it prevented
operators from being called thereafter
* src/main/execute.C, www/htdocs/index.html: operators check, thay
mistakenly seen in $class:operator $object.operators contexts
* src/classes/xdoc.C, src/targets/cgi/parser3.dsp,
www/htdocs/index.html: now compiles under win32
* INSTALL, configure, configure.in, ident.awk, etc/Makefile.am,
src/classes/Makefile.am, src/main/Makefile.am,
src/targets/cgi/Makefile.am,
src/targets/cgi/pa_config_paths.h.in, src/targets/cgi/parser3.C,
src/types/Makefile.am: lowered indent.awk back to src/
* AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, NEWS, README,
acinclude.m4, aclocal.m4, asm.txt, config.guess, config.sub,
configure, configure.in, form.txt, ident.awk, install-sh,
lang.txt, ltconfig, ltmain.sh, missing, mkinstalldirs,
operators.txt, parser3.dsw, sql.txt, types.txt, etc/Makefile.am,
etc/parser3.charsets/Makefile.am,
etc/parser3.charsets/koi8-r.cfg,
etc/parser3.charsets/windows-1250.cfg,
etc/parser3.charsets/windows-1251.cfg, src/Makefile.am,
src/classes/Makefile.am, src/include/pa_config_auto.h.in,
src/main/Makefile.am, src/targets/cgi/Makefile.am,
src/targets/cgi/parser3.C, src/types/Makefile.am,
www/Makefile.am, www/htdocs/auto.p, www/htdocs/global.xsl,
www/htdocs/index.html, www/htdocs/parser-status.html,
www/htdocs/people.dtd: moved etc&www out of src, moved
configure&co out of src added windows-1250.cfg straightened
installation scripts procedure made targets/cgi/parser3.C be
dependant on ./configure --sysconfdir change
2002-01-30 paf
* src/classes/xdoc.C: acconfig.h changed [comments before #undefs
removed] those comments were a mistake, and prevented libltdl
from function properly
2002-01-29 paf
* src/: Makefile.am, classes/Makefile.am: removed libltdl/libtool
creation [modified acinclude.m4 which were creating int into just
assignment LIBTOOL=../libtool] added default system
config&charsetts prepared 'make install', now it installs
targets/cgi/parser3 into bin directory etc/parser3.conf &
etc/parser3.charsets/* into $sysconfdir and
$sysconfdir/parser3.charsets respectively
* src/: classes/xdoc.C, include/pa_charset.h, include/pa_globals.h,
main/pa_globals.C: few forgotten ifdef XML added
2002-01-28 paf
* src/: classes/Makefile.am, targets/cgi/Makefile.am: xalan-patch
removed
* src/main/pa_exception.C: dom|generic error output fix
* src/classes/xnode.C: xdoc.importNode 3 [check err]
* src/classes/xnode.C: xdoc.importNode 2 [mistype err]
* src/: classes/xnode.C, types/pa_vxdoc.h: xdoc.importNode 1
[fixed as_node helper func to accept docs]
* src/: classes/xdoc.C, classes/xnode.h, main/pa_exception.C:
xdoc.importNode 0
* src/classes/xdoc.C: xdoc::set now untaints OK
2002-01-25 paf
* src/main/: compile.tab.C, compile.y: #comment before @ after
@SPECIAL now works OK
* src/main/: pa_exec.C: unix: exec now does chdir to script dir
* src/main/pa_exec.C: max arg count now 10, and proper message on
violation that added
* src/classes/hash.C: unified hash::sql, now
^hash::sql{query}[[$.limit(2) $.offset(4)]]
* src/: classes/file.C, include/pa_common.h, main/pa_common.C:
^file:lock[filename]{code}
* src/: classes/file.C, classes/op.C, classes/string.C,
classes/table.C, classes/xdoc.C, include/pa_common.h,
main/pa_common.C, types/pa_vfile.h: removed redundant pool param
to some pa_common funcs
* src/: include/pa_charset.h, main/pa_globals.C:
http://localhost/abc -> $ENV{DOCUMENT_ROOT}/abc | ./abc
* src/: include/pa_charset.h, main/pa_charset.C,
include/pa_config_fixed.h, main/compile.tab.C: typedef XMLCh...
not stupid illegal define
2002-01-24 paf
* src/include/pa_version.h: changed version number
* src/: classes/hashfile.C, include/pa_db_table.h,
include/pa_opcode.h, main/compile.tab.C, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/pa_db_connection.C, main/pa_db_table.C,
types/pa_vhashfile.C, types/pa_vhashfile.h: merged from r17 -
hashfile without logfiles
* src/: classes/hashfile.C, include/pa_db_table.h,
main/compile.tab.C, main/pa_db_connection.C, main/pa_db_table.C,
types/pa_vhashfile.C, types/pa_vhashfile.h: hashfile: removed use
of transactions [libdb removed DB_INIT_LOCK, DB_INIT_LOG,
DB_INIT_TXN init bits, thus got rid of huge log files, which
cluttered disk without huge need]
* src/classes/: xdoc.C, xnode.C, xnode.h: gdome_xml_doc_get_xmlDoc
handy macro, which is strangly abscent in dome lib
* src/classes/xdoc.C: xsltSaveResultTo checked <0 response
* src/classes/xdoc.C: checked empty response
* src/classes/xnode.C: xdoc.select fixed context node [were always
/, not self node]
* src/classes/xnode.C: xnode.select returns array always now, in
case 'nothing found' returns empty array
* src/classes/xnode.C: xpath nodes select bug [0] instead of [i],
be more tender with ctrl/c/v
2002-01-23 paf
* src/: classes/xdoc.C, main/pa_globals.C: xdoc::load/set entities
substituted. // 2. when dom tree with entites goes under
transform text nodes // got [erroreosly] cut on first
entity occurance
* src/types/pa_vdouble.h: double prec. todo: get rid of
twice-converting
* src/types/pa_vdouble.h: %.20E now float format when %g produced
'e' in output this is for regretful twice-converting here:
$a(double value) when they write double falue they convert it to
string first, thus %g were losing precesion.
todo: think up some way to remove double->string string->double
twice-converting
* src/: classes/xdoc.C, main/pa_globals.C, types/pa_vdouble.h:
%.20E now default float format this is for regretful
twice-converting here: $a(double value) when they write double
falue they convert it to string first, thus %g were losing
precesion.
todo: think up some way to remove double->string string->double
twice-converting
* src/: classes/xdoc.C, include/pa_stylesheet_connection.h,
main/pa_globals.C: xmlSubstituteEntitiesDefault(1) now global,
reasons in comment inside
* src/main/pa_globals.C: xslt linked dynamically. [mistekenly were
statically linked]
* src/: include/pa_exception.h, main/compile.tab.C,
main/pa_exception.C: removed exception va_list constructor. 1.
not needed anymore 2. there were a conflict[causing errors]
between ctor(, va_list) ctor(, ...) compiler[both msvc and gcc]
never detected an ambiguilty here, compiling ctor(, "hello") into
ctor(, va_list) which, of course, caused gpf
* src/main/pa_globals.C: removed debug xslt messages
2002-01-22 paf
* src/: classes/xdoc.C, include/pa_stylesheet_connection.h,
main/pa_globals.C: xsl stylesheet load: parsed entities, this
helps compiling stylesheet properly. example: this refused to
work, « » stranly worked only this way:
« »
docs says "set it to 1", never going into details, so I decided
to try NOT to do that
* src/classes/table.C: join behaived badly in case named tables
structure mismatched: 0 strings sneaked into dest failing
afterwards. replaced them with empty strings
2002-01-21 paf
* src/main/pa_charset.C: checked empty transcoders in
transcode_cstr|buf
* src/classes/xdoc.C: xdoc::load error source = filespec
* src/classes/xdoc.C: transform error source now
stylesheet_filespec
* src/: classes/xdoc.C, classes/xnode.C,
include/pa_stylesheet_connection.h, main/pa_charset.C,
main/pa_globals.C, main/pa_sql_driver_manager.C,
main/pa_stylesheet_manager.C, targets/cgi/Makefile.am: autoconf
gnome
* src/: classes/xdoc.C, classes/xnode.C, include/pa_exception.h,
include/pa_globals.h, include/pa_stylesheet_connection.h,
main/pa_exception.C, main/pa_globals.C, targets/cgi/pa_threads.C:
xslt generic error 1
* src/: include/pa_stylesheet_connection.h, main/pa_exception.C:
xml generic message 1
* src/classes/table.C: ^table::load empty lines or #comments before
headline
* src/: include/pa_array.h, include/pa_globals.h,
include/pa_request.h, include/pa_threads.h, main/pa_array.C,
main/pa_exception.C, main/pa_globals.C, main/pa_request.C,
targets/cgi/pa_threads.C, targets/isapi/pa_threads.C: xml generic
errors 0
2002-01-16 paf
* src/: classes/hash.C, classes/op.C, classes/string.C,
classes/table.C, classes/void.C, classes/xdoc.C,
include/pa_db_connection.h, include/pa_request.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, main/pa_request.C,
main/pa_sql_driver_manager.C, main/pa_stylesheet_manager.C,
targets/cgi/pool_storage.h: auto closers to sql_connection,
stylesheet_connection auto destroyers to remaining gnome objects
* src/classes/xdoc.C: few comments
2002-01-15 paf
* src/classes/xdoc.C: xdoc file save string
ready. todo: error handling
* src/classes/xdoc.C: xdoc save rewritten using
xmlAllocOutputBuffer less mallocs, more reallocs. less fragmented
result
* src/: classes/xdoc.C, include/pa_charset.h, main/pa_charset.C:
started output options parsing
2002-01-14 paf
* src/classes/xdoc.C: method
* src/: classes/xdoc.C, classes/xnode.C, include/pa_charset.h,
include/pa_pool.h, include/pa_stylesheet_connection.h,
main/main.dsp, main/pa_charset.C, main/pa_globals.C,
main/pa_pool.C, main/pa_stylesheet_manager.C, types/pa_vxdoc.h:
xslt transform0. TODO: use output options handle errors
* src/classes/: xdoc.C, xnode.C: ^xdoc.file
2002-01-11 paf
* src/: include/pa_opcode.h, main/compile.tab.C, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/execute.C:
partial logical && || evaluation
* src/classes/xnode.C: xpath selectNodes
* src/: classes/xnode.C, include/pa_charset.h: xpath selectNode 3:
string/number/bool
* src/classes/xnode.C: xpath selectNode 2
* src/: classes/xnode.C, include/pa_charset.h, main/pa_charset.C:
xpath selectNode 1
2002-01-10 paf
* src/classes/xnode.C: xpath selectNode -100 [just written]
* src/: classes/xdoc.C, classes/xnode.C, include/pa_charset.h,
include/pa_exception.h, include/pa_pool.h, main/pa_charset.C,
main/pa_pool.C: GdomeDOMString_auto_ptr c++ wrapper [calls
refcounter]
2001-12-29 paf
* src/: classes/xdoc.C, include/pa_exception.h, main/pa_charset.C,
main/pa_exception.C, main/pa_globals.C: xdoc ^set ^string with
glib works 0
2001-12-28 paf
* src/: classes/xdoc.C, include/pa_charset.h, main/pa_charset.C,
main/pa_exception.C: started glib transcoders
* src/main/pa_globals.C: renamed gdome to libgdome.dll
* src/: classes/classes.dsp, classes/mail.C, classes/xdoc.C,
classes/xnode.C, classes/xnode.h, include/pa_exception.h,
include/pa_globals.h, main/compile.tab.C, main/main.dsp,
main/pa_charset.C, main/pa_dir.C, main/pa_exception.C,
main/pa_exec.C, main/pa_globals.C, main/pa_socks.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp, types/pa_vxdoc.C,
types/pa_vxdoc.h, types/pa_vxnode.C, types/pa_vxnode.h: gnome
libs just compiled in. no refcounting no xpath no xslt yet
2001-12-27 paf
* src/: include/pa_charset.h, include/pa_common.h,
include/pa_exception.h, include/pa_globals.h, include/pa_pool.h,
main/main.dsp, main/pa_charset.C, main/pa_charsets.C,
main/pa_globals.C, main/pa_pool.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, types/pa_vxdoc.C, types/pa_vxdoc.h,
types/pa_vxnode.C, types/pa_vxnode.h, types/types.dsp: going away
from xalan&xerces, started the process. globals [initialization
pool [charset update charset [transcodings vxnode vxdoc [DOM
calls
* src/classes/Makefile.am: going away from xalan&xerces, not needed
anymore
2001-12-26 paf
* src/: include/pa_charset.h, include/pa_charsets.h,
main/pa_charset.C, main/pa_charsets.C, main/pa_request.C: charset
key globalized [bug]
2001-12-25 paf
* src/: classes/mail.C, classes/table.C, include/pa_string.h,
main/pa_string.C: table set & append changed splitting languages,
separators now can be clean AND as-is same to mail command line
$MAIN:MAIL.progX arguments
2001-12-24 paf
* src/classes/mail.C: one parted text messages - no multipart
mime-type anymore. for convinient if $.attach-ments
* src/: classes/hashfile.C, classes/op.C, main/pa_db_table.C,
main/pa_string.C: read from cache size check updated
* src/main/: pa_string.C: String::join_chain another ugly bug :(
2001-12-21 paf
* src/classes/date.C: date:sql-string now returns localtime
* src/main/pa_request.C: $result in @main actually not working, to
hell with it for now
* src/: include/pa_request.h, main/execute.C, main/pa_request.C,
types/pa_vmethod_frame.h, types/pa_wcontext.h: $result in @main
@postprocess @exception
* src/main/execute.C: junction evaluation canceled - endless
recursion detected
2001-12-19 paf
* src/main/pa_charset.C: charset->charset transcoding via unicode
intermediate
* src/main/pa_request.C: CLASS_PATH now / = DOCUMENT_ROOT
* src/classes/hashfile.C: ^hashfile.open DB_HOME now relative
* src/classes/op.C: ^cache keypath now relative
* src/classes/mail.C: changed weighting prior to sort
* src/: classes/mail.C, include/pa_config_fixed.h: to/from 0 check
were missing
2001-12-17 paf
* src/main/pa_charset.C: ifndef XML were bad type
* src/: include/pa_db_table.h, main/pa_db_table.C: db_table used
outdated unset services_pool
* src/: classes/mail.C, include/pa_charsets.h, include/pa_string.h,
main/pa_charsets.C, main/untaint.C, types/pa_vrequest.C,
types/pa_vresponse.C: ^mail:send[ $.charset[zzz] addded
* src/main/untaint.C: allowed space in filespec
* src/main/pa_charset.C: empty bufs transcode [forgot check :(]
* src/classes/image.C: no govno
* src/classes/image.C: govno
2001-12-16 paf
* src/include/: pa_charset.h, pa_charsets.h: forgot to add
* src/: main/Makefile.am, main/pa_charset.C, types/Makefile.am:
charset_connection&manager replaced by charset&charsets
* src/main/pa_charset.C: name_cstr 0
* src/main/untaint.C: uri lang now knows about client/source
charsets
* src/: classes/file.C, classes/math.C, classes/op.C,
classes/string.C, classes/table.C, classes/xdoc.C,
include/pa_array.h, include/pa_cache_managers.h,
include/pa_charset_connection.h, include/pa_charset_manager.h,
include/pa_common.h, include/pa_db_connection.h,
include/pa_db_manager.h, include/pa_db_table.h,
include/pa_dictionary.h, include/pa_exception.h,
include/pa_exec.h, include/pa_globals.h, include/pa_hash.h,
include/pa_opcode.h, include/pa_pool.h, include/pa_request.h,
include/pa_sapi.h, include/pa_socks.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_string.h, include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
include/pa_transcoder.h, main/compile_tools.h, main/main.dsp,
main/pa_charset.C, main/pa_charset_connection.C,
main/pa_charset_manager.C, main/pa_charsets.C, main/pa_globals.C,
main/pa_pool.C, main/pa_request.C, main/pa_string.C,
main/pa_transcoder.C, main/untaint.C, types/pa_vfile.C,
types/pa_vform.C, types/pa_vform.h, types/pa_vrequest.C,
types/pa_vrequest.h, types/pa_vresponse.C, types/pa_vresponse.h,
types/types.dsp: introducing Charset
2001-12-14 paf
* src/: include/pa_request.h, include/pa_transcoder.h,
main/pa_request.C, main/pa_transcoder.C, types/pa_vform.C,
types/pa_vform.h: transcodeToUTF8[were FromUTF8] for forms todo:
uri lang
* src/main/pa_transcoder.C: transcodeToUTF8, now form&uri lang
* src/targets/cgi/Makefile.am: -I../../pcre to .am
* src/: include/pa_globals.h, main/pa_globals.C: removed unused
defalts_name global
* src/: include/pa_charset_connection.h, include/pa_pool.h,
include/pa_request.h, main/main.dsp,
main/pa_charset_connection.C, main/pa_charset_manager.C,
main/pa_request.C, types/Makefile.am, types/pa_vrequest.C,
types/pa_vrequest.h, types/pa_vresponse.h, types/types.dsp,
include/pa_transcoder.h, main/pa_transcoder.C, main/Makefile.am:
changed charset model. now important: $request:charset
$response:charset while $response:content-type.charset become
unimportant [informational]
2001-12-13 paf
* src/targets/: cgi/pa_pool.C, isapi/pa_pool.C: EOL@EOF
* src/classes/xdoc.C: rewritten auto_ptr part other way2, because
of stupid gcc 2.96 /usr/include/g++-3/memory:40: candidates are:
auto_ptr<_Tp> &auto_ptr<_Tp>::operator= (auto_ptr<_Tp> &) [with
_Tp = FormatterListener] /usr/include/g++-3/memory:48:
auto_ptr<_Tp> &auto_ptr<_Tp>::operator= (auto_ptr<_Tp1> &)
[with _Tp1 = FormatterListener, _Tp = FormatterListener]
* src/: classes/xdoc.C, main/pa_sql_driver_manager.C: rewritten
auto_ptr part other way, because of stupid gcc 2.96
/usr/include/g++-3/memory:40: candidates are: auto_ptr<_Tp>
&auto_ptr<_Tp>::operator= (auto_ptr<_Tp> &) [with _Tp =
FormatterListener] /usr/include/g++-3/memory:48:
auto_ptr<_Tp> &auto_ptr<_Tp>::operator= (auto_ptr<_Tp1> &) [with
_Tp1 = FormatterListener, _Tp = FormatterListener]
* src/classes/xdoc.C: removed extra inc
* src/targets/cgi/: pa_pool.C, parser3.C: msvc heap debugging flag
* src/include/pa_types.h: msvc head debugging flag
* src/classes/xdoc.C: freed up listener
* src/classes/string.C: change msg '... code is not code'
* src/: main/pa_db_connection.C, main/pa_db_manager.C,
main/pa_sql_driver_manager.C, main/pa_stylesheet_manager.C,
targets/cgi/pool_storage.h: couple cache expiratiors were wrong
[past/future prob]
* src/: include/pa_cache_managers.h, include/pa_charset_manager.h,
include/pa_config_fixed.h, include/pa_db_manager.h,
include/pa_sql_driver_manager.h, include/pa_stylesheet_manager.h,
main/pa_cache_managers.C, main/pa_globals.C: ~Cache_managers
* src/: include/pa_config_fixed.h, main/pa_common.C,
main/pa_string.C: removed signed mismatch warnings
* src/targets/: cgi/parser3.C, isapi/parser3isapi.C: removed
'expires' from header outputs
* src/main/pa_string.C: string::recustruct erroreusly used outdated
row ptr
* src/classes/file.C: file::cgi bug, request_method were passed to
SERVER_PROTOCOL but SERVER_PROTOCOL were forgotten
* src/classes/xdoc.C: lang list updated
2001-12-10 paf
* src/classes/math.C: ^math:random(n) now yields[0;n) not [0;n]
* src/main/untaint.C: FILE_SPEC untainting changed so that one can
erase files like that, knowing their full name introducing //
theoretical problem with, for instance, "_2B" and "." fragments,
// they would yield the same // because
need_file_encode('_')=false // but we need to delete such files
somehow, getting names from ^index
* src/main/pa_string.C: ^string.replace bug fixed [bad
string::join_chank break]
2001-12-07 paf
* src/: classes/hashfile.C, classes/op.C, classes/table.C,
include/pa_common.h, include/pa_config_auto.h.in,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_db_table.h, include/pa_request.h, main/pa_common.C,
main/pa_db_table.C, main/pa_request.C, main/pa_string.C,
types/pa_vhashfile.C: merged from r14_simple_cache
* src/main/pa_string.C: stupid sparc architecture failed to access
short at odd address 0x311f0 :
lduh [ %i2 + 1 ], %l0
bus error, fixed that
* src/main/pa_string.C: strange string deserialize bug on
client[pmts], a bit shortened,
* src/include/pa_config_auto.h.in: makes
* src/: include/pa_common.h, include/pa_config_fixed.h,
include/pa_config_includes.h, main/pa_common.C: exclusive lock
file write shared lock file read
* src/: classes/op.C, include/pa_common.h,
include/pa_config_fixed.h, main/pa_common.C: ^cache operator
2001-12-06 paf
* src/: classes/op.C, classes/table.C, include/pa_request.h,
main/pa_request.C: #ifdef RESOURCES_DEBUG
* src/: main/compile.tab.C, targets/cgi/parser3.C: removed debug
info
* src/classes/hashfile.C: removed transaction from ^cache
2001-12-05 paf
* src/targets/cgi/: parser3.C: fatal error reporting fixed. in
IIS5 there were a prob with illegal call check
2001-12-04 paf
* src/: classes/op.C, classes/table.C, include/pa_request.h,
main/pa_request.C: measures to log
2001-11-23 paf
* src/: classes/hashfile.C, classes/table.C, include/pa_db_table.h,
main/pa_common.C, main/pa_db_table.C, main/pa_string.C,
types/pa_vhashfile.C: merged from _0014, 1
* src/: classes/hashfile.C, classes/table.C, include/pa_db_table.h,
main/pa_common.C, main/pa_db_table.C, types/pa_vhashfile.C:
hashfile bugfix2 more wrong sizes. ^cache behaviour changed: if
^cache(33) would change
0660 bits in file_write & hashfile create
* src/main/: pa_db_table.C, pa_string.C: cache bugfix [wrong types
after pa_string optimization]
2001-11-22 paf
* src/: classes/table.C, include/pa_table.h, main/pa_table.C:
table.offset[whence]
* src/classes/op.C: process cstr(,connection)
* src/classes/op.C: process now gets its body on current language,
not as-is
* src/main/untaint.C: ORIGINS mode removed UHTML
* src/main/untaint.C: ORIGINS mode was bad - forgot about optimize
bit
* src/classes/xdoc.C: cached xslt [removed nocache forcing]
2001-11-21 paf
* src/: classes/xdoc.C, types/pa_vxdoc.C, types/pa_vxdoc.h:
buffer_size
checked all that
* src/classes/op.C: ^untaint{body} as-is default now
* src/: main/execute.C, types/pa_vclass.h, types/pa_vobject.h,
types/pa_vstateless_class.h, types/pa_vstateless_object.h: merged
with no_bad_constructors_try
* src/: main/execute.C, types/pa_vclass.h, types/pa_vobject.h,
types/pa_vstateless_class.h, types/pa_vstateless_object.h: fixed
this: $bred[^string::length[]] $bred[^response::clear[]]
$bred[^int::int[]]
now VObject creation moved into overriden
VClass::create_new_value, thus 0 from create_new_value means that
class has no ctors
2001-11-13 paf
* src/classes/classes.C: returned accedently removed if in foreach
callbacks [when hash no-0-restructure]
2001-11-12 paf
* src/main/pa_pool.C: changed xdoc createXXX politics, now string
passed as-is to method, xalan makes & into & itself
* src/classes/date.C: date.roll parser2 alg used
* src/: classes/classes.C, classes/hash.C, classes/xdoc.C,
include/pa_hash.h, main/pa_db_connection.C, main/pa_db_manager.C,
main/pa_dictionary.C, main/pa_hash.C,
main/pa_sql_driver_manager.C, main/pa_stylesheet_manager.C: hash
now does not containt 0 values. put 0 actullay removes. no check
on 0 value in foreach now required
2001-11-11 paf
* src/sql/pa_sql_driver.h: removed extra constructor, doc
* src/: main/pa_sql_driver_manager.C, sql/pa_sql_driver.h: CRLF
* src/: main/pa_sql_driver_manager.C, sql/pa_sql_driver.h: sql
driver initialize not const
2001-11-10 paf
* src/main/pa_exec.C: doc
2001-11-09 paf
* src/classes/: string.C, xdoc.C: xdoc::set{code} now untaints
param properly
* src/classes/string.C: string.save now does untainting before
saving
* src/main/pa_common.C: line endings fixing fixed last piece[was
still cstr oriented]
* src/: include/pa_common.h, main/pa_common.C, types/pa_vform.C:
line endings fixing got rid of cstr, now must work ok with post
multipart
* src/types/pa_vform.C: line endings fixed at post / multipart /
not file also now
2001-11-08 paf
* src/: include/pa_cache_managers.h, include/pa_charset_manager.h,
include/pa_db_manager.h, include/pa_sql_driver_manager.h,
include/pa_stylesheet_manager.h, main/pa_charset_manager.C,
main/pa_db_manager.C, main/pa_sql_driver_manager.C,
main/pa_stylesheet_manager.C: restructured Cache manager to be
simple parent, not second parent [gcc 2.96 strangly refused to
call virtual from second parent]
* src/: include/pa_common.h, main/Makefile.am,
targets/cgi/pa_pool.C: makes
* src/: include/pa_request.h, main/pa_request.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C: apache
'status' class enabler
ParserStatusAllowed
* src/: include/pa_cache_managers.h, include/pa_charset_manager.h,
include/pa_db_manager.h, include/pa_sql_driver_manager.h,
include/pa_stylesheet_manager.h, main/main.dsp,
main/pa_cache_managers.C, main/pa_charset_manager.C,
main/pa_db_manager.C, main/pa_globals.C, main/pa_request.C,
main/pa_sql_driver_manager.C, main/pa_stylesheet_manager.C,
types/pa_vstatus.h: cache_managers, maybe-expiring every request
todo: apache 'status' class enabler
2001-11-05 paf
* src/main/: pa_db_connection.C, pa_db_manager.C: expiration from
debug to normal
* src/main/: pa_db_connection.C, pa_db_manager.C, pa_request.C:
hence i removed skipping 0 values in hash::for_each-es we need to
check cleaned cache items manually. few more checks.
expiring to 0 time was wrong, changed to 'now' time
* src/targets/cgi/parser3.C: read can return 0, that means sort of
sig_pipe on freebsd [moko's experiments]. checked that in cgi,
on apache already done :)
* src/main/: pa_db_connection.C, pa_db_manager.C: hence i removed
skipping 0 values in hash::for_each-es we need to check cleaned
cache items manually
* src/main/: pa_db_connection.C, pa_db_table.C:
parser_multithreaded check was wrong
* src/: classes/classes.C, classes/classes.h, classes/date.C,
classes/double.C, classes/file.C, classes/form.C, classes/hash.C,
classes/hashfile.C, classes/image.C, classes/int.C,
classes/mail.C, classes/math.C, classes/op.C, classes/response.C,
classes/string.C, classes/table.C, classes/void.C,
classes/xdoc.C, classes/xnode.C, classes/xnode.h,
include/pa_array.h, include/pa_charset_connection.h,
include/pa_charset_manager.h, include/pa_common.h,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_db_connection.h, include/pa_db_manager.h,
include/pa_db_table.h, include/pa_dictionary.h, include/pa_dir.h,
include/pa_exception.h, include/pa_exec.h, include/pa_globals.h,
include/pa_hash.h, include/pa_opcode.h, include/pa_pool.h,
include/pa_pragma_pack_begin.h, include/pa_pragma_pack_end.h,
include/pa_request.h, include/pa_sapi.h, include/pa_socks.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stack.h, include/pa_string.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, include/pa_table.h,
include/pa_threads.h, include/pa_types.h, main/compile.C,
main/compile.tab.C, main/compile_tools.C, main/compile_tools.h,
main/execute.C, main/pa_array.C, main/pa_charset_connection.C,
main/pa_charset_manager.C, main/pa_common.C,
main/pa_db_connection.C, main/pa_db_manager.C,
main/pa_db_table.C, main/pa_dictionary.C, main/pa_dir.C,
main/pa_exception.C, main/pa_exec.C, main/pa_globals.C,
main/pa_hash.C, main/pa_pool.C, main/pa_request.C,
main/pa_socks.C, main/pa_sql_driver_manager.C,
main/pa_status_provider.C, main/pa_string.C,
main/pa_stylesheet_manager.C, main/pa_table.C, main/untaint.C,
sql/pa_sql_driver.h, targets/cgi/pa_pool.C,
targets/cgi/pa_threads.C, targets/cgi/parser3.C,
targets/cgi/pool_storage.h, targets/isapi/pa_pool.C,
targets/isapi/pa_threads.C, targets/isapi/parser3isapi.C,
targets/isapi/pool_storage.h, types/pa_valiased.C,
types/pa_valiased.h, types/pa_value.h, types/pa_vbool.h,
types/pa_vclass.h, types/pa_vcode_frame.h, types/pa_vcookie.C,
types/pa_vcookie.h, types/pa_vdate.h, types/pa_vdouble.h,
types/pa_venv.h, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vhash.h,
types/pa_vhashfile.C, types/pa_vhashfile.h, types/pa_vimage.C,
types/pa_vimage.h, types/pa_vint.h, types/pa_vjunction.h,
types/pa_vmath.h, types/pa_vmethod_frame.h, types/pa_vobject.h,
types/pa_vrequest.C, types/pa_vrequest.h, types/pa_vresponse.h,
types/pa_vstateless_class.C, types/pa_vstateless_class.h,
types/pa_vstateless_object.h, types/pa_vstatus.h,
types/pa_vstring.C, types/pa_vstring.h, types/pa_vtable.C,
types/pa_vtable.h, types/pa_vvoid.h, types/pa_vxdoc.C,
types/pa_vxdoc.h, types/pa_vxnode.C, types/pa_vxnode.h,
types/pa_wcontext.C, types/pa_wcontext.h, types/pa_wwrapper.h:
$status:db fixed used not initialized in db_connection & db_table
* src/: include/pa_charset_connection.h, main/pa_charset_manager.C:
$status:charset
* src/: classes/xdoc.C, include/pa_db_connection.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h, main/pa_stylesheet_manager.C,
types/pa_vstatus.h: $status:stylesheet
* src/: include/pa_charset_manager.h, include/pa_db_manager.h,
include/pa_request.h, include/pa_sql_connection.h,
include/pa_sql_driver_manager.h, include/pa_stylesheet_manager.h,
main/main.dsp, main/pa_charset_manager.C, main/pa_common.C,
main/pa_db_manager.C, main/pa_globals.C, main/pa_request.C,
main/pa_sql_driver_manager.C, main/pa_status_provider.C,
main/pa_stylesheet_manager.C, types/pa_vstatus.h,
types/pa_vxnode.C, types/types.dsp: started status parser class
2001-11-01 paf
* src/include/pa_config_auto.h.in: makes
* src/main/pa_hash.C: removed old extra include
* src/: classes/math.C, include/pa_common.h: HAVE_TRUNC HAVE_ROUND
checks [for hp, there are such in math.h]
* src/classes/op.C: ^for endless loop check strightened
* src/: classes/hash.C, classes/op.C, main/execute.C: changed root
behavior in native calls. it left unchanged, so ^for ^foreach &
co can use r.root to write their i & key,value there
* src/classes/op.C: detected for var storage bug, fixed.
todo:foreach
* src/: classes/hash.C, classes/xdoc.C, classes/xnode.C,
include/pa_hash.h, main/pa_hash.C, main/pa_request.C,
types/pa_vhash.h, types/pa_vxnode.C: hash locking disabled
changing of hash inside of foreach
* src/: classes/hash.C, classes/hashfile.C, types/pa_vhashfile.C:
^hashfile.foreach[key|value]{body}[[separator]|{separator}] prev
were hash.foreach
* src/: classes/hash.C, classes/op.C, types/pa_vmethod_frame.h,
types/pa_vstring.C, types/pa_vstring.h:
^foreach[key|value]{body}[[separator]|{separator}]
* src/: classes/hash.C, include/pa_hash.h, main/pa_hash.C,
types/pa_vcookie.C: ^hash.delete[key]
2001-10-31 paf
* src/main/: compile.C, pa_common.C: completely empty file now
considered "read", not ignored [not perfect trick used]
* src/main/pa_common.C: simplier common ifdefs
* src/main/pa_common.C: typing bug in common - bad ifdeff
* src/main/pa_db_connection.C: z
* src/main/: pa_db_connection.C, pa_sql_driver_manager.C: //
lockdetector flags
dbenv.lk_detect=DB_LOCK_RANDOM;
* src/main/pa_sql_driver_manager.C: hiding passwords and addresses
from accidental show [imagine user forgot @exception]
* src/classes/table.C: ^table.save[[nameless|+append;]path]
* src/: classes/file.C, classes/image.C, classes/mail.C,
classes/string.C, classes/xnode.C, include/pa_common.h,
main/pa_common.C: ^string.save[[append;]path]
* src/: include/pa_opcode.h, main/compile.tab.C, main/compile.y,
main/execute.C: \ in expression: int divide 10/3=3
* src/types/pa_vhashfile.h: hashfile ^delete to do something only
inside of ^cache
* src/: include/pa_threads.h, main/pa_db_connection.C,
main/pa_db_table.C, targets/cgi/pa_threads.C,
targets/isapi/pa_threads.C: libdb DB_THREAD flag only when really
needed
2001-10-30 paf
* src/: classes/classes.dsp, main/main.dsp,
targets/cgi/parser3.dsp, targets/isapi/parser3isapi.dsp,
types/types.dsp: enabled debug incremental compile
* src/: include/pa_common.h, main/pa_common.C, types/pa_vform.C:
form post data line endings not reformatted now.
* src/types/: pa_vform.C, pa_vform.h: AppendFormEntry length param
now required [had bug when file= has no value]
* src/main/: pa_db_connection.C, pa_db_manager.C, pa_db_table.C,
pa_exec.C, pa_request.C, pa_sql_driver_manager.C, pa_string.C:
cstr(asis) default param removed
* src/classes/xdoc.C: rolled back {} in xdoc.createTextNode for now
* src/classes/xdoc.C: rolled back {} in xdoc.createElement for now
* src/include/pa_dir.h: LOAD_DIR fixed
* src/types/pa_vform.C: VForm::AppendFormEntry {length convention
was broken} fix_line_breaks
* src/include/: pa_config_fixed.h, pa_pragma_pack_begin.h,
pa_pragma_pack_end.h, pa_string.h, pa_types.h: String & Origin
packed with #pragma pack
* src/include/pa_config_auto.h.in: pragma detection
2001-10-29 paf
* src/types/pa_wcontext.h: bitfield syntax stricter
* src/: classes/file.C, types/pa_vimage.C: image&file couple stack
string hash.puts
* src/include/pa_sql_connection.h: SQL_CONNECTION_FUNC_GUARDED name
* src/include/pa_sql_connection.h: there were one wrong
SQL_CONNECTION_FUNC_GUARDED [failed]
* src/targets/isapi/pa_pool.C: added isapi&apache real_malloc debug
param.someday either ifdef or remove it
* src/targets/cgi/: pa_pool.C, parser3.C: removed debug defines
* src/main/untaint.C: optimizing returned after debugging
* src/: include/pa_string.h, include/pa_types.h, main/pa_string.C,
main/untaint.C: memory hunging #pragma pack(1)
16 419 844 13 169 394
* src/: include/pa_string.h, main/pa_string.C, main/untaint.C,
targets/cgi/pa_pool.C: String size_t replace to uint in proper
places [todo:Array]
* src/: main/execute.C, targets/cgi/pa_pool.C,
targets/cgi/parser3.dsp, types/pa_wcontext.h,
types/pa_wwrapper.h: debugging memory WContext flags to bits
total 5 652 652/158731 total 5 469 332/158731
* src/: include/pa_array.h, main/pa_array.C: debugging memory
Array:: without cache in get/put now
[Mon Oct 29 18:23:02 2001] total 5 796 092/158731 [Mon Oct 29
18:25:27 2001] total 5 652 652/158731
* src/: include/pa_string.h, main/pa_string.C,
targets/cgi/pa_pool.C: debugging memory String::fused_rows func
now
[Mon Oct 29 17:55:45 2001] total 5917436/158731 [Mon Oct 29
18:11:53 2001] total 5796092/158731
* src/: classes/file.C, include/pa_hash.h, include/pa_string.h,
main/pa_globals.C, targets/cgi/pa_pool.C: debugging memory hash
key ref now
[Mon Oct 29 16:01:17 2001] total 17050496/202647 [Mon Oct 29
17:11:17 2001] total 16867948/202658
* src/: classes/file.C, classes/image.C, classes/string.C,
classes/xdoc.C, include/pa_pool.h, include/pa_string.h,
main/execute.C, main/pa_array.C, main/pa_common.C,
main/pa_hash.C, main/pa_sql_driver_manager.C, main/pa_string.C,
main/untaint.C, targets/cgi/pa_pool.C, targets/cgi/parser3.C,
types/pa_vcookie.C, types/pa_vstring.h: debuggging memory.
string::as_int/double now usually uses stack, not heap [200K out
of 17M :)] VString(String&) not copies reference [29M -> 17M]
* src/main/pa_sql_driver_manager.C: ping to have services [old
hiding bug]
* src/Makefile.am: .am order
* src/: include/pa_array.h, include/pa_charset_manager.h,
include/pa_db_connection.h, include/pa_db_manager.h,
include/pa_db_table.h, include/pa_hash.h, include/pa_request.h,
include/pa_sql_driver_manager.h, include/pa_stylesheet_manager.h,
include/pa_threads.h, types/pa_valiased.h, types/pa_vhashfile.h,
types/pa_vstateless_class.h, types/pa_wcontext.h: gcc 3.0.1
required "friend class"
../include/pa_request.h:51: friend declaration requires
class-key, i.e. `friend class Temp_lang'
* src/: include/pa_exception.h, include/pa_sql_connection.h,
main/pa_exception.C, main/pa_sql_driver_manager.C,
sql/pa_sql_driver.h: sql driver impl changed in _throw part.
the idea is to #1 jump to C++ some function to main body, where
every function stack frame has exception unwind information and
from there... #2 propagate_exception()
2001-10-28 paf
* src/main/pa_db_connection.C: removed old consts
* src/main/pa_db_connection.C: expire table [was accidently pasted
with wrong type/cast]
* src/main/: pa_db_connection.C, pa_db_table.C: exception
translation
* src/: classes/Makefile.am, targets/cgi/Makefile.am: db makes.
remember to build DB2 with -fexceptions!!!
* src/main/pa_db_table.C: DB_RMW defed
* src/: include/pa_config_auto.h.in, include/pa_config_fixed.h,
include/pa_db_connection.h, include/pa_db_manager.h,
include/pa_db_table.h, main/pa_db_connection.C,
main/pa_db_table.C: db2 on linux with DB 2.4.14: (6/2/98)
2001-10-27 paf
* src/: classes/hashfile.C, include/pa_db_connection.h,
include/pa_db_table.h, main/pa_db_connection.C,
main/pa_db_manager.C, main/pa_db_table.C, main/pa_globals.C,
types/pa_vhashfile.C: DB2 ifdefs
* src/: classes/Makefile.am, include/pa_config_fixed.h,
main/Makefile.am, targets/cgi/Makefile.am, types/Makefile.am:
makes with DB2
* src/: include/pa_config_auto.h.in, main/Makefile.am,
types/Makefile.am: makes db
* src/: main/pa_globals.C, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.dsp: vc projects libdb ifdefed into
globals.C
* src/: classes/hashfile.C, include/pa_db_connection.h,
include/pa_db_table.h, main/pa_db_connection.C,
main/pa_db_table.C: ^hashfile.clear[]
* src/classes/classes.awk: no $ in var names
* src/main/: pa_db_connection.C, pa_db_manager.C: db expiration
connection&table [forgotten calls]
2001-10-26 paf
* src/main/pa_db_connection.C: db checkpoints
* src/: include/pa_db_connection.h, main/pa_db_connection.C: db
checkpoints
* src/classes/xdoc.C: xdoc createTextNode createElement UL_XML
default. but entities still reparsed. todo: tothink
* src/main/pa_db_connection.C: db recover mech 2
* src/: classes/hashfile.C, include/pa_db_connection.h,
include/pa_db_manager.h, include/pa_db_table.h,
include/pa_hash.h, main/pa_db_connection.C, main/pa_db_manager.C,
main/pa_db_table.C, main/pa_hash.C, types/pa_vhashfile.C,
types/pa_vhashfile.h: db connections & tables now cached at
create time & multithreaded
* src/: classes/xdoc.C, types/pa_vxdoc.h: transform2 for
parsed_source
* src/main/pa_db_connection.C: about to remove connection from
vhashfile
* src/: main/pa_db_table.C, classes/hashfile.C: db: child
transaction commit/rollback responsibility left to parent [as it
sould - else there were a bug with double free]
* src/include/pa_db_table.h: db: child transaction commit/rollback
responsibility left to parent [as it sould - else there were a
bug with double free]
2001-10-25 paf
* src/: classes/hashfile.C, include/pa_common.h,
include/pa_db_connection.h, include/pa_db_manager.h,
main/main.dsp, main/pa_db_connection.C, main/pa_db_manager.C,
types/pa_vhashfile.C, types/pa_vhashfile.h,
include/pa_db_table.h, main/pa_db_table.C: started db_home
[multiple, cached] todo: autorecover [tried, but not succeded,
yet]
* src/include/pa_dir.h: ancient gpf on dir not found fixed
* src/: include/pa_db_connection.h, main/pa_db_manager.C:
transaction parent passed
2001-10-24 parser
* src/classes/Makefile.am: makes
* src/targets/: cgi/pool_storage.h, isapi/parser3isapi.C,
isapi/pool_storage.h: pool_storage fixed
* src/: include/pa_common.h, main/pa_common.C, types/pa_vform.C,
types/pa_vform.h: form fix_line_breaks
* src/targets/cgi/pool_storage.h: makes
* src/: classes/Makefile.am, targets/cgi/Makefile.am,
targets/cgi/pool_storage.h: makes
* src/sql/pa_sql_driver.h: version
* src/: include/pa_common.h, main/Makefile.am, main/pa_common.C,
types/pa_vform.C, types/pa_vform.h: .am
* src/main/: pa_db_connection.C, pa_db_manager.C: hashfile setted
this: DB_RMW Acquire write locks instead of read locks when doing
the retrieval. Setting this flag may decrease the likelihood of
deadlock during a read-modify-write cycle by immediately
acquiring the write lock during the read part of the cycle so
that another thread of control acquiring a read lock for the same
item, in its own read-modify-write cycle, will not result in
deadlock
* src/targets/isapi/parser3isapi.dsp: doc
* src/: classes/hashfile.C, types/pa_vhashfile.h: hashfile 1
* src/: classes/hashfile.C, include/pa_request.h: hashfile.cache 0
* src/: classes/hashfile.C, include/pa_db_connection.h,
main/pa_db_connection.C: hashfile expired deleted from db when
get & iterate
* src/: main/pa_db_connection.C, types/pa_vhashfile.C: hashfile
expiring 1
* src/types/: pa_vhashfile.C, pa_vhashfile.h: hashfile expiring 0
* src/: main/pa_db_connection.C, types/pa_vhashfile.C:
db_connection not bothers with key when not returning expired
data
* src/: include/pa_db_connection.h, main/pa_db_connection.C,
types/pa_vhashfile.C: db_cursor constructor public now
* src/: include/pa_db_connection.h, main/pa_db_connection.C,
types/pa_vhashfile.C, types/pa_vhashfile.h: hashfile data
stamped, todo: put_element analize
* src/: include/pa_db_connection.h, include/pa_string.h,
main/pa_db_connection.C, main/pa_string.C: hashfile pieced
serialize. todo stamp
2001-10-23 parser
* src/: classes/file.C, classes/hash.C, classes/hashfile.C,
classes/image.C, classes/mail.C, classes/response.C,
classes/string.C, classes/table.C, classes/xdoc.C,
include/pa_config_fixed.h, include/pa_db_connection.h,
main/pa_common.C, main/pa_db_connection.C, main/pa_request.C,
types/pa_value.h, types/pa_vcookie.C, types/pa_vhash.h,
types/pa_vhashfile.C, types/pa_vhashfile.h, types/pa_vresponse.h,
types/pa_vtable.C: ^hashfile.hash[]
* src/: classes/hashfile.C, classes/xdoc.C,
include/pa_config_fixed.h, main/pa_db_manager.C,
main/pa_globals.C: ifdefs so it compiled without db
* src/: classes/hashfile.C, include/pa_db_connection.h,
include/pa_db_manager.h, main/pa_db_connection.C,
main/pa_db_manager.C, types/pa_vhashfile.h:
^hashfile.transaction{code} ^hashfile:clear[filename]
^hashfile.delete[key]
2001-10-22 parser
* src/targets/: cgi/pa_pool.C, cgi/parser3.C, cgi/parser3.dsp,
cgi/pool_storage.h, isapi/pool_storage.h: cgi += pool cleanups
* src/: classes/classes.dsp, classes/hashfile.C, classes/xdoc.C,
classes/xnode.C, include/pa_charset_connection.h,
include/pa_db_connection.h, include/pa_db_manager.h,
include/pa_exception.h, include/pa_sapi.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
include/pa_stylesheet_connection.h,
include/pa_stylesheet_manager.h,
include/pa_xslt_stylesheet_manager.h, main/main.dsp,
main/pa_db_connection.C, main/pa_db_manager.C,
main/pa_exception.C, main/pa_globals.C, main/pa_pool.C,
main/pa_sql_driver_manager.C, main/pa_stylesheet_manager.C,
main/pa_xslt_stylesheet_manager.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, types/pa_vhashfile.C,
types/pa_vhashfile.h, types/pa_vxdoc.C, types/pa_vxnode.C,
types/types.dsp: hashfile 0
* src/types/pa_vhashfile.C: z
* src/: classes/classes.dsp, classes/hashfile.C,
include/pa_config_fixed.h, main/execute.C,
targets/cgi/parser3.dsp, types/pa_vhashfile.C,
types/pa_vhashfile.h, types/types.dsp: hashfile -100
* src/targets/isapi/parser3isapi.C: SEH minor ifdef changes
* src/: include/pa_exception.h, include/pa_request.h,
main/execute.C, main/pa_exception.C, main/pa_request.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp,
types/pa_vclass.h, types/pa_vobject.h: stack backtrace
2001-10-19 parser
* src/include/pa_pool.h: header
* src/main/pa_pool.C: auto compiled on gcc
* src/classes/image.C: comment
* src/: include/pa_pool.h, main/pa_common.C: makes
* src/: classes/xdoc.C, classes/xnode.C, classes/xnode.h,
types/pa_vxdoc.C, types/pa_vxdoc.h, types/pa_vxnode.C,
types/pa_vxnode.h: xnode clone got freed
* src/: classes/xdoc.C, classes/xnode.C, include/pa_pool.h,
include/pa_types.h, main/pa_pool.C: first c++ exceptions result:
can free up xalandomstring resulting from pool::transcode
* src/: classes/Makefile.am, classes/xdoc.C, classes/xnode.C,
include/pa_config_fixed.h, include/pa_exception.h,
include/pa_stylesheet_connection.h, main/pa_charset_connection.C,
main/pa_exception.C, main/pa_pool.C, types/pa_vxdoc.C,
types/pa_vxdoc.h, types/pa_vxnode.C, types/pa_vxnode.h: switched
to c++ exceptions 1xml configure fixed to exclude xalan-patch
from non-xml compile
* src/main/pa_request.C: pool:: context - get_context
* src/: classes/classes.h, classes/date.C, classes/double.C,
classes/file.C, classes/form.C, classes/hash.C, classes/image.C,
classes/int.C, classes/mail.C, classes/math.C, classes/op.C,
classes/string.C, classes/table.C, classes/void.C,
include/pa_config_fixed.h, include/pa_exception.h,
include/pa_pool.h, include/pa_request.h, include/pa_types.h,
main/compile.C, main/compile_tools.C, main/execute.C,
main/pa_array.C, main/pa_common.C, main/pa_dictionary.C,
main/pa_exception.C, main/pa_exec.C, main/pa_pool.C,
main/pa_request.C, main/pa_socks.C, main/pa_sql_driver_manager.C,
main/pa_string.C, main/pa_table.C, main/untaint.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C,
types/pa_value.h, types/pa_vbool.h, types/pa_vdouble.h,
types/pa_vfile.h, types/pa_vform.C, types/pa_vhash.h,
types/pa_vint.h, types/pa_vjunction.h, types/pa_vmethod_frame.h,
types/pa_vstateless_class.h, types/pa_vtable.C,
types/pa_wcontext.C, types/pa_wwrapper.h: switched to c++
exceptions 0
* src/classes/classes.awk: $ removed
2001-10-18 parser
* src/types/pa_vcookie.C: cookie:CLASS
* src/main/main.dsp: project
* src/: classes/xdoc.C, types/pa_vxdoc.h, types/pa_vxnode.C: vxdoc
set_document & ctor question "who owns document" solved
* src/: classes/xdoc.C, main/pa_pool.C: extra free removed
* src/: classes/xdoc.C, classes/xnode.C, include/pa_pool.h,
main/pa_pool.C: encoding in dom creating funcs
* src/: classes/xdoc.C, types/pa_vxdoc.h: dom created by create can
be transformed now
* src/classes/xdoc.C: dom created by create can be transformed now
* src/classes/xdoc.C: z
* src/classes/xdoc.C: comment
* src/: classes/xdoc.C, classes/xnode.C, main/compile.tab.C: xdoc
create now uses XercesDocumentBridge, appendChild&co now works
* src/include/pa_stylesheet_connection.h: prev stylesheet destroyed
@ recompile
* src/main/: compile.tab.C, compile.y, pa_request.C: ^: no colon in
$origin @exception[
* src/classes/: xdoc.C, xnode.C: xdoc::create[] now. and all dom
tag names forced to XML lang
* src/: classes/classes.dsp, classes/xdoc.C, types/types.dsp: fiew
leechy-found bugs in code&doc fixed
2001-10-17 parser
* src/: classes/classes.dsp, classes/string.C, main/pa_string.C,
types/pa_vxnode.h, types/types.dsp: string::mid fixed, string.mid
n functionality preserved
* src/types/pa_vimage.h: removed unused vimage::save
2001-10-16 parser
* src/: classes/string.C, main/pa_string.C: $string.mid(p[;n])
* src/classes/: xnode.C: removed few dom returns & changed op.txt
* src/types/: pa_vhash.h, pa_vtable.h: hash can be used as boolean
* src/classes/image.C: image.copy tolerance
* src/classes/image.C: ::CopyResampled made gd2beta+my hands, very
ineffective, but works for small paleted image
* src/types/pa_vimage.C: comment
* src/classes/image.C: gd size/resize bugfix
* src/: classes/classes.dsp, main/main.dsp,
targets/cgi/parser3.dsp, targets/isapi/parser3isapi.dsp,
types/types.dsp: ident >nul 2>&1
* src/main/pa_common.C: \r\n -> \n DOS \r -> \n Macintosh on all
systems
* src/: classes/image.C, types/pa_vimage.h: ^image.copy[source](src
x;src y;src w;src h;dst x;dst y[;dest w[;dest h]])
2001-10-15 parser
* src/main/execute.C: z
* src/classes/: xdoc.C: !::create{qualifiedName}
* src/types/pa_vxnode.C: document_type_node.
!readonly attribute DOMString name
!notation_node.
!readonly attribute DOMString publicId
!readonly attribute DOMString systemId
* src/types/: pa_vcode_frame.h, pa_wcontext.C: code_frame fixed -
::write badly passed string too transparently [failed to
intercept it]
* src/: classes/xdoc.C, classes/xnode.C, include/pa_config_fixed.h,
include/pa_request.h, main/pa_sql_driver_manager.C,
types/pa_vxdoc.C, types/pa_vxdoc.h, types/pa_vxnode.C,
types/pa_vxnode.h: DOM1 major addtion, only few
attributes/methods left
2001-10-13 parser
* src/: main/pa_sql_driver_manager.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C: isapi&cgi couple non-pooled mallocs
in main handler
* src/targets/isapi/pool_storage.h: isapi pool storage reverse
cleanups & frees order
* src/types/pa_vcode_frame.h: couple comments
* src/: main/execute.C, types/pa_vcode_frame.h: vcodeframe made
transparent enough to handle hash if creation&passing
* src/: include/pa_config_fixed.h, main/execute.C,
main/pa_exception.C: noticed that vcodeframe not transparent
enough, would change now
2001-10-12 parser
* src/targets/isapi/parser3isapi.C: xalan&xerces multithread bug
fixed. initialization&free on each thread!
* src/classes/: double.C, int.C, string.C: sql{}[$.default[({})]]
handling changed: now type of default param analized always, not
only at problem time, thus helping early problem spotting
* src/: classes/classes.dsp, classes/xdoc.C, main/compile.tab.C,
main/main.dsp, main/pa_globals.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, targets/isapi/parser3isapi.C,
targets/isapi/parser3isapi.dsp, types/types.dsp: xalan&xerces
multithread bug fixed. initialization&free on each thread!
2001-10-11 parser
* src/classes/xnode.C: xnode.selectSingle now
* src/: classes/xdoc.C, classes/xnode.C, include/pa_exception.h,
include/pa_pool.h, include/pa_stylesheet_connection.h,
main/pa_exception.C, main/pa_pool.C: moved xslt exceptions
convertors out of Pool into Exception
* src/main/pa_string.C: const
* src/: include/pa_string.h, main/pa_string.C: restructured string:
linked pieces of same language together prior to String::replace
* src/classes/hash.C: !^hash.add[addme]
!^hash.sub[subme]
!^a.union[b] = new
!^a.intersection[b] = new
!^a.intersects[b] = bool
* src/classes/hash.C: !^hash::append[append_from]
* src/: classes/hash.C, types/pa_vhash.h:
!^hash::create[[copy_from]]
* src/: classes/string.C, classes/table.C, include/pa_globals.h,
include/pa_string.h, main/pa_globals.C, main/pa_string.C,
main/untaint.C, types/pa_vvoid.h: untaint lang origins table
fixed. got rid of empty_string, which caused errors - it hasnt
exception but somebody[value.bark] tried to throw it on it's pool
* src/include/pa_config_auto.h.in: makes
2001-10-10 parser
* src/: classes/op.C, main/compile.tab.C: ^error[msg]
* src/main/: compile.tab.C, compile.y: ^a[
@next_method << now unclosed ] would be reported here
* src/main/: compile.tab.C, compile.y: ^a[^b] more informative
compile error
2001-10-09 parser
* src/: classes/Makefile.am, main/Makefile.am,
targets/cgi/Makefile.am, types/Makefile.am: makes
* src/classes/Makefile.am: makes
* src/targets/: cgi/parser3.C, isapi/parser3isapi.C: xml transform
win32 errors intercepted [xalan transformer patched and
incorporated]
* src/: classes/classes.dsp, classes/xdoc.C,
include/pa_stylesheet_connection.h, main/main.dsp,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C,
types/pa_vxdoc.h, types/pa_vxnode.h, types/types.dsp: xalan
patches starting
* src/classes/: string.C, table.C: ^string.save[file]
* src/classes/: date.C, table.C: calendar moved to date
* src/classes/: op.C, table.C: table.hash[key field;value field(s)
string/table] now
* src/classes/: op.C, table.C: z
* src/: classes/op.C, classes/table.C, types/pa_vfile.h,
types/pa_vimage.h, types/pa_vjunction.h, types/pa_vxdoc.h,
types/pa_vxnode.h: table:menu & op for delims made allowed not to
be code [be string..]
* src/classes/: double.C, file.C, image.C, int.C, op.C, string.C,
table.C: lots of
params->as_int/double/as_string/as_junction/as_no_junction
messages added
2001-10-08 parser
* src/: classes/date.C, classes/image.C, classes/string.C,
classes/table.C, classes/void.C, include/pa_request.h:
params->as_int/double message added
* src/classes/image.C: image:circle [and round arc] uses Bresenham
* src/: classes/image.C, types/pa_vcookie.C, types/pa_vimage.C:
image:sector removed image:html internal "line-*" attribs
* src/: classes/image.C, include/pa_common.h, main/pa_common.C,
types/pa_vcookie.C: cookie urlencoded [netscape doc reread]
* src/types/pa_vcookie.C: removing cookie made more netscape-like
way
* src/: classes/file.C, classes/form.C, main/pa_common.C,
main/untaint.C: header untainting to UL_HTTP_HEADER,
UL_MAIL_HEADER made nonforced [only tainted pieces]
* src/: include/pa_common.h, main/pa_common.C, main/untaint.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C: remove_crlf
@ SAPI::log
* src/main/untaint.C: \r to ' ' in origins mode
* src/classes/xdoc.C: xdoc:load exceptions intercepted [like in
set]
* src/: classes/xdoc.C, include/pa_config_fixed.h,
main/compile.tab.C, types/pa_vxdoc.h: parsedSource produced by
nonstandard liaison freed up
2001-10-07 parser
* src/: include/pa_config_fixed.h, main/compile.tab.C: restored
project
2001-10-05 parser
* src/: classes/xdoc.C, include/pa_pool.h, main/main.dsp,
main/pa_pool.C: changed xdoc:set to prevent SAXParseException
from outputing to cerr. lots of "todos"
* src/main/untaint.C: http_header tainting more gentle with
enquoting now
* src/: classes/xdoc.C, include/pa_dictionary.h, main/main.dsp,
main/pa_dictionary.C, main/pa_string.C, types/pa_vxdoc.h: started
xml errorhandler. fixed string.replace a little, read @test
* src/main/pa_string.C: found replace bug - first_that_starts(char
*) does not have limit, and looks further eos, fixing....
* src/doc/: doxygen.cfg, html2chm.cmd, sources2html.cmd: paths
* src/: classes/xdoc.C, main/compile.tab.C: xdoc.transform now
* src/main/: pa_charset_connection.C: ctype another mem clear
bugfix
* src/main/: compile.tab.C, compile.y: disabled ^literals in names
$result[^[$p^]z] now works fine
* src/: include/pa_hash.h, main/pa_hash.C: Hash::size() calculated
wrong. fixed it
* src/main/pa_charset_connection.C: unicode zero pair at the beging
of totable appered to be vital
2001-10-04 parser
* src/classes/image.C: ^image.length[text]
2001-10-03 parser
* src/main/pa_request.C: DEFAULT...charset was ignored when !XML
* src/main/pa_request.C: restored pcre defaulting in request
[mindlessly "optimized" yesterday] comment left
2001-10-02 parser
* src/: main/pa_charset_manager.C,
include/pa_stylesheet_connection.h: forgot non-xml pool.*charset
needed
* src/: include/pa_pool.h, main/pa_pool.C, types/pa_vresponse.h:
forgot non-xml pool.*charset needed
* src/classes/table.C: # config comments fixed
* src/: classes/table.C, main/pa_charset_connection.C: table:load &
charset_connection #comment now
* src/: classes/classes.dsp, types/types.dsp: release projects
options fixed to use release msvcrt lib
* src/main/pa_charset_connection.C: pcre tables now const inside
removed default - pcre handles that internally fixed bug on
not-cleaning tables [previously was calloced, now member]
* src/: include/pa_request.h, main/pa_charset_connection.C,
main/pa_request.C, types/pa_vstring.h: pcre tables now const
inside removed default - pcre handles that internally fixed bug
on not-cleaning tables [previously was calloced, now member]
* src/: include/pa_config_fixed.h, main/pa_charset_connection.C:
tested charset reload on file change @ apache version = OK tested
freeing up prev encoding on adding new = OK
2001-10-01 parser
* src/main/pa_charset_connection.C: removed entitify external hack
[internal installed]
* src/main/Makefile.am: makes+removed dtd
* src/: include/pa_charset_connection.h,
include/pa_charset_manager.h,
include/pa_xslt_stylesheet_manager.h, main/main.dsp,
main/pa_charset_connection.C, main/pa_charset_manager.C,
main/pa_request.C: charset loading & caching mech 0
* src/: include/pa_stylesheet_connection.h,
include/pa_xslt_stylesheet_manager.h, main/main.dsp,
main/pa_globals.C, main/pa_request.C: would make charset loading
& caching mech now
2001-09-30 parser
* src/main/pa_request.C: forgot to fill toTable
* src/: include/pa_config_fixed.h, main/pa_request.C: started
hack_s_maximumCharacterValues to XALAN_HACK_DIGITAL_ENTITIES but
failed on win32 for now..
* src/: include/pa_globals.h, main/pa_globals.C, main/pa_request.C:
now charsets table configuration variable is: CHARSETS
* src/: classes/xdoc.C, include/pa_request.h, main/pa_request.C:
ctype with unicode 1. todo: no П entities on output somehow
* src/: classes/file.C, classes/op.C, classes/string.C,
include/pa_request.h, main/pa_request.C: started ctype with
unicode values
2001-09-28 parser
* src/: main/pa_request.C, classes/mail.C, classes/op.C,
classes/xdoc.C, include/pa_stylesheet_connection.h: letter body
string passed AS-IS now
* src/classes/: xdoc.C, xnode.C: xdoc addencoding works! invented a
way of user-configuring... todo: implement
2001-09-27 parser
* src/classes/table.C: table.sort changed to sort table itself
* src/: classes/xdoc.C, targets/isapi/parser3isapi.dsp:
X^.getElementsByTagName[tagname] = array of xnode
X^.getElementsByTagNameNS[namespaceURI;localName] = array of
nodes removed - regretfully not supported @ xalan. maybe someday
would reimplement, if needed.
win32build system: solved long waiting anti-non-started-apache
problem
* src/: classes/classes.dsp, classes/xdoc.C, main/main.dsp,
targets/cgi/parser3.dsp, targets/isapi/parser3isapi.dsp,
types/types.dsp: win32 ident make system so not to rebuild
library [ident.C.new]
2001-09-26 parser
* src/: classes/classes.dsp, classes/xdoc.C, classes/xnode.C,
classes/xnode.h, include/pa_config_fixed.h, main/main.dsp,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C,
types/pa_vxnode.C, types/types.dsp: z
* src/classes/classes.C: forgot one non-xml check
* src/: Makefile.am, classes/Makefile.am, main/Makefile.am,
targets/cgi/Makefile.am, types/Makefile.am: makes with clases.awk
* src/targets/cgi/parser3.C: z
* src/: include/pa_config_fixed.h, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C: #ifdef SMTP
* src/: classes/classes.dsp, classes/dnode.C, classes/dnode.h,
classes/dom.C, classes/xdoc.C, classes/xnode.C, classes/xnode.h,
main/compile.tab.C, types/pa_vdnode.C, types/pa_vdnode.h,
types/pa_vdom.C, types/pa_vdom.h, types/pa_vxdoc.C,
types/pa_vxdoc.h, types/pa_vxnode.C, types/pa_vxnode.h,
types/types.dsp: xdoc&xnode now
* src/: classes/classes.C, classes/classes.awk,
classes/classes.dsp, classes/classes.h, classes/date.C,
classes/dnode.C, classes/dnode.h, classes/dom.C,
classes/double.C, classes/file.C, classes/form.C, classes/hash.C,
classes/image.C, classes/int.C, classes/mail.C, classes/math.C,
classes/op.C, classes/response.C, classes/string.C,
classes/table.C, classes/void.C, include/pa_array.h,
include/pa_common.h, include/pa_config_fixed.h,
include/pa_config_includes.h, include/pa_dictionary.h,
include/pa_dir.h, include/pa_exception.h, include/pa_exec.h,
include/pa_globals.h, include/pa_request.h, include/pa_sapi.h,
include/pa_socks.h, include/pa_sql_connection.h,
include/pa_sql_driver_manager.h, include/pa_stack.h,
include/pa_string.h, include/pa_stylesheet_connection.h,
include/pa_table.h, include/pa_threads.h, include/pa_types.h,
include/pa_xslt_stylesheet_manager.h, main/compile.C,
main/compile.y, main/compile_tools.C, main/compile_tools.h,
main/execute.C, main/main.dsp, main/pa_array.C, main/pa_common.C,
main/pa_dictionary.C, main/pa_dir.C, main/pa_exception.C,
main/pa_exec.C, main/pa_globals.C, main/pa_hash.C,
main/pa_pool.C, main/pa_request.C, main/pa_socks.C,
main/pa_sql_driver_manager.C, main/pa_string.C, main/pa_table.C,
main/pa_xslt_stylesheet_manager.C, main/untaint.C,
sql/pa_sql_driver.h, targets/cgi/pa_pool.C,
targets/cgi/pa_threads.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, targets/isapi/pa_pool.C,
targets/isapi/pa_threads.C, targets/isapi/parser3isapi.C,
targets/isapi/parser3isapi.dsp, targets/isapi/pool_storage.h,
types/pa_valiased.C, types/pa_valiased.h, types/pa_value.h,
types/pa_vbool.h, types/pa_vclass.h, types/pa_vcode_frame.h,
types/pa_vcookie.C, types/pa_vcookie.h, types/pa_vdate.h,
types/pa_vdnode.C, types/pa_vdnode.h, types/pa_vdom.C,
types/pa_vdom.h, types/pa_vdouble.h, types/pa_venv.h,
types/pa_vfile.C, types/pa_vfile.h, types/pa_vform.C,
types/pa_vform.h, types/pa_vimage.C, types/pa_vimage.h,
types/pa_vint.h, types/pa_vjunction.h, types/pa_vmath.h,
types/pa_vmethod_frame.h, types/pa_vobject.h,
types/pa_vrequest.C, types/pa_vrequest.h, types/pa_vresponse.h,
types/pa_vstateless_class.C, types/pa_vstateless_class.h,
types/pa_vstateless_object.h, types/pa_vstring.C,
types/pa_vstring.h, types/pa_vtable.C, types/pa_vtable.h,
types/pa_vvoid.h, types/pa_wcontext.C, types/pa_wcontext.h,
types/pa_wwrapper.h, types/types.dsp: added ident.awk and
main.dsp splitted to main+classes+types along to .am
* src/classes/Makefile.am: removed useless var
* src/: classes/classes.cmd, main/main.dsp,
targets/cgi/parser3.dsp: moved classes.inc generation on win32 to
main.dsp
2001-09-25 parser
* src/include/pa_config_auto.h.in: xml on linux[elik] works! no
1251 though, todo ICU
* src/: Makefile.am, classes/Makefile.am, classes/dom.C,
include/pa_stylesheet_connection.h, main/Makefile.am,
main/pa_pool.C, targets/cgi/Makefile.am, types/Makefile.am,
types/pa_vdom.h: xml configure makes
2001-09-24 parser
* src/: classes/Makefile.am, include/pa_config_auto.h.in,
types/Makefile.am: makes
* src/targets/cgi/Makefile.am: makefiles
* src/: Makefile.am, targets/Makefile.am, targets/cgi/pa_pool.C:
started unix makes update
* src/: Makefile.am, main/Makefile.am, targets/cgi/Makefile.am:
started unix makes update
* src/types/: pa_vdnode.C, pa_vvoid.h, pa_vtable.C: z
* src/types/pa_value.h: z
* src/types/: pa_vhash.h, pa_vtable.h, pa_vclass.h: fixed small
bugs with usinge hash/table in expressions
* src/types/: pa_vfile.h, pa_vimage.h, pa_vstring.h: fiew wrong
resolved conflicts fixed [const]
* src/: classes/classes.cmd, classes/image.C, classes/op.C,
classes/table.C, include/pa_request.h, include/pa_sapi.h,
main/compile.C, main/compile.tab.C, main/compile.y,
main/compile_tools.h, main/main.dsp, main/pa_common.C,
main/pa_sql_driver_manager.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, types/pa_value.h, types/pa_vbool.h,
types/pa_vdate.h, types/pa_vdouble.h, types/pa_vform.C,
types/pa_vhash.h, types/pa_vimage.h, types/pa_vint.h,
types/pa_vstring.h, types/pa_vtable.h, types/pa_vvoid.h: merged3
with before_xml [merge2 actually didn't happen - i've created
tags on wrong branch. so this merge is in fact re-merge]
2001-09-21 parser
* src/: main/main.dsp, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.dsp: updated project files [/ sadly
produced "" in make file and sadly wrong interpreted on load]
* src/: classes/classes.h, classes/hash.C, classes/op.C,
classes/table.C, doc/doxygen.cfg, include/pa_common.h,
include/pa_globals.h, include/pa_request.h, include/pa_sapi.h,
include/pa_sql_driver_manager.h, include/pa_string.h,
main/compile.tab.C, main/main.dsp, main/pa_common.C,
main/pa_exec.C, main/pa_globals.C, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.dsp: merged with before_xml
* src/: classes/classes.C, classes/date.C, classes/dnode.C,
classes/dom.C, classes/file.C, classes/form.C, classes/int.C,
classes/mail.C, doc/doxygen.cfg, include/pa_config_fixed.h,
include/pa_pool.h, main/main.dsp, main/pa_globals.C,
main/pa_pool.C, main/pa_request.C,
main/pa_xslt_stylesheet_manager.C, targets/cgi/pa_pool.C,
targets/cgi/pa_threads.C, targets/cgi/parser3.dsp,
targets/isapi/pa_pool.C, targets/isapi/pa_threads.C,
targets/isapi/parser3isapi.dsp, types/pa_valiased.C,
types/pa_vcookie.C, types/pa_vdnode.C, types/pa_vdom.C,
types/pa_vfile.C, types/pa_vform.C, types/pa_vimage.C,
types/pa_vrequest.C, types/pa_vresponse.h,
types/pa_vstateless_class.C, types/pa_vstring.C,
types/pa_vtable.C, types/pa_wcontext.C: zillions of #ifdef XML
created new projects for sql drivers [planning to remove sql
drivers from main cvs project] first, will join latest changes
* src/classes/: dom.C: defaulted dom writing methods encoding to
pool.get_charset
* src/classes/dom.C: defaulted dom writing methods encoding to
pool.get_charset
* src/include/pa_pool.h: defaulted dom writing methods encoding to
pool.get_charset
* src/: classes/dom.C, include/pa_pool.h, main/pa_pool.C,
types/pa_vdnode.C, types/pa_vresponse.h: defaulted dom writing
methods encoding to pool.get_charset
* src/: include/pa_pool.h, main/pa_pool.C: checked whether
transcoder were created right "unsupported encoding" message.
not @ set time, but @ use time, so until xml output functions
.string, .file, .save used - no encoding name check occur
reduced transcode buffer size to 60 fixed pool cleanup - no
registration needed, pools are officially destructured
2001-09-20 parser
* src/classes/image.C: 20K preload on jpg measure [image::measure]
* src/main/: pa_pool.C, pa_request.C: Pool::transcode defaults from
$MAIN:DEFAULTS.content-type[$.charset[here]]
* src/: classes/dnode.C, classes/dom.C,
include/pa_config_includes.h, include/pa_globals.h,
include/pa_pool.h, main/main.dsp, main/pa_globals.C,
main/pa_pool.C, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.C, targets/isapi/parser3isapi.dsp,
types/pa_vdnode.C, types/pa_vdnode.h, types/pa_vresponse.h:
Pool::transcode 0
* src/classes/dom.C: dom. string save file moved output xml options
to last param and made it optional
* src/types/pa_vdnode.C: !$elementnode.attributes = hash of
dnodes
!$attributenode.specified = boolean
true if the attribute received its value explicitly
in the XML document,
or if a value was assigned programatically with the
setValue function.
false if the attribute value came from the default value
declared in the document's DTD.
!$pinode.target = target of this processing instruction
XML defines this as being the first token following the
markup
that begins the processing instruction.
XPath:
!^node.select[xpath/query/expression] = hash of 0->node0
1->node1
!^node.select-single[xpath/query/expression] = first node if
any
* src/types/: pa_value.h, pa_vbool.h, pa_vdate.h, pa_vdouble.h,
pa_vhash.h, pa_vint.h, pa_vstring.h, pa_vtable.h, pa_vvoid.h:
some 'const's added
* src/types/: pa_vhash.h, pa_vtable.h: table/hash can be used in
expression context now, there value = size and boolean value
size!=0
* src/types/: pa_vhash.h, pa_vstring.h, pa_vtable.h: table/hash
can be used in expression context now, there value = size and
boolean value size!=0
* src/: classes/dnode.C, classes/dom.C, targets/cgi/parser3.dsp,
types/pa_vstring.h: dnode .file .string .save moved back to dom
due to strange xalan bug
2001-09-18 parser
* src/: classes/dnode.C, classes/dom.C, classes/hash.C,
classes/image.C, classes/op.C, classes/table.C,
include/pa_common.h, include/pa_globals.h, include/pa_request.h,
include/pa_sql_driver_manager.h, main/compile.C,
main/compile.tab.C, main/compile.y, main/compile_tools.h,
main/execute.C, main/pa_common.C, main/pa_request.C,
main/pa_sql_driver_manager.C, main/pa_string.C, main/pa_table.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.C, types/pa_value.h, types/pa_vform.C,
types/pa_vform.h, types/pa_vhash.h, types/pa_vimage.C,
types/pa_vimage.h, types/pa_vtable.h: merged latest bugfixes from
before_xml branch ^if(def $hash) now true only when
^hash:_count[]!=0 moved .string .save .file from dom to dnode
* src/: classes/op.C, main/execute.C: operators self changed to
root ^for variable context changed to self
* src/types/: pa_vdnode.C, pa_vdom.h, pa_vhash.h, pa_vtable.h: dom,
dnode 1
* src/: classes/dnode.C, classes/dnode.h, main/main.dsp,
types/pa_vdnode.C, types/pa_vdnode.h: dom, dnode 0
* src/: classes/image.C, main/pa_string.C, main/pa_table.C: image:
poly* fixed
2001-09-17 parser
* src/: classes/dom.C, main/main.dsp, main/pa_globals.C,
types/pa_vdom.h: started dnode+dom
dnode DOM methods: $node.name $node.value
...others...
^node.xpath[/rates/USD] = hash
$hash[
$.0[node0]
$.1[node1]
]
* src/: classes/image.C, types/pa_vimage.C: $image.line-style now
applies to all linear primitives
* src/: classes/classes.h, classes/dom.C, classes/hash.C,
include/pa_stylesheet_connection.h, main/main.dsp,
targets/cgi/pa_pool.C, types/pa_vdom.h, types/pa_vfile.h,
types/pa_vimage.h: started dnode DOM: $node.name
$node.value ...others... ^node.xpath[/rates/USD] = hash
dom(dnode)
* src/: classes/hash.C, main/compile.C, main/compile.tab.C,
main/compile.y, main/compile_tools.h, main/execute.C,
targets/cgi/parser3.C: expressions unary+ ^hash.count[] bugfix:
in expression compound($aa.zz.xx) names now can have minus '-' in
name after '.'
2001-09-15 parser
* src/: classes/image.C, types/pa_vimage.C, types/pa_vimage.h:
image: $line-width ^line(...)[**** style]
* src/: classes/dom.C, targets/isapi/parser3isapi.C,
targets/isapi/pool_storage.h, types/pa_vdom.h: fixed bug in isapi
pool_storage - cleanups first, allocations second. apache wisely
does just like that
* src/targets/isapi/: parser3isapi.C, pool_storage.h: pool_storage
rewritten using template, no bugs now
* src/: include/pa_pool.h, main/pa_pool.C, targets/cgi/pa_pool.C,
targets/isapi/pa_pool.C, targets/isapi/parser3isapi.C,
targets/isapi/parser3isapi.dsp, targets/isapi/pool_storage.h:
poorly started isapi pool_storage, would rewrite using template
now
* src/: classes/dom.C, classes/image.C, include/pa_pool.h,
include/pa_stylesheet_connection.h, main/main.dsp,
targets/cgi/pa_pool.C, targets/isapi/pa_pool.C,
targets/isapi/pool_storage.h, types/pa_vdom.C, types/pa_vdom.h:
xalan objects freed up [introducing Pool::register_cleanup]
* src/: doc/doxygen.cfg, include/pa_sapi.h, types/pa_vdom.h:
comments
2001-09-14 parser
* src/main/: pa_sql_driver_manager.C, pa_xslt_stylesheet_manager.C:
z
* src/: classes/dom.C, classes/file.C, classes/image.C,
classes/mail.C, include/pa_common.h,
include/pa_sql_driver_manager.h, include/pa_string.h,
include/pa_stylesheet_connection.h,
include/pa_xslt_stylesheet_manager.h, main/main.dsp,
main/pa_common.C, main/pa_exec.C, main/pa_globals.C,
main/pa_sql_driver_manager.C, main/pa_xslt_stylesheet_manager.C,
main/untaint.C, types/pa_vfile.C: dom.xslt stylesheet
compiled&cached
2001-09-13 parser
* src/: classes/dom.C, classes/file.C, classes/image.C,
types/pa_vfile.C, types/pa_vfile.h: ^dom.file[] charset
* src/classes/dom.C: dom:file content-type(.method)
* src/: include/pa_common.h, include/pa_globals.h,
main/pa_common.C, main/pa_request.C: $MAIN:CLASS_PATH now can be
string now more informative error messages
* src/: include/pa_globals.h, include/pa_request.h,
main/pa_request.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C: ParserRootConfig .../parser3.conf
ParserSiteConfig .../parser3.conf
cgi&isapi looks for {configure|c:\windows}/parser3.conf
2001-09-12 parser
* src/: classes/op.C, include/pa_sql_driver_manager.h,
main/pa_sql_driver_manager.C: ^connect[] ^connect[aaa] more
precise error reporting: "connection string must start with
protocol://" now
* src/main/compile.tab.C: fixed - subname code parts actually []
braced
* src/main/: compile.y, compile_tools.h: name.[part].xxx syntax
lexer on LS_USER level did [] matching without setting nestage,
introduced special LS_NAME_SQUARE_PART state
2001-09-11 parser
* src/: classes/dom.C, include/pa_string.h, main/pa_globals.C,
main/untaint.C: ^dom:set{xml } default language XML
languages+=xml
* src/: classes/dom.C, types/pa_vdom.h: ^dom:set[xml ]
* src/classes/dom.C: ^dom:save/string/file[output options] output
options: $.method[xml|html|text] detection fixed
* src/types/pa_vdom.h: messages
* src/classes/dom.C: ^dom:save/string/file[output options] output
options: $.method[xml|html|text] detection fixed
2001-09-10 parser
* src/classes/dom.C: ^dom:save/string/file[output options] output
options: $.method[xml|html|text] $.encoding[windows-1251|...]
* src/classes/dom.C: ^dom.xslt[stylesheet filename][params hash
added]
* src/: classes/dom.C, main/main.dsp, types/pa_vdom.h:
^dom.xslt[stylesheet filename] 0
* src/: classes/dom.C, main/main.dsp, types/pa_vdom.h:
^dom.xslt[stylesheet filename] -1 doc is lying
* src/classes/dom.C: ^dom.file[encoding] = file
* src/classes/: dom.C: ^dom.string[encoding] 1
^dom.save[encoding;filename]
* src/classes/dom.C: ^dom.string[] 0
* src/classes/dom.C: ^dom.save[b.xml] 1:error handling
* src/: classes/dom.C, main/main.dsp, types/pa_vform.C,
types/pa_vform.h: ^dom.save[b.xml] 0
2001-09-08 parser
* src/types/pa_vform.C: $form:tables.name.field
2001-09-07 parser
* src/classes/table.C: table:empty removed, superceded by ^if(def
$table)...
* src/targets/cgi/parser3.C: z
* src/main/pa_string.C: $a[] ^if($a){y;n} is 'n' now [conversion
from '' to int/double is 0]
* src/: classes/dom.C, types/pa_value.h, types/pa_vtable.h: (def
$table) is false when table is empty
* src/: main/pa_request.C, types/pa_vform.C, types/pa_vform.h:
!$form:tables $atable[$form:tables.a]
^atable.menu{a=$atable.element}[,]
* src/: targets/cgi/parser3.dsp, types/pa_vform.C,
types/pa_vform.h, types/pa_vhash.h: !$form:fields
* src/: classes/dom.C, classes/table.C, main/main.dsp,
types/pa_vdom.h, types/pa_vform.C: merged with successful start
of dom
* src/: include/pa_hash.h, main/pa_hash.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vform.h: z
* src/: main/pa_exception.C, types/pa_vform.C: getting FIRST form
element [not last]
* src/: classes/dom.C, classes/table.C, main/main.dsp,
types/pa_vdom.h: introducing dom. dom:load[a.xml]
2001-09-06 parser
* src/types/pa_vform.C: ?a=1&a=2 would result in $form:a being a
table with one column 'element' and two rows: 1 and 2
* src/types/pa_vform.C: ?a=1&a=2 would result in $form:a being a
table with one column 'element' and two rows: 1 and 2
* src/: classes/void.C, main/pa_string.C, main/pa_table.C: fixed up
bad int/double conversions, and now $form:nonexistent.int(88)
would return 88
* src/: classes/hash.C, include/pa_globals.h, main/pa_globals.C,
types/pa_vhash.h: now there's special hash key '_default'
[instead of ^_default method] $hash[ $.a[1] $.b[2]
$._default[xx] ] $hash.c
* src/main/: compile.tab.C, compile.y: ^if(0){}{ ^if(1){}^; } bug
fixed [thanks, fif], ^; were treated there non-literally
* src/doc/doxygen.cfg: merged new default options from 1.2.10
doxygen
* src/: classes/image.C, classes/op.C, classes/string.C,
classes/table.C, doc/doxygen.cfg, targets/isapi/parser3isapi.C,
types/pa_vtable.C: few #ifndef DOXYGEN
2001-09-05 parser
* src/classes/: string.C, table.C: sql options can be void [same as
image:html the other day]
* src/targets/cgi/Makefile.am: .am undo
* src/: main/pa_sql_driver_manager.C, sql/pa_sql_driver.h,
targets/cgi/parser3.C: #define STRINGIZE(name) #name does not
macro expantion on param, simply qoutes whatever passed, undone
* src/: main/pa_sql_driver_manager.C, sql/pa_sql_driver.h,
targets/cgi/Makefile.am, targets/cgi/parser3.C: #define
STRINGIZE(name) #name invented
* src/: classes/op.C, include/pa_sql_driver_manager.h,
main/pa_sql_driver_manager.C: #define MAIN_SQL_NAME "SQL" #define
MAIN_SQL_DRIVERS_NAME "drivers"
moved to be availible to all users
* src/: main/pa_sql_driver_manager.C, sql/pa_sql_driver.h:
SQL_DRIVER_CREATE_FUNC_NAME
* src/classes/mail.C: MAIN:MAIL check fixed
2001-09-04 parser
* src/classes/image.C: image.html now can accept void params
* src/targets/isapi/parser3isapi.C: z
* src/targets/cgi/parser3.C: full_file_spec bug
* src/targets/cgi/parser3.C: getenvcheck
* src/targets/cgi/parser3.C: zz
* src/targets/cgi/parser3.C: zzz
* src/classes/date.C: date
* src/classes/date.C: date:sql-string is now without ''
* src/: include/pa_config_auto.h.in, targets/cgi/Makefile.am,
targets/cgi/parser3.C: configure --sysconfdir=sysadmin-controlled
auto.p location for targets/cgi/parser3, default[/usr/local/etc]
* src/include/pa_config_auto.h.in: makes
2001-09-03 parser
* src/targets/cgi/parser3.C: /configure cgi SYSCONFDIR
2001-09-01 parser
* src/classes/image.C: letter_spacing
* src/classes/image.C: image: font params changed
* src/classes/image.C: image: as_int as_string used
* src/types/pa_vmethod_frame.h: $result[] now gets properly
analized
2001-08-31 parser
* src/targets/cgi/parser3.C: z
* src/: include/pa_dir.h, targets/cgi/parser3.C: compiled under
cygwin
* src/classes/void.C: void:int/double += (default)
* src/classes/image.C: image:font added space param image:font
changed charwidth alg, added kerning const[for now]
* src/classes/: string.C, table.C: string:int/double (defaults)
2001-08-29 parser
* src/main/pa_exception.C: exception redundant debug info
2001-08-28 parser
* src/classes/image.C: image error msgs
* src/classes/image.C: image: gifsize little endian
* src/doc/doxygen.cfg: doxygen conf removed some garbage from under
doxygeneration
* src/: classes/Makefile.am, main/Makefile.am,
targets/cgi/Makefile.am, types/Makefile.am: .am-s
* src/: include/pa_dictionary.h, main/pa_dictionary.C,
main/pa_sql_driver_manager.C: NO_STRING_ORIGIN check3
* src/main/compile.C: NO_STRING_ORIGIN check2
* src/classes/table.C: NO_STRING_ORIGIN check
* src/include/pa_dictionary.h: gcc: ../include/pa_dictionary.h:19:
storage class specifiers invalid in friend function declarations
* src/: classes/op.C, main/compile.tab.C, main/pa_dir.C,
main/untaint.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C: strncpy forced with zero ending in
case of limit
* src/: classes/file.C, main/pa_common.C: file:move
autocreate/remove dest/src dir
* src/: classes/string.C, include/pa_dictionary.h,
include/pa_string.h, main/pa_dictionary.C, main/pa_string.C,
main/untaint.C: pa_directory speeded up. moved zero 'from' check
to directory constructor. string:replace
2001-08-27 parser
* src/classes/image.C: fixed jpgsize alg
* src/classes/image.C: fixed jpgsize alg
* src/main/pa_exception.C: z
* src/main/pa_common.C: removed debug info from pa_common
* src/: main/pa_request.C, targets/cgi/parser3.C: parser3 test.html
[auto.p from current dir loading]
* src/: main/pa_common.C, main/pa_exception.C,
main/pa_sql_driver_manager.C, targets/cgi/Makefile.am: configure
for solaris -lsocket
2001-08-24 parser
* src/targets/cgi/parser3.C: not cgi extra \n 3
* src/targets/cgi/parser3.C: not cgi extra \n 2
* src/targets/cgi/parser3.C: not cgi extra \n
* src/main/pa_sql_driver_manager.C: z
* src/: include/pa_sql_connection.h, main/pa_sql_driver_manager.C:
sql* removed services from disconnect - cross-request ideological
probs.
* src/sql/pa_sql_driver.h: sql* removed services from disconnect -
cross-request ideological probs. oracle - fixed bug: cs
allocated on request.pool and got freed before disconnect
* src/classes/: file.C, form.C, mail.C, table.C: fiew non-pool
mallocs fixed
2001-08-23 parser
* src/classes/file.C: minor bug in file:save fixed
* src/main/pa_sql_driver_manager.C: oracle: dlink
2001-08-22 parser
* src/: classes/file.C, main/compile.tab.C, types/pa_vfile.C,
types/pa_vfile.h: file:load|save[text|binary;
* src/main/: compile.tab.C, compile.y: ^method[]^[^] literals []
2001-08-21 parser
* src/classes/: file.C, table.C: ^file:list
2001-08-20 parser
* src/: main/compile.tab.C, main/compile.y,
main/pa_sql_driver_manager.C, types/pa_value.h, types/pa_vbool.h,
types/pa_vdouble.h, types/pa_vint.h: $var(123) ^var.inc[]
recousively caused problems: inc incremeted 123 literal!! fixed
2001-08-10 parser
* src/main/: compile.tab.C, compile.y: [codes] name part syntax now
* src/main/: compile.tab.C, compile.y: (codes) name part syntax
added
* src/main/: compile.tab.C, compile.y: (codes) name part syntax
added
* src/classes/table.C: table:sort restored [it was bad test :(]
* src/types/: pa_value.h, pa_vstring.h: string now def only when ne
''
* src/main/: pa_request.C: wanted to make const int
MAX_EXECUTE_SECONDS=1;
but couldnt, set_callback_and_alarm appeared to be not exported
:(
* src/main/pa_string.C: string.match hanged on. there were a hang
check but it weren't wise enough
@parse[dateString][tmp]
$tmp[^dateString.match[(\d\d\d\d-)?(\d\d-)?][g]] $tmp.1 $tmp.2
#end
@main[] ^parse[2001-02-03]
* src/classes/: table.C: table:sort now default desc
* src/: classes/table.C, include/pa_table.h, main/pa_table.C:
table.sort now creates new sorted table
2001-08-09 parser
* src/main/pa_string.C: $a[010] now ^if($a==10){true} were octal
* src/classes/hash.C: hash:_default now [was hash:default]
* src/classes/op.C: case without switch check added
* src/types/pa_vcookie.C: cookie name&value origins added, more
precise $ORIGINS(1)
* src/main/Makefile.am: .am
* src/classes/void.C: void: int double copy/paste from int: bug
fixed
* src/classes/void.C: void: int double copy/paste from int: bug
fixed
2001-08-07 parser
* src/: classes/double.C, classes/int.C, classes/string.C,
classes/table.C, include/pa_globals.h, main/pa_globals.C:
!^int/double:sql{query}[[$.limit(2) $.offset(4) $.default(0)]]
string, table
* src/: classes/math.C, main/pa_request.C: math:random fixed. win32
srand made working
2001-08-06 parser
* src/: classes/mail.C, classes/op.C, include/pa_array.h,
include/pa_globals.h, include/pa_hash.h, include/pa_request.h,
main/compile.tab.C, main/compile.y, main/pa_array.C,
main/pa_dictionary.C, main/pa_exec.C, main/pa_globals.C,
main/pa_hash.C, main/pa_request.C, main/pa_string.C: class_path
* src/main/pa_exec.C: exec win32 real filename
* src/classes/file.C: exec stderr out
* src/classes/hash.C: hash:keys renamed to hash:_keys :(
2001-08-03 parser
* src/: classes/table.C, types/pa_vtable.h: vtable.locks killed
2001-08-02 parser
* src/: classes/string.C, classes/table.C, include/pa_array.h,
main/execute.C, main/pa_exec.C: introducing Array_iter
* src/main/execute.C: detected quick_get recursion bug. changed to
get@execute, but needs array iterator, separate from array to
avoid it & use caching
* src/main/: pa_dictionary.C, pa_globals.C: memset dictionary minor
bug fixed
* src/: classes/classes.h, classes/op.C, include/pa_globals.h,
main/execute.C, main/pa_globals.C: found another multithread bug
in op.C (last, last global var killed) :)
2001-08-01 parser
* src/: include/pa_dictionary.h, include/pa_globals.h,
include/pa_string.h, main/main.dsp, main/pa_dictionary.C,
main/pa_globals.C, main/pa_request.C, main/pa_string.C,
main/untaint.C: speeded up typo-html replacements. introducing
Dictionary with first-char caching
2001-07-31 parser
* src/types/Makefile.am: pa_vtable.C added to .am
* src/main/compile.tab.C: added, so that could be compiled even on
non-bison-enabled platforms
2001-07-28 parser
* src/classes/table.C: table:hash always produces hash, when can't
- empty
* src/main/: compile.y, untaint.C: bug fix @ untaint when \r
skipped \n
2001-07-27 parser
* src/classes/: double.C, int.C, string.C: provided meaningful msg
on int/double/string :sql without result and default
2001-07-26 parser
* src/classes/op.C: fixed bad multithread bug with strangly global
OP
* src/main/compile.y: $man[$.age[zzz]] 0
* src/: include/pa_opcode.h, main/compile.y, main/execute.C: hash
creation syntax problem persists. restored $: for a while.
thinking of $man[$.age[zzz]] syntax now
* src/: classes/double.C, classes/int.C, classes/string.C,
include/pa_opcode.h, main/compile.C, main/compile.y,
main/compile_tools.h, main/execute.C, types/pa_vcode_frame.h,
types/pa_vmethod_frame.h, types/pa_wcontext.h,
types/pa_wwrapper.h: fixing :: realization #1
* src/: include/pa_opcode.h, main/compile.C, main/compile.y,
main/compile_tools.h, main/execute.C, main/pa_request.C,
types/pa_vmethod_frame.h: introducing :: this is constructor call
prefix. ordinary : remains for static accesses
2001-07-25 parser
* src/types/pa_vtable.C: table: get_element order changeed. now: 1.
fields 2. methods 3. columns
* src/types/: pa_vdouble.h, pa_vint.h: odbc: no result queries;
quote. optimized double&int tostring-s
* src/main/: compile.C, compile.y, compile_tools.h: allowed
whitespace before first method decl
* src/classes/table.C: allowed nontable result in table:sql,
results in empty table
* src/main/: compile.C, compile.y, compile_tools.h: allowed empty
lines before first method decl
* src/: classes/table.C, main/main.dsp, types/pa_vtable.C,
types/pa_vtable.h: ^table.record[] now $table.fields
* src/main/compile.y: $var[] is now empty string, not void
* src/main/: compile.y, execute.C: $var[] is now empty string, not
void
* src/: classes/string.C, include/pa_globals.h, main/execute.C,
main/pa_globals.C: match replace code context moved to implicit
$match context
* src/: include/pa_opcode.h, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/execute.C: with killed, code storage
introduced with former 'with' syntax
2001-07-24 parser
* src/: main/compile.C, main/execute.C, main/pa_string.C,
types/pa_value.h: first get_element, next get operator
* src/main/compile.y: removed @end handling
* src/main/: compile.C, compile.y: @end handling method2
* src/: classes/file.C, include/pa_common.h, main/pa_common.C:
file:move
* src/main/pa_common.C: file_read close @ eof when imgsize bug
fixed
2001-07-23 parser
* src/: main/pa_sql_driver_manager.C, sql/pa_sql_driver.h: sql odbc
driver
* src/classes/hash.C: changed sql driver query interface
* src/: classes/hash.C, classes/string.C, classes/table.C,
classes/void.C, include/pa_sql_connection.h, sql/pa_sql_driver.h:
changed sql driver query interface
2001-07-20 parser
* src/types/pa_vrequest.C: X!$browser:type
* src/: classes/file.C, classes/string.C, include/pa_string.h,
main/execute.C, main/pa_string.C, types/pa_valiased.C,
types/pa_valiased.h, types/pa_value.h, types/pa_vclass.h,
types/pa_vcookie.h, types/pa_vdate.h, types/pa_vfile.h,
types/pa_vform.h, types/pa_vhash.h, types/pa_vmath.h,
types/pa_vobject.h, types/pa_vrequest.C,
types/pa_vstateless_class.h, types/pa_vstateless_object.h: only
^class:method dynamic calls allowed. ^BASE.method call disabled.
BASE element globally removed
2001-07-18 parser
* src/classes/file.C: file:exec/cgi msg
* src/classes/file.C: $file:exit-code renamed to 'status'
* src/: classes/file.C, main/pa_exec.C: file:exec
* src/: Makefile.am, classes/Makefile.am, main/Makefile.am,
targets/Makefile.am, targets/cgi/Makefile.am, types/Makefile.am:
removed $id from *.in *.am
* src/main/: pa_request.C, untaint.C: ORIGINS langs name
abbrevations
* src/: classes/date.C, classes/mail.C, classes/math.C,
classes/string.C, classes/table.C, include/pa_globals.h,
include/pa_string.h, main/execute.C, main/pa_globals.C,
main/pa_request.C, main/pa_string.C, main/untaint.C,
types/pa_value.h, types/pa_vdouble.h, types/pa_vfile.h,
types/pa_vint.h, types/pa_vstring.C, types/pa_vstring.h:
$ORIGINS(1) output tracing mode
2001-07-13 parser
* src/: classes/double.C, classes/int.C, classes/string.C,
include/pa_request.h, main/execute.C, main/pa_request.C:
auto.p[@auto], /news/auto.p[no @auto], so that initializing
second would not call first @auto
* src/main/: execute.C, pa_request.C: order of MAIN parents was
wrong, fixed
2001-07-12 parser
* src/types/pa_value.h: pa_value.putelement modification of system
classes prevented
2001-07-11 parser
* src/: classes/string.C, doc/sources2html.cmd: lr split now yelds
table $piece
* src/: classes/file.C, include/pa_common.h, main/pa_common.C,
types/pa_vstateless_class.h: $file created by file:state +=
.atime .mtime .ctime +found&fixed bug with exceptions on
get_junction-created objects [they were on wrong pool]
2001-07-09 parser
* src/main/untaint.C: qp wrong name
* src/: classes/date.C, classes/string.C, classes/table.C,
main/compile.y: date format 0
2001-07-07 parser
* src/: classes/date.C, classes/table.C, include/pa_common.h,
include/pa_string.h, main/pa_common.C, types/pa_vdate.h: date
roll table calendar
* src/: classes/Makefile.am, classes/date.C, classes/file.C,
classes/hash.C, classes/image.C, classes/mail.C, classes/math.C,
classes/op.C, classes/string.C, classes/table.C, classes/void.C,
include/pa_request.h, main/main.dsp, types/pa_value.h,
types/pa_vdate.h, types/pa_wcontext.C: date now set $fields roll
string. todo: sql, calendar
2001-07-06 parser
* src/: classes/math.C, include/pa_request.h, main/execute.C,
main/main.dsp, main/pa_request.C, types/pa_vmath.h: math 0
2001-07-03 parser
* src/: classes/Makefile.am, classes/math.C, classes/op.C,
classes/random.C, main/main.dsp: class random renamed to math,
operators became methods
* src/classes/op.C: pow sqrt
* src/: classes/op.C, main/execute.C: sin asin cos acos tan atan
2001-07-02 parser
* src/classes/table.C: ^table.columns column renamed from 'name' to
'column'
* src/classes/hash.C: ^hash.keys[]
* src/: classes/table.C, main/pa_table.C: ^table:columns[]
* src/main/: compile.y, compile_tools.h: in expressions now allowed
'strings'
2001-06-29 parser
* src/main/: execute.C: /0 %0 checkes ver 2
* src/main/execute.C: /0 %0 checke
* src/classes/Makefile.am: nothing - void
* src/classes/table.C: empty strings @ sql
2001-06-28 parser
* src/: classes/double.C, classes/file.C, classes/form.C,
classes/hash.C, classes/image.C, classes/int.C, classes/mail.C,
classes/op.C, classes/random.C, classes/response.C,
classes/string.C, classes/table.C, classes/void.C,
main/compile.C, main/compile_tools.C, main/execute.C,
main/pa_array.C, main/pa_common.C, main/pa_dir.C,
main/pa_exception.C, main/pa_exec.C, main/pa_globals.C,
main/pa_hash.C, main/pa_pool.C, main/pa_request.C,
main/pa_socks.C, main/pa_sql_driver_manager.C, main/pa_string.C,
main/pa_table.C, main/untaint.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, main/compile.y: */ static const
char *RCSId="$Id: double.C,v 1.31 2001/06/28 07:41:59 parser Exp
$";
* src/: classes/double.C, classes/file.C, classes/form.C,
classes/hash.C, classes/image.C, classes/int.C, classes/mail.C,
classes/op.C, classes/random.C, classes/response.C,
classes/string.C, classes/table.C, classes/void.C,
main/compile.C, main/compile.y, main/compile_tools.C,
main/execute.C, main/pa_array.C, main/pa_common.C, main/pa_dir.C,
main/pa_exception.C, main/pa_exec.C, main/pa_globals.C,
main/pa_hash.C, main/pa_pool.C, main/pa_request.C,
main/pa_socks.C, main/pa_sql_driver_manager.C, main/pa_string.C,
main/pa_table.C, main/untaint.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C: static char *RCSId="$Id: ChangeLog,v 1.92 2013/10/29 16:21:27 moko Exp $";
* src/main/: compile.y, compile_tools.h: $:name: == ${name}:
$class:name: == ${class:name}:
* src/classes/string.C: exactly one
2001-06-27 parser
* src/: classes/nothing.C, classes/void.C, types/pa_vnothing.h,
types/pa_vvoid.h: nothing renamed to void
* src/classes/op.C: ^switch ^case
* src/main/compile.y: nothing renamed to void
* src/: classes/hash.C, classes/table.C, main/compile.y,
main/execute.C, main/main.dsp, main/pa_request.C,
targets/cgi/pa_pool.C, types/pa_value.h, types/pa_vcode_frame.h,
types/pa_vmethod_frame.h, types/pa_vtable.h: nothing renamed to
void
* src/main/compile.y: lexer: $zzzz^zzzz were name part
2001-05-28 parser
* src/doc/html2chm.cmd: removed >a
* src/: main/main.dsp, targets/isapi/parser3isapi.dsp: release
project options [some bugs]
* src/doc/sources2html.cmd: z
* src/: classes/classes.C, main/compile.C, main/compile.y,
main/execute.C: operators are not in root class again
2001-05-24 parser
* src/targets/cgi/parser3.dsp: project file
* src/: classes/op.C, main/pa_request.C, targets/cgi/parser3.C:
^log ^exp
* src/: main/pa_request.C, targets/cgi/parser3.C: // no _
conversions in @exception[params]
* src/main/pa_request.C: // no _ conversions in @exception[params]
2001-05-23 parser
* src/main/pa_string.C: string cmp bug
* src/classes/: mail.C, op.C: rem max 1000
* src/: classes/op.C, main/compile.y: allow one empty line before
LS_DEF_NAME
2001-05-22 parser
* src/classes/op.C: if params code-required
2001-05-21 parser
* src/types/pa_vstring.C: eoleof
* src/classes/Makefile.am: .AM
* src/classes/nothing.C: resultless ^sql moved to nothing:
* src/classes/: nothing.C, op.C: 'unknown' renamed to 'nothing'
* src/: classes/double.C, classes/nothing.C, classes/string.C,
classes/unknown.C, main/main.dsp, types/pa_vnothing.h,
types/pa_vunknown.h, classes/hash.C, main/compile.y,
main/execute.C, targets/cgi/pa_pool.C, types/pa_vcode_frame.h,
types/pa_vmethod_frame.h, types/pa_vtable.h, classes/table.C,
main/pa_request.C, types/pa_value.h: 'unknown' renamed to
'nothing'
* src/types/: pa_vstring.C, pa_vstring.h: removed unnecessary
vstring::set_string
* src/classes/: double.C, int.C, string.C: int,double;sql
* src/: classes/hash.C, classes/int.C, classes/string.C,
classes/table.C, include/pa_string.h, main/pa_string.C,
types/pa_vstring.C, types/pa_vstring.h: started int:sql
* src/: classes/classes.C, classes/hash.C, classes/op.C,
classes/table.C, main/compile.C, main/compile.y, main/execute.C:
hash:sql moved to main trunc. operators.txt updated
* src/classes/: hash.C, op.C, table.C: hash:sql
* src/classes/op.C: z
* src/: main/compile.C, classes/classes.C: 1
* src/: classes/classes.C, main/compile.C, main/compile.y,
main/execute.C: 0
* src/main/execute.C: z
* src/targets/cgi/parser3.C: z
* src/targets/cgi/parser3.C: argv can be just "parser3". made
site_auto_path "." in that case
* src/targets/cgi/: parser3.C: z
* src/main/pa_request.C: .am
* src/: main/pa_request.C, targets/cgi/parser3.C:
pcre_tables=pcre_default_tables;
2001-05-19 parser
* src/main/pa_string.C: z
* src/: include/pa_string.h, main/untaint.C, targets/cgi/pa_pool.C:
introducing String::cstr_bufsize, returns just size+1 for as_is
target.
* src/: main/untaint.C, targets/cgi/pa_pool.C,
targets/cgi/parser3.C: fixed bug in pre html untaint, wrong size
used, 4* mem wasted
* src/classes/string.C: root context in match replace body now
unchanged
* src/types/pa_value.h: parameter # 1 based
* src/main/pa_common.C: common: actual filename '%s'
* src/classes/string.C: z
* src/classes/Makefile.am: classes/.am
* src/classes/: Makefile.am: classes/.am
* src/: classes/Makefile.am, main/pa_sql_driver_manager.C,
targets/cgi/pa_pool.C: classes/.am
2001-05-18 parser
* src/: include/pa_config_auto.h.in, targets/cgi/pa_pool.C: .am
pa_threads.C ins
* src/targets/cgi/Makefile.am: .am pa_threads.C added
2001-05-17 parser
* src/: classes/string.C, include/pa_config_fixed.h,
include/pa_config_includes.h, main/compile.y,
main/compile_tools.h, main/execute.C, main/pa_array.C,
main/pa_common.C, main/pa_dir.C, main/pa_hash.C, main/pa_pool.C,
main/untaint.C, types/pa_vcookie.C, types/pa_vfile.C,
types/pa_vform.C: #include "pa_config_includes.h" removed from
most .C
* src/doc/html2chm.cmd: z
* src/doc/: chm.cmd, doxygen.cmd, html2chm.cmd, sources2html.cmd,
view.cmd, view_chm.cmd, view_html.cmd: doc cmds
* src/main/pa_sql_driver_manager.C: moved expiration to
get_connection_from_cache
* src/main/pa_sql_driver_manager.C: cache expiration bf
* src/: classes/classes.h, include/pa_sql_connection.h,
include/pa_sql_driver_manager.h, main/pa_sql_driver_manager.C:
cache expiration[use SQL_Driver::disconnect]
* src/main/pa_table.C: table.locate current restored on "not found"
* src/: main/execute.C, types/pa_vmethod_frame.h: endless recursion
line no
* src/: include/pa_request.h, main/execute.C, main/pa_request.C:
ANTI_ENDLESS_EXECUTE_RECOURSION
* src/: classes/op.C, include/pa_sql_connection.h,
include/pa_sql_driver_manager.h, main/pa_sql_driver_manager.C,
sql/pa_sql_driver.h: fixed problem at last: 2connections own
1driver and set_services fight for driver::fservices. before fix
* src/: classes/op.C, include/pa_config_fixed.h,
include/pa_sql_connection.h, include/pa_sql_driver_manager.h,
main/pa_sql_driver_manager.C: found problem at last: 2connections
own 1driver and set_services fight for driver::fservices. before
fix
* src/: include/pa_config_fixed.h, include/pa_threads.h,
targets/cgi/pa_threads.C, targets/cgi/parser3.dsp,
targets/isapi/pa_threads.C, targets/isapi/parser3isapi.dsp: added
pa_threads.C
* src/include/pa_threads.h: removed targets/parser
* src/include/: pa_array.h, pa_common.h, pa_config_fixed.h,
pa_config_includes.h, pa_exception.h, pa_exec.h, pa_globals.h,
pa_hash.h, pa_opcode.h, pa_pool.h, pa_request.h, pa_sapi.h,
pa_socks.h, pa_sql_connection.h, pa_stack.h, pa_string.h,
pa_table.h, pa_threads.h: #include "pa_config_includes.h" in all
headers
* src/: classes/image.C, include/pa_sql_driver_manager.h,
main/pa_sql_driver_manager.C, main/pa_string.C: wrong includes
order prevented sqlmanager to see MULTYTHREAD define
* src/: include/pa_config_fixed.h, include/pa_threads.h,
main/pa_sql_driver_manager.C: SYNCHRONIZED moved closer to caches
put/gets
* src/: include/pa_hash.h, main/execute.C: removed /*SYNCHRONIZED*/
from hash.h
* src/: classes/op.C, include/pa_sql_connection.h,
main/pa_sql_driver_manager.C, sql/pa_sql_driver.h: connection
from cache ->set_services(&services);
2001-05-16 parser
* src/targets/cgi/parser3.C: z
* src/: include/pa_pool.h, targets/cgi/pa_pool.C: removed pool
debug, #ifdefed some. would debug later, on more precise sample
than stupid: @main[] $name[$z[]] ^for[i](0;10000-2){ $tail[9994]
$name.$tail[$tail!] $name.$tail } ok3
* src/: include/pa_array.h, main/pa_array.C, targets/cgi/parser3.C:
removed array debug. before vstring rebasing
* src/: include/pa_array.h, include/pa_string.h, main/execute.C,
main/pa_array.C, targets/cgi/pa_pool.C, targets/cgi/parser3.C:
array debugged; adjusted
* src/main/: pa_sql_driver_manager.C, pa_string.C:
SQL_Driver_manager line no for connect/charset errors
2001-05-15 parser
* src/: include/pa_array.h, include/pa_string.h, main/pa_array.C,
main/pa_string.C: string+array made linear grows
* src/: include/pa_string.h, main/pa_string.C,
targets/cgi/pa_pool.C, targets/cgi/parser3.C: think that all must
grow lineary, not exponentialy
* src/: include/pa_pool.h, include/pa_string.h, main/pa_string.C,
targets/cgi/pa_pool.C, targets/cgi/parser3.C: string fixed bug
with fullchunk cmps
* src/targets/cgi/: pa_pool.C, parser3.C: main loss here: 5673321/
70041= 81
* src/: include/pa_string.h, targets/cgi/pa_pool.C,
targets/cgi/parser3.C: detected huge mem allocation: size/times
malloc 27809390/368771, calloc 3232/83. would test now
* src/: classes/random.C, main/compile.y, main/execute.C,
main/pa_request.C, types/pa_value.h, types/pa_vmethod_frame.h:
numbered params had wrong name - for instance: bad error message
in ^for[] bad body type. fixed
2001-05-14 parser
* src/: classes/string.C, include/pa_string.h, main/pa_string.C,
main/untaint.C: ^string.upper|lower[]
2001-05-11 parser
* src/: classes/double.C, classes/image.C, classes/op.C,
classes/string.C, classes/table.C, classes/unknown.C,
main/execute.C, types/pa_value.h, types/pa_vbool.h,
types/pa_vdouble.h, types/pa_vint.h, types/pa_vstring.h,
types/pa_vunknown.h: op: MAX_LOOPS as_int
* src/: main/main.dsp, targets/isapi/parser3isapi.dsp: fixed some
.dsp for win32tools
2001-05-11 paf
* src/: classes/classes.cmd, classes/gawk.exe, classes/ls.exe,
main/bison.exe, targets/isapi/KILL.EXE, targets/isapi/PSTAT.EXE,
targets/isapi/istart.cmd, targets/isapi/istop.cmd,
targets/isapi/kill.pl: moved win32 helpers to /win32tools
2001-05-10 paf
* src/include/: pa_common.h, pa_config_includes.h: inline undefed
for C++, that's all
* src/include/: pa_config_auto.h.in, pa_config_fixed.h,
pa_config_includes.h: inline wonders
* src/: classes/Makefile.am, classes/hash.C, doc/doxygen.cfg,
doc/doxygen.cmd: hash.C added
* src/: main/pa_request.C, types/pa_vrequest.C: op configured
* src/main/compile.y: @end grammar: allowed zero strings in control
menthod
* src/types/: pa_value.h, pa_vclass.h, pa_vstateless_class.h,
pa_vstateless_object.h: changed priority: field before method
lookup in vclass & vobject
* src/: doc/doxygen.cmd, main/compile.y, types/pa_vobject.h:
grammar: priorities changes [lowerd && prior] vobject: now first
fields, next methods
2001-05-08 paf
* src/main/pa_table.C: table columnname2item on nameless ignored
bark=false. fixed
* src/: classes/table.C, types/pa_value.h, types/pa_vhash.h,
types/pa_vmethod_frame.h: hash:default works at last!
* src/: classes/mail.C, classes/table.C, doc/doxygen.cmd,
main/main.dsp, types/pa_vhash.h, types/pa_vstateless_class.h:
hash:default
* src/classes/table.C: z
* src/classes/table.C: table:hash always hash of hash now
* src/classes/table.C: table:empty return bool now
* src/: classes/table.C, doc/chm.cmd, include/pa_array.h,
include/pa_table.h, main/pa_table.C, types/pa_value.h,
types/pa_vtable.h: table:hash
* src/classes/table.C: table:record have name
* src/: classes/op.C, types/pa_vtable.h: allowed $table.2342734
returns vunknown
* src/classes/: double.C, int.C, op.C, string.C:
int,double,string:int[] double[] string:length[] results now have
hames
* src/: classes/op.C, classes/table.C, main/main.dsp,
types/pa_vtable.h: removed table:find. table:locate and op:eval
now return bool
* src/: doc/chm.cmd, main/execute.C, types/pa_value.h: wrong pool
in method checkparams again. fixed
2001-05-07 paf
* src/doc/chm.cmd: cmd
* src/: classes/image.C, classes/mail.C, classes/string.C,
doc/chm.cmd, include/pa_table.h, main/pa_table.C,
types/pa_value.h: method reported errors on wrong pool
* src/main/execute.C: ^var[^class:var.method[]] is not constructor
now
* src/: doc/ClassExample2.dox, doc/aliased.dox, doc/chm.cmd,
include/code.h, include/pa_opcode.h, main/compile.C,
main/compile_tools.h, main/execute.C, types/pa_value.h,
types/pa_vbool.h, types/pa_vclass.h, types/pa_vcode_frame.h,
types/pa_vcookie.h, types/pa_vdouble.h, types/pa_venv.h,
types/pa_vfile.h, types/pa_vform.h, types/pa_vhash.h,
types/pa_vimage.h, types/pa_vint.h, types/pa_vjunction.h,
types/pa_vmethod_frame.h, types/pa_vobject.h,
types/pa_vrequest.h, types/pa_vresponse.h,
types/pa_vstateless_class.h, types/pa_vstring.h,
types/pa_vtable.h, types/pa_vunknown.h, types/pa_wcontext.h,
types/pa_wwrapper.h: pa_code.h
* src/doc/: chm.cmd, doxygen.cmd, view.cmd: dox cmd
* src/: classes/string.C, classes/table.C, doc/ClassExample1.dox,
doc/ClassExample2.dox, doc/ClassExample3.dox, doc/aliased.dox,
doc/class.dox, doc/compiler.dox, doc/doxygen.cfg,
doc/doxygen.cmd, doc/executor.dox, doc/index.dox,
doc/methoded.dox, doc/module.dox, doc/object.dox, doc/pooled.dox,
doc/string.dox, doc/targets.dox, doc/value.dox, include/code.h,
include/pa_hash.h, include/pa_string.h, main/pa_request.C,
main/pa_sql_driver_manager.C, types/pa_vjunction.h,
types/pa_vtable.h: dox, split by not clean parts also
* src/: include/pa_table.h, main/pa_table.C, types/pa_value.h,
types/pa_vtable.h: table: fields, then methods. so to enable
'dir' fields & co. more
* src/types/: pa_value.h, pa_vtable.h: table: fields, then methods.
so to enable 'dir' fields & co.
* src/main/compile.y: grammar: @end
2001-05-04 paf
* src/: doc/ClassExample1.dox, doc/ClassExample2.dox,
doc/ClassExample3.dox, main/execute.C: dox: example1 updated
* src/: classes/classes.h, classes/double.C, classes/file.C,
classes/form.C, classes/image.C, classes/int.C, classes/mail.C,
classes/op.C, classes/random.C, classes/response.C,
classes/string.C, classes/table.C, classes/unknown.C,
doc/doxygen.cfg, doc/index.dox, main/pa_string.C: removed m-
method dox
2001-05-03 paf
* src/: classes/classes.h, classes/double.C, doc/aliased.dox,
doc/class.dox, doc/compiler.dox, doc/doxygen.cfg,
doc/doxygen.txt, doc/executor.dox, doc/index.dox,
doc/methoded.dox, doc/module.dox, doc/object.dox, doc/pooled.dox,
doc/string.dox, doc/targets.dox, doc/value.dox,
main/pa_request.C: dox splitted .dox files and added some
* src/: classes/Makefile.am, doc/doxygen.txt: classes/am
2001-05-02 paf
* src/classes/: image.C, table.C: table:dir result are not tainted
by file_name language now
2001-04-28 paf
* src/classes/classes.inc: removed classes.inc
* src/: classes/classes.inc, main/Makefile.am: removed pa_methoded
from .am
* src/classes/classes.awk: skipped classes in .awk
* src/: classes/Makefile.am, classes/classes.C, classes/classes.h,
classes/classes.inc, classes/double.C, classes/file.C,
classes/form.C, classes/int.C, classes/op.C, classes/response.C,
classes/string.C, classes/table.C, classes/unknown.C,
include/pa_methoded.h, main/main.dsp, main/pa_methoded.C,
targets/cgi/parser3.C, types/pa_vdouble.h, types/pa_vfile.h,
types/pa_vform.h, types/pa_vimage.h, types/pa_vint.h: renamed
pa_methoded back to classes/classes.h
* src/: classes/Makefile.am, main/main.dsp: classes/Makefile.am
* src/: classes/Makefile.am, classes/classes.awk,
classes/classes.cmd, classes/classes.inc, classes/gawk.exe,
classes/ls.exe, main/bison.exe: classes.inc autogenerator
* src/: classes/classes.C, classes/classes.h, classes/double.C,
classes/file.C, classes/form.C, classes/int.C, classes/op.C,
classes/response.C, classes/string.C, classes/table.C,
classes/unknown.C, include/pa_methoded.h, main/Makefile.am,
main/main.dsp, main/pa_methoded.C, targets/cgi/parser3.C,
types/pa_vdouble.h, types/pa_vfile.h, types/pa_vform.h,
types/pa_vimage.h, types/pa_vint.h: classes/classes renamet to
include|main/pa_methoded
* src/: include/pa_string.h, main/pa_globals.C, main/untaint.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C: z
* src/: classes/form.C, include/pa_globals.h, main/pa_globals.C:
moved some configured data to request::classes_conf moved some
string crations from globals to M... [works]
* src/: classes/form.C, classes/mail.C, classes/op.C,
include/pa_globals.h, include/pa_request.h, main/pa_globals.C,
main/pa_request.C: moved some configured data to
request::classes_conf moved some string crations from globals to
M...
* src/: classes/form.C, include/pa_request.h, main/pa_request.C:
about to move configured data to special request hash
* src/: classes/classes.C, classes/classes.h, classes/file.C,
classes/form.C, classes/mail.C, include/pa_request.h,
main/pa_request.C: configure started
* src/: main/execute.C, types/pa_wcontext.h: Methoded reorganized
2. todo: methoded-configure
* src/: classes/_double.h, classes/_file.h, classes/_form.h,
classes/_image.h, classes/_int.h, classes/_mail.h, classes/_op.h,
classes/_random.h, classes/_response.h, classes/_string.h,
classes/_table.h, classes/_unknown.h, classes/classes.inc,
classes/double.C, classes/exec.C, classes/file.C, classes/form.C,
classes/image.C, classes/int.C, classes/mail.C, classes/op.C,
classes/random.C, classes/response.C, classes/string.C,
classes/table.C, classes/unknown.C, include/pa_globals.h,
include/pa_request.h, main/compile.y, main/execute.C,
main/main.dsp, main/pa_globals.C, main/pa_request.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C,
types/pa_value.h, types/pa_vcookie.h, types/pa_vdouble.h,
types/pa_venv.h, types/pa_vfile.h, types/pa_vform.C,
types/pa_vform.h, types/pa_vimage.h, types/pa_vint.h,
types/pa_vrequest.h, types/pa_vresponse.h,
types/pa_vstateless_class.h, types/pa_vstring.h,
types/pa_vtable.h, types/pa_vunknown.h, types/pa_wcontext.h,
classes/classes.C, classes/classes.h: Methoded reorganized. todo:
methoded-configure
* src/: classes/file.C, classes/table.C, main/compile.y,
main/execute.C, main/pa_request.C, targets/cgi/parser3.C,
types/pa_vtable.h, types/pa_wcontext.h: removed ^a.menu{$name}
ability. now $a{^menu{$name}} or ^a.menu{$a.name}
* src/: classes/_string.h, classes/classes.C, classes/classes.h,
classes/double.C, classes/exec.C, classes/file.C, classes/form.C,
classes/image.C, classes/int.C, classes/mail.C, classes/op.C,
classes/random.C, classes/response.C, classes/string.C,
classes/table.C, classes/unknown.C, include/pa_request.h,
main/compile.y, main/execute.C, main/pa_globals.C,
main/pa_request.C, types/pa_value.h, types/pa_vdouble.h,
types/pa_vfile.h, types/pa_vform.C, types/pa_vform.h,
types/pa_vimage.h, types/pa_vint.h, types/pa_vresponse.h,
types/pa_vstring.h, types/pa_vtable.h, types/pa_vunknown.h:
beautifying just compiled. todo: debug, configure
2001-04-27 paf
* src/: classes/file.C, classes/image.C, classes/table.C,
main/execute.C, main/pa_request.C, types/pa_vstateless_class.h:
beautifying -99
* src/: classes/_double.h, classes/_form.h, classes/_int.h,
classes/_response.h, classes/_unknown.h, classes/classes.C,
classes/classes.h, classes/double.C, classes/file.C,
classes/form.C, classes/image.C, classes/int.C, classes/mail.C,
classes/op.C, classes/random.C, classes/response.C,
classes/string.C, include/pa_globals.h, main/main.dsp,
main/pa_globals.C, types/pa_vdouble.h, types/pa_vfile.h,
types/pa_vform.h, types/pa_vimage.h, types/pa_vint.h,
types/pa_vresponse.h, types/pa_vstring.h, types/pa_vtable.h,
types/pa_vunknown.h: beautifying -100
* src/main/compile.y: serge@ found @CLASS bug. fixed
* src/: classes/_file.h, classes/_image.h, classes/_mail.h,
classes/_op.h, classes/_random.h, classes/_table.h,
classes/file.C, classes/image.C, classes/int.C, classes/mail.C,
classes/op.C, classes/random.C, classes/response.C,
classes/string.C, classes/table.C, classes/unknown.C,
include/pa_globals.h, main/main.dsp, main/pa_globals.C,
main/pa_request.C, targets/cgi/parser3.C, types/pa_value.h,
types/pa_vcookie.h, types/pa_venv.h, types/pa_vrequest.h: started
beautifying
2001-04-26 paf
* src/: main/pa_request.C, types/pa_vfile.h: code documentation ++
* src/: doc/doxygen.cfg, include/pa_socks.h, main/pa_socks.C: code
documentation ++
* src/: classes/_exec.h, doc/doxygen.cfg,
include/pa_config_fixed.h, include/pa_config_includes.h,
targets/cgi/pa_pool.C: code documentation ++
* src/: classes/_image.h, classes/op.C, classes/random.C,
types/pa_vbool.h, types/pa_vclass.h, types/pa_vcode_frame.h,
types/pa_vcookie.h, types/pa_vdouble.h, types/pa_venv.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vimage.C,
types/pa_vimage.h, types/pa_vint.h, types/pa_vjunction.h,
types/pa_vmethod_frame.h, types/pa_vobject.h,
types/pa_vrequest.C, types/pa_vrequest.h,
types/pa_vstateless_class.C, types/pa_vstateless_object.h,
types/pa_vstring.C, types/pa_vstring.h, types/pa_vtable.h,
types/pa_vunknown.h, types/pa_wcontext.C, types/pa_wwrapper.h:
code documentation ++
* src/: classes/image.C, classes/mail.C, classes/string.C,
classes/table.C, doc/doxygen.cfg, doc/doxygen.txt,
include/pa_array.h, include/pa_dir.h, include/pa_string.h,
main/compile_tools.h, main/pa_common.C, sql/pa_sql_driver.h,
types/pa_vbool.h, types/pa_vclass.h, types/pa_vcode_frame.h,
types/pa_vhash.h, types/pa_vjunction.h, types/pa_vmethod_frame.h,
types/pa_vobject.h, types/pa_vstateless_class.h,
types/pa_wcontext.h, types/pa_wwrapper.h: code documentation ++
* src/main/: pa_request.C, pa_string.C: z
* src/: include/pa_common.h, include/pa_types.h,
main/pa_sql_driver_manager.C: module [and, guess, isapi]
connection caching fixed. request-pooled-url were stored into
global connectioncache
2001-04-25 paf
* src/: doc/doxygen.cfg, doc/doxygen.txt,
targets/isapi/parser3isapi.C: started doc / [doxygen.txt]
* src/: include/code.h, include/pa_common.h, main/compile.y,
main/execute.C, main/pa_common.C: -d
* src/: classes/file.C, main/pa_exec.C, targets/cgi/parser3.C:
illegal call check a bit improved, but still under iis no mapping
of dir with parser allowed!
2001-04-24 paf
* src/targets/Makefile.am: apache module lib .am
* src/main/pa_exec.C: windows32 buildCommand
2001-04-23 paf
* src/targets/cgi/Makefile.am: win32 conditional
* src/targets/cgi/Makefile.am: win32 conditional
* src/targets/cgi/Makefile.am: liblink
* src/: include/pa_array.h, main/pa_array.C, types/pa_vfile.h:
vfile fields return type
* src/types/pa_vfile.h: vfile fields return type
* src/include/pa_config_auto.h.in: .h.in
* src/: classes/Makefile, main/Makefile, targets/cgi/Makefile,
types/Makefile: makefiles removed
* src/: classes/Makefile, main/Makefile, main/pa_string.C,
targets/cgi/Makefile, types/Makefile: configure.in + makefiles
* src/main/pa_string.C: tested OK /// @test really @b test: s x m
[tested: i & g ]
* src/: classes/random.C, targets/cgi/parser3.C: redo failed ///
@test noticed series in isapi, check how initialize_random_class
is called! [must be called only once]
* src/main/execute.C: operators first! so that ^table.menu{^rem{}}
would not be 'unknown column'
* src/: classes/table.C, types/pa_vform.C, types/pa_vtable.h: ///
@test $a.menu{ $a[123] } and $a.menu{^table:set[]...}
* src/: main/pa_request.C, targets/cgi/parser3.C: /// @test with
commandline start "parser3 a.html" so that ^load[a.cfg] worked!
[now doesnt]
* src/targets/cgi/parser3.C: cgi cmdline ver
* src/targets/cgi/parser3.C: cgi /// @test disable
/cgi-bin/parser3/auto.p
* src/main/untaint.C: untaint without charset
* src/: include/pa_config_fixed.h, include/pa_config_includes.h,
main/pa_common.C: common: file_write /// @test mkdirs
file_delete rmdirs
* src/main/untaint.C: mail header only once to =?
* src/: classes/image.C, classes/mail.C, include/pa_globals.h,
include/pa_string.h, main/pa_exec.C, main/pa_request.C,
main/untaint.C: untaint - @test optimize whitespaces for
all but 'html'
* src/: classes/mail.C, include/pa_hash.h, include/pa_string.h,
main/pa_common.C, main/pa_hash.C, main/pa_request.C,
main/untaint.C: untaint - @test mail-header
2001-04-20 paf
* src/: classes/string.C, classes/table.C, include/pa_globals.h,
include/pa_request.h, include/pa_string.h, main/compile.y,
main/pa_globals.C, main/pa_request.C, main/pa_string.C,
targets/cgi/parser3.C: $MAIN:LOCALE
* src/main/untaint.C: z
* src/: main/untaint.C, targets/cgi/parser3.C: fixed header "a/a"
2001-04-19 paf
* src/main/compile_tools.h: $a$b bugfix
* src/targets/cgi/parser3.C: z
* src/classes/file.C: z
* src/: classes/file.C, include/pa_common.h, types/pa_vcookie.C:
done: header to $fields. waits for header '\' tricks
* src/: include/pa_common.h, main/pa_common.C, main/pa_request.C,
main/untaint.C, targets/isapi/parser3isapi.C, types/pa_vcookie.C:
changed urlencode here and in untaint.C to HTTP standard's " and
\" mech
* src/: main/pa_request.C, targets/isapi/parser3isapi.C: fixed
http://alx/~paf/ doesnt load /auto.p
2001-04-18 paf
* src/main/pa_request.C: 1
* src/: main/Makefile.am, main/main.dsp, targets/cgi/Makefile.am:
linux @alx
2001-04-17 paf
* src/: classes/file.C, classes/image.C, doc/doxygen.cfg,
include/pa_sql_connection.h, main/pa_sql_driver_manager.C,
sql/pa_sql_driver.h: SQL_Driver_services renamed. doxygen statics
enabled
* src/: Makefile.am, classes/Makefile.am, classes/_double.h,
classes/_exec.h, classes/_file.h, classes/_form.h,
classes/_image.h, classes/_int.h, classes/_mail.h, classes/_op.h,
classes/_random.h, classes/_response.h, classes/_string.h,
classes/_table.h, classes/_unknown.h, classes/file.C,
classes/image.C, classes/mail.C, classes/op.C, classes/random.C,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_hash.h, include/pa_sql_driver_manager.h,
include/pa_version.h, main/Makefile.am, main/compile.y,
main/pa_common.C, main/pa_exec.C, main/pa_socks.C,
main/pa_sql_driver_manager.C, sql/Makefile.am,
sql/pa_sql_driver.h, targets/cgi/Makefile.am,
targets/cgi/parser3.C, types/Makefile.am, types/pa_vcookie.C,
types/pa_vform.C, types/pa_vimage.h: exec @jav
* src/: include/pa_sql_driver_manager.h,
main/pa_sql_driver_manager.C, sql/pa_sql_driver.h,
types/pa_vimage.h: sql driver interface now has initialize(client
.so)
2001-04-16 paf
* src/Makefile.am: compile2 cygwin
* src/: include/pa_config_includes.h, main/pa_exec.C,
main/pa_socks.C, targets/cgi/Makefile.am: compile1 cygwin
* src/targets/cgi/Makefile.am: compile0 jav
* src/: Makefile.am, classes/Makefile.am, classes/_double.h,
classes/_exec.h, classes/_file.h, classes/_form.h,
classes/_image.h, classes/_int.h, classes/_mail.h, classes/_op.h,
classes/_random.h, classes/_response.h, classes/_string.h,
classes/_table.h, classes/_unknown.h, classes/image.C,
classes/mail.C, classes/op.C, classes/random.C,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_hash.h, include/pa_version.h, main/Makefile.am,
main/compile.y, main/pa_common.C, main/pa_exec.C,
sql/Makefile.am, targets/cgi/Makefile.am, targets/cgi/parser3.C,
types/Makefile.am, types/pa_vcookie.C, types/pa_vform.C:
compile-1
2001-04-15 paf
* src/classes/op.C: z
* src/classes/table.C: table:empty +=process
* src/types/pa_value.h: MethodParams !junction
* src/: classes/_string.h, classes/double.C, classes/file.C,
classes/image.C, classes/int.C, classes/mail.C, classes/op.C,
classes/random.C, classes/response.C, classes/string.C,
classes/table.C, classes/unknown.C, main/pa_request.C:
MethodParams everywhere
* src/: classes/op.C, include/pa_request.h, types/pa_value.h,
types/pa_vmethod_frame.h: MethodParams in op.C
2001-04-12 paf
* src/: classes/image.C, types/pa_vimage.h: image:font :text
* src/: classes/_unknown.h, classes/unknown.C,
include/pa_globals.h, main/main.dsp, main/pa_globals.C,
types/pa_vunknown.h: ^unknown:int[]=0 double[]=0
* src/: classes/image.C, main/pa_hash.C: hash bug fixed
* src/classes/image.C: image:gif now does not have params
* src/classes/image.C:
image:line/fill/rectangle/bar/replace/polygon/polybar
* src/: classes/image.C, classes/op.C, main/execute.C,
types/pa_value.h, types/pa_vmethod_frame.h, types/pa_wcontext.h:
for var now written not to r.wcontext, but to r.root cleared
"entered_object" state
2001-04-11 paf
* src/classes/image.C: image:create image:load
* src/: classes/image.C, main/main.dsp: gd with mem write + image
just compiled
* src/: classes/image.C, types/pa_vimage.C, types/pa_vimage.h: gd
todo: gif without file
* src/: classes/image.C, types/pa_vimage.C, types/pa_vimage.h: gd
started porting to Pooled descendant
* src/: classes/image.C, main/execute.C, main/main.dsp,
main/pa_request.C, types/pa_vcframe.h, types/pa_vcode_frame.h,
types/pa_vimage.C, types/pa_vimage.h, types/pa_vmethod_frame.h,
types/pa_vmframe.h: libimaging dead end: pil parses header in .py
* src/: classes/image.C, include/pa_globals.h, main/main.dsp,
main/pa_globals.C, types/pa_vimage.C, types/pa_vimage.h: gd dead
end. switching to python imaging lib
* src/main/main.dsp: gd+smtp made separate libs
* src/: include/pa_globals.h, include/pa_string.h,
main/pa_common.C, main/pa_request.C, main/untaint.C,
types/pa_vfile.C, types/pa_vstring.C: fixed vstring:as_vfile
length
* src/: classes/mail.C, classes/op.C, targets/cgi/parser3.C,
types/pa_value.h, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vstring.C, types/pa_vstring.h: forced
UL_FILE_NAME of posted file name
* src/: classes/image.C, main/pa_request.C, types/pa_vform.C: fixed
post [broke when moved post read to core]
2001-04-10 paf
* src/classes/image.C: image:html done
* src/: classes/image.C, types/pa_vimage.C: jpg measure bugs fixed
* src/classes/image.C: z
* src/: classes/_image.h, classes/image.C, types/pa_vimage.C: image
forgotten!
* src/: classes/table.C, include/pa_common.h, main/pa_common.C,
main/pa_request.C, main/pa_string.C, main/untaint.C,
types/pa_vimage.h: image:measure -90
* src/: classes/_double.h, classes/_file.h, classes/_form.h,
classes/_int.h, classes/_mail.h, classes/_op.h,
classes/_random.h, classes/_response.h, classes/_string.h,
classes/_table.h, classes/file.C, classes/mail.C,
include/pa_common.h, include/pa_globals.h, main/execute.C,
main/main.dsp, main/pa_common.C, main/pa_globals.C,
targets/isapi/parser3isapi.C, types/pa_value.h, types/pa_vfile.C,
types/pa_vfile.h, types/pa_vhash.h, types/pa_vimage.h,
types/pa_vresponse.h, types/pa_vstring.h: image:measure -100 just
compiled
* src/classes/mail.C: minor bug with unclear from/to
* src/classes/mail.C: sendmail unix skipping defaults
* src/: classes/mail.C, include/pa_common.h, main/pa_common.C:
sendmail unix added defaults
* src/classes/mail.C: unix sendmail compiled. todo:testing
* src/: classes/mail.C, main/pa_globals.C: smtp some consts
2001-04-09 paf
* src/: classes/file.C, include/pa_exec.h, include/pa_sapi.h,
main/main.dsp, main/pa_exec.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, targets/isapi/parser3isapi.C,
targets/isapi/parser3isapi.dsp: all targets exec
* src/: include/pa_sapi.h, include/pa_string.h,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C,
targets/isapi/parser3isapi.dsp: sapi exec dead end. badly parsed
args in apache:util.script
* src/include/pa_string.h: written but not tested exec with env for
unix
* src/: classes/file.C, main/main.dsp, main/pa_request.C,
targets/cgi/parser3.C: exec win32 env
* src/: classes/file.C, include/pa_hash.h, main/pa_hash.C: exec env
0
* src/: classes/exec.C, classes/file.C, include/pa_globals.h,
main/execute.C, main/main.dsp, main/pa_globals.C,
main/pa_request.C, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vform.C, types/pa_vstring.C: exec4. todo env
* src/: classes/exec.C, include/pa_common.h, main/pa_common.C,
main/untaint.C: exec3. decided exec:cgi to move to file:cgi
* src/: classes/_exec.h, main/execute.C, main/pa_globals.C,
main/pa_request.C, types/pa_vcookie.C, types/pa_vfile.C: exec -2
* src/: classes/_exec.h, classes/exec.C, include/pa_common.h,
include/pa_request.h, include/pa_sapi.h, include/pa_string.h,
main/pa_common.C, main/pa_request.C, main/pa_string.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.C, types/pa_vform.C, types/pa_vform.h:
exec class just compiled. moved post read to request core
* src/: classes/_op.h, include/pa_dir.h, include/pa_globals.h,
include/pa_sapi.h, main/main.dsp, main/pa_dir.C,
main/pa_globals.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp: problems with ^exec:cgi post data. they
are already read by vform
2001-04-08 paf
* src/: classes/file.C, classes/mail.C, classes/string.C,
include/pa_request.h, include/pa_string.h, main/pa_request.C:
uuencode. string<<
2001-04-07 paf
* src/classes/mail.C: z
* src/classes/mail.C: z
* src/classes/mail.C: ^mail[$attach
* src/classes/mail.C: ^attach dead end
* src/: include/pa_socks.h, main/main.dsp, main/pa_socks.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.C: mail:send 1
* src/: classes/mail.C, main/pa_request.C: z
* src/: classes/mail.C, include/pa_globals.h, include/pa_request.h,
main/main.dsp, main/pa_globals.C, main/pa_request.C: smtp just
compiled
* src/classes/mail.C: +=
* src/: classes/mail.C, include/pa_string.h: mail:send -1 text
prepared
* src/: classes/_mail.h, classes/mail.C, include/pa_common.h,
include/pa_globals.h, include/pa_string.h, main/main.dsp,
main/pa_common.C, main/pa_globals.C, main/pa_request.C,
main/untaint.C, types/pa_vcookie.C: mail:send -10 just compiled
2001-04-06 paf
* src/: classes/table.C, include/pa_globals.h, main/pa_globals.C,
main/pa_string.C: table:dir 1
* src/: classes/table.C, include/pa_dir.h, main/execute.C,
main/main.dsp, main/pa_dir.C: table:dir 0 [without regexp]
* src/: classes/_op.h, classes/_root.h, classes/op.C,
classes/root.C, include/pa_globals.h, include/pa_request.h,
main/compile.C, main/execute.C, main/main.dsp, main/pa_globals.C,
main/pa_request.C: renamed 'root' to 'op'
* src/classes/: _op.h, op.C: renamed from 'root'
* src/types/pa_valiased.C: another root inherititance skipped
* src/main/: compile.C, compile.y, execute.C: operators are now not
root methods of parent class. just 'ROOT' class
* src/: classes/random.C, classes/table.C, main/pa_globals.C:
@office
* src/: main/pa_request.C, sql/pa_sql_driver.h: mysql limit
2001-04-05 paf
* src/: main/execute.C, main/pa_request.C, main/pa_string.C,
types/pa_value.h, types/pa_vmframe.h, types/pa_wcontext.h:
constructor flag dropped at get_method_frame and remembered into
method_frame
* src/: classes/file.C, classes/root.C, classes/string.C,
classes/table.C, main/pa_request.C: junction to code&expression
in errors
* src/: include/pa_globals.h, main/pa_globals.C, main/pa_request.C,
main/pa_string.C, targets/isapi/parser3isapi.dsp:
$LOCALE:ctype[Russian_Russia.1251]
* src/: include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_hash.h, include/pa_string.h, main/pa_hash.C,
main/pa_table.C: hash now not thread-safe.
* src/: classes/table.C, include/pa_string.h, main/pa_string.C,
main/untaint.C: z
* src/: classes/random.C, classes/root.C, classes/table.C,
include/pa_sql_connection.h, include/pa_string.h, main/execute.C,
main/pa_sql_driver_manager.C, main/pa_string.C, main/untaint.C,
sql/pa_sql_driver.h, types/pa_vmframe.h, types/pa_wcontext.C,
types/pa_wcontext.h: sql quote. string untaint UL_SQL
* src/: classes/table.C, include/pa_sql_connection.h,
main/pa_sql_driver_manager.C, sql/pa_sql_driver.h: sql ping
* src/classes/table.C: select * from hren error contains statement
* src/: classes/table.C, include/pa_sql_connection.h,
include/pa_types.h, main/pa_sql_driver_manager.C, main/untaint.C,
sql/pa_sql_driver.h, targets/cgi/parser3.dsp: mysql 0
* src/: classes/root.C, include/pa_sql_connection.h,
include/pa_sql_driver.h, main/main.dsp,
main/pa_sql_driver_manager.C, sql/pa_sql_driver.h: sql driver
services for conv memory & error reporting
2001-04-04 paf
* src/doc/doxygen.cfg: z
* src/include/pa_sql_driver.h: mysql connect
* src/include/pa_sql_driver.h: mysql info
* src/: classes/root.C, include/pa_sql_driver.h,
include/pa_sql_driver_manager.h, main/main.dsp,
main/pa_sql_driver_manager.C: more manager&connection&driver
* src/sql/Makefile.am: forgot to add mysql client
* src/: include/pa_sql_driver.h, include/pa_sql_driver_manager.h,
main/pa_sql_driver_manager.C: connect&sql -1000 just compiled
[forgot to add libltdl, added]
* src/: Makefile.am, classes/root.C, classes/string.C,
classes/table.C, include/pa_globals.h, include/pa_hash.h,
include/pa_pool.h, include/pa_request.h, include/pa_sapi.h,
include/pa_string.h, include/pa_table.h, main/main.dsp,
main/pa_globals.C, main/pa_hash.C, main/pa_request.C,
main/pa_string.C, main/pa_table.C, main/untaint.C: connect&sql
-1000 just compiled
* src/: classes/random.C, classes/root.C, classes/table.C,
include/pa_globals.h, include/pa_pool.h, include/pa_request.h,
main/pa_request.C, types/pa_vclass.h: sql frame -10
2001-04-03 paf
* src/types/pa_vform.C: z
* src/: classes/string.C, types/pa_vform.C: string:match replace
assigned lang
* src/: classes/string.C, main/compile.y: grammar: fixed to allow
{}[]< empty []
* src/: classes/file.C, classes/string.C, classes/table.C,
include/pa_string.h, main/pa_common.C, main/pa_string.C,
main/untaint.C: string:match replace 2. string.cstr(forced lang)
* src/: classes/string.C, include/pa_string.h, main/pa_string.C:
string:match replace strange matches
* src/classes/string.C: string:match replace 0
* src/: classes/string.C, main/pa_string.C: string:match replace
prepared 2
* src/: classes/string.C, include/pa_string.h, main/pa_string.C:
string:match replace prepared
* src/: classes/string.C, include/pa_string.h, main/pa_string.C:
string:match replace -11
* src/: classes/string.C, include/pa_globals.h,
include/pa_string.h, include/pa_threads.h, main/pa_globals.C,
main/pa_string.C, targets/isapi/parser3isapi.dsp: string:match 0
* src/: classes/string.C, include/pa_globals.h,
include/pa_string.h, main/main.dsp, main/pa_globals.C,
main/pa_string.C: string:match [search] -1 just compiled
* src/types/pa_vstring.C: z
* src/: classes/double.C, classes/file.C, classes/form.C,
classes/int.C, classes/response.C, classes/root.C,
classes/string.C, classes/table.C, include/pa_string.h,
main/pa_string.C: string:match -10 [frame]
* src/: classes/file.C, main/compile_tools.C, main/pa_common.C,
main/pa_request.C: z
* src/: main/pa_common.C, main/untaint.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, targets/isapi/pool_storage.h:
todo/tests
* src/include/pa_common.h: z
* src/: include/pa_globals.h, include/pa_hash.h, main/pa_globals.C,
main/pa_request.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, types/pa_vfile.C:
content-disposition
* src/: include/pa_common.h, include/pa_globals.h,
main/pa_globals.C, main/pa_request.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, types/pa_value.h: main:post-process
* src/: include/pa_common.h, include/pa_request.h,
include/pa_sapi.h, main/main.dsp, main/pa_common.C,
main/pa_request.C, targets/cgi/parser3.C, types/pa_value.h,
types/pa_vfile.C, types/pa_vfile.h, types/pa_vstring.h: vfile in
response:body
* src/classes/table.C: table:append now uses string::split
* src/classes/table.C: z
* src/: classes/file.C, classes/root.C, classes/string.C,
classes/table.C, doc/doxygen.cmd, doc/doxygen.txt,
doc/generate.cmd, include/pa_array.h, include/pa_request.h,
include/pa_string.h, main/execute.C, main/pa_string.C,
main/untaint.C, targets/cgi/parser3.C, types/pa_vcookie.C:
string::pos & cmp & piece bugs fixed. string::split new
table:load separated from set table:set implemented with clean \n
\t searches
2001-04-02 paf
* src/: classes/table.C, include/pa_string.h, main/pa_string.C,
types/pa_valiased.C, types/pa_valiased.h, types/pa_vdouble.h,
types/pa_vfile.h, types/pa_vint.h, types/pa_vresponse.h,
types/pa_vstring.h, types/pa_vtable.h: string::pos. about to use
it in table:set/load
* src/: classes/table.C, include/pa_array.h, include/pa_string.h,
include/pa_table.h, main/execute.C, types/pa_value.h: table:join
* src/classes/random.C: random:generate 1
* src/: classes/_random.h, classes/random.C, include/pa_globals.h,
main/main.dsp, main/pa_globals.C, main/pa_request.C,
types/pa_value.h: random:generate
2001-03-30 paf
* src/: classes/table.C, include/pa_string.h, main/pa_string.C:
todo: table flip and append. string::pos
* src/: classes/double.C, classes/file.C, classes/int.C,
classes/response.C, classes/root.C, classes/string.C,
classes/table.C, main/compile.y, main/execute.C,
types/pa_value.h, types/pa_vstateless_class.C,
types/pa_vstateless_class.h: static|dynamic|any method
registration
* src/: classes/file.C, classes/table.C, include/pa_table.h,
main/pa_table.C, types/pa_vstring.h, types/pa_wwrapper.h:
table:flip
2001-03-29 paf
* src/classes/string.C: string:xsplit forgot that they must result
in 1 row N column [not vice versa]
* src/classes/string.C: z
* src/classes/string.C: string: rsplit
* src/: classes/string.C, include/pa_string.h, main/pa_string.C:
string: lsplit
* src/: classes/string.C, include/pa_string.h, main/execute.C,
main/pa_array.C, main/pa_string.C, types/pa_vtable.h: string:
lsplit -1
* src/: include/pa_string.h, main/pa_string.C, main/untaint.C:
string: pos
* src/: classes/string.C, include/pa_string.h, main/pa_string.C:
string: pos -1
* src/: classes/string.C, classes/table.C, include/pa_string.h,
main/compile.y, main/pa_request.C, main/pa_string.C,
main/untaint.C: string: left right mid
* src/: classes/string.C, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/main.dsp, types/pa_value.h,
types/pa_vstring.h, types/pa_vunknown.h: empty params allowed. []
and [;] are different now.
* src/: include/pa_pool.h, include/pa_request.h, main/pa_request.C,
main/untaint.C: pool.request undone
* src/: include/pa_pool.h, include/pa_request.h, main/pa_request.C,
main/untaint.C: pool.request
2001-03-28 paf
* src/: classes/file.C, include/pa_globals.h, include/pa_request.h,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C,
types/pa_value.h, types/pa_vrequest.C, types/pa_vunknown.h:
$request:browser [.type .version]; unknown.get_double now = 0.
* src/: classes/file.C, include/pa_globals.h, include/pa_request.h,
include/pa_table.h, main/pa_globals.C, main/pa_request.C,
main/pa_table.C, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vform.C: file:load autodetection of mime-type by
user-file-name
* src/: classes/file.C, main/execute.C, main/pa_common.C,
main/untaint.C, targets/cgi/parser3.C, types/pa_vfile.C,
types/pa_vfile.h, types/pa_vform.C: file:load 1. tainted
* src/: classes/file.C, include/pa_common.h, main/pa_common.C,
types/pa_vfile.C, types/pa_vfile.h: started file:load. wrong
write. must be self.set
* src/: classes/file.C, classes/root.C, classes/table.C,
include/pa_table.h, main/pa_table.C: table:locate1, file:test
* src/: classes/table.C, include/pa_array.h, include/pa_hash.h,
include/pa_table.h, main/pa_array.C, main/pa_table.C,
types/pa_vtable.h: table:locate just compiled
2001-03-27 paf
* src/main/: execute.C, pa_common.C: fixed r/w context of
code-params2, fixed ntfs hardlink slow dir update
* src/: main/execute.C, types/pa_value.h, types/pa_vmframe.h,
types/pa_wcontext.h: fixed r/w context of code-params
* src/: classes/table.C, main/execute.C: about to change junction
rcontext!!
* src/: classes/double.C, classes/int.C, classes/root.C,
classes/string.C, classes/table.C, main/compile_tools.C,
main/execute.C, main/pa_request.C, main/untaint.C,
types/pa_value.h, types/pa_vbool.h, types/pa_vcookie.C,
types/pa_vdouble.h, types/pa_vfile.h, types/pa_vint.h,
types/pa_vmframe.h, types/pa_vstring.h, types/pa_vtable.h,
types/pa_vunknown.h: sort 0
* src/types/: pa_valiased.C, pa_valiased.h, pa_vdouble.h,
pa_vfile.h, pa_vint.h, pa_vresponse.h, pa_vstring.h, pa_vtable.h:
renamed to are_static_calls_disabled
* src/: classes/table.C, main/pa_common.C, main/pa_request.C,
targets/cgi/parser3.C, types/pa_value.h, types/pa_vbool.h,
types/pa_vdouble.h, types/pa_vfile.h, types/pa_vint.h,
types/pa_vstring.h, types/pa_vunknown.h: continue on sort
* src/main/compile.y: fixed minor bug in @mn[][] ...^{
* src/: classes/table.C, include/pa_common.h, main/compile.y:
started table:sort fixed minor bug in #...^{
* src/: classes/table.C, include/pa_common.h, main/compile.y,
main/execute.C, main/pa_common.C, main/pa_table.C: table:save
decided to have as it were. stepped back. grammar: added 'in'
'is' 'lt'&co follow-space check
2001-03-26 paf
* src/: classes/file.C, classes/root.C, classes/table.C,
include/pa_common.h, include/pa_globals.h, include/pa_table.h,
main/pa_common.C, main/pa_globals.C, main/pa_request.C,
main/pa_table.C: moved ::save to pa_table. disabled @auto
invocation in ^process
* src/main/compile.y: grammar: [] 0params [;] 2 params (was 0)
* src/: classes/table.C, include/pa_array.h, include/pa_table.h,
main/pa_array.C: table:record
* src/: main/untaint.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, targets/isapi/parser3isapi.dsp,
targets/isapi/pool_storage.h, types/pa_valiased.h,
types/pa_vcookie.C, types/pa_vdouble.h, types/pa_vfile.h,
types/pa_vint.h, types/pa_vresponse.h, types/pa_vstring.h,
types/pa_vtable.h: z
* src/: include/pa_pool.h, main/execute.C, types/pa_valiased.C,
types/pa_valiased.h, types/pa_value.h, types/pa_vdouble.h,
types/pa_vfile.h, types/pa_vint.h, types/pa_vresponse.h,
types/pa_vstring.h, types/pa_vtable.h: disabled $a(123)
$b[$a.CLASS] ^b.inc[123] shit. allowed no checks in native
method realisations on 'self' validity - they now can simply
assume that 'self' is V{Proper} .
2001-03-25 paf
* src/main/untaint.C: z
* src/main/: pa_request.C, untaint.C: moved default typo-table to
lowlevel - it initialization could be skipped if failed in @auto.
so that exception report would use some table
* src/main/pa_request.C: table empty lines ignored. system-default
content type assigned in output:result [can fail in main:auto and
skipped normal defaults extraction]
* src/: include/pa_string.h, main/compile.y: #comment fixed minor
bug
* src/main/: pa_globals.C, untaint.C: html-typo - moved all
processing to table [except preliminary \r\n \r \n replacements
to "\n"]
* src/: classes/table.C, main/untaint.C: html-typo - decided to
move all the processing to table
* src/: classes/table.C, include/pa_table.h, main/pa_globals.C,
main/pa_table.C, main/untaint.C: returned table originating.
useful for reporting typo table problems origin. think would be
useful somewhere else
* src/main/untaint.C: typo \r \r\n \n properly handled
* src/: classes/table.C, include/pa_globals.h, include/pa_string.h,
include/pa_table.h, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/pa_globals.C, main/pa_request.C,
main/pa_string.C, main/pa_table.C, main/untaint.C,
types/pa_vcookie.h: typo & typo-default
2001-03-24 paf
* src/main/pa_common.C: z
* src/: include/pa_string.h, main/pa_string.C, main/untaint.C,
targets/cgi/parser3.C: html-typo 2
* src/: doc/doxygen.cfg, doc/doxygen.txt, doc/generate.cmd,
doc/view.cmd, include/pa_array.h, include/pa_globals.h,
include/pa_pool.h, include/pa_string.h, include/pa_table.h,
main/execute.C, main/pa_array.C, main/pa_globals.C,
main/pa_request.C, main/pa_string.C, main/untaint.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C,
types/pa_value.h, types/pa_vtable.h: html-typo 0 html-typo 1.
noticed double default content-type prob. run cgi.cmd tomorrow
first html-typo sample. detected << problem: they become ltlt too
fast
* src/main/compile.y: z
* src/main/: compile.y, compile_tools.h: #comment
* src/: classes/file.C, classes/root.C, classes/table.C,
include/pa_common.h, include/pa_request.h, main/compile.y,
main/pa_common.C, main/pa_request.C, main/pa_string.C,
targets/isapi/parser3isapi.C, types/pa_vfile.h: file_read
stringified
* src/types/pa_valiased.C: decided to String-ify file_read
* src/targets/: cgi/parser3.C, isapi/nt_log_events.mc,
isapi/parser3isapi.dsp: cgi: sapi::log
* src/: include/pa_sapi.h, main/pa_common.C, main/pa_request.C,
targets/cgi/parser3.C, targets/isapi/nt_log_events.mc,
targets/isapi/parser3isapi.C, targets/isapi/parser3isapi.dsp: nt
error log experiments failed - cgi under iis got no access to
log. registereventsource simply failed with 5(illegal call) code,
while worked OK as standalone executable. isapi: used
HSE_APPEND_LOG_PARAMETER feature
* src/: include/pa_common.h, include/pa_globals.h,
main/pa_common.C, main/pa_globals.C, main/pa_request.C,
targets/isapi/parser3isapi.C: fixed default content-type
allocation storage
* src/: include/pa_globals.h, include/pa_request.h,
main/pa_globals.C, main/pa_request.C: z
* src/: include/pa_array.h, include/pa_hash.h,
include/pa_request.h, main/compile.y, main/pa_array.C,
main/pa_common.C, main/pa_hash.C, main/pa_request.C,
types/pa_vcookie.C: cyclic uses ignored. defaulted default
content-type
* src/main/: compile.y, execute.C, main.dsp: @CLASS equals @BASE.
sanity
* src/: main/pa_globals.C, types/pa_vclass.C, types/pa_vclass.h,
types/pa_vstateless_class.C, types/pa_vstateless_class.h: thrown
away freeze mech. no danger now for you can't do
^request:process[@new-method[] body] trick anymore. still
remains $some_instance.process[@new-method[] possibility] but
would leave it as a feature. see index for sample
* src/: include/pa_common.h, main/pa_common.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C: auto.p
monkey every target
* src/: include/pa_common.h, main/pa_common.C, main/pa_request.C,
targets/cgi/parser3.C, targets/isapi/pool_storage.h,
types/pa_vform.C, types/pa_vform.h: auto.p monkey
2001-03-23 paf
* src/: include/pa_pool.h, main/pa_request.C,
targets/cgi/pa_pool.C, targets/isapi/pa_pool.C,
targets/isapi/parser3isapi.C, targets/isapi/parser3isapi.dsp,
targets/isapi/pool_storage.h: isapi: dumb pool storage
* src/targets/isapi/pa_pool.C: decided to continue with extension
* src/targets/: cgi/parser3.C, isapi/parser3isapi.C: isapi: think
it would be better to rewrite as filter then to deal with pool
* src/: main/main.dsp, targets/isapi/parser3isapi.C: isapi: docroot
now like in cgi, not from APPL_PHYSICAL_PATH
* src/: classes/root.C, classes/table.C, include/pa_common.h,
include/pa_config_fixed.h, include/pa_config_includes.h,
include/pa_string.h, include/pa_threads.h, include/pa_types.h,
include/pa_version.h, main/compile.y, main/execute.C,
main/pa_array.C, main/pa_common.C, main/pa_hash.C,
main/pa_pool.C, main/pa_request.C, main/pa_string.C,
main/untaint.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, types/pa_vfile.C, types/pa_vform.C:
cgi: reinvent document_root and request_uri under iis. autoconf
updated. introducing ap_config_includes
* src/targets/cgi/parser3.C: cgi: reinvent document_root under iis
* src/targets/cgi/parser3.C: cgi: only one pool now
* src/: include/pa_globals.h, include/pa_sapi.h, main/main.dsp,
main/pa_globals.C, main/pa_request.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, types/pa_vcookie.C,
types/pa_venv.h, types/pa_vform.C: sapi made object
* src/: include/pa_globals.h, main/pa_request.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp,
targets/isapi/parser3isapi.C, types/pa_vcookie.C,
types/pa_venv.h, types/pa_vform.C: all: sapi beauty
* src/: main/pa_request.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, targets/isapi/parser3isapi.dsp:
isapi minor env beauty
* src/: main/pa_request.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, targets/isapi/parser3isapi.dsp:
isapi document_root 0
2001-03-22 paf
* src/targets/isapi/parser3isapi.C: isapi keep-alive
* src/targets/: cgi/vform_fields_fill.C, cgi/vform_fields_fill.h,
isapi/parser3isapi.C: z
* src/: include/pa_pool.h, main/pa_request.C,
targets/cgi/parser3.C, targets/isapi/parser3isapi.C: isapi 1
* src/targets/isapi/: KILL.EXE, PSTAT.EXE, istart.cmd, istop.cmd,
kill.pl: isapi added utils
* src/: include/pa_pool.h, main/pa_pool.C, targets/cgi/parser3.C,
targets/isapi/parser3isapi.C, targets/isapi/parser3isapi.dsp,
types/pa_vform.C: isapi 0
* src/: include/pa_pool.h, targets/cgi/pa_pool.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp,
targets/isapi/pa_pool.C, targets/isapi/parser3isapi.C,
targets/isapi/parser3isapi.def, targets/isapi/parser3isapi.dsp:
started isapi
* src/: include/pa_globals.h, main/pa_common.C, main/pa_request.C:
some comments
* src/: include/pa_globals.h, include/pa_request.h,
include/pa_types.h, main/pa_globals.C, main/pa_request.C,
targets/cgi/parser3.C, types/pa_vcookie.C: config of auto.p path:
parser_root_auto_path parser_site_auto_path
* src/types/pa_vcookie.C: cookie attr decoded
2001-03-21 paf
* src/targets/cgi/parser3.C: z
* src/include/pa_globals.h: post. todo: config of auto.p path
* src/: include/pa_globals.h, targets/cgi/parser3.C,
types/pa_venv.h: in cookie & env. todo:post
* src/: Makefile.am, classes/Makefile.am, classes/file.C,
classes/root.C, classes/table.C, include/pa_array.h,
include/pa_common.h, include/pa_globals.h, include/pa_pool.h,
include/pa_request.h, include/pa_string.h, main/Makefile.am,
main/compile.y, main/execute.C, main/main.dsp, main/pa_common.C,
main/pa_globals.C, main/pa_request.C, main/pa_string.C,
main/pa_table.C, main/untaint.C, targets/Makefile.am,
targets/cgi/Makefile.am, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, types/Makefile.am, types/pa_vcookie.C,
types/pa_vform.C, types/pa_vstring.h, types/pa_wwrapper.h:
shifted apache branch on main trunc
* src/: include/pa_common.h, include/pa_globals.h,
include/pa_pool.h, include/pa_request.h, main/main.dsp,
main/pa_common.C, main/pa_request.C, targets/cgi/parser3.dsp,
types/pa_vcookie.C, types/pa_vform.C, types/pa_vstring.h:
starting mod_parser3
* src/targets/cgi/parser3.C: starting mod_parser3
2001-03-20 paf
* src/: main/pa_common.C, targets/cgi/Makefile.am,
targets/cgi/parser3.C: automake compiled and works. todo:make
win32 ifdefs work and add ifdef unistd
* src/: classes/table.C, include/pa_common.h, include/pa_request.h,
main/Makefile.am, main/pa_common.C, main/pa_request.C,
main/pa_table.C, targets/cgi/Makefile.am, targets/cgi/parser3.C:
z
* src/: include/pa_request.h, main/Makefile.am, main/compile.y,
main/execute.C, main/pa_common.C, types/Makefile.am: removing
locking
* src/: classes/Makefile.am, types/Makefile.am: z
* src/: Makefile.am, classes/file.C, classes/root.C,
classes/table.C, include/pa_array.h, include/pa_request.h,
include/pa_string.h, main/Makefile.am, main/execute.C,
main/pa_common.C, main/pa_globals.C, main/pa_request.C,
main/pa_string.C, main/untaint.C, targets/Makefile.am,
targets/cgi/Makefile.am, targets/cgi/parser3.C,
types/pa_vcookie.C, types/pa_wwrapper.h: String::UL_
* src/: classes/table.C, include/pa_common.h, main/pa_common.C,
main/pa_request.C, types/pa_vfile.h: ^table:save
* src/: classes/file.C, classes/table.C, include/pa_array.h,
include/pa_common.h, include/pa_request.h, include/pa_string.h,
include/pa_table.h, include/pa_threads.h, main/pa_globals.C,
main/untaint.C, types/pa_valiased.h, types/pa_value.h,
types/pa_vform.h: z
* src/include/pa_string.h: z
* src/: classes/_request.h, classes/request.C, main/main.dsp,
main/pa_globals.C, types/pa_value.h, types/pa_vform.h,
types/pa_vrequest.C, types/pa_vrequest.h: VRequest moved to
:Value
* src/: classes/_request.h, classes/request.C, main/pa_globals.C,
types/pa_vrequest.C, types/pa_vrequest.h: VRequest moved to
:VStateless_object
* src/: classes/_response.h, classes/response.C, main/pa_globals.C,
types/pa_vform.h, types/pa_vresponse.h: VResponse moved to
:VStateless_object
* src/: main/main.dsp, targets/cgi/parser3.dsp,
types/pa_valiased.C, types/pa_vform.h: commented VForm
* src/: targets/cgi/pa_vform.C, types/pa_valiased.C,
types/pa_valiased.h, types/pa_value.h,
types/pa_vstateless_class.C, types/pa_vstateless_class.h,
types/pa_vstateless_object.h: moved common get_element part from
stateless object&class into VAliased
* src/: classes/_env.h, classes/_table.h, classes/env.C,
classes/table.C, main/execute.C, main/main.dsp,
main/pa_globals.C, main/pa_request.C, types/pa_value.h,
types/pa_vcookie.C, types/pa_vcookie.h, types/pa_venv.h: VEnv is
now :Value
* src/: classes/_cookie.h, classes/_table.h, classes/cookie.C,
main/execute.C, main/main.dsp, main/pa_globals.C,
types/pa_vcookie.C, types/pa_vcookie.h: VCookie is now :Value
* src/types/: pa_vfile.C, pa_vfile.h, pa_vstateless_object.h: vfile
doxx
* src/: classes/_file.h, classes/file.C, include/pa_types.h,
main/pa_globals.C, main/pa_request.C, targets/cgi/parser3.C,
types/pa_valiased.h, types/pa_vfile.C, types/pa_vfile.h,
types/pa_vstateless_class.h, types/pa_vstateless_object.h: \ to /
and ^file:save
2001-03-19 paf
* src/types/pa_vfile.C: z
* src/: classes/file.C, classes/request.C, classes/table.C,
include/pa_string.h, main/main.dsp, main/pa_pool.C,
main/pa_request.C, main/untaint.C, types/pa_value.h,
types/pa_vfile.C, types/pa_vfile.h, types/pa_vform.C: file 1
* src/: classes/table.C, include/pa_common.h, include/pa_globals.h,
include/pa_string.h, include/pa_table.h, main/main.dsp,
main/pa_common.C, main/pa_globals.C, types/pa_value.h,
types/pa_vcookie.h, types/pa_venv.h, types/pa_vform.C,
types/pa_vform.h, types/pa_vrequest.h, types/pa_vtable.h,
classes/_file.h, classes/file.C, types/pa_vfile.C,
types/pa_vfile.h: file class just compiled
* src/: classes/table.C, include/pa_pool.h, include/pa_request.h,
include/pa_table.h, include/pa_types.h, main/execute.C,
main/pa_request.C, targets/cgi/parser3.C, types/pa_value.h,
types/pa_vclass.h, types/pa_vform.C, types/pa_vstateless_class.h,
types/pa_vstateless_object.h: ^table:set{default level: TABLE}
* src/include/pa_pool.h: z
* src/: include/pa_hash.h, include/pa_types.h, main/pa_common.C,
main/pa_hash.C, main/pa_request.C, types/pa_vcookie.C: renamed
Hash::Value to Val so to doxygen would finlly stop confusing
those Value-s
* src/: include/code.h, include/pa_array.h, include/pa_common.h,
include/pa_exception.h, include/pa_globals.h, include/pa_hash.h,
include/pa_pool.h, include/pa_request.h, include/pa_stack.h,
include/pa_string.h, include/pa_table.h, include/pa_threads.h,
include/pa_types.h, main/compile.C, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/execute.C,
main/pa_array.C, main/pa_common.C, main/pa_exception.C,
main/pa_globals.C, main/pa_hash.C, main/pa_pool.C,
main/pa_request.C, main/pa_string.C, main/pa_table.C,
main/untaint.C, types/pa_valiased.h, types/pa_value.h: z
* src/types/: pa_valiased.h, pa_vbool.h: doc: Value and it's
derivates somehow unlinked. don't know why yet
* src/: include/code.h, include/pa_array.h, include/pa_pool.h,
include/pa_string.h, include/pa_threads.h, main/compile.C,
main/compile.y, main/compile_tools.C, main/compile_tools.h,
main/execute.C, main/pa_array.C, main/pa_common.C,
main/pa_exception.C, main/pa_globals.C, main/pa_hash.C,
main/pa_pool.C, main/pa_request.C, main/pa_string.C,
main/pa_table.C, main/untaint.C, types/pa_value.h: auto @brief
* src/: classes/root.C, classes/table.C, main/pa_exception.C,
main/pa_request.C, targets/cgi/parser3.C, types/pa_vbool.h,
types/pa_vcookie.C, types/pa_vcookie.h, types/pa_vdouble.h,
types/pa_venv.h, types/pa_vform.h, types/pa_vint.h,
types/pa_vrequest.h: doc: detected Value derivates prob
* src/include/pa_globals.h: z
* src/: classes/_request.h, classes/request.C, include/code.h,
include/pa_array.h, include/pa_common.h, include/pa_exception.h,
include/pa_globals.h, include/pa_hash.h, include/pa_pool.h,
include/pa_request.h, include/pa_stack.h, include/pa_string.h,
include/pa_table.h, include/pa_threads.h, include/pa_types.h,
main/execute.C, main/pa_pool.C, main/pa_request.C,
main/pa_string.C, main/untaint.C, targets/cgi/parser3.C,
types/pa_value.h, types/pa_vform.C: doxygen include/, Value
2001-03-18 paf
* src/: classes/cookie.C, types/pa_vcookie.C, types/pa_vcookie.h:
cookie: allowed access to hash-assigned
* src/targets/cgi/parser3.C: z
* src/: classes/_cookie.h, classes/cookie.C, include/pa_common.h,
include/pa_globals.h, include/pa_request.h, include/pa_string.h,
include/pa_types.h, main/main.dsp, main/pa_common.C,
main/pa_globals.C, main/pa_hash.C, main/pa_request.C,
main/pa_string.C, main/untaint.C, targets/cgi/parser3.C,
types/pa_value.h, types/pa_vcookie.C, types/pa_vcookie.h,
types/pa_vform.C, types/pa_vform.h, types/pa_vhash.h,
types/pa_vunknown.h: cookie class
* src/main/pa_request.C: zero length output allowed
* src/: classes/response.C, main/pa_request.C, types/pa_value.h,
types/pa_vhash.h, types/pa_vresponse.h: ^response:clear[]
* src/: classes/root.C, main/pa_request.C: taint forgotten forced
lang switch
* src/: classes/root.C, include/pa_globals.h, include/pa_string.h,
main/pa_globals.C, main/pa_request.C, main/pa_string.C,
types/pa_value.h, types/pa_vhash.h:
$defautl[$content-type[$value[text/html] $charset[windows-1251]]
* src/main/execute.C: z
* src/: classes/root.C, main/pa_request.C, main/untaint.C,
targets/cgi/parser3.C: taint[uri
* src/: classes/request.C, classes/response.C, classes/root.C,
include/pa_common.h, include/pa_globals.h, include/pa_request.h,
include/pa_string.h, main/pa_common.C, main/pa_globals.C,
main/pa_request.C, targets/cgi/parser3.C: ^taint 0
* src/: classes/root.C, classes/string.C, include/pa_string.h,
main/pa_globals.C, main/pa_request.C, main/pa_string.C,
types/pa_vdouble.h, types/pa_vform.C, types/pa_vint.h,
types/pa_vstateless_class.C: convinient string(pool, char *src,
bool tainted) ctor
* src/: include/pa_hash.h, include/pa_request.h,
include/pa_string.h, main/pa_globals.C, main/pa_hash.C,
main/pa_request.C, main/pa_string.C, main/untaint.C,
targets/cgi/parser3.C: proper @exceptions params tainting
* src/: include/pa_hash.h, main/pa_hash.C, targets/cgi/parser3.C:
response fields to header
* src/: include/pa_globals.h, main/pa_globals.C, main/pa_request.C:
z
* src/: classes/_response.h, classes/response.C,
include/pa_globals.h, include/pa_hash.h, include/pa_request.h,
main/compile.C, main/compile.y, main/execute.C, main/main.dsp,
main/pa_globals.C, main/pa_hash.C, main/pa_request.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp, types/pa_value.h,
types/pa_vhash.h, types/pa_vrequest.h, types/pa_vresponse.h:
$response: 0 request::core exception rethrow
2001-03-16 paf
* src/: main/execute.C, main/main.dsp, types/pa_value.h,
types/pa_vrequest.h: native method' class call with less params
then needed error reporting
* src/: classes/_request.h, classes/request.C,
include/pa_globals.h, include/pa_request.h, main/execute.C,
main/main.dsp, main/pa_globals.C, main/pa_request.C,
targets/cgi/parser3.C, types/pa_vform.C, types/pa_vrequest.C,
types/pa_vrequest.h: $request : query :uri
* src/: include/pa_globals.h, main/execute.C, main/pa_globals.C,
types/pa_value.h, types/pa_vcframe.h, types/pa_vmframe.h,
types/pa_wcontext.h: $result
* src/: main/execute.C, types/pa_vmframe.h: if(in "/news/")
* src/: classes/double.C, include/code.h, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/execute.C: ()
and {} param wcontext conflict fixed by OP_EXPR_CODE__STORE_PARAM
* src/: include/code.h, include/pa_hash.h, include/pa_request.h,
main/compile.y, main/execute.C, types/pa_value.h,
types/pa_vhash.h, types/pa_vstring.h, types/pa_vtable.h,
types/pa_wcontext.C, types/pa_wcontext.h: see () and {} param
wcontext conflict
* src/: main/execute.C, types/pa_value.h,
types/pa_vstateless_object.h, types/pa_vstring.h: disabled
$string.field
2001-03-15 paf
* src/main/pa_request.C: news sample
* src/: main/compile.y, main/execute.C, main/pa_request.C,
targets/cgi/parser3.C, types/pa_vstring.h: @exception
* src/main/: compile.y, execute.C: z
* src/: main/compile.y, main/pa_request.C, targets/cgi/parser3.C,
types/pa_vstring.h: pre-pre-pre-beta cgi under win32 apache pre
pre pre works
* src/: include/pa_globals.h, main/pa_globals.C, main/pa_request.C,
targets/cgi/parser3.C, types/pa_vform.C, types/pa_vform.h: vform
fillfields just compiled
2001-03-14 paf
* src/: include/pa_request.h, main/pa_request.C,
targets/cgi/parser3.C: z
* src/: include/pa_globals.h, main/pa_globals.C, main/pa_request.C,
targets/cgi/parser3.dsp, types/pa_vform.C, types/pa_vform.h,
types/pa_vstring.h: limits -1
* src/: include/pa_globals.h, include/pa_request.h,
include/pa_types.h, main/main.dsp, main/pa_globals.C,
main/pa_request.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, types/pa_vform.C, types/pa_vform.h:
request_info -1
* src/: include/pa_globals.h, main/pa_globals.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp,
targets/cgi/vform_fields_fill.C, targets/cgi/vform_fields_fill.h:
vform_fields_fill
* src/targets/cgi/parser3.C: # if MSVC
* src/: include/pa_common.h, include/pa_types.h, main/pa_request.C,
targets/cgi/parser3.C: PATH_DELIMITER_CHAR
* src/targets/cgi/parser3.C: z
* src/: include/core.h, include/pa_globals.h, include/pa_pool.h,
include/pa_string.h, include/pa_types.h, main/compile.y,
main/core.C, main/main.dsp, main/pa_globals.C, main/pa_request.C,
targets/cgi/pa_vform.C, targets/cgi/parser3.C,
targets/cgi/parser3.dsp, types/pa_value.h, types/pa_vform.h,
types/pa_vunknown.h: global handler, exceptions in parser3
2001-03-13 paf
* src/: classes/form.C, main/compile.y, main/core.C,
types/pa_value.h, types/pa_vclass.h, types/pa_venv.h,
types/pa_vform.h, types/pa_vstateless_class.C,
types/pa_vstateless_class.h: form:fields removed. use $form.CLASS
instead
* src/: include/core.h, include/pa_common.h, include/pa_request.h,
main/core.C, main/execute.C, main/main.dsp, main/pa_request.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp, types/pa_vform.h:
started cgi target
* src/: include/core.h, include/pa_common.h, include/pa_request.h,
main/pa_common.C, main/pa_request.C, targets/cgi/parser3.C:
before error show with parser
* src/: classes/_form.h, classes/form.C, include/core.h,
include/pa_request.h, main/core.C, main/pa_request.C,
targets/cgi/parser3.C, targets/cgi/parser3.dsp: z
* src/targets/cgi/: parser.dsp, parser3.dsp: z
* src/targets/cgi/: Makefile.am, pa_pool.C, pa_vform.C, parser.dsp,
parser3.C: renamed targets/ parser to cgi
* src/: classes/double.C, classes/env.C, classes/int.C,
classes/root.C, classes/string.C, classes/table.C,
include/pa_request.h, types/pa_vhash.h: z
* src/: classes/_env.h, classes/env.C, classes/root.C,
include/core.h, include/pa_pool.h, include/pa_request.h,
main/compile.C, main/compile.y, main/core.C, main/main.dsp,
main/pa_common.C, main/pa_request.C, types/pa_value.h,
types/pa_venv.h, types/pa_vstateless_class.h: started $form:
[historical moment :)]
* src/: include/code.h, include/pa_string.h, main/compile.y,
main/execute.C, main/pa_string.C: 'value is type' expr operator
* src/types/pa_venv.h: $ENV 1
* src/main/execute.C: z
* src/: main/execute.C, types/pa_value.h, types/pa_venv.h: for
future methods of ENV constructor if
* src/: include/pa_request.h, types/pa_venv.h: $ENV 0.1 stateless
class
* src/: classes/_double.h, classes/_env.h, classes/_int.h,
classes/_root.h, classes/_string.h, classes/_table.h,
classes/double.C, classes/env.C, classes/int.C, classes/root.C,
classes/string.C, classes/table.C, include/pa_request.h,
main/compile.C, main/compile_tools.h, main/core.C,
main/execute.C, main/main.dsp, main/pa_request.C,
types/pa_valiased.h, types/pa_value.h, types/pa_vclass.C,
types/pa_vclass.h, types/pa_venv.h, types/pa_vmframe.h,
types/pa_vobject.h, types/pa_vstateless_class.C,
types/pa_vstateless_class.h, types/pa_vstateless_object.h,
types/pa_wcontext.h: $ENV: re 0, stateless classes
* src/: classes/_double.h, classes/_env.h, classes/_int.h,
classes/_root.h, classes/_string.h, classes/_table.h,
classes/double.C, classes/env.C, classes/int.C, classes/root.C,
classes/string.C, classes/table.C, include/pa_request.h,
main/compile.C, main/compile_tools.h, main/core.C,
main/execute.C, main/main.dsp, main/pa_request.C,
types/pa_valiased.h, types/pa_value.h, types/pa_vclass.C,
types/pa_vclass.h, types/pa_venv.h, types/pa_vmframe.h,
types/pa_vobject.h, types/pa_vstateless_class.C,
types/pa_vstateless_class.h, types/pa_vstateless_object.h,
types/pa_wcontext.h: $ENV: re 0, stateless classes
* src/: include/pa_request.h, main/compile.C, main/execute.C,
main/pa_request.C, types/pa_value.h, types/pa_vmframe.h: fixed
yesterdays bad decision on execute_static_method
* src/: classes/table.C, include/pa_types.h, main/pa_request.C: z
* src/: classes/double.C, classes/int.C, classes/root.C,
types/pa_vdouble.h, types/pa_vint.h: Int,Double dec mul div mod
* src/main/pa_request.C: z
* src/: classes/root.C, classes/table.C, include/pa_exception.h,
include/pa_pool.h: skipped_restructure_exceptions_dead_end
* src/: classes/root.C, classes/table.C, include/pa_exception.h,
include/pa_pool.h, main/pa_request.C:
restructure_exceptions_dead_end
* src/: classes/root.C, main/compile.y: ^if required junctions.
allowed ; inside {} to break params
* src/classes/root.C: ^eval
* src/: classes/_string.h, classes/double.C, classes/int.C,
classes/string.C, main/execute.C, types/pa_wcontext.h: int doube
string ^format
* src/: main/execute.C, types/pa_wcontext.h: constructing flag not
'bad' but not 'enough'
* src/: classes/double.C, classes/root.C, classes/table.C,
include/pa_common.h, include/pa_types.h, main/compile.y,
main/pa_common.C, main/pa_request.C, main/untaint.C,
types/pa_vdouble.h, types/pa_vint.h, types/pa_vtable.h,
types/pa_wwrapper.h: think constructing flag as is is bad
* src/: classes/double.C, classes/int.C, classes/root.C,
classes/string.C, classes/table.C, main/core.C, main/execute.C,
types/pa_vint.h: ^for
2001-03-12 paf
* src/classes/table.C: table ^empty
* src/: classes/table.C, include/pa_table.h: table ^menu
* src/: classes/root.C, classes/table.C, types/pa_vtable.h: table
^offset ^line ^count
* src/classes/root.C: ^round() ^floor() ^ceiling()
^abs() ^sign()
* src/classes/: root.C, table.C: ^use
* src/: classes/root.C, classes/table.C, include/pa_request.h,
main/compile.y, main/core.C, main/execute.C, types/pa_vclass.h,
types/pa_wcontext.C, types/pa_wcontext.h, types/pa_wwrapper.h:
^while. switched off wcontext.constructing after write(value) or
auto-vhash-constructing
* src/: classes/root.C, classes/table.C, include/pa_request.h,
main/pa_request.C: fail_if_junction_ helper func
* src/: classes/root.C, classes/table.C, include/pa_common.h,
include/pa_request.h, main/execute.C, main/main.dsp,
main/pa_common.C, main/pa_request.C: ^process error point by
actual method_name, not source. ^load
* src/types/pa_vtable.h: table: no, better with string in cells...
* src/: include/pa_array.h, include/pa_table.h, main/pa_table.C,
classes/_table.h, classes/table.C, main/untaint.C: z
* src/: classes/root.C, include/pa_common.h, include/pa_string.h,
include/pa_table.h, main/core.C, main/execute.C,
main/pa_common.C, main/pa_request.C, main/pa_table.C,
types/pa_value.h: table:set 0
* src/: classes/root.C, include/core.h, include/pa_array.h,
include/pa_request.h, include/pa_table.h, main/core.C,
main/main.dsp, main/pa_request.C, main/pa_table.C,
types/pa_value.h, types/pa_vclass.C, types/pa_vclass.h,
types/pa_vdouble.h, types/pa_vint.h, types/pa_vmframe.h,
types/pa_vstring.h: freeze, ^table:create[] -1
* src/: classes/root.C, types/pa_value.h: z
* src/: classes/root.C, main/execute.C, types/pa_vclass.h: used
get_method in couple places optimizing them
* src/classes/root.C: z
* src/: classes/root.C, types/pa_vclass.h: process temp main
zeroing
* src/: classes/double.C, classes/int.C, classes/root.C,
classes/string.C, include/pa_common.h, include/pa_request.h,
include/pa_string.h, include/pa_types.h, main/compile.C,
main/compile.y, main/compile_tools.h, main/execute.C,
main/pa_common.C, main/pa_request.C, types/pa_value.h,
types/pa_vmframe.h: ^process. actual names to store param and
check_actual_numbered_params for better place diagnostics
* src/: classes/root.C, main/execute.C, main/main.dsp: setname for
method-junctions bug fixed
* src/types/: pa_vdouble.h, pa_vint.h, pa_vobject.h,
pa_vstateless_object.h, pa_vstring.h: stateless_object
2001-03-11 paf
* src/: main/main.dsp, types/pa_value.h, types/pa_vdouble.h,
types/pa_vint.h, types/pa_vobject.h, types/pa_vstring.h: VString
VDouble VInt base now VObject_base - without fields
* src/: classes/root.C, include/core.h, main/core.C: z
* src/: classes/double.C, classes/int.C, classes/root.C,
classes/string.C, include/core.h, include/pa_hash.h,
include/pa_pool.h, include/pa_request.h, include/pa_string.h,
main/compile.C, main/core.C, main/pa_request.C: ^untaint 0
* src/: classes/double.C, classes/int.C, classes/root.C,
include/pa_request.h, main/execute.C: intercept_string
* src/: classes/double.C, classes/int.C, classes/root.C,
types/pa_vclass.C, types/pa_vclass.h: add_native_method helper
* src/: classes/double.C, classes/int.C, include/pa_request.h:
^inc-s(expr)
* src/: classes/_double.h, classes/_env.h, classes/_int.h,
classes/_root.h, classes/_string.h, classes/double.C,
classes/env.C, classes/int.C, classes/root.C, classes/string.C,
include/code.h, include/core.h, include/pa_array.h,
include/pa_common.h, include/pa_exception.h, include/pa_hash.h,
include/pa_pool.h, include/pa_request.h, include/pa_stack.h,
include/pa_string.h, include/pa_table.h, include/pa_threads.h,
include/pa_types.h, main/compile.C, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/core.C,
main/execute.C, main/pa_array.C, main/pa_common.C,
main/pa_exception.C, main/pa_hash.C, main/pa_pool.C,
main/pa_request.C, main/pa_string.C, main/pa_table.C,
types/pa_valiased.h, types/pa_value.h, types/pa_vbool.h,
types/pa_vcframe.h, types/pa_vclass.C, types/pa_vclass.h,
types/pa_vdouble.h, types/pa_vhash.h, types/pa_vint.h,
types/pa_vjunction.h, types/pa_vmframe.h, types/pa_vobject.h,
types/pa_vstring.h, types/pa_vunknown.h, types/pa_wcontext.C,
types/pa_wcontext.h, types/pa_wwrapper.h: headers updated
* src/: main/pa_request.C, types/pa_vhash.h: z
* src/: include/core.h, include/pa_request.h, main/core.C,
main/main.dsp, main/pa_request.C: renamed AUTO: to MAIN:
* src/: include/pa_valiased.h, include/pa_value.h,
include/pa_vbool.h, include/pa_vcframe.h, include/pa_vclass.h,
include/pa_vdouble.h, include/pa_vhash.h, include/pa_vint.h,
include/pa_vjunction.h, include/pa_vmframe.h,
include/pa_vobject.h, include/pa_vstring.h,
include/pa_vunknown.h, include/pa_wcontext.h,
include/pa_wwrapper.h, main/compile.y, main/core.C,
main/main.dsp, main/pa_cframe.C, main/pa_request.C,
main/pa_value.C, main/pa_vclass.C, main/pa_wcontext.C,
types/pa_valiased.h, types/pa_value.h, types/pa_vbool.h,
types/pa_vcframe.h, types/pa_vclass.C, types/pa_vclass.h,
types/pa_vdouble.h, types/pa_vhash.h, types/pa_vint.h,
types/pa_vjunction.h, types/pa_vmframe.h, types/pa_vobject.h,
types/pa_vstring.h, types/pa_vunknown.h, types/pa_wcontext.C,
types/pa_wcontext.h, types/pa_wwrapper.h: splitted types from
include/
2001-03-10 paf
* src/: include/core.h, include/pa_request.h, main/core.C,
main/pa_request.C: run+auto=run
* src/: classes/root.C, include/pa_request.h: minor if junction bug
* src/: classes/_double.h, classes/_env.h, classes/_int.h,
classes/_root.h, classes/_string.h, classes/double.C,
classes/env.C, classes/int.C, classes/root.C, classes/string.C,
include/code.h, include/core.h, include/pa_array.h,
include/pa_common.h, include/pa_exception.h, include/pa_hash.h,
include/pa_pool.h, include/pa_request.h, include/pa_stack.h,
include/pa_string.h, include/pa_table.h, include/pa_threads.h,
include/pa_types.h, include/pa_valiased.h, include/pa_value.h,
include/pa_vbool.h, include/pa_vcframe.h, include/pa_vclass.h,
include/pa_vdouble.h, include/pa_vhash.h, include/pa_vint.h,
include/pa_vjunction.h, include/pa_vmframe.h,
include/pa_vobject.h, include/pa_vstring.h,
include/pa_vunknown.h, include/pa_wcontext.h,
include/pa_wwrapper.h, main/compile.C, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/core.C,
main/execute.C, main/pa_array.C, main/pa_cframe.C,
main/pa_common.C, main/pa_exception.C, main/pa_hash.C,
main/pa_pool.C, main/pa_request.C, main/pa_string.C,
main/pa_table.C, main/pa_value.C, main/pa_vclass.C,
main/pa_wcontext.C: sources header
* src/main/pa_request.C: auto..
* src/: include/pa_request.h, main/compile.C, main/compile.y,
main/pa_request.C: auto tree0
* src/: include/core.h, include/pa_request.h, main/compile.y,
main/core.C, main/pa_request.C: names to core.C
* src/: include/core.h, include/pa_common.h, include/pa_pool.h,
include/pa_request.h, main/core.C, main/execute.C,
main/pa_common.C, main/pa_request.C: root auto.p loaded
* src/: include/code.h, include/pa_request.h, include/pa_vint.h,
include/pa_vjunction.h, include/pa_vstring.h, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/execute.C:
optimized from OP_STRING+OP_WRITE to OP_STRING__WRITE
* src/: include/pa_request.h, main/execute.C, main/pa_request.C:
@auto[] realised. auto.p scan togo
* src/: include/pa_request.h, main/execute.C: autocalc
code-junctions result now have names
* src/: classes/double.C, classes/int.C, classes/root.C,
classes/string.C, include/pa_request.h, include/pa_string.h,
include/pa_wcontext.h, main/compile.y, main/execute.C,
main/pa_string.C, main/pa_wcontext.C: tainting 0
* src/classes/env.C: env:file/line
* src/: include/core.h, include/pa_array.h, include/pa_hash.h,
include/pa_request.h, include/pa_value.h, include/pa_vcframe.h,
include/pa_vdouble.h, include/pa_vint.h, include/pa_vstring.h,
include/pa_vunknown.h, include/pa_wcontext.h, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/core.C,
main/execute.C, main/main.dsp, main/pa_cframe.C,
main/pa_request.C, main/pa_wcontext.C: const fight finished
* src/include/pa_vclass.h: const fight to go
* src/: classes/_env.h, classes/env.C, classes/root.C,
include/pa_request.h, include/pa_vclass.h, main/core.C,
main/main.dsp: env0
* src/: classes/_double.h, classes/_int.h, classes/_root.h,
classes/_string.h, classes/double.C, classes/int.C,
classes/root.C, classes/string.C, include/pa_request.h,
include/pa_string.h, include/pa_types.h, include/pa_vcframe.h,
include/pa_wcontext.h, main/core.C, main/main.dsp,
main/pa_cframe.C, main/pa_string.C, main/pa_vclass.C,
main/pa_wcontext.C: ^lang prepare0
2001-03-09 paf
* src/: include/pa_vmframe.h, main/compile.C, main/execute.C: expr
construct proper naming
* src/: classes/_double.h, classes/_int.h, classes/_string.h,
classes/double.C, classes/int.C, classes/root.C,
classes/string.C, include/code.h, include/pa_value.h,
include/pa_vbool.h, include/pa_vdouble.h, include/pa_vint.h,
include/pa_vmframe.h, include/pa_vobject.h, include/pa_vstring.h,
main/compile.y, main/compile_tools.C, main/core.C,
main/execute.C, main/main.dsp: Int and Double classes with ^int[]
and ^double[]. fixed expr type
* src/: classes/root.C, include/pa_request.h, main/execute.C:
^string.length[]
2001-03-08 paf
* src/include/pa_vmframe.h: fixed forgotten method_frame my check
* src/: include/pa_vclass.h, include/pa_vstring.h,
include/pa_wcontext.h, main/compile.y, main/core.C,
main/execute.C, main/main.dsp: dead end: vstring can't be
derivated from vobject
* src/: include/pa_vclass.h, include/pa_vhash.h,
include/pa_vobject.h, include/pa_vstring.h, main/main.dsp: z
* src/include/: pa_vclass.h, pa_vhash.h, pa_vobject.h: removes some
remained clone conseqs
* src/main/pa_vclass.C: that were ok... [vclass were out of vcs]
* src/main/pa_vclass.C: wow! vclass were out of vcs
* src/: include/pa_bool.h, include/pa_double.h, include/pa_value.h,
include/pa_vbool.h, include/pa_vclass.h, include/pa_vdouble.h,
include/pa_vhash.h, include/pa_vjunction.h, include/pa_vmframe.h,
include/pa_vobject.h, include/pa_vstring.h,
include/pa_vunknown.h, main/compile.y, main/compile_tools.C,
main/execute.C: withoud cloning. didn't need it actually, params
got passed from out unnamed ewpool
* src/: include/pa_vdouble.h, include/pa_vhash.h,
include/pa_vjunction.h, include/pa_vobject.h,
include/pa_vunknown.h, main/compile.y: cloning dead end
* src/: include/pa_bool.h, include/pa_double.h,
include/pa_valiased.h, include/pa_value.h, include/pa_vbool.h,
include/pa_vclass.h, include/pa_vdouble.h, include/pa_vhash.h,
include/pa_vjunction.h, include/pa_vmframe.h,
include/pa_vobject.h, include/pa_vstring.h,
include/pa_vunknown.h, main/compile.y, main/compile_tools.C,
main/execute.C, main/main.dsp, main/pa_value.C: value.cloning so
to give params proper names
* src/main/pa_wcontext.C: z
* src/: include/pa_vmframe.h, main/execute.C: added names to
unknown values in get_element and unfilled params. removed wrong
name change in get_element
* src/main/execute.C: z
* src/main/execute.C: fixed problems calling operators in
constructors
* src/: classes/root.C, include/pa_stack.h, main/execute.C:
detected problems calling operators in constructors
* src/: classes/root.C, include/pa_request.h, main/execute.C:
autocalc def to string
* src/: classes/root.C, include/pa_request.h, include/pa_value.h,
include/pa_vbool.h, include/pa_wwrapper.h, main/execute.C: ^if 0
* src/classes/root.C: added root.c
* src/: include/pa_request.h, include/pa_value.h,
include/pa_vcframe.h, include/pa_vmframe.h,
include/pa_wcontext.h, main/compile.C, main/compile.y,
main/core.C, main/execute.C, main/pa_cframe.C,
main/pa_wcontext.C: 'if' just compiled
* src/: include/pa_vbool.h, include/pa_vdouble.h,
include/pa_vjunction.h, include/pa_vmframe.h,
include/pa_vstring.h, include/pa_wcontext.h, main/execute.C,
main/pa_wcontext.C: z
* src/: include/pa_value.h, include/pa_vmframe.h, main/compile.y,
main/core.C, main/execute.C, main/main.dsp: z. detected probs
with parameter names in operator methods
* src/main/compile.y: minor renamings in .y
* src/: include/pa_request.h, main/compile.C, main/compile.y,
main/core.C, main/main.dsp: introducing ROOT_CLASS. it's default
@BASE. changed 'RUN' assignment mech
* src/main/execute.C: z
* src/: include/code.h, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/execute.C: made class: dynamic, not
static. so to enable runtime ^use
* src/main/compile.y: minor grammar bug with OP_CODE__STORE_PARAM
* src/: include/code.h, main/compile.y, main/compile_tools.C,
main/execute.C: joined 2 into one OP_CODE__STORE_PARAM
* src/main/execute.C: root root in code-junction
2001-03-07 paf
* src/include/: pa_value.h, pa_vclass.h, pa_vhash.h, pa_vmframe.h,
pa_vobject.h, pa_wwrapper.h: const in Value.get_element
* src/: include/pa_stack.h, include/pa_value.h,
include/pa_vclass.h, include/pa_vhash.h, include/pa_vmframe.h,
include/pa_vobject.h, include/pa_wwrapper.h, main/execute.C:
fixed rwcontext of {} params up
* src/main/: compile.y, compile_tools.h: ^func(params)
* src/main/compile.y: .y priorities syntax shaped up a bit
* src/: include/pa_hash.h, include/pa_value.h, include/pa_vhash.h,
include/pa_vunknown.h, main/compile.y, main/execute.C,
main/pa_hash.C: expr def in -f
* src/main/: compile.y, execute.C: expr calls
* src/main/: compile.y, execute.C, pa_string.C: bug in string.cmp
fixed
* src/main/compile.y: expr quoted code
* src/main/: compile.y, execute.C: expr whitespace solved. added ""
support0
* src/main/compile.y: expr string comparisons 0
* src/: include/pa_string.h, main/compile.y, main/execute.C,
main/pa_string.C: just compiled lt&co
* src/main/execute.C: ^var.menu{$field} problem detected. that
$field not a $var.field
2001-03-06 paf
* src/main/compile.y: .y expr visible-shorter
* src/: include/code.h, main/compile.y, main/execute.C: 1 problems
with skipping whitespace in yylex fixed 2 xors: # bitwise ##
logical
* src/: include/pa_vstring.h, main/compile.y: problems with
skipping whitespace in yylex
* src/include/pa_vbool.h: forgot this
* src/: include/code.h, main/compile.y, main/execute.C: without
string ops in expressions 0
* src/: include/pa_value.h, include/pa_vdouble.h,
include/pa_vstring.h, include/pa_vunknown.h, main/compile.y,
main/execute.C, main/main.dsp: !~
* src/: include/pa_vcframe.h, include/pa_vclass.h,
include/pa_vdouble.h, include/pa_vhash.h, include/pa_vjunction.h,
include/pa_vmframe.h, include/pa_vobject.h, include/pa_vstring.h,
include/pa_vunknown.h, include/pa_wcontext.h,
include/pa_wwrapper.h, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/execute.C: +-*/
* src/: include/pa_vdouble.h, main/compile.y, main/compile_tools.C,
main/compile_tools.h: grammar-1.1 $a(z) $a=0
* src/: include/pa_value.h, include/pa_vdouble.h, main/compile.y,
main/execute.C: expr grammar-1 2*2=4.000000 :)
* src/main/compile.y: expr grammar-1
* src/main/compile.y: expr lexx1
* src/main/: compile.y, execute.C, main.dsp: z
* src/: include/code.h, include/pa_valiased.h, include/pa_value.h,
include/pa_vdouble.h, include/pa_vstring.h, main/compile.y,
main/execute.C: expr lex0 exec-1
* src/: include/code.h, main/compile.y, main/compile_tools.h: g
2001-02-26 paf
* src/main/compile.y: max_string in yyerror bug fix
2001-02-25 paf
* src/: include/pa_value.h, include/pa_vmframe.h,
include/pa_wcontext.h, main/execute.C: VAliased3
* src/include/: pa_value.h, pa_vmframe.h: VAliased2
* src/main/execute.C: VAliased1
* src/: include/pa_request.h, include/pa_value.h,
include/pa_vmframe.h, include/pa_wcontext.h, main/execute.C:
VAliased0
* src/: include/pa_pool.h, include/pa_request.h,
include/pa_value.h, include/pa_vclass.h, include/pa_vmframe.h,
include/pa_vobject.h, main/core.C, main/execute.C, main/main.dsp:
VAliased just compiled
* src/: include/pa_pool.h, include/pa_value.h, include/pa_vclass.h,
include/pa_vobject.h, main/execute.C: alias dead end
* src/: include/pa_value.h, include/pa_vclass.h,
include/pa_wcontext.h, include/pa_wwrapper.h, main/execute.C,
main/main.dsp: no not get fields into interm VFielded class.
fields & staticfields 1
* src/: include/pa_vcframe.h, include/pa_vmframe.h,
include/pa_vobject.h, include/pa_wcontext.h,
include/pa_wwrapper.h, main/core.C, main/execute.C,
main/main.dsp: would now get fields into interm VFielded class
* src/: include/pa_hash.h, include/pa_value.h, include/pa_vclass.h,
include/pa_vmframe.h, include/pa_vobject.h, include/pa_vstring.h,
include/pa_wcontext.h, main/compile.y, main/core.C,
main/execute.C, main/main.dsp, main/pa_hash.C, main/pa_value.C,
main/pa_wcontext.C: virtuals2
* src/main/compile.y: : 1
* src/main/compile.y: rethought to $class:static.field.subfield
* src/: include/pa_vclass.h, main/compile.y, main/execute.C:
$class:element
* src/: include/pa_value.h, include/pa_vmframe.h,
include/pa_wwrapper.h, main/compile.y, main/execute.C,
main/pa_wcontext.C: before execute class calls rewrite
* src/: include/pa_request.h, main/compile.C, main/core.C: default
name RUN, also alias
* src/main/compile.y: escaping bug
* src/: include/pa_request.h, include/pa_value.h,
include/pa_vobject.h, main/compile.y, main/compile_tools.h,
main/core.C, main/execute.C, main/pa_common.C: vobject1
* src/: include/code.h, include/pa_value.h, include/pa_vclass.h,
include/pa_vmframe.h, include/pa_vobject.h,
include/pa_wwrapper.h, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/execute.C: ^class:method() just
compiled
2001-02-24 paf
* src/main/main.dsp: no bison -d
* src/main/: compile.y, compile_tools.h: use0 line no on 'undef
class' err msg wrong
* src/main/compile.y: z
* src/main/: compile.y, core.C: yylex need some @special lines adj
* src/: include/pa_request.h, include/pa_vclass.h, main/compile.C,
main/compile.y, main/compile_tools.h, main/core.C: modules0
* src/: include/pa_vclass.h, main/core.C: z
* src/: include/pa_value.h, include/pa_vclass.h,
include/pa_vobject.h, main/main.dsp: vobject00
* src/main/pa_array.C: minor bug in expanding very small arrays.
60% from 1 were 0
* src/: include/pa_value.h, include/pa_wcontext.h,
include/pa_wwrapper.h, main/execute.C, main/pa_value.C: it works
as bad as you've named it: wcontext.value() was not a perfect
idea
* src/main/execute.C: codeframe1
* src/: include/pa_value.h, include/pa_vcframe.h,
include/pa_vclass.h, include/pa_vframe.h, include/pa_vhash.h,
include/pa_vjunction.h, include/pa_vmframe.h,
include/pa_wcontext.h, include/pa_wwrapper.h, main/execute.C,
main/main.dsp, main/pa_cframe.C, main/pa_wcontext.C: codeframe
just compiled
* src/: include/pa_vframe.h, main/compile.y: found junction
ideology @: ^x{$a()) must construct current wcontext element, so
smart wcontext handling needed
* src/main/compile.y: fixed grammar bugs in constructor/params
klinch
* src/main/: compile.y, execute.C: fixed empty constructor
optimized empty case. failed on calls - produced empty string
param
* src/main/compile.y: fixed last \n macrotemplate strip bug
* src/: include/code.h, include/pa_request.h, include/pa_value.h,
include/pa_vclass.h, include/pa_vframe.h, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/core.C,
main/execute.C: code junctions0. something wrong with last \n
macrotemplate strip
* src/: include/pa_value.h, main/compile.C, main/core.C,
main/pa_value.C: minor error reporting format beautifyings
* src/: include/pa_value.h, include/pa_vclass.h,
include/pa_vframe.h, main/core.C, main/execute.C,
main/pa_value.C: get_method RIP. junctions everywhere. call with
junctions0
2001-02-23 paf
* src/include/: pa_value.h, pa_vclass.h, pa_vframe.h,
pa_wwrapper.h: lara came, can't work, sorry :(
* src/main/: compile.y, execute.C, main.dsp: rethought some. before
junction
* src/: include/pa_vframe.h, include/pa_vunknown.h,
include/pa_wcontext.h, include/pa_wwrapper.h, main/core.C,
main/execute.C, main/main.dsp, main/pa_value.C: call0
* src/: include/pa_hash.h, include/pa_value.h,
include/pa_wcontext.h, main/core.C, main/execute.C,
main/main.dsp, main/pa_hash.C: started call. store param, vframe
done
* src/include/pa_wcontext.h: z
* src/main/: compile.y, compile_tools.C, compile_tools.h: fixed
wrong grammar in complex constructor case
* src/main/: compile.y, execute.C: empty constructor bug fixed
* src/main/execute.C: with result rwpool
* src/: include/pa_value.h, main/core.C, main/execute.C,
main/main.dsp: value named
* src/: include/pa_value.h, include/pa_vstring.h, main/execute.C:
strign 2 value in 2 places in execute
* src/: include/pa_value.h, include/pa_wcontext.h, main/compile.y,
main/execute.C, main/main.dsp, main/pa_array.C: auto VHash on
wcontext.put_element when wcontext fvalue==0
2001-02-22 paf
* src/: include/pa_hash.h, include/pa_value.h, include/pa_vclass.h,
include/pa_vhash.h, include/pa_vstring.h, include/pa_wcontext.h,
main/execute.C, main/main.dsp: auto VHash in pa.th.cre.at.e
* src/: include/pa_wcontext.h, main/compile.y, main/execute.C:
erroreos checkout
* src/: include/pa_request.h, main/compile.y: $self.put(val)
* src/: include/pa_array.h, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/pa_array.C: $self.get
* src/main/: compile.C, compile.y, compile_tools.C: z
* src/main/compile.y: $: wasn't finished - $:sdf(sdf) troubled a
bit. finished now.
* src/main/compile.y: $: finished
* src/main/: compile.C, compile.y, execute.C: started : with $a.$:f
* src/: include/code.h, main/compile_tools.C, main/compile_tools.h,
main/execute.C: OP_STRING better then some xxx _VALUE
* src/: include/code.h, include/pa_vstring.h, main/compile.y,
main/compile_tools.C, main/compile_tools.h, main/execute.C:
string to vstring it .y all
* src/: include/pa_request.h, include/pa_stack.h,
include/pa_wcontext.h, main/execute.C: z about to vstring it .y
all
* src/main/: compile.C, core.C, execute.C, pa_string.C: more
precise parse error line:col
* src/: include/pa_pool.h, include/pa_vclass.h, main/core.C,
main/pa_hash.C, main/pa_pool.C: TRY...
* src/: include/pa_exception.h, include/pa_pool.h,
include/pa_request.h, include/pa_value.h, include/pa_wcontext.h,
main/compile.C, main/compile.y, main/compile_tools.C,
main/core.C, main/pa_array.C, main/pa_exception.C,
main/pa_hash.C, main/pa_pool.C, main/pa_string.C,
main/pa_table.C: removed exception from request
* src/: include/pa_vstring.h, main/compile.C, main/core.C: added
some forgotten
* src/: include/code.h, include/pa_value.h, include/pa_vclass.h,
include/pa_wcontext.h, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/execute.C, main/main.dsp: iiieeyys!
get/put simple vars to VClass works0
* src/: include/pa_array.h, include/pa_wcontext.h,
main/pa_string.C: in process, but found that exceptions are too
global
* src/: include/code.h, include/pa_string.h, include/pa_value.h,
include/pa_vclass.h, include/pa_wcontext.h, main/compile.y,
main/execute.C, main/pa_string.C: write_value write_string 0 it
seems wcontext must write strings regardles of fvalue!=0
2001-02-21 paf
* src/main/execute.C: tired :)
* src/main/: compile.C, compile.y, execute.C: store0
* src/: include/compile.h, include/execute.h, include/pa_array.h,
include/pa_request.h, include/pa_stack.h, include/pa_vclass.h,
include/pa_wcontext.h, main/compile.C, main/compile.y,
main/execute.C, main/main.dsp, main/pa_array.C,
main/pa_request.C: get put -1 [just compiled]
* src/: include/core.h, include/pa_context.h, include/pa_request.h,
include/pa_vclass.h, include/pa_wcontext.h, main/core.C,
main/main.dsp, main/pa_request.C: request core methods0
* src/: include/compile.h, include/pa_array.h, main/compile.C,
main/compile.y, main/execute.C: MAIN_METHOD_NAME ready to write
execute
* src/: include/pa_exception.h, include/pa_value.h, main/compile.C,
main/compile.y, main/compile_tools.C, main/compile_tools.h: .y
methods and one_big_piece. now compile returns array
* src/main/compile.y: more straightforward yylex[end]
* src/: include/pa_string.h, include/pa_types.h, main/pa_string.C:
string.operator==(char*)
* src/: include/execute.h, include/pa_array.h, include/pa_value.h,
main/execute.C, main/pa_array.C: after array.const get wonders
* src/include/: compile.h, pa_context.h, pa_hash.h, pa_request.h,
pa_string.h, pa_value.h: struck with const array.gets
* src/main/: execute.C: z
* src/main/: compile.y, execute.C: z
* src/main/: compile.C, compile.y, compile_tools.h: error
processing in eval & yyerror so it wouldn't cause memleaks.
* src/main/: compile.C, compile.y: failed to add absolute precies
parse error positions. leaving RIGHTMOST position as
@file[line:col]
* src/: include/compile.h, main/compile.C, main/compile.y,
main/compile_tools.h: line numbers needed. would add them to .y
now internally. externally it's not as precise as needed
* src/: include/code.h, include/pa_types.h, main/compile.C,
main/compile.y, main/compile_tools.C, main/compile_tools.h,
main/execute.C, main/main.dsp: .y to c++ hierarchy output fix.
compiler works ok
2001-02-20 paf
* src/main/: compile.C, compile.y, compile_tools.C,
compile_tools.h, execute.C, main.dsp: nestage probs, eof yylex
not perfect
* src/: include/code.h, include/compile.h, include/execute.h,
include/pa_array.h, include/pa_common.h, include/pa_pool.h,
include/pa_string.h, include/pa_table.h, include/pa_types.h,
main/compile.C, main/compile.y, main/compile_tools.C,
main/compile_tools.h, main/core.C, main/execute.C, main/main.dsp,
main/pa_array.C, main/pa_common.C, main/pa_hash.C,
main/pa_string.C, main/pa_table.C: bison[yacc] first time
compiled. execute=dump for now
* src/main/core.C: core rewrite using yacc investigations now will
be compile[yacc]/execute[opcodes]
2001-02-15 paf
* src/: include/pa_value.h, main/core.C: maybe a-la yacc those ifs
rewrite as turing machine? for it seems it would be it's too many
ifs with this syntax now
2001-02-14 paf
* src/main/core.C: get_params 1
* src/main/core.C: get_params figured ^menu[UNEVALUATED unthinked
:( ]
* src/main/core.C: varios breaks
* src/main/core.C: get names 3
* src/main/core.C: get names 2
* src/main/core.C: get names 1
* src/: include/pa_string.h, main/core.C, main/pa_string.C: get
names 0
* src/: include/pa_value.h, main/core.C, main/pa_string.C: process
text repassing2 operator static vars
* src/: include/pa_context.h, include/pa_string.h, main/core.C,
main/pa_string.C: process text repassing
* src/: include/pa_context.h, include/pa_value.h, main/core.C:
module:calls changes
2001-02-13 paf
* src/: include/pa_context.h, include/pa_value.h, main/core.C:
^class:calls[] started
* src/: include/pa_value.h, main/core.C: z
* src/main/core.C: operators : and self. prefixes
* src/main/core.C: z
* src/: include/pa_string.h, main/pa_string.C: String_iterator
tested
* src/: include/pa_string.h, main/pa_string.C: String_iterator
optimized
* src/main/pa_string.C: String_iterator::skip_to optimized a bit.
would change privates to better support optimization
* src/: include/pa_string.h, main/pa_string.C:
String_iterator::skip_to todo:optimize
2001-02-12 paf
* src/: include/pa_string.h, main/core.C, main/pa_string.C: started
String_iterator
* src/: include/pa_context.h, include/pa_value.h, main/core.C: some
comments
* src/: include/pa_context.h, include/pa_value.h, main/core.C: get
self/methodref joined
2001-02-11 paf
* src/: include/pa_context.h, include/pa_value.h, main/core.C,
main/main.dsp: core started. core.C, context&value .h
* src/: include/pa_array.h, include/pa_hash.h, include/pa_pool.h,
include/pa_string.h, main/main.dsp, main/pa_array.C,
main/pa_hash.C, main/pa_pool.C, main/pa_string.C: :pooled
2001-01-30 paf
* src/: Makefile.am, main/Makefile.am, targets/Makefile.am: .am
comments
* src/: include/pa_pool.h, main/Makefile.am, main/main.dsp,
main/pa_pool.C: moved pa_pool.C to be target specific
* src/: include/pa_exception.h, include/pa_pool.h,
include/pa_table.h, main/pa_exception.C, main/pa_table.C: minor *
to & changes
* src/: include/pa_exception.h, include/pa_pool.h,
include/pa_request.h, include/pa_table.h, main/pa_array.C,
main/pa_exception.C, main/pa_pool.C, main/pa_table.C: error
re-associated. that's much better even removed 'die' necessety
* src/: include/pa_error.h, include/pa_exception.h,
include/pa_pool.h, include/pa_request.h, main/main.dsp,
main/pa_error.C, main/pa_exception.C, main/pa_pool.C,
targets/Makefile.am: lowered targets/parser into subdir, added
parser_Pool(Pool) failed to add. would think..
* src/: include/pa_error.h, include/pa_hash.h, include/pa_string.h,
include/pa_table.h, main/pa_error.C, main/pa_hash.C,
main/pa_string.C, main/pa_table.C: Table more like C++ style
hence lots of 'const'
* src/: include/pa_error.h, include/pa_request.h,
include/pa_string.h, include/pa_table.h, main/pa_error.C,
main/pa_table.C: Error fixed
2001-01-29 paf
* src/: include/pa_array.h, include/pa_common.h,
include/pa_error.h, include/pa_hash.h, include/pa_pool.h,
include/pa_request.h, include/pa_string.h, include/pa_table.h,
main/Makefile.am, main/pa_array.C, main/pa_common.C,
main/pa_error.C, main/pa_hash.C, main/pa_table.C: added forgotten
* src/: include/pa_array.h, include/pa_hash.h, include/pa_pool.h,
include/pa_string.h, include/pa_table.h, include/pa_types.h,
main/Makefile.am, main/main.dsp, main/pa_array.C, main/pa_hash.C,
main/pa_string.C, main/pa_table.C: Request Error Table
* src/: include/pa_pool.h, main/pa_array.C: tested - decision "no
templates"
* src/: include/pa_array.h, include/pa_pool.h, main/Makefile.am,
main/main.dsp, main/pa_array.C: templates failed no template
specializations [VC6], no library auto instantation [VC6, GNU c++
2.95.2-6 from latest cygwin]
* src/: include/pa_array.h, include/pa_hash.h, include/pa_pool.h,
include/pa_string.h, include/pa_table.h, include/pa_types.h,
main/main.dsp, main/pa_array.C, main/pa_string.C,
main/pa_table.C: Table started would test template Array now
* src/: include/pa_pool.h, include/pa_string.h, main/pa_string.C:
String originating
* src/: include/pa_hash.h, include/pa_pool.h, include/pa_threads.h,
main/pa_hash.C: made local Hash-es not thread safe=quicker by
SYNCHRONIZED(thread_safe)
* src/include/: pa_array.h, pa_hash.h, pa_string.h: moved .h public
parts to top
* src/: include/pa_hash.h, include/pa_threads.h, main/pa_hash.C,
main/pa_threads.C: decided on one global_mutex, like PHP as I can
see: needed only in global Hash now, made Hash:: put/get
SYNCHRONIZED
* src/: include/pa_hash.h, include/pa_threads.h, main/main.dsp,
main/pa_threads.C: added pa_threads
Mutex
* src/include/pa_hash.h: some comments
* src/: main/pa_array.C, include/pa_array.h, include/pa_pool.h:
Array& operator += (Array& src)
* src/main/pa_array.C: expand not convinient, would rewrite
* src/: include/pa_array.h, main/pa_array.C: Array::operator +=
(Array& src)
rethought, would change now
2001-01-27 paf
* src/: include/pa_array.h, main/pa_array.C: array [] with chunk
caching
* src/: include/pa_array.h, include/pa_hash.h, include/pa_pool.h,
include/pa_string.h, main/pa_array.C, main/pa_string.C: array
cache rethought to chunk caching
* src/: include/pa_array.h, include/pa_hash.h, include/pa_pool.h,
include/pa_string.h, main/main.dsp, main/pa_array.C,
main/pa_hash.C, main/pa_string.C: Array 0
* src/main/pa_string.C: String::operator ==
* src/main/pa_hash.C: String(&String)
* src/main/pa_hash.C: added pa_hash.C [forgotten]
* src/: include/pa_hash.h, include/pa_string.h, include/pa_types.h,
main/main.dsp, main/pa_string.C: uint, and added pa_types &
pa_hash[forgotten]
2001-01-26 paf
* src/: include/pa_pool.h, include/pa_string.h, main/pa_string.C:
removed templates [vc++ suxx]
* src/: include/pa_pool.h, include/pa_string.h, main/main.dsp,
main/pa_pool.C, main/pa_string.C: templates in VC++ suxx.
* src/include/: pa_pool.h, pa_string.h: pa_pool split
* src/main/: main.dsp, pa_string.C: $Id: ChangeLog,v 1.92 2013/10/29 16:21:27 moko Exp $ check
* src/: main/pa_pool.C, main/pa_string.C, include/pa_pool.h: $Id: ChangeLog,v 1.92 2013/10/29 16:21:27 moko Exp $
check
* src/: include/pa_pool.h, main/pa_string.C: String prealloc &
dynamic row_count
* src/: Makefile.am, include/pa_pool.h, main/Makefile.am,
main/main.dsp, main/pa_pool.C, main/pa_string.C,
targets/Makefile.am: Initial revision
* src/: Makefile.am, include/pa_pool.h, main/Makefile.am,
main/main.dsp, main/pa_pool.C, main/pa_string.C,
targets/Makefile.am: creating parser3 module
parser-3.4.3/src/ 000755 000000 000000 00000000000 12234223575 013710 5 ustar 00root wheel 000000 000000 parser-3.4.3/etc/ 000755 000000 000000 00000000000 12234223575 013674 5 ustar 00root wheel 000000 000000 parser-3.4.3/README 000644 000000 000000 00000000564 12232042163 013774 0 ustar 00root wheel 000000 000000 Parser3 website is http://www.parser.ru/
Read the documentation here at http://www.parser.ru/docs/
Check the ChangeLog to keep track of progresses.
Check the INSTALL to find out how to compile and install Parser3.
SQL drivers are in separate modules.
Report bugs to mailbox@parser.ru or on http://www.parser.ru/forum/
$Id: README,v 1.5 2013/10/23 21:49:39 moko Exp $
parser-3.4.3/configure.in 000644 000000 000000 00000030654 12234222474 015437 0 ustar 00root wheel 000000 000000 dnl Autoconf initialisation
AC_PREREQ(2.59)
AC_INIT(parser, 3.4.3)
AC_CONFIG_SRCDIR(README)
dnl Automake Initialisation
AM_INIT_AUTOMAKE
dnl Expand srcdir
P3S=`cd $srcdir/src ; pwd`
AC_SUBST(P3S)
dnl Parser version update
AC_CANONICAL_HOST
AC_DEFINE_UNQUOTED(PARSER_VERSION,"$VERSION (compiled on $host)",parser version)
AC_SUBST(host_os)
case $host_os in
*cygwin* ) AC_DEFINE(CYGWIN,,using cygwin building environment);;
esac
dnl Checks for programs
AC_PROG_INSTALL
AC_PROG_AWK
AC_PROG_YACC
if test "$YACC" != "bison -y"; then
AC_MSG_WARN(to regenerate Parser grammar YOU WOULD NEED BISON)
else
AC_MSG_CHECKING(bison version)
oldIFS=$IFS; IFS=.
set `bison -V | sed -e 's/^GNU Bison version //' -e 's/^bison (GNU Bison) //' -e 's/$/./'`
IFS=$oldIFS
if test "$1" = "1" -a "$2" -lt "25"; then
AC_MSG_WARN(Bison 1.25 or newer needed to regenerate Parser compiler (found $1.$2).)
fi
AC_MSG_RESULT($1.$2 (ok))
fi
AC_PROG_CXX
AC_PROG_CC
dnl most tests should be compiled with C compiler [especially qsort test]
AC_LANG_C
dnl Dll extension
AC_MSG_CHECKING(for dynamic-link library extension)
case "$host_os" in
*cygwin* ) dll_extension=dll;;
* ) dll_extension=so
esac
AC_MSG_RESULT($dll_extension)
AC_SUBST(dll_extension)
dnl Misc arguments
AC_ARG_WITH(build-warnings, [ --with-build-warnings to enable build-time compiler warnings if gcc is used],
AC_MSG_WARN(enabling compiler warnings)
CXXFLAGS="$CXXFLAGS -W -Wall -Wstrict-prototypes -Wmissing-prototypes"
)
AC_ARG_WITH(assertions, [ --with-assertions to enable assertions],
AC_MSG_WARN(enabling assertions)
,
AC_DEFINE(NDEBUG,,assertions disabled)
)
AC_ARG_WITH(sjlj-exceptions,[ --with-sjlj-exceptions enable simple 'throw' from dynamic library],
AC_DEFINE(PA_WITH_SJLJ_EXCEPTIONS,,one can throw from dynamic library)
)
dnl Safe mode argument
AC_ARG_ENABLE(safe-mode, [ --disable-safe-mode to enable reading and executing
files belonging to group+user other then effective],
[
SAFE_MODE=$enableval
]
)
if test "$SAFE_MODE" = "no"; then
AC_MSG_WARN(enabling reading of files belonging to group+user other then effective)
else
AC_DEFINE(PA_SAFE_MODE,,disabled reading of files belonging to group+user other then effective)
fi
dnl Disable execs argument
AC_ARG_ENABLE(execs, [ --disable-execs to disable any execs
(file::exec, file::cgi, unix mail:send)],
[
if test "$enableval" = "no"; then
AC_MSG_WARN(disabling file execs)
AC_DEFINE(NO_PA_EXECS,,pa_exec disabled)
fi
]
)
dnl String stream argument
AC_ARG_ENABLE(stringstream, [ --disable-stringstream to disable stringstream usage.
when disabled table.save use more memory but it's safer on freebsd 4.x],
[
if test "$enableval" = "no"; then
AC_MSG_WARN(disabling stringstream usage)
AC_DEFINE(NO_STRINGSTREAM,,stringstream disabled)
fi
]
)
dnl GC argument
AC_ARG_WITH(gc,[ --with-gc[=D] D is the directory where
Boehm garbage collecting library is installed],[
GC=$withval
GC_LIBS="$GC/libgc.la"
if test -f $GC_LIBS; then
GC_OK="yes"
else
GC_LIBS="-L$GC -lgc"
fi
if test "$GC" = "yes"; then
GC=""
GC_LIBS="-lgc"
AC_MSG_WARN([--with-gc value was not specified, hoping linker would find it])
fi
],[
GC_LIBS="-lgc"
AC_MSG_WARN([--with-gc was not specified, hoping linker would find it])
])
if test -z "$GC_OK"; then
AC_MSG_CHECKING(for libgc)
SAVE_LIBS=$LIBS
LIBS="$LIBS $GC_LIBS"
AC_TRY_LINK([ extern int GC_dont_gc; ],[ GC_dont_gc=0; ],
AC_MSG_RESULT(yes)
,
AC_MSG_RESULT(no)
if test -z "$GC"; then
AC_MSG_ERROR(please specify path to libgc: --with-gc=D)
else
AC_MSG_ERROR($GC does not seem to be valid libgc installation directory)
fi
)
LIBS=$SAVE_LIBS
fi
AC_SUBST(GC_LIBS)
dnl PCRE argument
AC_ARG_WITH(pcre,[ --with-pcre=D D is the directory where
PCRE library is installed],[
PCRE=$withval
PCRE_INCLUDES="-I$PCRE/include"
PCRE_LIBS="$PCRE/lib/libpcre.la"
if test -f $PCRE/include/pcre.h -a -f $PCRE_LIBS; then
PCRE_OK="yes"
else
PCRE_LIBS="-L$PCRE -lpcre"
fi
if test "$PCRE" = "yes"; then
PCRE=""
PCRE_LIBS="-lpcre"
PCRE_INCLUDES=""
AC_MSG_WARN([--with-pcre value was not specified, hoping linker would find it])
fi
],[
PCRE_LIBS="-lpcre"
PCRE_INCLUDES=""
AC_MSG_WARN([--with-pcre was not specified, hoping linker would find it])
])
if test -z "$PCRE_OK"; then
AC_MSG_CHECKING(for prce)
SAVE_LIBS=$LIBS
LIBS="$LIBS $PCRE_LIBS $PCRE_INCLUDES"
AC_TRY_LINK([ #include ],[ const char *v=pcre_version(); ],
AC_MSG_RESULT(yes)
,
AC_MSG_RESULT(no)
if test -z "$PCRE"; then
AC_MSG_ERROR(please specify path to PCRE: --with-pcre=D)
else
AC_MSG_ERROR($PCRE does not seem to be valid PCRE installation directory)
fi
)
LIBS=$SAVE_LIBS
fi
AC_SUBST(PCRE_INCLUDES)
AC_SUBST(PCRE_LIBS)
dnl XML/XSLT argument
AC_ARG_WITH(xml,[ --with-xml=D D is the directory where
Gnome XML libraries are installed],[
XML=$withval
XML_LIBS="-lxml2 -lxslt -lexslt"
if test -z "$XML" -o "$XML" = "yes"; then
XML=""
XML_INCLUDES="-I/usr/include/libxml2"
AC_MSG_WARN([--with-xml value was not specified, hoping linker would find it])
else
XML_INCLUDES="-I$XML/include -I$XML/include/libxml2"
if test -f $XML/include/libxslt/xslt.h -a -f $XML/lib/libxml2.la \
-a -f $XML/lib/libxslt.la -a -f $XML/lib/libexslt.la; then
XML_LIBS="$XML/lib/libxml2.la $XML/lib/libxslt.la $XML/lib/libexslt.la"
XML_OK="yes"
fi
fi
if test -z "$XML_OK"; then
AC_MSG_CHECKING(for xml)
SAVE_LIBS=$LIBS
LIBS="$LIBS $XML_LIBS $XML_INCLUDES"
AC_TRY_LINK([ #include ],[ const char *v=xsltEngineVersion; ],
AC_MSG_RESULT(yes)
,
AC_MSG_RESULT(no)
if test -z "$XML"; then
AC_MSG_ERROR(please specify path to Gnome XML libraries: --with-xml=D)
else
AC_MSG_ERROR($XML does not seem to be valid Gnome XML installation directory)
fi
)
LIBS=$SAVE_LIBS
fi
AC_DEFINE(XML,,xml-abled parser)
])
AC_SUBST(XML_INCLUDES)
AC_SUBST(XML_LIBS)
dnl Mail receive argument
AC_ARG_WITH(mailreceive,[ --with-mailreceive=D is the directory where
Gnome MIME library is installed],[
MIME=$withval
GLIB="glib-2.0"
GMIME="gmime-2.4"
if test -z "$MIME" -o "$MIME" = "yes"; then
MIME=""
MIME_INCLUDES=`pkg-config --cflags $GMIME 2>/dev/null`
MIME_LIBS=`pkg-config --libs $GMIME 2>/dev/null`
AC_MSG_WARN([--with-mailreceive value was not specified, hoping linker would find Gnome MIME library])
else
MIME_INCLUDES="-I$MIME/include/$GMIME"
MIME_LIBS="-l$GMIME"
if test -f $MIME/include/$GMIME/gmime/gmime.h -a -f $MIME/lib/lib$GMIME.la; then
MIME_LIBS="$MIME/lib/lib$GMIME.la"
if test -f $MIME/lib/lib$GLIB.la; then
MIME_INCLUDES="$MIME_INCLUDES -I$MIME/include/$GLIB -I$MIME/lib/$GLIB/include"
else
GLIB_INCLUDES=`pkg-config --cflags $GLIB 2>/dev/null`
MIME_INCLUDES="$MIME_INCLUDES $GLIB_INCLUDES"
fi
MIME_OK="yes"
fi
fi
if test -z "$MIME_OK"; then
AC_MSG_CHECKING(for mime)
SAVE_LIBS=$LIBS
LIBS="$LIBS $MIME_LIBS $MIME_INCLUDES"
AC_TRY_LINK([ #include ],[ guint v=gmime_major_version; ],
AC_MSG_RESULT(yes)
,
AC_MSG_RESULT(no)
if test -z "$MIME"; then
AC_MSG_ERROR(please specify path to Gnome MIME library: --with-mailreceive=D)
else
AC_MSG_ERROR($MIME does not seem to be valid Gnome MIME installation directory)
fi
)
LIBS=$SAVE_LIBS
fi
AC_DEFINE(WITH_MAILRECEIVE,,has \$mail:received)
])
AC_SUBST(MIME_INCLUDES)
AC_SUBST(MIME_LIBS)
dnl Sendmail argument
AC_ARG_WITH(sendmail,[ \"--with-sendmail=COMMAND\" forces this command to send mail.
example: \"--with-sendmail=/usr/sbin/sendmail -t\"
(makes parser ignore user-defined sendmail commands)],
AC_DEFINE_UNQUOTED(PA_FORCED_SENDMAIL,"$withval",parser uses this command instead of user-defined sendmail commands)
)
dnl Apache module argument
AC_ARG_WITH(apache,[ --with-apache=FILE FILE is the full path for APXS
builds apache DSO module using apxs],[
APXS=$withval
if test -z "$APXS" -o "$APXS" = "yes"; then
APXS=`which apxs 2>/dev/null`
if test -z "$APXS"; then
APXS=`which apxs2 2>/dev/null`
fi
fi
APACHE=`$APXS -q TARGET 2>/dev/null`
if test -z "$APACHE"; then
AC_MSG_ERROR($APXS does not seem to be valid apache apxs utility path)
fi
APACHE_MAIN_INC=`$APXS -q INCLUDEDIR`
APACHE_EXTRA_INC=`$APXS -q EXTRA_INCLUDES 2>/dev/null`
APACHE_INC="-I$APACHE_MAIN_INC $APACHE_EXTRA_INC"
APACHE_CFLAGS=`$APXS -q CFLAGS`
])
AC_SUBST(APACHE)
AC_SUBST(APACHE_INC)
AC_SUBST(APACHE_CFLAGS)
AM_CONDITIONAL(COMPILE_APACHE_MODULE, test -n "$APACHE")
dnl Enable building of the convenience library
LT_CONFIG_LTDL_DIR(src/lib/ltdl)
LT_INIT(dlopen win32-dll no-pic)
LTDL_INIT
dnl Checks for typedefs, structures, and compiler characteristics
AC_C_BIGENDIAN(
AC_DEFINE(PA_BIG_ENDIAN,,compile for sparc processor)
,
AC_DEFINE(PA_LITTLE_ENDIAN,,compile for intel processor or compatible)
,
AC_MSG_ERROR(word endianness not determined for some obscure reason)
)
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_TYPE_UINT8_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_STRUCT_DIRENT_D_TYPE
dnl Checks for C header files
AC_HEADER_STDC
AC_HEADER_TIME
AC_CHECK_HEADERS(stdio.h sys/types.h sys/stat.h stdlib.h stddef.h memory.h string.h strings.h inttypes.h stdint.h unistd.h)
AC_CHECK_HEADERS(assert.h limits.h ctype.h math.h process.h stdarg.h setjmp.h signal.h)
AC_CHECK_HEADERS(errno.h dirent.h fcntl.h io.h sys/file.h sys/locking.h sys/select.h sys/resource.h sys/wait.h)
AC_CHECK_HEADERS(sys/socket.h netinet/in.h arpa/inet.h netdb.h)
dnl Checks for libraries
case "$host" in
*-freebsd4*)
AC_DEFINE(FREEBSD4,,FreeBSD4X target platform)
;;
*-sunos5.6* | *-solaris2.6*)
AC_CHECK_LIB(xnet, main)
;;
*-sunos5* | *-solaris2*)
AC_CHECK_LIB(socket, main)
AC_CHECK_LIB(nsl, main)
;;
*-nec-sysv4*)
AC_CHECK_LIB(nsl, gethostbyname)
AC_CHECK_LIB(socket, socket)
;;
*-cygwin*)
AC_DEFINE(WIN32,,Windows32 target platform)
;;
esac
AC_CHECK_LIB(m, sin)
AC_CHECK_LIB(crypt, crypt)
dnl Checks for functions
AC_CHECK_FUNCS(flock _locking fcntl lockf ftruncate fchmod)
AC_CHECK_FUNCS(getrusage gettimeofday crypt sigsetjmp siglongjmp unsetenv)
dnl on some linux[seen on 2.4] it's a macro
PA_CHECK_SIGSETJMP
dnl see comment above
AC_LANG_PUSH(C++)
PA_CHECK_MATH_FUNCS_ONE_ARG(trunc round sign)
AC_LANG_POP
dnl We require qsort(3)
AC_CHECK_FUNCS(qsort, , AC_MSG_ERROR([No qsort library function.]))
dnl For correct mail receiving we need to know local offset from GMT
dnl it be timezone+(daylight?60*60*sign(timezone):0)
dnl or it can be tm.tm_gmtoff or it can be tm.tm_tzadj
AC_MSG_CHECKING(for timezone variable)
AC_TRY_COMPILE([#include ], [time_t test=timezone;], AC_DEFINE(HAVE_TIMEZONE) AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
AC_MSG_CHECKING(for daylight variable)
AC_TRY_COMPILE([#include ], [int test=daylight;], AC_DEFINE(HAVE_DAYLIGHT) AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
AC_MSG_CHECKING(for tm_gmtoff in struct tm)
AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_gmtoff=0;], AC_DEFINE(HAVE_TM_GMTOFF) AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
AC_MSG_CHECKING(for tm_tzadj in struct tm)
AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_tzadj=0;], AC_DEFINE(HAVE_TM_TZADJ) AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
dnl Output header and makefiles
AH_TEMPLATE([HAVE_DAYLIGHT],[Define if you have daylight external variable in ])
AH_TEMPLATE([HAVE_TIMEZONE],[Define if you have timezone external variable in ])
AH_TEMPLATE([HAVE_TM_GMTOFF],[Define if you have tm_gmtoff member of tm structure in ])
AH_TEMPLATE([HAVE_TM_TZADJ],[Define if you have tm_tzadj member of tm structure in ])
AM_CONFIG_HEADER(src/include/pa_config_auto.h)
AC_OUTPUT(
Makefile
src/Makefile
src/types/Makefile
src/classes/Makefile
src/include/Makefile
src/main/Makefile
src/sql/Makefile
src/lib/Makefile
src/lib/gd/Makefile
src/lib/smtp/Makefile
src/lib/gc/Makefile
src/lib/gc/include/Makefile
src/lib/pcre/Makefile
src/lib/cord/Makefile
src/lib/cord/include/Makefile
src/lib/cord/include/private/Makefile
src/lib/md5/Makefile
src/lib/sdbm/Makefile
src/lib/sdbm/pa-include/Makefile
src/lib/json/Makefile
src/lib/memcached/Makefile
src/lib/curl/Makefile
src/targets/Makefile
src/targets/cgi/Makefile
src/targets/apache/Makefile
src/targets/isapi/Makefile
etc/Makefile
etc/parser3.charsets/Makefile
bin/Makefile
bin/auto.p.dist)
parser-3.4.3/parser3.sln 000644 000000 000000 00000025123 12174045136 015217 0 ustar 00root wheel 000000 000000 Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheModuleParser3", "src\targets\apache\ApacheModuleParser3.vcproj", "{61FD304C-2949-4400-845F-0B27CD088547}"
ProjectSection(ProjectDependencies) = postProject
{AE697E13-B86D-4408-B76D-EC54D2BEEFE0} = {AE697E13-B86D-4408-B76D-EC54D2BEEFE0}
{09C0531B-9B8F-443A-A16B-BD9134712613} = {09C0531B-9B8F-443A-A16B-BD9134712613}
{21593B27-7994-49DC-A4A7-993DD8849862} = {21593B27-7994-49DC-A4A7-993DD8849862}
{B79D9D3D-DFD7-4D48-91AA-484378D5E76C} = {B79D9D3D-DFD7-4D48-91AA-484378D5E76C}
{EB565D67-9950-4F5E-926F-63DAC8F7F314} = {EB565D67-9950-4F5E-926F-63DAC8F7F314}
{650C3584-6F31-4CDE-9A4E-42BAAD4EA88E} = {650C3584-6F31-4CDE-9A4E-42BAAD4EA88E}
{B95DF5BC-85D8-4B4C-AF72-113B99592D38} = {B95DF5BC-85D8-4B4C-AF72-113B99592D38}
{71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD} = {71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD}
{74F38AE8-E0CF-4684-B4EA-B0555F0B30AE} = {74F38AE8-E0CF-4684-B4EA-B0555F0B30AE}
{CB915CEB-DC1A-40F6-9CA9-3B5212C0497D} = {CB915CEB-DC1A-40F6-9CA9-3B5212C0497D}
{9B5091F7-0ED5-4E5A-ABAF-430ED79D231A} = {9B5091F7-0ED5-4E5A-ABAF-430ED79D231A}
{2FBFAD1C-76EE-4EA4-82B5-204B2671A05D} = {2FBFAD1C-76EE-4EA4-82B5-204B2671A05D}
{CB915CEB-DC1A-40F6-9CA9-3B5212C0497D} = {CB915CEB-DC1A-40F6-9CA9-3B5212C0497D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheModuleParser3Core", "src\targets\apache\ApacheModuleParser3Core.vcproj", "{CB915CEB-DC1A-40F6-9CA9-3B5212C0497D}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "classes", "src\classes\classes.vcproj", "{B79D9D3D-DFD7-4D48-91AA-484378D5E76C}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cord", "src\lib\cord\cord.vcproj", "{74F38AE8-E0CF-4684-B4EA-B0555F0B30AE}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gnu", "gnu.vcproj", "{02438934-FA19-49DC-B5D1-2E9BA1CD0159}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ltdl", "src\lib\ltdl\ltdl.vcproj", "{EB565D67-9950-4F5E-926F-63DAC8F7F314}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "main", "src\main\main.vcproj", "{650C3584-6F31-4CDE-9A4E-42BAAD4EA88E}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "md5", "src\lib\md5\md5.vcproj", "{2FBFAD1C-76EE-4EA4-82B5-204B2671A05D}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "parser3", "src\targets\cgi\parser3.vcproj", "{33B3FF55-1BB6-4F22-A448-04065AC10AFB}"
ProjectSection(ProjectDependencies) = postProject
{AE697E13-B86D-4408-B76D-EC54D2BEEFE0} = {AE697E13-B86D-4408-B76D-EC54D2BEEFE0}
{09C0531B-9B8F-443A-A16B-BD9134712613} = {09C0531B-9B8F-443A-A16B-BD9134712613}
{2FBFAD1C-76EE-4EA4-82B5-204B2671A05D} = {2FBFAD1C-76EE-4EA4-82B5-204B2671A05D}
{21593B27-7994-49DC-A4A7-993DD8849862} = {21593B27-7994-49DC-A4A7-993DD8849862}
{B79D9D3D-DFD7-4D48-91AA-484378D5E76C} = {B79D9D3D-DFD7-4D48-91AA-484378D5E76C}
{EB565D67-9950-4F5E-926F-63DAC8F7F314} = {EB565D67-9950-4F5E-926F-63DAC8F7F314}
{650C3584-6F31-4CDE-9A4E-42BAAD4EA88E} = {650C3584-6F31-4CDE-9A4E-42BAAD4EA88E}
{B95DF5BC-85D8-4B4C-AF72-113B99592D38} = {B95DF5BC-85D8-4B4C-AF72-113B99592D38}
{71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD} = {71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD}
{74F38AE8-E0CF-4684-B4EA-B0555F0B30AE} = {74F38AE8-E0CF-4684-B4EA-B0555F0B30AE}
{9B5091F7-0ED5-4E5A-ABAF-430ED79D231A} = {9B5091F7-0ED5-4E5A-ABAF-430ED79D231A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "parser3isapi", "src\targets\isapi\parser3isapi.vcproj", "{2E7BF3D9-C58C-4808-B786-494E7C5F9FE2}"
ProjectSection(ProjectDependencies) = postProject
{AE697E13-B86D-4408-B76D-EC54D2BEEFE0} = {AE697E13-B86D-4408-B76D-EC54D2BEEFE0}
{09C0531B-9B8F-443A-A16B-BD9134712613} = {09C0531B-9B8F-443A-A16B-BD9134712613}
{2FBFAD1C-76EE-4EA4-82B5-204B2671A05D} = {2FBFAD1C-76EE-4EA4-82B5-204B2671A05D}
{21593B27-7994-49DC-A4A7-993DD8849862} = {21593B27-7994-49DC-A4A7-993DD8849862}
{B79D9D3D-DFD7-4D48-91AA-484378D5E76C} = {B79D9D3D-DFD7-4D48-91AA-484378D5E76C}
{EB565D67-9950-4F5E-926F-63DAC8F7F314} = {EB565D67-9950-4F5E-926F-63DAC8F7F314}
{650C3584-6F31-4CDE-9A4E-42BAAD4EA88E} = {650C3584-6F31-4CDE-9A4E-42BAAD4EA88E}
{B95DF5BC-85D8-4B4C-AF72-113B99592D38} = {B95DF5BC-85D8-4B4C-AF72-113B99592D38}
{71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD} = {71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD}
{74F38AE8-E0CF-4684-B4EA-B0555F0B30AE} = {74F38AE8-E0CF-4684-B4EA-B0555F0B30AE}
{9B5091F7-0ED5-4E5A-ABAF-430ED79D231A} = {9B5091F7-0ED5-4E5A-ABAF-430ED79D231A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "types", "src\types\types.vcproj", "{09C0531B-9B8F-443A-A16B-BD9134712613}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdbm", "src\lib\sdbm\sdbm.vcproj", "{AE697E13-B86D-4408-B76D-EC54D2BEEFE0}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gd", "src\lib\gd\gd.vcproj", "{B95DF5BC-85D8-4B4C-AF72-113B99592D38}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "smtp", "src\lib\smtp\smtp.vcproj", "{9B5091F7-0ED5-4E5A-ABAF-430ED79D231A}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "json", "src\lib\json\json.vcproj", "{21593B27-7994-49DC-A4A7-993DD8849862}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memcached", "src\lib\memcached\memcached.vcproj", "{71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{61FD304C-2949-4400-845F-0B27CD088547}.Debug.ActiveCfg = Debug|Win32
{61FD304C-2949-4400-845F-0B27CD088547}.Release.ActiveCfg = Release|Win32
{CB915CEB-DC1A-40F6-9CA9-3B5212C0497D}.Debug.ActiveCfg = Debug|Win32
{CB915CEB-DC1A-40F6-9CA9-3B5212C0497D}.Release.ActiveCfg = Release|Win32
{B79D9D3D-DFD7-4D48-91AA-484378D5E76C}.Debug.ActiveCfg = Debug|Win32
{B79D9D3D-DFD7-4D48-91AA-484378D5E76C}.Debug.Build.0 = Debug|Win32
{B79D9D3D-DFD7-4D48-91AA-484378D5E76C}.Release.ActiveCfg = Release|Win32
{B79D9D3D-DFD7-4D48-91AA-484378D5E76C}.Release.Build.0 = Release|Win32
{74F38AE8-E0CF-4684-B4EA-B0555F0B30AE}.Debug.ActiveCfg = Debug|Win32
{74F38AE8-E0CF-4684-B4EA-B0555F0B30AE}.Debug.Build.0 = Debug|Win32
{74F38AE8-E0CF-4684-B4EA-B0555F0B30AE}.Release.ActiveCfg = Release|Win32
{74F38AE8-E0CF-4684-B4EA-B0555F0B30AE}.Release.Build.0 = Release|Win32
{02438934-FA19-49DC-B5D1-2E9BA1CD0159}.Debug.ActiveCfg = Debug|Win32
{02438934-FA19-49DC-B5D1-2E9BA1CD0159}.Release.ActiveCfg = Release|Win32
{02438934-FA19-49DC-B5D1-2E9BA1CD0159}.Release.Build.0 = Release|Win32
{EB565D67-9950-4F5E-926F-63DAC8F7F314}.Debug.ActiveCfg = Debug|Win32
{EB565D67-9950-4F5E-926F-63DAC8F7F314}.Debug.Build.0 = Debug|Win32
{EB565D67-9950-4F5E-926F-63DAC8F7F314}.Release.ActiveCfg = Release|Win32
{EB565D67-9950-4F5E-926F-63DAC8F7F314}.Release.Build.0 = Release|Win32
{650C3584-6F31-4CDE-9A4E-42BAAD4EA88E}.Debug.ActiveCfg = Debug|Win32
{650C3584-6F31-4CDE-9A4E-42BAAD4EA88E}.Debug.Build.0 = Debug|Win32
{650C3584-6F31-4CDE-9A4E-42BAAD4EA88E}.Release.ActiveCfg = Release|Win32
{650C3584-6F31-4CDE-9A4E-42BAAD4EA88E}.Release.Build.0 = Release|Win32
{2FBFAD1C-76EE-4EA4-82B5-204B2671A05D}.Debug.ActiveCfg = Debug|Win32
{2FBFAD1C-76EE-4EA4-82B5-204B2671A05D}.Debug.Build.0 = Debug|Win32
{2FBFAD1C-76EE-4EA4-82B5-204B2671A05D}.Release.ActiveCfg = Release|Win32
{2FBFAD1C-76EE-4EA4-82B5-204B2671A05D}.Release.Build.0 = Release|Win32
{33B3FF55-1BB6-4F22-A448-04065AC10AFB}.Debug.ActiveCfg = Debug|Win32
{33B3FF55-1BB6-4F22-A448-04065AC10AFB}.Debug.Build.0 = Debug|Win32
{33B3FF55-1BB6-4F22-A448-04065AC10AFB}.Release.ActiveCfg = Release|Win32
{33B3FF55-1BB6-4F22-A448-04065AC10AFB}.Release.Build.0 = Release|Win32
{2E7BF3D9-C58C-4808-B786-494E7C5F9FE2}.Debug.ActiveCfg = Debug|Win32
{2E7BF3D9-C58C-4808-B786-494E7C5F9FE2}.Release.ActiveCfg = Release|Win32
{09C0531B-9B8F-443A-A16B-BD9134712613}.Debug.ActiveCfg = Debug|Win32
{09C0531B-9B8F-443A-A16B-BD9134712613}.Debug.Build.0 = Debug|Win32
{09C0531B-9B8F-443A-A16B-BD9134712613}.Release.ActiveCfg = Release|Win32
{09C0531B-9B8F-443A-A16B-BD9134712613}.Release.Build.0 = Release|Win32
{AE697E13-B86D-4408-B76D-EC54D2BEEFE0}.Debug.ActiveCfg = Debug|Win32
{AE697E13-B86D-4408-B76D-EC54D2BEEFE0}.Debug.Build.0 = Debug|Win32
{AE697E13-B86D-4408-B76D-EC54D2BEEFE0}.Release.ActiveCfg = Release|Win32
{AE697E13-B86D-4408-B76D-EC54D2BEEFE0}.Release.Build.0 = Release|Win32
{B95DF5BC-85D8-4B4C-AF72-113B99592D38}.Debug.ActiveCfg = Debug|Win32
{B95DF5BC-85D8-4B4C-AF72-113B99592D38}.Debug.Build.0 = Debug|Win32
{B95DF5BC-85D8-4B4C-AF72-113B99592D38}.Release.ActiveCfg = Release|Win32
{B95DF5BC-85D8-4B4C-AF72-113B99592D38}.Release.Build.0 = Release|Win32
{9B5091F7-0ED5-4E5A-ABAF-430ED79D231A}.Debug.ActiveCfg = Debug|Win32
{9B5091F7-0ED5-4E5A-ABAF-430ED79D231A}.Debug.Build.0 = Debug|Win32
{9B5091F7-0ED5-4E5A-ABAF-430ED79D231A}.Release.ActiveCfg = Release|Win32
{9B5091F7-0ED5-4E5A-ABAF-430ED79D231A}.Release.Build.0 = Release|Win32
{21593B27-7994-49DC-A4A7-993DD8849862}.Debug.ActiveCfg = Debug|Win32
{21593B27-7994-49DC-A4A7-993DD8849862}.Debug.Build.0 = Debug|Win32
{21593B27-7994-49DC-A4A7-993DD8849862}.Release.ActiveCfg = Release|Win32
{21593B27-7994-49DC-A4A7-993DD8849862}.Release.Build.0 = Release|Win32
{71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD}.Debug.ActiveCfg = Debug|Win32
{71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD}.Debug.Build.0 = Debug|Win32
{71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD}.Release.ActiveCfg = Release|Win32
{71C9E3C6-47E8-4CB2-AF6F-784A49F5ABFD}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal
parser-3.4.3/Makefile.am 000644 000000 000000 00000000603 12234222474 015151 0 ustar 00root wheel 000000 000000 SUBDIRS = src etc bin
ACLOCAL_AMFLAGS = -I src/lib/ltdl/m4
EXTRA_DIST = operators.txt parser3.sln gnu.vcproj buildall acsite.m4
commit:
# trick to make 'make' happy at check out time
# and avoid redundant remaking: aclocal+autoconf+automake
cvs commit -m "no message" -f configure.in acsite.m4 aclocal.m4 Makefile.am Makefile.in configure src/include/pa_config_auto.h.in
parser-3.4.3/acsite.m4 000644 000000 000000 00000001705 12234222474 014633 0 ustar 00root wheel 000000 000000 # paf@design.ru
# included in configure.in
AC_DEFUN([PA_CHECK_MATH_FUNC_ONE_ARG],[
AC_MSG_CHECKING(for (maybe built-in) math function $1)
AC_TRY_COMPILE([
#ifdef HAVE_MATH_H
# include
#endif
],[
double result=$1(1.6);
],
[AC_MSG_RESULT(yes)
$2],
[AC_MSG_RESULT(no)
$3])
]
)
AC_DEFUN([PA_CHECK_MATH_FUNCS_ONE_ARG],[
AC_FOREACH([AC_Func], [$1],
[AH_TEMPLATE(AS_TR_CPP([HAVE_]AC_Func),
[Define to 1 if you have the `]AC_Func[' (maybe built-in) math function function.])])dnl
for pa_func in $1
do
PA_CHECK_MATH_FUNC_ONE_ARG($pa_func,
[AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$pa_func]) $2)],
[$3])dnl
done
])
AC_DEFUN([PA_CHECK_SIGSETJMP],[
pa_func=sigsetjmp
AC_MSG_CHECKING(for (maybe built-in) function $pa_func)
AC_TRY_COMPILE([
#ifdef HAVE_SETJMP_H
# include
#endif
],[
$pa_func(0,0);
],
[AC_MSG_RESULT(yes)
AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$pa_func]))
],
[AC_MSG_RESULT(no)
])
]
)
parser-3.4.3/COPYING 000644 000000 000000 00000043110 07430727316 014157 0 ustar 00root wheel 000000 000000 GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
parser-3.4.3/ltmain.sh 000644 000000 000000 00001051522 11764645505 014757 0 ustar 00root wheel 000000 000000
# libtool (GNU libtool) 2.4.2
# Written by Gordon Matzigkeit , 1996
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# GNU Libtool is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# As a special exception to the GNU General Public License,
# if you distribute this file as part of a program or library that
# is built using GNU Libtool, you may include this file under the
# same distribution terms that you use for the rest of that program.
#
# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
# can be downloaded from http://www.gnu.org/licenses/gpl.html,
# or obtained by writing to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Usage: $progname [OPTION]... [MODE-ARG]...
#
# Provide generalized library-building support services.
#
# --config show all configuration variables
# --debug enable verbose shell tracing
# -n, --dry-run display commands without modifying any files
# --features display basic configuration information and exit
# --mode=MODE use operation mode MODE
# --preserve-dup-deps don't remove duplicate dependency libraries
# --quiet, --silent don't print informational messages
# --no-quiet, --no-silent
# print informational messages (default)
# --no-warn don't display warning messages
# --tag=TAG use configuration variables from tag TAG
# -v, --verbose print more informational messages than default
# --no-verbose don't print the extra informational messages
# --version print version information
# -h, --help, --help-all print short, long, or detailed help message
#
# MODE must be one of the following:
#
# clean remove files from the build directory
# compile compile a source file into a libtool object
# execute automatically set library path, then run a program
# finish complete the installation of libtool libraries
# install install libraries or executables
# link create a library or an executable
# uninstall remove libraries from an installed directory
#
# MODE-ARGS vary depending on the MODE. When passed as first option,
# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
#
# When reporting a bug, please describe a test case to reproduce it and
# include the following information:
#
# host-triplet: $host
# shell: $SHELL
# compiler: $LTCC
# compiler flags: $LTCFLAGS
# linker: $LD (gnu? $with_gnu_ld)
# $progname: (GNU libtool) 2.4.2
# automake: $automake_version
# autoconf: $autoconf_version
#
# Report bugs to .
# GNU libtool home page: .
# General help using GNU software: .
PROGRAM=libtool
PACKAGE=libtool
VERSION=2.4.2
TIMESTAMP=""
package_revision=1.3337
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
BIN_SH=xpg4; export BIN_SH # for Tru64
DUALCASE=1; export DUALCASE # for MKS sh
# A function that is used when there is no print builtin or printf.
func_fallback_echo ()
{
eval 'cat <<_LTECHO_EOF
$1
_LTECHO_EOF'
}
# NLS nuisances: We save the old values to restore during execute mode.
lt_user_locale=
lt_safe_locale=
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
do
eval "if test \"\${$lt_var+set}\" = set; then
save_$lt_var=\$$lt_var
$lt_var=C
export $lt_var
lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
fi"
done
LC_ALL=C
LANGUAGE=C
export LANGUAGE LC_ALL
$lt_unset CDPATH
# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
# is ksh but when the shell is invoked as "sh" and the current value of
# the _XPG environment variable is not equal to 1 (one), the special
# positional parameter $0, within a function call, is the name of the
# function.
progpath="$0"
: ${CP="cp -f"}
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
: ${MAKE="make"}
: ${MKDIR="mkdir"}
: ${MV="mv -f"}
: ${RM="rm -f"}
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
: ${Xsed="$SED -e 1s/^X//"}
# Global variables:
EXIT_SUCCESS=0
EXIT_FAILURE=1
EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
exit_status=$EXIT_SUCCESS
# Make sure IFS has a sensible default
lt_nl='
'
IFS=" $lt_nl"
dirname="s,/[^/]*$,,"
basename="s,^.*/,,"
# func_dirname file append nondir_replacement
# Compute the dirname of FILE. If nonempty, add APPEND to the result,
# otherwise set result to NONDIR_REPLACEMENT.
func_dirname ()
{
func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
if test "X$func_dirname_result" = "X${1}"; then
func_dirname_result="${3}"
else
func_dirname_result="$func_dirname_result${2}"
fi
} # func_dirname may be replaced by extended shell implementation
# func_basename file
func_basename ()
{
func_basename_result=`$ECHO "${1}" | $SED "$basename"`
} # func_basename may be replaced by extended shell implementation
# func_dirname_and_basename file append nondir_replacement
# perform func_basename and func_dirname in a single function
# call:
# dirname: Compute the dirname of FILE. If nonempty,
# add APPEND to the result, otherwise set result
# to NONDIR_REPLACEMENT.
# value returned in "$func_dirname_result"
# basename: Compute filename of FILE.
# value retuned in "$func_basename_result"
# Implementation must be kept synchronized with func_dirname
# and func_basename. For efficiency, we do not delegate to
# those functions but instead duplicate the functionality here.
func_dirname_and_basename ()
{
# Extract subdirectory from the argument.
func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
if test "X$func_dirname_result" = "X${1}"; then
func_dirname_result="${3}"
else
func_dirname_result="$func_dirname_result${2}"
fi
func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
} # func_dirname_and_basename may be replaced by extended shell implementation
# func_stripname prefix suffix name
# strip PREFIX and SUFFIX off of NAME.
# PREFIX and SUFFIX must not contain globbing or regex special
# characters, hashes, percent signs, but SUFFIX may contain a leading
# dot (in which case that matches only a dot).
# func_strip_suffix prefix name
func_stripname ()
{
case ${2} in
.*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
esac
} # func_stripname may be replaced by extended shell implementation
# These SED scripts presuppose an absolute path with a trailing slash.
pathcar='s,^/\([^/]*\).*$,\1,'
pathcdr='s,^/[^/]*,,'
removedotparts=':dotsl
s@/\./@/@g
t dotsl
s,/\.$,/,'
collapseslashes='s@/\{1,\}@/@g'
finalslash='s,/*$,/,'
# func_normal_abspath PATH
# Remove doubled-up and trailing slashes, "." path components,
# and cancel out any ".." path components in PATH after making
# it an absolute path.
# value returned in "$func_normal_abspath_result"
func_normal_abspath ()
{
# Start from root dir and reassemble the path.
func_normal_abspath_result=
func_normal_abspath_tpath=$1
func_normal_abspath_altnamespace=
case $func_normal_abspath_tpath in
"")
# Empty path, that just means $cwd.
func_stripname '' '/' "`pwd`"
func_normal_abspath_result=$func_stripname_result
return
;;
# The next three entries are used to spot a run of precisely
# two leading slashes without using negated character classes;
# we take advantage of case's first-match behaviour.
///*)
# Unusual form of absolute path, do nothing.
;;
//*)
# Not necessarily an ordinary path; POSIX reserves leading '//'
# and for example Cygwin uses it to access remote file shares
# over CIFS/SMB, so we conserve a leading double slash if found.
func_normal_abspath_altnamespace=/
;;
/*)
# Absolute path, do nothing.
;;
*)
# Relative path, prepend $cwd.
func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
;;
esac
# Cancel out all the simple stuff to save iterations. We also want
# the path to end with a slash for ease of parsing, so make sure
# there is one (and only one) here.
func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
while :; do
# Processed it all yet?
if test "$func_normal_abspath_tpath" = / ; then
# If we ascended to the root using ".." the result may be empty now.
if test -z "$func_normal_abspath_result" ; then
func_normal_abspath_result=/
fi
break
fi
func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-e "$pathcar"`
func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-e "$pathcdr"`
# Figure out what to do with it
case $func_normal_abspath_tcomponent in
"")
# Trailing empty path component, ignore it.
;;
..)
# Parent dir; strip last assembled component from result.
func_dirname "$func_normal_abspath_result"
func_normal_abspath_result=$func_dirname_result
;;
*)
# Actual path component, append it.
func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
;;
esac
done
# Restore leading double-slash if one was found on entry.
func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
}
# func_relative_path SRCDIR DSTDIR
# generates a relative path from SRCDIR to DSTDIR, with a trailing
# slash if non-empty, suitable for immediately appending a filename
# without needing to append a separator.
# value returned in "$func_relative_path_result"
func_relative_path ()
{
func_relative_path_result=
func_normal_abspath "$1"
func_relative_path_tlibdir=$func_normal_abspath_result
func_normal_abspath "$2"
func_relative_path_tbindir=$func_normal_abspath_result
# Ascend the tree starting from libdir
while :; do
# check if we have found a prefix of bindir
case $func_relative_path_tbindir in
$func_relative_path_tlibdir)
# found an exact match
func_relative_path_tcancelled=
break
;;
$func_relative_path_tlibdir*)
# found a matching prefix
func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
func_relative_path_tcancelled=$func_stripname_result
if test -z "$func_relative_path_result"; then
func_relative_path_result=.
fi
break
;;
*)
func_dirname $func_relative_path_tlibdir
func_relative_path_tlibdir=${func_dirname_result}
if test "x$func_relative_path_tlibdir" = x ; then
# Have to descend all the way to the root!
func_relative_path_result=../$func_relative_path_result
func_relative_path_tcancelled=$func_relative_path_tbindir
break
fi
func_relative_path_result=../$func_relative_path_result
;;
esac
done
# Now calculate path; take care to avoid doubling-up slashes.
func_stripname '' '/' "$func_relative_path_result"
func_relative_path_result=$func_stripname_result
func_stripname '/' '/' "$func_relative_path_tcancelled"
if test "x$func_stripname_result" != x ; then
func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
fi
# Normalisation. If bindir is libdir, return empty string,
# else relative path ending with a slash; either way, target
# file name can be directly appended.
if test ! -z "$func_relative_path_result"; then
func_stripname './' '' "$func_relative_path_result/"
func_relative_path_result=$func_stripname_result
fi
}
# The name of this program:
func_dirname_and_basename "$progpath"
progname=$func_basename_result
# Make sure we have an absolute path for reexecution:
case $progpath in
[\\/]*|[A-Za-z]:\\*) ;;
*[\\/]*)
progdir=$func_dirname_result
progdir=`cd "$progdir" && pwd`
progpath="$progdir/$progname"
;;
*)
save_IFS="$IFS"
IFS=${PATH_SEPARATOR-:}
for progdir in $PATH; do
IFS="$save_IFS"
test -x "$progdir/$progname" && break
done
IFS="$save_IFS"
test -n "$progdir" || progdir=`pwd`
progpath="$progdir/$progname"
;;
esac
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
Xsed="${SED}"' -e 1s/^X//'
sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
# Same as above, but do not quote variable references.
double_quote_subst='s/\(["`\\]\)/\\\1/g'
# Sed substitution that turns a string into a regex matching for the
# string literally.
sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
# Sed substitution that converts a w32 file name or path
# which contains forward slashes, into one that contains
# (escaped) backslashes. A very naive implementation.
lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
# Re-`\' parameter expansions in output of double_quote_subst that were
# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
# in input to double_quote_subst, that '$' was protected from expansion.
# Since each input `\' is now two `\'s, look for any number of runs of
# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
bs='\\'
bs2='\\\\'
bs4='\\\\\\\\'
dollar='\$'
sed_double_backslash="\
s/$bs4/&\\
/g
s/^$bs2$dollar/$bs&/
s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
s/\n//g"
# Standard options:
opt_dry_run=false
opt_help=false
opt_quiet=false
opt_verbose=false
opt_warning=:
# func_echo arg...
# Echo program name prefixed message, along with the current mode
# name if it has been set yet.
func_echo ()
{
$ECHO "$progname: ${opt_mode+$opt_mode: }$*"
}
# func_verbose arg...
# Echo program name prefixed message in verbose mode only.
func_verbose ()
{
$opt_verbose && func_echo ${1+"$@"}
# A bug in bash halts the script if the last line of a function
# fails when set -e is in force, so we need another command to
# work around that:
:
}
# func_echo_all arg...
# Invoke $ECHO with all args, space-separated.
func_echo_all ()
{
$ECHO "$*"
}
# func_error arg...
# Echo program name prefixed message to standard error.
func_error ()
{
$ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
}
# func_warning arg...
# Echo program name prefixed warning message to standard error.
func_warning ()
{
$opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
# bash bug again:
:
}
# func_fatal_error arg...
# Echo program name prefixed message to standard error, and exit.
func_fatal_error ()
{
func_error ${1+"$@"}
exit $EXIT_FAILURE
}
# func_fatal_help arg...
# Echo program name prefixed message to standard error, followed by
# a help hint, and exit.
func_fatal_help ()
{
func_error ${1+"$@"}
func_fatal_error "$help"
}
help="Try \`$progname --help' for more information." ## default
# func_grep expression filename
# Check whether EXPRESSION matches any line of FILENAME, without output.
func_grep ()
{
$GREP "$1" "$2" >/dev/null 2>&1
}
# func_mkdir_p directory-path
# Make sure the entire path to DIRECTORY-PATH is available.
func_mkdir_p ()
{
my_directory_path="$1"
my_dir_list=
if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
# Protect directory names starting with `-'
case $my_directory_path in
-*) my_directory_path="./$my_directory_path" ;;
esac
# While some portion of DIR does not yet exist...
while test ! -d "$my_directory_path"; do
# ...make a list in topmost first order. Use a colon delimited
# list incase some portion of path contains whitespace.
my_dir_list="$my_directory_path:$my_dir_list"
# If the last portion added has no slash in it, the list is done
case $my_directory_path in */*) ;; *) break ;; esac
# ...otherwise throw away the child directory and loop
my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
done
my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
save_mkdir_p_IFS="$IFS"; IFS=':'
for my_dir in $my_dir_list; do
IFS="$save_mkdir_p_IFS"
# mkdir can fail with a `File exist' error if two processes
# try to create one of the directories concurrently. Don't
# stop in that case!
$MKDIR "$my_dir" 2>/dev/null || :
done
IFS="$save_mkdir_p_IFS"
# Bail out if we (or some other process) failed to create a directory.
test -d "$my_directory_path" || \
func_fatal_error "Failed to create \`$1'"
fi
}
# func_mktempdir [string]
# Make a temporary directory that won't clash with other running
# libtool processes, and avoids race conditions if possible. If
# given, STRING is the basename for that directory.
func_mktempdir ()
{
my_template="${TMPDIR-/tmp}/${1-$progname}"
if test "$opt_dry_run" = ":"; then
# Return a directory name, but don't create it in dry-run mode
my_tmpdir="${my_template}-$$"
else
# If mktemp works, use that first and foremost
my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
if test ! -d "$my_tmpdir"; then
# Failing that, at least try and use $RANDOM to avoid a race
my_tmpdir="${my_template}-${RANDOM-0}$$"
save_mktempdir_umask=`umask`
umask 0077
$MKDIR "$my_tmpdir"
umask $save_mktempdir_umask
fi
# If we're not in dry-run mode, bomb out on failure
test -d "$my_tmpdir" || \
func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
fi
$ECHO "$my_tmpdir"
}
# func_quote_for_eval arg
# Aesthetically quote ARG to be evaled later.
# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
# is double-quoted, suitable for a subsequent eval, whereas
# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
# which are still active within double quotes backslashified.
func_quote_for_eval ()
{
case $1 in
*[\\\`\"\$]*)
func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
*)
func_quote_for_eval_unquoted_result="$1" ;;
esac
case $func_quote_for_eval_unquoted_result in
# Double-quote args containing shell metacharacters to delay
# word splitting, command substitution and and variable
# expansion for a subsequent eval.
# Many Bourne shells cannot handle close brackets correctly
# in scan sets, so we specify it separately.
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
;;
*)
func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
esac
}
# func_quote_for_expand arg
# Aesthetically quote ARG to be evaled later; same as above,
# but do not quote variable references.
func_quote_for_expand ()
{
case $1 in
*[\\\`\"]*)
my_arg=`$ECHO "$1" | $SED \
-e "$double_quote_subst" -e "$sed_double_backslash"` ;;
*)
my_arg="$1" ;;
esac
case $my_arg in
# Double-quote args containing shell metacharacters to delay
# word splitting and command substitution for a subsequent eval.
# Many Bourne shells cannot handle close brackets correctly
# in scan sets, so we specify it separately.
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
my_arg="\"$my_arg\""
;;
esac
func_quote_for_expand_result="$my_arg"
}
# func_show_eval cmd [fail_exp]
# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
# is given, then evaluate it.
func_show_eval ()
{
my_cmd="$1"
my_fail_exp="${2-:}"
${opt_silent-false} || {
func_quote_for_expand "$my_cmd"
eval "func_echo $func_quote_for_expand_result"
}
if ${opt_dry_run-false}; then :; else
eval "$my_cmd"
my_status=$?
if test "$my_status" -eq 0; then :; else
eval "(exit $my_status); $my_fail_exp"
fi
fi
}
# func_show_eval_locale cmd [fail_exp]
# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
# is given, then evaluate it. Use the saved locale for evaluation.
func_show_eval_locale ()
{
my_cmd="$1"
my_fail_exp="${2-:}"
${opt_silent-false} || {
func_quote_for_expand "$my_cmd"
eval "func_echo $func_quote_for_expand_result"
}
if ${opt_dry_run-false}; then :; else
eval "$lt_user_locale
$my_cmd"
my_status=$?
eval "$lt_safe_locale"
if test "$my_status" -eq 0; then :; else
eval "(exit $my_status); $my_fail_exp"
fi
fi
}
# func_tr_sh
# Turn $1 into a string suitable for a shell variable name.
# Result is stored in $func_tr_sh_result. All characters
# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
# if $1 begins with a digit, a '_' is prepended as well.
func_tr_sh ()
{
case $1 in
[0-9]* | *[!a-zA-Z0-9_]*)
func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
;;
* )
func_tr_sh_result=$1
;;
esac
}
# func_version
# Echo version message to standard output and exit.
func_version ()
{
$opt_debug
$SED -n '/(C)/!b go
:more
/\./!{
N
s/\n# / /
b more
}
:go
/^# '$PROGRAM' (GNU /,/# warranty; / {
s/^# //
s/^# *$//
s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
p
}' < "$progpath"
exit $?
}
# func_usage
# Echo short help message to standard output and exit.
func_usage ()
{
$opt_debug
$SED -n '/^# Usage:/,/^# *.*--help/ {
s/^# //
s/^# *$//
s/\$progname/'$progname'/
p
}' < "$progpath"
echo
$ECHO "run \`$progname --help | more' for full usage"
exit $?
}
# func_help [NOEXIT]
# Echo long help message to standard output and exit,
# unless 'noexit' is passed as argument.
func_help ()
{
$opt_debug
$SED -n '/^# Usage:/,/# Report bugs to/ {
:print
s/^# //
s/^# *$//
s*\$progname*'$progname'*
s*\$host*'"$host"'*
s*\$SHELL*'"$SHELL"'*
s*\$LTCC*'"$LTCC"'*
s*\$LTCFLAGS*'"$LTCFLAGS"'*
s*\$LD*'"$LD"'*
s/\$with_gnu_ld/'"$with_gnu_ld"'/
s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
p
d
}
/^# .* home page:/b print
/^# General help using/b print
' < "$progpath"
ret=$?
if test -z "$1"; then
exit $ret
fi
}
# func_missing_arg argname
# Echo program name prefixed message to standard error and set global
# exit_cmd.
func_missing_arg ()
{
$opt_debug
func_error "missing argument for $1."
exit_cmd=exit
}
# func_split_short_opt shortopt
# Set func_split_short_opt_name and func_split_short_opt_arg shell
# variables after splitting SHORTOPT after the 2nd character.
func_split_short_opt ()
{
my_sed_short_opt='1s/^\(..\).*$/\1/;q'
my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
} # func_split_short_opt may be replaced by extended shell implementation
# func_split_long_opt longopt
# Set func_split_long_opt_name and func_split_long_opt_arg shell
# variables after splitting LONGOPT at the `=' sign.
func_split_long_opt ()
{
my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
my_sed_long_arg='1s/^--[^=]*=//'
func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
} # func_split_long_opt may be replaced by extended shell implementation
exit_cmd=:
magic="%%%MAGIC variable%%%"
magic_exe="%%%MAGIC EXE variable%%%"
# Global variables.
nonopt=
preserve_args=
lo2o="s/\\.lo\$/.${objext}/"
o2lo="s/\\.${objext}\$/.lo/"
extracted_archives=
extracted_serial=0
# If this variable is set in any of the actions, the command in it
# will be execed at the end. This prevents here-documents from being
# left over by shells.
exec_cmd=
# func_append var value
# Append VALUE to the end of shell variable VAR.
func_append ()
{
eval "${1}=\$${1}\${2}"
} # func_append may be replaced by extended shell implementation
# func_append_quoted var value
# Quote VALUE and append to the end of shell variable VAR, separated
# by a space.
func_append_quoted ()
{
func_quote_for_eval "${2}"
eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
} # func_append_quoted may be replaced by extended shell implementation
# func_arith arithmetic-term...
func_arith ()
{
func_arith_result=`expr "${@}"`
} # func_arith may be replaced by extended shell implementation
# func_len string
# STRING may not start with a hyphen.
func_len ()
{
func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
} # func_len may be replaced by extended shell implementation
# func_lo2o object
func_lo2o ()
{
func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
} # func_lo2o may be replaced by extended shell implementation
# func_xform libobj-or-source
func_xform ()
{
func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
} # func_xform may be replaced by extended shell implementation
# func_fatal_configuration arg...
# Echo program name prefixed message to standard error, followed by
# a configuration failure hint, and exit.
func_fatal_configuration ()
{
func_error ${1+"$@"}
func_error "See the $PACKAGE documentation for more information."
func_fatal_error "Fatal configuration error."
}
# func_config
# Display the configuration for all the tags in this script.
func_config ()
{
re_begincf='^# ### BEGIN LIBTOOL'
re_endcf='^# ### END LIBTOOL'
# Default configuration.
$SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
# Now print the configurations for the tags.
for tagname in $taglist; do
$SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
done
exit $?
}
# func_features
# Display the features supported by this script.
func_features ()
{
echo "host: $host"
if test "$build_libtool_libs" = yes; then
echo "enable shared libraries"
else
echo "disable shared libraries"
fi
if test "$build_old_libs" = yes; then
echo "enable static libraries"
else
echo "disable static libraries"
fi
exit $?
}
# func_enable_tag tagname
# Verify that TAGNAME is valid, and either flag an error and exit, or
# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
# variable here.
func_enable_tag ()
{
# Global variable:
tagname="$1"
re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
sed_extractcf="/$re_begincf/,/$re_endcf/p"
# Validate tagname.
case $tagname in
*[!-_A-Za-z0-9,/]*)
func_fatal_error "invalid tag name: $tagname"
;;
esac
# Don't test for the "default" C tag, as we know it's
# there but not specially marked.
case $tagname in
CC) ;;
*)
if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
taglist="$taglist $tagname"
# Evaluate the configuration. Be careful to quote the path
# and the sed script, to avoid splitting on whitespace, but
# also don't use non-portable quotes within backquotes within
# quotes we have to do it in 2 steps:
extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
eval "$extractedcf"
else
func_error "ignoring unknown tag $tagname"
fi
;;
esac
}
# func_check_version_match
# Ensure that we are using m4 macros, and libtool script from the same
# release of libtool.
func_check_version_match ()
{
if test "$package_revision" != "$macro_revision"; then
if test "$VERSION" != "$macro_version"; then
if test -z "$macro_version"; then
cat >&2 <<_LT_EOF
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
$progname: definition of this LT_INIT comes from an older release.
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
$progname: and run autoconf again.
_LT_EOF
else
cat >&2 <<_LT_EOF
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
$progname: and run autoconf again.
_LT_EOF
fi
else
cat >&2 <<_LT_EOF
$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
$progname: but the definition of this LT_INIT comes from revision $macro_revision.
$progname: You should recreate aclocal.m4 with macros from revision $package_revision
$progname: of $PACKAGE $VERSION and run autoconf again.
_LT_EOF
fi
exit $EXIT_MISMATCH
fi
}
# Shorthand for --mode=foo, only valid as the first argument
case $1 in
clean|clea|cle|cl)
shift; set dummy --mode clean ${1+"$@"}; shift
;;
compile|compil|compi|comp|com|co|c)
shift; set dummy --mode compile ${1+"$@"}; shift
;;
execute|execut|execu|exec|exe|ex|e)
shift; set dummy --mode execute ${1+"$@"}; shift
;;
finish|finis|fini|fin|fi|f)
shift; set dummy --mode finish ${1+"$@"}; shift
;;
install|instal|insta|inst|ins|in|i)
shift; set dummy --mode install ${1+"$@"}; shift
;;
link|lin|li|l)
shift; set dummy --mode link ${1+"$@"}; shift
;;
uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
shift; set dummy --mode uninstall ${1+"$@"}; shift
;;
esac
# Option defaults:
opt_debug=:
opt_dry_run=false
opt_config=false
opt_preserve_dup_deps=false
opt_features=false
opt_finish=false
opt_help=false
opt_help_all=false
opt_silent=:
opt_warning=:
opt_verbose=:
opt_silent=false
opt_verbose=false
# Parse options once, thoroughly. This comes as soon as possible in the
# script to make things like `--version' happen as quickly as we can.
{
# this just eases exit handling
while test $# -gt 0; do
opt="$1"
shift
case $opt in
--debug|-x) opt_debug='set -x'
func_echo "enabling shell trace mode"
$opt_debug
;;
--dry-run|--dryrun|-n)
opt_dry_run=:
;;
--config)
opt_config=:
func_config
;;
--dlopen|-dlopen)
optarg="$1"
opt_dlopen="${opt_dlopen+$opt_dlopen
}$optarg"
shift
;;
--preserve-dup-deps)
opt_preserve_dup_deps=:
;;
--features)
opt_features=:
func_features
;;
--finish)
opt_finish=:
set dummy --mode finish ${1+"$@"}; shift
;;
--help)
opt_help=:
;;
--help-all)
opt_help_all=:
opt_help=': help-all'
;;
--mode)
test $# = 0 && func_missing_arg $opt && break
optarg="$1"
opt_mode="$optarg"
case $optarg in
# Valid mode arguments:
clean|compile|execute|finish|install|link|relink|uninstall) ;;
# Catch anything else as an error
*) func_error "invalid argument for $opt"
exit_cmd=exit
break
;;
esac
shift
;;
--no-silent|--no-quiet)
opt_silent=false
func_append preserve_args " $opt"
;;
--no-warning|--no-warn)
opt_warning=false
func_append preserve_args " $opt"
;;
--no-verbose)
opt_verbose=false
func_append preserve_args " $opt"
;;
--silent|--quiet)
opt_silent=:
func_append preserve_args " $opt"
opt_verbose=false
;;
--verbose|-v)
opt_verbose=:
func_append preserve_args " $opt"
opt_silent=false
;;
--tag)
test $# = 0 && func_missing_arg $opt && break
optarg="$1"
opt_tag="$optarg"
func_append preserve_args " $opt $optarg"
func_enable_tag "$optarg"
shift
;;
-\?|-h) func_usage ;;
--help) func_help ;;
--version) func_version ;;
# Separate optargs to long options:
--*=*)
func_split_long_opt "$opt"
set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
shift
;;
# Separate non-argument short options:
-\?*|-h*|-n*|-v*)
func_split_short_opt "$opt"
set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
shift
;;
--) break ;;
-*) func_fatal_help "unrecognized option \`$opt'" ;;
*) set dummy "$opt" ${1+"$@"}; shift; break ;;
esac
done
# Validate options:
# save first non-option argument
if test "$#" -gt 0; then
nonopt="$opt"
shift
fi
# preserve --debug
test "$opt_debug" = : || func_append preserve_args " --debug"
case $host in
*cygwin* | *mingw* | *pw32* | *cegcc*)
# don't eliminate duplications in $postdeps and $predeps
opt_duplicate_compiler_generated_deps=:
;;
*)
opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
;;
esac
$opt_help || {
# Sanity checks first:
func_check_version_match
if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
func_fatal_configuration "not configured to build any kind of library"
fi
# Darwin sucks
eval std_shrext=\"$shrext_cmds\"
# Only execute mode is allowed to have -dlopen flags.
if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
func_error "unrecognized option \`-dlopen'"
$ECHO "$help" 1>&2
exit $EXIT_FAILURE
fi
# Change the help message to a mode-specific one.
generic_help="$help"
help="Try \`$progname --help --mode=$opt_mode' for more information."
}
# Bail if the options were screwed
$exit_cmd $EXIT_FAILURE
}
## ----------- ##
## Main. ##
## ----------- ##
# func_lalib_p file
# True iff FILE is a libtool `.la' library or `.lo' object file.
# This function is only a basic sanity check; it will hardly flush out
# determined imposters.
func_lalib_p ()
{
test -f "$1" &&
$SED -e 4q "$1" 2>/dev/null \
| $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
}
# func_lalib_unsafe_p file
# True iff FILE is a libtool `.la' library or `.lo' object file.
# This function implements the same check as func_lalib_p without
# resorting to external programs. To this end, it redirects stdin and
# closes it afterwards, without saving the original file descriptor.
# As a safety measure, use it only where a negative result would be
# fatal anyway. Works if `file' does not exist.
func_lalib_unsafe_p ()
{
lalib_p=no
if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
for lalib_p_l in 1 2 3 4
do
read lalib_p_line
case "$lalib_p_line" in
\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
esac
done
exec 0<&5 5<&-
fi
test "$lalib_p" = yes
}
# func_ltwrapper_script_p file
# True iff FILE is a libtool wrapper script
# This function is only a basic sanity check; it will hardly flush out
# determined imposters.
func_ltwrapper_script_p ()
{
func_lalib_p "$1"
}
# func_ltwrapper_executable_p file
# True iff FILE is a libtool wrapper executable
# This function is only a basic sanity check; it will hardly flush out
# determined imposters.
func_ltwrapper_executable_p ()
{
func_ltwrapper_exec_suffix=
case $1 in
*.exe) ;;
*) func_ltwrapper_exec_suffix=.exe ;;
esac
$GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
}
# func_ltwrapper_scriptname file
# Assumes file is an ltwrapper_executable
# uses $file to determine the appropriate filename for a
# temporary ltwrapper_script.
func_ltwrapper_scriptname ()
{
func_dirname_and_basename "$1" "" "."
func_stripname '' '.exe' "$func_basename_result"
func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
}
# func_ltwrapper_p file
# True iff FILE is a libtool wrapper script or wrapper executable
# This function is only a basic sanity check; it will hardly flush out
# determined imposters.
func_ltwrapper_p ()
{
func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
}
# func_execute_cmds commands fail_cmd
# Execute tilde-delimited COMMANDS.
# If FAIL_CMD is given, eval that upon failure.
# FAIL_CMD may read-access the current command in variable CMD!
func_execute_cmds ()
{
$opt_debug
save_ifs=$IFS; IFS='~'
for cmd in $1; do
IFS=$save_ifs
eval cmd=\"$cmd\"
func_show_eval "$cmd" "${2-:}"
done
IFS=$save_ifs
}
# func_source file
# Source FILE, adding directory component if necessary.
# Note that it is not necessary on cygwin/mingw to append a dot to
# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
# behavior happens only for exec(3), not for open(2)! Also, sourcing
# `FILE.' does not work on cygwin managed mounts.
func_source ()
{
$opt_debug
case $1 in
*/* | *\\*) . "$1" ;;
*) . "./$1" ;;
esac
}
# func_resolve_sysroot PATH
# Replace a leading = in PATH with a sysroot. Store the result into
# func_resolve_sysroot_result
func_resolve_sysroot ()
{
func_resolve_sysroot_result=$1
case $func_resolve_sysroot_result in
=*)
func_stripname '=' '' "$func_resolve_sysroot_result"
func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
;;
esac
}
# func_replace_sysroot PATH
# If PATH begins with the sysroot, replace it with = and
# store the result into func_replace_sysroot_result.
func_replace_sysroot ()
{
case "$lt_sysroot:$1" in
?*:"$lt_sysroot"*)
func_stripname "$lt_sysroot" '' "$1"
func_replace_sysroot_result="=$func_stripname_result"
;;
*)
# Including no sysroot.
func_replace_sysroot_result=$1
;;
esac
}
# func_infer_tag arg
# Infer tagged configuration to use if any are available and
# if one wasn't chosen via the "--tag" command line option.
# Only attempt this if the compiler in the base compile
# command doesn't match the default compiler.
# arg is usually of the form 'gcc ...'
func_infer_tag ()
{
$opt_debug
if test -n "$available_tags" && test -z "$tagname"; then
CC_quoted=
for arg in $CC; do
func_append_quoted CC_quoted "$arg"
done
CC_expanded=`func_echo_all $CC`
CC_quoted_expanded=`func_echo_all $CC_quoted`
case $@ in
# Blanks in the command may have been stripped by the calling shell,
# but not from the CC environment variable when configure was run.
" $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
" $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
# Blanks at the start of $base_compile will cause this to fail
# if we don't check for them as well.
*)
for z in $available_tags; do
if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
# Evaluate the configuration.
eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
CC_quoted=
for arg in $CC; do
# Double-quote args containing other shell metacharacters.
func_append_quoted CC_quoted "$arg"
done
CC_expanded=`func_echo_all $CC`
CC_quoted_expanded=`func_echo_all $CC_quoted`
case "$@ " in
" $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
" $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
# The compiler in the base compile command matches
# the one in the tagged configuration.
# Assume this is the tagged configuration we want.
tagname=$z
break
;;
esac
fi
done
# If $tagname still isn't set, then no tagged configuration
# was found and let the user know that the "--tag" command
# line option must be used.
if test -z "$tagname"; then
func_echo "unable to infer tagged configuration"
func_fatal_error "specify a tag with \`--tag'"
# else
# func_verbose "using $tagname tagged configuration"
fi
;;
esac
fi
}
# func_write_libtool_object output_name pic_name nonpic_name
# Create a libtool object file (analogous to a ".la" file),
# but don't create it if we're doing a dry run.
func_write_libtool_object ()
{
write_libobj=${1}
if test "$build_libtool_libs" = yes; then
write_lobj=\'${2}\'
else
write_lobj=none
fi
if test "$build_old_libs" = yes; then
write_oldobj=\'${3}\'
else
write_oldobj=none
fi
$opt_dry_run || {
cat >${write_libobj}T </dev/null`
if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
$SED -e "$lt_sed_naive_backslashify"`
else
func_convert_core_file_wine_to_w32_result=
fi
fi
}
# end: func_convert_core_file_wine_to_w32
# func_convert_core_path_wine_to_w32 ARG
# Helper function used by path conversion functions when $build is *nix, and
# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
# configured wine environment available, with the winepath program in $build's
# $PATH. Assumes ARG has no leading or trailing path separator characters.
#
# ARG is path to be converted from $build format to win32.
# Result is available in $func_convert_core_path_wine_to_w32_result.
# Unconvertible file (directory) names in ARG are skipped; if no directory names
# are convertible, then the result may be empty.
func_convert_core_path_wine_to_w32 ()
{
$opt_debug
# unfortunately, winepath doesn't convert paths, only file names
func_convert_core_path_wine_to_w32_result=""
if test -n "$1"; then
oldIFS=$IFS
IFS=:
for func_convert_core_path_wine_to_w32_f in $1; do
IFS=$oldIFS
func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
if test -n "$func_convert_core_file_wine_to_w32_result" ; then
if test -z "$func_convert_core_path_wine_to_w32_result"; then
func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
else
func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
fi
fi
done
IFS=$oldIFS
fi
}
# end: func_convert_core_path_wine_to_w32
# func_cygpath ARGS...
# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
# (2), returns the Cygwin file name or path in func_cygpath_result (input
# file name or path is assumed to be in w32 format, as previously converted
# from $build's *nix or MSYS format). In case (3), returns the w32 file name
# or path in func_cygpath_result (input file name or path is assumed to be in
# Cygwin format). Returns an empty string on error.
#
# ARGS are passed to cygpath, with the last one being the file name or path to
# be converted.
#
# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
# environment variable; do not put it in $PATH.
func_cygpath ()
{
$opt_debug
if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
if test "$?" -ne 0; then
# on failure, ensure result is empty
func_cygpath_result=
fi
else
func_cygpath_result=
func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
fi
}
#end: func_cygpath
# func_convert_core_msys_to_w32 ARG
# Convert file name or path ARG from MSYS format to w32 format. Return
# result in func_convert_core_msys_to_w32_result.
func_convert_core_msys_to_w32 ()
{
$opt_debug
# awkward: cmd appends spaces to result
func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
$SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
}
#end: func_convert_core_msys_to_w32
# func_convert_file_check ARG1 ARG2
# Verify that ARG1 (a file name in $build format) was converted to $host
# format in ARG2. Otherwise, emit an error message, but continue (resetting
# func_to_host_file_result to ARG1).
func_convert_file_check ()
{
$opt_debug
if test -z "$2" && test -n "$1" ; then
func_error "Could not determine host file name corresponding to"
func_error " \`$1'"
func_error "Continuing, but uninstalled executables may not work."
# Fallback:
func_to_host_file_result="$1"
fi
}
# end func_convert_file_check
# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
# Verify that FROM_PATH (a path in $build format) was converted to $host
# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
# func_to_host_file_result to a simplistic fallback value (see below).
func_convert_path_check ()
{
$opt_debug
if test -z "$4" && test -n "$3"; then
func_error "Could not determine the host path corresponding to"
func_error " \`$3'"
func_error "Continuing, but uninstalled executables may not work."
# Fallback. This is a deliberately simplistic "conversion" and
# should not be "improved". See libtool.info.
if test "x$1" != "x$2"; then
lt_replace_pathsep_chars="s|$1|$2|g"
func_to_host_path_result=`echo "$3" |
$SED -e "$lt_replace_pathsep_chars"`
else
func_to_host_path_result="$3"
fi
fi
}
# end func_convert_path_check
# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
# and appending REPL if ORIG matches BACKPAT.
func_convert_path_front_back_pathsep ()
{
$opt_debug
case $4 in
$1 ) func_to_host_path_result="$3$func_to_host_path_result"
;;
esac
case $4 in
$2 ) func_append func_to_host_path_result "$3"
;;
esac
}
# end func_convert_path_front_back_pathsep
##################################################
# $build to $host FILE NAME CONVERSION FUNCTIONS #
##################################################
# invoked via `$to_host_file_cmd ARG'
#
# In each case, ARG is the path to be converted from $build to $host format.
# Result will be available in $func_to_host_file_result.
# func_to_host_file ARG
# Converts the file name ARG from $build format to $host format. Return result
# in func_to_host_file_result.
func_to_host_file ()
{
$opt_debug
$to_host_file_cmd "$1"
}
# end func_to_host_file
# func_to_tool_file ARG LAZY
# converts the file name ARG from $build format to toolchain format. Return
# result in func_to_tool_file_result. If the conversion in use is listed
# in (the comma separated) LAZY, no conversion takes place.
func_to_tool_file ()
{
$opt_debug
case ,$2, in
*,"$to_tool_file_cmd",*)
func_to_tool_file_result=$1
;;
*)
$to_tool_file_cmd "$1"
func_to_tool_file_result=$func_to_host_file_result
;;
esac
}
# end func_to_tool_file
# func_convert_file_noop ARG
# Copy ARG to func_to_host_file_result.
func_convert_file_noop ()
{
func_to_host_file_result="$1"
}
# end func_convert_file_noop
# func_convert_file_msys_to_w32 ARG
# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
# conversion to w32 is not available inside the cwrapper. Returns result in
# func_to_host_file_result.
func_convert_file_msys_to_w32 ()
{
$opt_debug
func_to_host_file_result="$1"
if test -n "$1"; then
func_convert_core_msys_to_w32 "$1"
func_to_host_file_result="$func_convert_core_msys_to_w32_result"
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
# end func_convert_file_msys_to_w32
# func_convert_file_cygwin_to_w32 ARG
# Convert file name ARG from Cygwin to w32 format. Returns result in
# func_to_host_file_result.
func_convert_file_cygwin_to_w32 ()
{
$opt_debug
func_to_host_file_result="$1"
if test -n "$1"; then
# because $build is cygwin, we call "the" cygpath in $PATH; no need to use
# LT_CYGPATH in this case.
func_to_host_file_result=`cygpath -m "$1"`
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
# end func_convert_file_cygwin_to_w32
# func_convert_file_nix_to_w32 ARG
# Convert file name ARG from *nix to w32 format. Requires a wine environment
# and a working winepath. Returns result in func_to_host_file_result.
func_convert_file_nix_to_w32 ()
{
$opt_debug
func_to_host_file_result="$1"
if test -n "$1"; then
func_convert_core_file_wine_to_w32 "$1"
func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
# end func_convert_file_nix_to_w32
# func_convert_file_msys_to_cygwin ARG
# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
# Returns result in func_to_host_file_result.
func_convert_file_msys_to_cygwin ()
{
$opt_debug
func_to_host_file_result="$1"
if test -n "$1"; then
func_convert_core_msys_to_w32 "$1"
func_cygpath -u "$func_convert_core_msys_to_w32_result"
func_to_host_file_result="$func_cygpath_result"
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
# end func_convert_file_msys_to_cygwin
# func_convert_file_nix_to_cygwin ARG
# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
# in func_to_host_file_result.
func_convert_file_nix_to_cygwin ()
{
$opt_debug
func_to_host_file_result="$1"
if test -n "$1"; then
# convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
func_convert_core_file_wine_to_w32 "$1"
func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
func_to_host_file_result="$func_cygpath_result"
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
# end func_convert_file_nix_to_cygwin
#############################################
# $build to $host PATH CONVERSION FUNCTIONS #
#############################################
# invoked via `$to_host_path_cmd ARG'
#
# In each case, ARG is the path to be converted from $build to $host format.
# The result will be available in $func_to_host_path_result.
#
# Path separators are also converted from $build format to $host format. If
# ARG begins or ends with a path separator character, it is preserved (but
# converted to $host format) on output.
#
# All path conversion functions are named using the following convention:
# file name conversion function : func_convert_file_X_to_Y ()
# path conversion function : func_convert_path_X_to_Y ()
# where, for any given $build/$host combination the 'X_to_Y' value is the
# same. If conversion functions are added for new $build/$host combinations,
# the two new functions must follow this pattern, or func_init_to_host_path_cmd
# will break.
# func_init_to_host_path_cmd
# Ensures that function "pointer" variable $to_host_path_cmd is set to the
# appropriate value, based on the value of $to_host_file_cmd.
to_host_path_cmd=
func_init_to_host_path_cmd ()
{
$opt_debug
if test -z "$to_host_path_cmd"; then
func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
to_host_path_cmd="func_convert_path_${func_stripname_result}"
fi
}
# func_to_host_path ARG
# Converts the path ARG from $build format to $host format. Return result
# in func_to_host_path_result.
func_to_host_path ()
{
$opt_debug
func_init_to_host_path_cmd
$to_host_path_cmd "$1"
}
# end func_to_host_path
# func_convert_path_noop ARG
# Copy ARG to func_to_host_path_result.
func_convert_path_noop ()
{
func_to_host_path_result="$1"
}
# end func_convert_path_noop
# func_convert_path_msys_to_w32 ARG
# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
# conversion to w32 is not available inside the cwrapper. Returns result in
# func_to_host_path_result.
func_convert_path_msys_to_w32 ()
{
$opt_debug
func_to_host_path_result="$1"
if test -n "$1"; then
# Remove leading and trailing path separator characters from ARG. MSYS
# behavior is inconsistent here; cygpath turns them into '.;' and ';.';
# and winepath ignores them completely.
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
func_to_host_path_result="$func_convert_core_msys_to_w32_result"
func_convert_path_check : ";" \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
fi
}
# end func_convert_path_msys_to_w32
# func_convert_path_cygwin_to_w32 ARG
# Convert path ARG from Cygwin to w32 format. Returns result in
# func_to_host_file_result.
func_convert_path_cygwin_to_w32 ()
{
$opt_debug
func_to_host_path_result="$1"
if test -n "$1"; then
# See func_convert_path_msys_to_w32:
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
func_convert_path_check : ";" \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
fi
}
# end func_convert_path_cygwin_to_w32
# func_convert_path_nix_to_w32 ARG
# Convert path ARG from *nix to w32 format. Requires a wine environment and
# a working winepath. Returns result in func_to_host_file_result.
func_convert_path_nix_to_w32 ()
{
$opt_debug
func_to_host_path_result="$1"
if test -n "$1"; then
# See func_convert_path_msys_to_w32:
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
func_convert_path_check : ";" \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
fi
}
# end func_convert_path_nix_to_w32
# func_convert_path_msys_to_cygwin ARG
# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
# Returns result in func_to_host_file_result.
func_convert_path_msys_to_cygwin ()
{
$opt_debug
func_to_host_path_result="$1"
if test -n "$1"; then
# See func_convert_path_msys_to_w32:
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
func_to_host_path_result="$func_cygpath_result"
func_convert_path_check : : \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" : "$1"
fi
}
# end func_convert_path_msys_to_cygwin
# func_convert_path_nix_to_cygwin ARG
# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
# func_to_host_file_result.
func_convert_path_nix_to_cygwin ()
{
$opt_debug
func_to_host_path_result="$1"
if test -n "$1"; then
# Remove leading and trailing path separator characters from
# ARG. msys behavior is inconsistent here, cygpath turns them
# into '.;' and ';.', and winepath ignores them completely.
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
func_to_host_path_result="$func_cygpath_result"
func_convert_path_check : : \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" : "$1"
fi
}
# end func_convert_path_nix_to_cygwin
# func_mode_compile arg...
func_mode_compile ()
{
$opt_debug
# Get the compilation command and the source file.
base_compile=
srcfile="$nonopt" # always keep a non-empty value in "srcfile"
suppress_opt=yes
suppress_output=
arg_mode=normal
libobj=
later=
pie_flag=
for arg
do
case $arg_mode in
arg )
# do not "continue". Instead, add this to base_compile
lastarg="$arg"
arg_mode=normal
;;
target )
libobj="$arg"
arg_mode=normal
continue
;;
normal )
# Accept any command-line options.
case $arg in
-o)
test -n "$libobj" && \
func_fatal_error "you cannot specify \`-o' more than once"
arg_mode=target
continue
;;
-pie | -fpie | -fPIE)
func_append pie_flag " $arg"
continue
;;
-shared | -static | -prefer-pic | -prefer-non-pic)
func_append later " $arg"
continue
;;
-no-suppress)
suppress_opt=no
continue
;;
-Xcompiler)
arg_mode=arg # the next one goes into the "base_compile" arg list
continue # The current "srcfile" will either be retained or
;; # replaced later. I would guess that would be a bug.
-Wc,*)
func_stripname '-Wc,' '' "$arg"
args=$func_stripname_result
lastarg=
save_ifs="$IFS"; IFS=','
for arg in $args; do
IFS="$save_ifs"
func_append_quoted lastarg "$arg"
done
IFS="$save_ifs"
func_stripname ' ' '' "$lastarg"
lastarg=$func_stripname_result
# Add the arguments to base_compile.
func_append base_compile " $lastarg"
continue
;;
*)
# Accept the current argument as the source file.
# The previous "srcfile" becomes the current argument.
#
lastarg="$srcfile"
srcfile="$arg"
;;
esac # case $arg
;;
esac # case $arg_mode
# Aesthetically quote the previous argument.
func_append_quoted base_compile "$lastarg"
done # for arg
case $arg_mode in
arg)
func_fatal_error "you must specify an argument for -Xcompile"
;;
target)
func_fatal_error "you must specify a target with \`-o'"
;;
*)
# Get the name of the library object.
test -z "$libobj" && {
func_basename "$srcfile"
libobj="$func_basename_result"
}
;;
esac
# Recognize several different file suffixes.
# If the user specifies -o file.o, it is replaced with file.lo
case $libobj in
*.[cCFSifmso] | \
*.ada | *.adb | *.ads | *.asm | \
*.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
*.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
func_xform "$libobj"
libobj=$func_xform_result
;;
esac
case $libobj in
*.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
*)
func_fatal_error "cannot determine name of library object from \`$libobj'"
;;
esac
func_infer_tag $base_compile
for arg in $later; do
case $arg in
-shared)
test "$build_libtool_libs" != yes && \
func_fatal_configuration "can not build a shared library"
build_old_libs=no
continue
;;
-static)
build_libtool_libs=no
build_old_libs=yes
continue
;;
-prefer-pic)
pic_mode=yes
continue
;;
-prefer-non-pic)
pic_mode=no
continue
;;
esac
done
func_quote_for_eval "$libobj"
test "X$libobj" != "X$func_quote_for_eval_result" \
&& $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
&& func_warning "libobj name \`$libobj' may not contain shell special characters."
func_dirname_and_basename "$obj" "/" ""
objname="$func_basename_result"
xdir="$func_dirname_result"
lobj=${xdir}$objdir/$objname
test -z "$base_compile" && \
func_fatal_help "you must specify a compilation command"
# Delete any leftover library objects.
if test "$build_old_libs" = yes; then
removelist="$obj $lobj $libobj ${libobj}T"
else
removelist="$lobj $libobj ${libobj}T"
fi
# On Cygwin there's no "real" PIC flag so we must build both object types
case $host_os in
cygwin* | mingw* | pw32* | os2* | cegcc*)
pic_mode=default
;;
esac
if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
# non-PIC code in shared libraries is not supported
pic_mode=default
fi
# Calculate the filename of the output object if compiler does
# not support -o with -c
if test "$compiler_c_o" = no; then
output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
lockfile="$output_obj.lock"
else
output_obj=
need_locks=no
lockfile=
fi
# Lock this critical section if it is needed
# We use this script file to make the link, it avoids creating a new file
if test "$need_locks" = yes; then
until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
func_echo "Waiting for $lockfile to be removed"
sleep 2
done
elif test "$need_locks" = warn; then
if test -f "$lockfile"; then
$ECHO "\
*** ERROR, $lockfile exists and contains:
`cat $lockfile 2>/dev/null`
This indicates that another process is trying to use the same
temporary object file, and libtool could not work around it because
your compiler does not support \`-c' and \`-o' together. If you
repeat this compilation, it may succeed, by chance, but you had better
avoid parallel builds (make -j) in this platform, or get a better
compiler."
$opt_dry_run || $RM $removelist
exit $EXIT_FAILURE
fi
func_append removelist " $output_obj"
$ECHO "$srcfile" > "$lockfile"
fi
$opt_dry_run || $RM $removelist
func_append removelist " $lockfile"
trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
srcfile=$func_to_tool_file_result
func_quote_for_eval "$srcfile"
qsrcfile=$func_quote_for_eval_result
# Only build a PIC object if we are building libtool libraries.
if test "$build_libtool_libs" = yes; then
# Without this assignment, base_compile gets emptied.
fbsd_hideous_sh_bug=$base_compile
if test "$pic_mode" != no; then
command="$base_compile $qsrcfile $pic_flag"
else
# Don't build PIC code
command="$base_compile $qsrcfile"
fi
func_mkdir_p "$xdir$objdir"
if test -z "$output_obj"; then
# Place PIC objects in $objdir
func_append command " -o $lobj"
fi
func_show_eval_locale "$command" \
'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
if test "$need_locks" = warn &&
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
$ECHO "\
*** ERROR, $lockfile contains:
`cat $lockfile 2>/dev/null`
but it should contain:
$srcfile
This indicates that another process is trying to use the same
temporary object file, and libtool could not work around it because
your compiler does not support \`-c' and \`-o' together. If you
repeat this compilation, it may succeed, by chance, but you had better
avoid parallel builds (make -j) in this platform, or get a better
compiler."
$opt_dry_run || $RM $removelist
exit $EXIT_FAILURE
fi
# Just move the object if needed, then go on to compile the next one
if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
func_show_eval '$MV "$output_obj" "$lobj"' \
'error=$?; $opt_dry_run || $RM $removelist; exit $error'
fi
# Allow error messages only from the first compilation.
if test "$suppress_opt" = yes; then
suppress_output=' >/dev/null 2>&1'
fi
fi
# Only build a position-dependent object if we build old libraries.
if test "$build_old_libs" = yes; then
if test "$pic_mode" != yes; then
# Don't build PIC code
command="$base_compile $qsrcfile$pie_flag"
else
command="$base_compile $qsrcfile $pic_flag"
fi
if test "$compiler_c_o" = yes; then
func_append command " -o $obj"
fi
# Suppress compiler output if we already did a PIC compilation.
func_append command "$suppress_output"
func_show_eval_locale "$command" \
'$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
if test "$need_locks" = warn &&
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
$ECHO "\
*** ERROR, $lockfile contains:
`cat $lockfile 2>/dev/null`
but it should contain:
$srcfile
This indicates that another process is trying to use the same
temporary object file, and libtool could not work around it because
your compiler does not support \`-c' and \`-o' together. If you
repeat this compilation, it may succeed, by chance, but you had better
avoid parallel builds (make -j) in this platform, or get a better
compiler."
$opt_dry_run || $RM $removelist
exit $EXIT_FAILURE
fi
# Just move the object if needed
if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
func_show_eval '$MV "$output_obj" "$obj"' \
'error=$?; $opt_dry_run || $RM $removelist; exit $error'
fi
fi
$opt_dry_run || {
func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
# Unlock the critical section if it was locked
if test "$need_locks" != no; then
removelist=$lockfile
$RM "$lockfile"
fi
}
exit $EXIT_SUCCESS
}
$opt_help || {
test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
}
func_mode_help ()
{
# We need to display help for each of the modes.
case $opt_mode in
"")
# Generic help is extracted from the usage comments
# at the start of this file.
func_help
;;
clean)
$ECHO \
"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
Remove files from the build directory.
RM is the name of the program to use to delete files associated with each FILE
(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
to RM.
If FILE is a libtool library, object or program, all the files associated
with it are deleted. Otherwise, only FILE itself is deleted using RM."
;;
compile)
$ECHO \
"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
Compile a source file into a libtool library object.
This mode accepts the following additional options:
-o OUTPUT-FILE set the output file name to OUTPUT-FILE
-no-suppress do not suppress compiler output for multiple passes
-prefer-pic try to build PIC objects only
-prefer-non-pic try to build non-PIC objects only
-shared do not build a \`.o' file suitable for static linking
-static only build a \`.o' file suitable for static linking
-Wc,FLAG pass FLAG directly to the compiler
COMPILE-COMMAND is a command to be used in creating a \`standard' object file
from the given SOURCEFILE.
The output file name is determined by removing the directory component from
SOURCEFILE, then substituting the C source code suffix \`.c' with the
library object suffix, \`.lo'."
;;
execute)
$ECHO \
"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
Automatically set library path, then run a program.
This mode accepts the following additional options:
-dlopen FILE add the directory containing FILE to the library path
This mode sets the library path environment variable according to \`-dlopen'
flags.
If any of the ARGS are libtool executable wrappers, then they are translated
into their corresponding uninstalled binary, and any of their required library
directories are added to the library path.
Then, COMMAND is executed, with ARGS as arguments."
;;
finish)
$ECHO \
"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
Complete the installation of libtool libraries.
Each LIBDIR is a directory that contains libtool libraries.
The commands that this mode executes may require superuser privileges. Use
the \`--dry-run' option if you just want to see what would be executed."
;;
install)
$ECHO \
"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
Install executables or libraries.
INSTALL-COMMAND is the installation command. The first component should be
either the \`install' or \`cp' program.
The following components of INSTALL-COMMAND are treated specially:
-inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
The rest of the components are interpreted as arguments to that command (only
BSD-compatible install options are recognized)."
;;
link)
$ECHO \
"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
Link object files or libraries together to form another library, or to
create an executable program.
LINK-COMMAND is a command using the C compiler that you would use to create
a program from several object files.
The following components of LINK-COMMAND are treated specially:
-all-static do not do any dynamic linking at all
-avoid-version do not add a version suffix if possible
-bindir BINDIR specify path to binaries directory (for systems where
libraries must be found in the PATH setting at runtime)
-dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
-dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-export-symbols SYMFILE
try to export only the symbols listed in SYMFILE
-export-symbols-regex REGEX
try to export only the symbols matching REGEX
-LLIBDIR search LIBDIR for required installed libraries
-lNAME OUTPUT-FILE requires the installed library libNAME
-module build a library that can dlopened
-no-fast-install disable the fast-install mode
-no-install link a not-installable executable
-no-undefined declare that a library does not refer to external symbols
-o OUTPUT-FILE create OUTPUT-FILE from the specified objects
-objectlist FILE Use a list of object files found in FILE to specify objects
-precious-files-regex REGEX
don't remove output files matching REGEX
-release RELEASE specify package release information
-rpath LIBDIR the created library will eventually be installed in LIBDIR
-R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
-shared only do dynamic linking of libtool libraries
-shrext SUFFIX override the standard shared library file extension
-static do not do any dynamic linking of uninstalled libtool libraries
-static-libtool-libs
do not do any dynamic linking of libtool libraries
-version-info CURRENT[:REVISION[:AGE]]
specify library version info [each variable defaults to 0]
-weak LIBNAME declare that the target provides the LIBNAME interface
-Wc,FLAG
-Xcompiler FLAG pass linker-specific FLAG directly to the compiler
-Wl,FLAG
-Xlinker FLAG pass linker-specific FLAG directly to the linker
-XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
All other options (arguments beginning with \`-') are ignored.
Every other argument is treated as a filename. Files ending in \`.la' are
treated as uninstalled libtool libraries, other files are standard or library
object files.
If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
only library objects (\`.lo' files) may be specified, and \`-rpath' is
required, except when creating a convenience library.
If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
using \`ar' and \`ranlib', or on Windows using \`lib'.
If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
is created, otherwise an executable program is created."
;;
uninstall)
$ECHO \
"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
Remove libraries from an installation directory.
RM is the name of the program to use to delete files associated with each FILE
(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
to RM.
If FILE is a libtool library, all the files associated with it are deleted.
Otherwise, only FILE itself is deleted using RM."
;;
*)
func_fatal_help "invalid operation mode \`$opt_mode'"
;;
esac
echo
$ECHO "Try \`$progname --help' for more information about other modes."
}
# Now that we've collected a possible --mode arg, show help if necessary
if $opt_help; then
if test "$opt_help" = :; then
func_mode_help
else
{
func_help noexit
for opt_mode in compile link execute install finish uninstall clean; do
func_mode_help
done
} | sed -n '1p; 2,$s/^Usage:/ or: /p'
{
func_help noexit
for opt_mode in compile link execute install finish uninstall clean; do
echo
func_mode_help
done
} |
sed '1d
/^When reporting/,/^Report/{
H
d
}
$x
/information about other modes/d
/more detailed .*MODE/d
s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
fi
exit $?
fi
# func_mode_execute arg...
func_mode_execute ()
{
$opt_debug
# The first argument is the command name.
cmd="$nonopt"
test -z "$cmd" && \
func_fatal_help "you must specify a COMMAND"
# Handle -dlopen flags immediately.
for file in $opt_dlopen; do
test -f "$file" \
|| func_fatal_help "\`$file' is not a file"
dir=
case $file in
*.la)
func_resolve_sysroot "$file"
file=$func_resolve_sysroot_result
# Check to see that this really is a libtool archive.
func_lalib_unsafe_p "$file" \
|| func_fatal_help "\`$lib' is not a valid libtool archive"
# Read the libtool library.
dlname=
library_names=
func_source "$file"
# Skip this library if it cannot be dlopened.
if test -z "$dlname"; then
# Warn if it was a shared library.
test -n "$library_names" && \
func_warning "\`$file' was not linked with \`-export-dynamic'"
continue
fi
func_dirname "$file" "" "."
dir="$func_dirname_result"
if test -f "$dir/$objdir/$dlname"; then
func_append dir "/$objdir"
else
if test ! -f "$dir/$dlname"; then
func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
fi
fi
;;
*.lo)
# Just add the directory containing the .lo file.
func_dirname "$file" "" "."
dir="$func_dirname_result"
;;
*)
func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
continue
;;
esac
# Get the absolute pathname.
absdir=`cd "$dir" && pwd`
test -n "$absdir" && dir="$absdir"
# Now add the directory to shlibpath_var.
if eval "test -z \"\$$shlibpath_var\""; then
eval "$shlibpath_var=\"\$dir\""
else
eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
fi
done
# This variable tells wrapper scripts just to set shlibpath_var
# rather than running their programs.
libtool_execute_magic="$magic"
# Check if any of the arguments is a wrapper script.
args=
for file
do
case $file in
-* | *.la | *.lo ) ;;
*)
# Do a test to see if this is really a libtool program.
if func_ltwrapper_script_p "$file"; then
func_source "$file"
# Transform arg to wrapped name.
file="$progdir/$program"
elif func_ltwrapper_executable_p "$file"; then
func_ltwrapper_scriptname "$file"
func_source "$func_ltwrapper_scriptname_result"
# Transform arg to wrapped name.
file="$progdir/$program"
fi
;;
esac
# Quote arguments (to preserve shell metacharacters).
func_append_quoted args "$file"
done
if test "X$opt_dry_run" = Xfalse; then
if test -n "$shlibpath_var"; then
# Export the shlibpath_var.
eval "export $shlibpath_var"
fi
# Restore saved environment variables
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
do
eval "if test \"\${save_$lt_var+set}\" = set; then
$lt_var=\$save_$lt_var; export $lt_var
else
$lt_unset $lt_var
fi"
done
# Now prepare to actually exec the command.
exec_cmd="\$cmd$args"
else
# Display what would be done.
if test -n "$shlibpath_var"; then
eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
echo "export $shlibpath_var"
fi
$ECHO "$cmd$args"
exit $EXIT_SUCCESS
fi
}
test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
# func_mode_finish arg...
func_mode_finish ()
{
$opt_debug
libs=
libdirs=
admincmds=
for opt in "$nonopt" ${1+"$@"}
do
if test -d "$opt"; then
func_append libdirs " $opt"
elif test -f "$opt"; then
if func_lalib_unsafe_p "$opt"; then
func_append libs " $opt"
else
func_warning "\`$opt' is not a valid libtool archive"
fi
else
func_fatal_error "invalid argument \`$opt'"
fi
done
if test -n "$libs"; then
if test -n "$lt_sysroot"; then
sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
else
sysroot_cmd=
fi
# Remove sysroot references
if $opt_dry_run; then
for lib in $libs; do
echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
done
else
tmpdir=`func_mktempdir`
for lib in $libs; do
sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
> $tmpdir/tmp-la
mv -f $tmpdir/tmp-la $lib
done
${RM}r "$tmpdir"
fi
fi
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
for libdir in $libdirs; do
if test -n "$finish_cmds"; then
# Do each command in the finish commands.
func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
'"$cmd"'"'
fi
if test -n "$finish_eval"; then
# Do the single finish_eval.
eval cmds=\"$finish_eval\"
$opt_dry_run || eval "$cmds" || func_append admincmds "
$cmds"
fi
done
fi
# Exit here if they wanted silent mode.
$opt_silent && exit $EXIT_SUCCESS
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
echo "----------------------------------------------------------------------"
echo "Libraries have been installed in:"
for libdir in $libdirs; do
$ECHO " $libdir"
done
echo
echo "If you ever happen to want to link against installed libraries"
echo "in a given directory, LIBDIR, you must either use libtool, and"
echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
echo "flag during linking and do at least one of the following:"
if test -n "$shlibpath_var"; then
echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
echo " during execution"
fi
if test -n "$runpath_var"; then
echo " - add LIBDIR to the \`$runpath_var' environment variable"
echo " during linking"
fi
if test -n "$hardcode_libdir_flag_spec"; then
libdir=LIBDIR
eval flag=\"$hardcode_libdir_flag_spec\"
$ECHO " - use the \`$flag' linker flag"
fi
if test -n "$admincmds"; then
$ECHO " - have your system administrator run these commands:$admincmds"
fi
if test -f /etc/ld.so.conf; then
echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
fi
echo
echo "See any operating system documentation about shared libraries for"
case $host in
solaris2.[6789]|solaris2.1[0-9])
echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
echo "pages."
;;
*)
echo "more information, such as the ld(1) and ld.so(8) manual pages."
;;
esac
echo "----------------------------------------------------------------------"
fi
exit $EXIT_SUCCESS
}
test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
# func_mode_install arg...
func_mode_install ()
{
$opt_debug
# There may be an optional sh(1) argument at the beginning of
# install_prog (especially on Windows NT).
if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
# Allow the use of GNU shtool's install command.
case $nonopt in *shtool*) :;; *) false;; esac; then
# Aesthetically quote it.
func_quote_for_eval "$nonopt"
install_prog="$func_quote_for_eval_result "
arg=$1
shift
else
install_prog=
arg=$nonopt
fi
# The real first argument should be the name of the installation program.
# Aesthetically quote it.
func_quote_for_eval "$arg"
func_append install_prog "$func_quote_for_eval_result"
install_shared_prog=$install_prog
case " $install_prog " in
*[\\\ /]cp\ *) install_cp=: ;;
*) install_cp=false ;;
esac
# We need to accept at least all the BSD install flags.
dest=
files=
opts=
prev=
install_type=
isdir=no
stripme=
no_mode=:
for arg
do
arg2=
if test -n "$dest"; then
func_append files " $dest"
dest=$arg
continue
fi
case $arg in
-d) isdir=yes ;;
-f)
if $install_cp; then :; else
prev=$arg
fi
;;
-g | -m | -o)
prev=$arg
;;
-s)
stripme=" -s"
continue
;;
-*)
;;
*)
# If the previous option needed an argument, then skip it.
if test -n "$prev"; then
if test "x$prev" = x-m && test -n "$install_override_mode"; then
arg2=$install_override_mode
no_mode=false
fi
prev=
else
dest=$arg
continue
fi
;;
esac
# Aesthetically quote the argument.
func_quote_for_eval "$arg"
func_append install_prog " $func_quote_for_eval_result"
if test -n "$arg2"; then
func_quote_for_eval "$arg2"
fi
func_append install_shared_prog " $func_quote_for_eval_result"
done
test -z "$install_prog" && \
func_fatal_help "you must specify an install program"
test -n "$prev" && \
func_fatal_help "the \`$prev' option requires an argument"
if test -n "$install_override_mode" && $no_mode; then
if $install_cp; then :; else
func_quote_for_eval "$install_override_mode"
func_append install_shared_prog " -m $func_quote_for_eval_result"
fi
fi
if test -z "$files"; then
if test -z "$dest"; then
func_fatal_help "no file or destination specified"
else
func_fatal_help "you must specify a destination"
fi
fi
# Strip any trailing slash from the destination.
func_stripname '' '/' "$dest"
dest=$func_stripname_result
# Check to see that the destination is a directory.
test -d "$dest" && isdir=yes
if test "$isdir" = yes; then
destdir="$dest"
destname=
else
func_dirname_and_basename "$dest" "" "."
destdir="$func_dirname_result"
destname="$func_basename_result"
# Not a directory, so check to see that there is only one file specified.
set dummy $files; shift
test "$#" -gt 1 && \
func_fatal_help "\`$dest' is not a directory"
fi
case $destdir in
[\\/]* | [A-Za-z]:[\\/]*) ;;
*)
for file in $files; do
case $file in
*.lo) ;;
*)
func_fatal_help "\`$destdir' must be an absolute directory name"
;;
esac
done
;;
esac
# This variable tells wrapper scripts just to set variables rather
# than running their programs.
libtool_install_magic="$magic"
staticlibs=
future_libdirs=
current_libdirs=
for file in $files; do
# Do each installation.
case $file in
*.$libext)
# Do the static libraries later.
func_append staticlibs " $file"
;;
*.la)
func_resolve_sysroot "$file"
file=$func_resolve_sysroot_result
# Check to see that this really is a libtool archive.
func_lalib_unsafe_p "$file" \
|| func_fatal_help "\`$file' is not a valid libtool archive"
library_names=
old_library=
relink_command=
func_source "$file"
# Add the libdir to current_libdirs if it is the destination.
if test "X$destdir" = "X$libdir"; then
case "$current_libdirs " in
*" $libdir "*) ;;
*) func_append current_libdirs " $libdir" ;;
esac
else
# Note the libdir as a future libdir.
case "$future_libdirs " in
*" $libdir "*) ;;
*) func_append future_libdirs " $libdir" ;;
esac
fi
func_dirname "$file" "/" ""
dir="$func_dirname_result"
func_append dir "$objdir"
if test -n "$relink_command"; then
# Determine the prefix the user has applied to our future dir.
inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
# Don't allow the user to place us outside of our expected
# location b/c this prevents finding dependent libraries that
# are installed to the same prefix.
# At present, this check doesn't affect windows .dll's that
# are installed into $libdir/../bin (currently, that works fine)
# but it's something to keep an eye on.
test "$inst_prefix_dir" = "$destdir" && \
func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
if test -n "$inst_prefix_dir"; then
# Stick the inst_prefix_dir data into the link command.
relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
else
relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
fi
func_warning "relinking \`$file'"
func_show_eval "$relink_command" \
'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
fi
# See the names of the shared library.
set dummy $library_names; shift
if test -n "$1"; then
realname="$1"
shift
srcname="$realname"
test -n "$relink_command" && srcname="$realname"T
# Install the shared library and build the symlinks.
func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
'exit $?'
tstripme="$stripme"
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
case $realname in
*.dll.a)
tstripme=""
;;
esac
;;
esac
if test -n "$tstripme" && test -n "$striplib"; then
func_show_eval "$striplib $destdir/$realname" 'exit $?'
fi
if test "$#" -gt 0; then
# Delete the old symlinks, and create new ones.
# Try `ln -sf' first, because the `ln' binary might depend on
# the symlink we replace! Solaris /bin/ln does not understand -f,
# so we also need to try rm && ln -s.
for linkname
do
test "$linkname" != "$realname" \
&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
done
fi
# Do each command in the postinstall commands.
lib="$destdir/$realname"
func_execute_cmds "$postinstall_cmds" 'exit $?'
fi
# Install the pseudo-library for information purposes.
func_basename "$file"
name="$func_basename_result"
instname="$dir/$name"i
func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
# Maybe install the static library, too.
test -n "$old_library" && func_append staticlibs " $dir/$old_library"
;;
*.lo)
# Install (i.e. copy) a libtool object.
# Figure out destination file name, if it wasn't already specified.
if test -n "$destname"; then
destfile="$destdir/$destname"
else
func_basename "$file"
destfile="$func_basename_result"
destfile="$destdir/$destfile"
fi
# Deduce the name of the destination old-style object file.
case $destfile in
*.lo)
func_lo2o "$destfile"
staticdest=$func_lo2o_result
;;
*.$objext)
staticdest="$destfile"
destfile=
;;
*)
func_fatal_help "cannot copy a libtool object to \`$destfile'"
;;
esac
# Install the libtool object if requested.
test -n "$destfile" && \
func_show_eval "$install_prog $file $destfile" 'exit $?'
# Install the old object if enabled.
if test "$build_old_libs" = yes; then
# Deduce the name of the old-style object file.
func_lo2o "$file"
staticobj=$func_lo2o_result
func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
fi
exit $EXIT_SUCCESS
;;
*)
# Figure out destination file name, if it wasn't already specified.
if test -n "$destname"; then
destfile="$destdir/$destname"
else
func_basename "$file"
destfile="$func_basename_result"
destfile="$destdir/$destfile"
fi
# If the file is missing, and there is a .exe on the end, strip it
# because it is most likely a libtool script we actually want to
# install
stripped_ext=""
case $file in
*.exe)
if test ! -f "$file"; then
func_stripname '' '.exe' "$file"
file=$func_stripname_result
stripped_ext=".exe"
fi
;;
esac
# Do a test to see if this is really a libtool program.
case $host in
*cygwin* | *mingw*)
if func_ltwrapper_executable_p "$file"; then
func_ltwrapper_scriptname "$file"
wrapper=$func_ltwrapper_scriptname_result
else
func_stripname '' '.exe' "$file"
wrapper=$func_stripname_result
fi
;;
*)
wrapper=$file
;;
esac
if func_ltwrapper_script_p "$wrapper"; then
notinst_deplibs=
relink_command=
func_source "$wrapper"
# Check the variables that should have been set.
test -z "$generated_by_libtool_version" && \
func_fatal_error "invalid libtool wrapper script \`$wrapper'"
finalize=yes
for lib in $notinst_deplibs; do
# Check to see that each library is installed.
libdir=
if test -f "$lib"; then
func_source "$lib"
fi
libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
if test -n "$libdir" && test ! -f "$libfile"; then
func_warning "\`$lib' has not been installed in \`$libdir'"
finalize=no
fi
done
relink_command=
func_source "$wrapper"
outputname=
if test "$fast_install" = no && test -n "$relink_command"; then
$opt_dry_run || {
if test "$finalize" = yes; then
tmpdir=`func_mktempdir`
func_basename "$file$stripped_ext"
file="$func_basename_result"
outputname="$tmpdir/$file"
# Replace the output file specification.
relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
$opt_silent || {
func_quote_for_expand "$relink_command"
eval "func_echo $func_quote_for_expand_result"
}
if eval "$relink_command"; then :
else
func_error "error: relink \`$file' with the above command before installing it"
$opt_dry_run || ${RM}r "$tmpdir"
continue
fi
file="$outputname"
else
func_warning "cannot relink \`$file'"
fi
}
else
# Install the binary that we compiled earlier.
file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
fi
fi
# remove .exe since cygwin /usr/bin/install will append another
# one anyway
case $install_prog,$host in
*/usr/bin/install*,*cygwin*)
case $file:$destfile in
*.exe:*.exe)
# this is ok
;;
*.exe:*)
destfile=$destfile.exe
;;
*:*.exe)
func_stripname '' '.exe' "$destfile"
destfile=$func_stripname_result
;;
esac
;;
esac
func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
$opt_dry_run || if test -n "$outputname"; then
${RM}r "$tmpdir"
fi
;;
esac
done
for file in $staticlibs; do
func_basename "$file"
name="$func_basename_result"
# Set up the ranlib parameters.
oldlib="$destdir/$name"
func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
tool_oldlib=$func_to_tool_file_result
func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
if test -n "$stripme" && test -n "$old_striplib"; then
func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
fi
# Do each command in the postinstall commands.
func_execute_cmds "$old_postinstall_cmds" 'exit $?'
done
test -n "$future_libdirs" && \
func_warning "remember to run \`$progname --finish$future_libdirs'"
if test -n "$current_libdirs"; then
# Maybe just do a dry run.
$opt_dry_run && current_libdirs=" -n$current_libdirs"
exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
else
exit $EXIT_SUCCESS
fi
}
test "$opt_mode" = install && func_mode_install ${1+"$@"}
# func_generate_dlsyms outputname originator pic_p
# Extract symbols from dlprefiles and create ${outputname}S.o with
# a dlpreopen symbol table.
func_generate_dlsyms ()
{
$opt_debug
my_outputname="$1"
my_originator="$2"
my_pic_p="${3-no}"
my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
my_dlsyms=
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
if test -n "$NM" && test -n "$global_symbol_pipe"; then
my_dlsyms="${my_outputname}S.c"
else
func_error "not configured to extract global symbols from dlpreopened files"
fi
fi
if test -n "$my_dlsyms"; then
case $my_dlsyms in
"") ;;
*.c)
# Discover the nlist of each of the dlfiles.
nlist="$output_objdir/${my_outputname}.nm"
func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
# Parse the name list into a source file.
func_verbose "creating $output_objdir/$my_dlsyms"
$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
#ifdef __cplusplus
extern \"C\" {
#endif
#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
#endif
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
/* DATA imports from DLLs on WIN32 con't be const, because runtime
relocations are performed -- see ld's documentation on pseudo-relocs. */
# define LT_DLSYM_CONST
#elif defined(__osf__)
/* This system does not cope well with relocations in const data. */
# define LT_DLSYM_CONST
#else
# define LT_DLSYM_CONST const
#endif
/* External symbol declarations for the compiler. */\
"
if test "$dlself" = yes; then
func_verbose "generating symbol list for \`$output'"
$opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
# Add our own program objects to the symbol list.
progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
for progfile in $progfiles; do
func_to_tool_file "$progfile" func_convert_file_msys_to_w32
func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
$opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
done
if test -n "$exclude_expsyms"; then
$opt_dry_run || {
eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
eval '$MV "$nlist"T "$nlist"'
}
fi
if test -n "$export_symbols_regex"; then
$opt_dry_run || {
eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
eval '$MV "$nlist"T "$nlist"'
}
fi
# Prepare the list of exported symbols
if test -z "$export_symbols"; then
export_symbols="$output_objdir/$outputname.exp"
$opt_dry_run || {
$RM $export_symbols
eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
case $host in
*cygwin* | *mingw* | *cegcc* )
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
;;
esac
}
else
$opt_dry_run || {
eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
eval '$MV "$nlist"T "$nlist"'
case $host in
*cygwin* | *mingw* | *cegcc* )
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
;;
esac
}
fi
fi
for dlprefile in $dlprefiles; do
func_verbose "extracting global C symbols from \`$dlprefile'"
func_basename "$dlprefile"
name="$func_basename_result"
case $host in
*cygwin* | *mingw* | *cegcc* )
# if an import library, we need to obtain dlname
if func_win32_import_lib_p "$dlprefile"; then
func_tr_sh "$dlprefile"
eval "curr_lafile=\$libfile_$func_tr_sh_result"
dlprefile_dlbasename=""
if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
# Use subshell, to avoid clobbering current variable values
dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
if test -n "$dlprefile_dlname" ; then
func_basename "$dlprefile_dlname"
dlprefile_dlbasename="$func_basename_result"
else
# no lafile. user explicitly requested -dlpreopen .
$sharedlib_from_linklib_cmd "$dlprefile"
dlprefile_dlbasename=$sharedlib_from_linklib_result
fi
fi
$opt_dry_run || {
if test -n "$dlprefile_dlbasename" ; then
eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
else
func_warning "Could not compute DLL name from $name"
eval '$ECHO ": $name " >> "$nlist"'
fi
func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
$SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
}
else # not an import lib
$opt_dry_run || {
eval '$ECHO ": $name " >> "$nlist"'
func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
}
fi
;;
*)
$opt_dry_run || {
eval '$ECHO ": $name " >> "$nlist"'
func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
}
;;
esac
done
$opt_dry_run || {
# Make sure we have at least an empty file.
test -f "$nlist" || : > "$nlist"
if test -n "$exclude_expsyms"; then
$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
$MV "$nlist"T "$nlist"
fi
# Try sorting and uniquifying the output.
if $GREP -v "^: " < "$nlist" |
if sort -k 3 /dev/null 2>&1; then
sort -k 3
else
sort +2
fi |
uniq > "$nlist"S; then
:
else
$GREP -v "^: " < "$nlist" > "$nlist"S
fi
if test -f "$nlist"S; then
eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
else
echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
fi
echo >> "$output_objdir/$my_dlsyms" "\
/* The mapping between symbol names and symbols. */
typedef struct {
const char *name;
void *address;
} lt_dlsymlist;
extern LT_DLSYM_CONST lt_dlsymlist
lt_${my_prefix}_LTX_preloaded_symbols[];
LT_DLSYM_CONST lt_dlsymlist
lt_${my_prefix}_LTX_preloaded_symbols[] =
{\
{ \"$my_originator\", (void *) 0 },"
case $need_lib_prefix in
no)
eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
;;
*)
eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
;;
esac
echo >> "$output_objdir/$my_dlsyms" "\
{0, (void *) 0}
};
/* This works around a problem in FreeBSD linker */
#ifdef FREEBSD_WORKAROUND
static const void *lt_preloaded_setup() {
return lt_${my_prefix}_LTX_preloaded_symbols;
}
#endif
#ifdef __cplusplus
}
#endif\
"
} # !$opt_dry_run
pic_flag_for_symtable=
case "$compile_command " in
*" -static "*) ;;
*)
case $host in
# compiling the symbol table file with pic_flag works around
# a FreeBSD bug that causes programs to crash when -lm is
# linked before any other PIC object. But we must not use
# pic_flag when linking with -static. The problem exists in
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
*-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
*-*-hpux*)
pic_flag_for_symtable=" $pic_flag" ;;
*)
if test "X$my_pic_p" != Xno; then
pic_flag_for_symtable=" $pic_flag"
fi
;;
esac
;;
esac
symtab_cflags=
for arg in $LTCFLAGS; do
case $arg in
-pie | -fpie | -fPIE) ;;
*) func_append symtab_cflags " $arg" ;;
esac
done
# Now compile the dynamic symbol file.
func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
# Clean up the generated files.
func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
# Transform the symbol file into the correct name.
symfileobj="$output_objdir/${my_outputname}S.$objext"
case $host in
*cygwin* | *mingw* | *cegcc* )
if test -f "$output_objdir/$my_outputname.def"; then
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
else
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
fi
;;
*)
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
;;
esac
;;
*)
func_fatal_error "unknown suffix for \`$my_dlsyms'"
;;
esac
else
# We keep going just in case the user didn't refer to
# lt_preloaded_symbols. The linker will fail if global_symbol_pipe
# really was required.
# Nullify the symbol file.
compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
fi
}
# func_win32_libid arg
# return the library type of file 'arg'
#
# Need a lot of goo to handle *both* DLLs and import libs
# Has to be a shell function in order to 'eat' the argument
# that is supplied when $file_magic_command is called.
# Despite the name, also deal with 64 bit binaries.
func_win32_libid ()
{
$opt_debug
win32_libid_type="unknown"
win32_fileres=`file -L $1 2>/dev/null`
case $win32_fileres in
*ar\ archive\ import\ library*) # definitely import
win32_libid_type="x86 archive import"
;;
*ar\ archive*) # could be an import, or static
# Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
$EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
func_to_tool_file "$1" func_convert_file_msys_to_w32
win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
$SED -n -e '
1,100{
/ I /{
s,.*,import,
p
q
}
}'`
case $win32_nmres in
import*) win32_libid_type="x86 archive import";;
*) win32_libid_type="x86 archive static";;
esac
fi
;;
*DLL*)
win32_libid_type="x86 DLL"
;;
*executable*) # but shell scripts are "executable" too...
case $win32_fileres in
*MS\ Windows\ PE\ Intel*)
win32_libid_type="x86 DLL"
;;
esac
;;
esac
$ECHO "$win32_libid_type"
}
# func_cygming_dll_for_implib ARG
#
# Platform-specific function to extract the
# name of the DLL associated with the specified
# import library ARG.
# Invoked by eval'ing the libtool variable
# $sharedlib_from_linklib_cmd
# Result is available in the variable
# $sharedlib_from_linklib_result
func_cygming_dll_for_implib ()
{
$opt_debug
sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
}
# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
#
# The is the core of a fallback implementation of a
# platform-specific function to extract the name of the
# DLL associated with the specified import library LIBNAME.
#
# SECTION_NAME is either .idata$6 or .idata$7, depending
# on the platform and compiler that created the implib.
#
# Echos the name of the DLL associated with the
# specified import library.
func_cygming_dll_for_implib_fallback_core ()
{
$opt_debug
match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
$OBJDUMP -s --section "$1" "$2" 2>/dev/null |
$SED '/^Contents of section '"$match_literal"':/{
# Place marker at beginning of archive member dllname section
s/.*/====MARK====/
p
d
}
# These lines can sometimes be longer than 43 characters, but
# are always uninteresting
/:[ ]*file format pe[i]\{,1\}-/d
/^In archive [^:]*:/d
# Ensure marker is printed
/^====MARK====/p
# Remove all lines with less than 43 characters
/^.\{43\}/!d
# From remaining lines, remove first 43 characters
s/^.\{43\}//' |
$SED -n '
# Join marker and all lines until next marker into a single line
/^====MARK====/ b para
H
$ b para
b
:para
x
s/\n//g
# Remove the marker
s/^====MARK====//
# Remove trailing dots and whitespace
s/[\. \t]*$//
# Print
/./p' |
# we now have a list, one entry per line, of the stringified
# contents of the appropriate section of all members of the
# archive which possess that section. Heuristic: eliminate
# all those which have a first or second character that is
# a '.' (that is, objdump's representation of an unprintable
# character.) This should work for all archives with less than
# 0x302f exports -- but will fail for DLLs whose name actually
# begins with a literal '.' or a single character followed by
# a '.'.
#
# Of those that remain, print the first one.
$SED -e '/^\./d;/^.\./d;q'
}
# func_cygming_gnu_implib_p ARG
# This predicate returns with zero status (TRUE) if
# ARG is a GNU/binutils-style import library. Returns
# with nonzero status (FALSE) otherwise.
func_cygming_gnu_implib_p ()
{
$opt_debug
func_to_tool_file "$1" func_convert_file_msys_to_w32
func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
test -n "$func_cygming_gnu_implib_tmp"
}
# func_cygming_ms_implib_p ARG
# This predicate returns with zero status (TRUE) if
# ARG is an MS-style import library. Returns
# with nonzero status (FALSE) otherwise.
func_cygming_ms_implib_p ()
{
$opt_debug
func_to_tool_file "$1" func_convert_file_msys_to_w32
func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
test -n "$func_cygming_ms_implib_tmp"
}
# func_cygming_dll_for_implib_fallback ARG
# Platform-specific function to extract the
# name of the DLL associated with the specified
# import library ARG.
#
# This fallback implementation is for use when $DLLTOOL
# does not support the --identify-strict option.
# Invoked by eval'ing the libtool variable
# $sharedlib_from_linklib_cmd
# Result is available in the variable
# $sharedlib_from_linklib_result
func_cygming_dll_for_implib_fallback ()
{
$opt_debug
if func_cygming_gnu_implib_p "$1" ; then
# binutils import library
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
elif func_cygming_ms_implib_p "$1" ; then
# ms-generated import library
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
else
# unknown
sharedlib_from_linklib_result=""
fi
}
# func_extract_an_archive dir oldlib
func_extract_an_archive ()
{
$opt_debug
f_ex_an_ar_dir="$1"; shift
f_ex_an_ar_oldlib="$1"
if test "$lock_old_archive_extraction" = yes; then
lockfile=$f_ex_an_ar_oldlib.lock
until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
func_echo "Waiting for $lockfile to be removed"
sleep 2
done
fi
func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
'stat=$?; rm -f "$lockfile"; exit $stat'
if test "$lock_old_archive_extraction" = yes; then
$opt_dry_run || rm -f "$lockfile"
fi
if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
:
else
func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
fi
}
# func_extract_archives gentop oldlib ...
func_extract_archives ()
{
$opt_debug
my_gentop="$1"; shift
my_oldlibs=${1+"$@"}
my_oldobjs=""
my_xlib=""
my_xabs=""
my_xdir=""
for my_xlib in $my_oldlibs; do
# Extract the objects.
case $my_xlib in
[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
*) my_xabs=`pwd`"/$my_xlib" ;;
esac
func_basename "$my_xlib"
my_xlib="$func_basename_result"
my_xlib_u=$my_xlib
while :; do
case " $extracted_archives " in
*" $my_xlib_u "*)
func_arith $extracted_serial + 1
extracted_serial=$func_arith_result
my_xlib_u=lt$extracted_serial-$my_xlib ;;
*) break ;;
esac
done
extracted_archives="$extracted_archives $my_xlib_u"
my_xdir="$my_gentop/$my_xlib_u"
func_mkdir_p "$my_xdir"
case $host in
*-darwin*)
func_verbose "Extracting $my_xabs"
# Do not bother doing anything if just a dry run
$opt_dry_run || {
darwin_orig_dir=`pwd`
cd $my_xdir || exit $?
darwin_archive=$my_xabs
darwin_curdir=`pwd`
darwin_base_archive=`basename "$darwin_archive"`
darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
if test -n "$darwin_arches"; then
darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
darwin_arch=
func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
for darwin_arch in $darwin_arches ; do
func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
$LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
func_extract_an_archive "`pwd`" "${darwin_base_archive}"
cd "$darwin_curdir"
$RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
done # $darwin_arches
## Okay now we've a bunch of thin objects, gotta fatten them up :)
darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
darwin_file=
darwin_files=
for darwin_file in $darwin_filelist; do
darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
$LIPO -create -output "$darwin_file" $darwin_files
done # $darwin_filelist
$RM -rf unfat-$$
cd "$darwin_orig_dir"
else
cd $darwin_orig_dir
func_extract_an_archive "$my_xdir" "$my_xabs"
fi # $darwin_arches
} # !$opt_dry_run
;;
*)
func_extract_an_archive "$my_xdir" "$my_xabs"
;;
esac
my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
done
func_extract_archives_result="$my_oldobjs"
}
# func_emit_wrapper [arg=no]
#
# Emit a libtool wrapper script on stdout.
# Don't directly open a file because we may want to
# incorporate the script contents within a cygwin/mingw
# wrapper executable. Must ONLY be called from within
# func_mode_link because it depends on a number of variables
# set therein.
#
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
# variable will take. If 'yes', then the emitted script
# will assume that the directory in which it is stored is
# the $objdir directory. This is a cygwin/mingw-specific
# behavior.
func_emit_wrapper ()
{
func_emit_wrapper_arg1=${1-no}
$ECHO "\
#! $SHELL
# $output - temporary wrapper script for $objdir/$outputname
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
#
# The $output program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
#
# This wrapper script should never be moved out of the build directory.
# If it is, it will not operate correctly.
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
sed_quote_subst='$sed_quote_subst'
# Be Bourne compatible
if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
# Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
else
case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
fi
BIN_SH=xpg4; export BIN_SH # for Tru64
DUALCASE=1; export DUALCASE # for MKS sh
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
relink_command=\"$relink_command\"
# This environment variable determines our operation mode.
if test \"\$libtool_install_magic\" = \"$magic\"; then
# install mode needs the following variables:
generated_by_libtool_version='$macro_version'
notinst_deplibs='$notinst_deplibs'
else
# When we are sourced in execute mode, \$file and \$ECHO are already set.
if test \"\$libtool_execute_magic\" != \"$magic\"; then
file=\"\$0\""
qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
$ECHO "\
# A function that is used when there is no print builtin or printf.
func_fallback_echo ()
{
eval 'cat <<_LTECHO_EOF
\$1
_LTECHO_EOF'
}
ECHO=\"$qECHO\"
fi
# Very basic option parsing. These options are (a) specific to
# the libtool wrapper, (b) are identical between the wrapper
# /script/ and the wrapper /executable/ which is used only on
# windows platforms, and (c) all begin with the string "--lt-"
# (application programs are unlikely to have options which match
# this pattern).
#
# There are only two supported options: --lt-debug and
# --lt-dump-script. There is, deliberately, no --lt-help.
#
# The first argument to this parsing function should be the
# script's $0 value, followed by "$@".
lt_option_debug=
func_parse_lt_options ()
{
lt_script_arg0=\$0
shift
for lt_opt
do
case \"\$lt_opt\" in
--lt-debug) lt_option_debug=1 ;;
--lt-dump-script)
lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
cat \"\$lt_dump_D/\$lt_dump_F\"
exit 0
;;
--lt-*)
\$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
exit 1
;;
esac
done
# Print the debug banner immediately:
if test -n \"\$lt_option_debug\"; then
echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
fi
}
# Used when --lt-debug. Prints its arguments to stdout
# (redirection is the responsibility of the caller)
func_lt_dump_args ()
{
lt_dump_args_N=1;
for lt_arg
do
\$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
done
}
# Core function for launching the target application
func_exec_program_core ()
{
"
case $host in
# Backslashes separate directories on plain windows
*-*-mingw | *-*-os2* | *-cegcc*)
$ECHO "\
if test -n \"\$lt_option_debug\"; then
\$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
func_lt_dump_args \${1+\"\$@\"} 1>&2
fi
exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
"
;;
*)
$ECHO "\
if test -n \"\$lt_option_debug\"; then
\$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
func_lt_dump_args \${1+\"\$@\"} 1>&2
fi
exec \"\$progdir/\$program\" \${1+\"\$@\"}
"
;;
esac
$ECHO "\
\$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
exit 1
}
# A function to encapsulate launching the target application
# Strips options in the --lt-* namespace from \$@ and
# launches target application with the remaining arguments.
func_exec_program ()
{
case \" \$* \" in
*\\ --lt-*)
for lt_wr_arg
do
case \$lt_wr_arg in
--lt-*) ;;
*) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
esac
shift
done ;;
esac
func_exec_program_core \${1+\"\$@\"}
}
# Parse options
func_parse_lt_options \"\$0\" \${1+\"\$@\"}
# Find the directory that this script lives in.
thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
test \"x\$thisdir\" = \"x\$file\" && thisdir=.
# Follow symbolic links until we get to the real thisdir.
file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
while test -n \"\$file\"; do
destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
# If there was a directory component, then change thisdir.
if test \"x\$destdir\" != \"x\$file\"; then
case \"\$destdir\" in
[\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
*) thisdir=\"\$thisdir/\$destdir\" ;;
esac
fi
file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
done
# Usually 'no', except on cygwin/mingw when embedded into
# the cwrapper.
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
# special case for '.'
if test \"\$thisdir\" = \".\"; then
thisdir=\`pwd\`
fi
# remove .libs from thisdir
case \"\$thisdir\" in
*[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
$objdir ) thisdir=. ;;
esac
fi
# Try to get the absolute directory name.
absdir=\`cd \"\$thisdir\" && pwd\`
test -n \"\$absdir\" && thisdir=\"\$absdir\"
"
if test "$fast_install" = yes; then
$ECHO "\
program=lt-'$outputname'$exeext
progdir=\"\$thisdir/$objdir\"
if test ! -f \"\$progdir/\$program\" ||
{ file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
test \"X\$file\" != \"X\$progdir/\$program\"; }; then
file=\"\$\$-\$program\"
if test ! -d \"\$progdir\"; then
$MKDIR \"\$progdir\"
else
$RM \"\$progdir/\$file\"
fi"
$ECHO "\
# relink executable if necessary
if test -n \"\$relink_command\"; then
if relink_command_output=\`eval \$relink_command 2>&1\`; then :
else
$ECHO \"\$relink_command_output\" >&2
$RM \"\$progdir/\$file\"
exit 1
fi
fi
$MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
{ $RM \"\$progdir/\$program\";
$MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
$RM \"\$progdir/\$file\"
fi"
else
$ECHO "\
program='$outputname'
progdir=\"\$thisdir/$objdir\"
"
fi
$ECHO "\
if test -f \"\$progdir/\$program\"; then"
# fixup the dll searchpath if we need to.
#
# Fix the DLL searchpath if we need to. Do this before prepending
# to shlibpath, because on Windows, both are PATH and uninstalled
# libraries must come first.
if test -n "$dllsearchpath"; then
$ECHO "\
# Add the dll search path components to the executable PATH
PATH=$dllsearchpath:\$PATH
"
fi
# Export our shlibpath_var if we have one.
if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
$ECHO "\
# Add our own library path to $shlibpath_var
$shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
# Some systems cannot cope with colon-terminated $shlibpath_var
# The second colon is a workaround for a bug in BeOS R4 sed
$shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
export $shlibpath_var
"
fi
$ECHO "\
if test \"\$libtool_execute_magic\" != \"$magic\"; then
# Run the actual program with our arguments.
func_exec_program \${1+\"\$@\"}
fi
else
# The program doesn't exist.
\$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
\$ECHO \"This script is just a wrapper for \$program.\" 1>&2
\$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
exit 1
fi
fi\
"
}
# func_emit_cwrapperexe_src
# emit the source code for a wrapper executable on stdout
# Must ONLY be called from within func_mode_link because
# it depends on a number of variable set therein.
func_emit_cwrapperexe_src ()
{
cat <
#include
#ifdef _MSC_VER
# include
# include
# include
#else
# include
# include
# ifdef __CYGWIN__
# include
# endif
#endif
#include
#include
#include
#include
#include
#include
#include
#include
/* declarations of non-ANSI functions */
#if defined(__MINGW32__)
# ifdef __STRICT_ANSI__
int _putenv (const char *);
# endif
#elif defined(__CYGWIN__)
# ifdef __STRICT_ANSI__
char *realpath (const char *, char *);
int putenv (char *);
int setenv (const char *, const char *, int);
# endif
/* #elif defined (other platforms) ... */
#endif
/* portability defines, excluding path handling macros */
#if defined(_MSC_VER)
# define setmode _setmode
# define stat _stat
# define chmod _chmod
# define getcwd _getcwd
# define putenv _putenv
# define S_IXUSR _S_IEXEC
# ifndef _INTPTR_T_DEFINED
# define _INTPTR_T_DEFINED
# define intptr_t int
# endif
#elif defined(__MINGW32__)
# define setmode _setmode
# define stat _stat
# define chmod _chmod
# define getcwd _getcwd
# define putenv _putenv
#elif defined(__CYGWIN__)
# define HAVE_SETENV
# define FOPEN_WB "wb"
/* #elif defined (other platforms) ... */
#endif
#if defined(PATH_MAX)
# define LT_PATHMAX PATH_MAX
#elif defined(MAXPATHLEN)
# define LT_PATHMAX MAXPATHLEN
#else
# define LT_PATHMAX 1024
#endif
#ifndef S_IXOTH
# define S_IXOTH 0
#endif
#ifndef S_IXGRP
# define S_IXGRP 0
#endif
/* path handling portability macros */
#ifndef DIR_SEPARATOR
# define DIR_SEPARATOR '/'
# define PATH_SEPARATOR ':'
#endif
#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
defined (__OS2__)
# define HAVE_DOS_BASED_FILE_SYSTEM
# define FOPEN_WB "wb"
# ifndef DIR_SEPARATOR_2
# define DIR_SEPARATOR_2 '\\'
# endif
# ifndef PATH_SEPARATOR_2
# define PATH_SEPARATOR_2 ';'
# endif
#endif
#ifndef DIR_SEPARATOR_2
# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
#else /* DIR_SEPARATOR_2 */
# define IS_DIR_SEPARATOR(ch) \
(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
#endif /* DIR_SEPARATOR_2 */
#ifndef PATH_SEPARATOR_2
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
#else /* PATH_SEPARATOR_2 */
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
#endif /* PATH_SEPARATOR_2 */
#ifndef FOPEN_WB
# define FOPEN_WB "w"
#endif
#ifndef _O_BINARY
# define _O_BINARY 0
#endif
#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
#define XFREE(stale) do { \
if (stale) { free ((void *) stale); stale = 0; } \
} while (0)
#if defined(LT_DEBUGWRAPPER)
static int lt_debug = 1;
#else
static int lt_debug = 0;
#endif
const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
void *xmalloc (size_t num);
char *xstrdup (const char *string);
const char *base_name (const char *name);
char *find_executable (const char *wrapper);
char *chase_symlinks (const char *pathspec);
int make_executable (const char *path);
int check_executable (const char *path);
char *strendzap (char *str, const char *pat);
void lt_debugprintf (const char *file, int line, const char *fmt, ...);
void lt_fatal (const char *file, int line, const char *message, ...);
static const char *nonnull (const char *s);
static const char *nonempty (const char *s);
void lt_setenv (const char *name, const char *value);
char *lt_extend_str (const char *orig_value, const char *add, int to_end);
void lt_update_exe_path (const char *name, const char *value);
void lt_update_lib_path (const char *name, const char *value);
char **prepare_spawn (char **argv);
void lt_dump_script (FILE *f);
EOF
cat <= 0)
&& (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
return 1;
else
return 0;
}
int
make_executable (const char *path)
{
int rval = 0;
struct stat st;
lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
nonempty (path));
if ((!path) || (!*path))
return 0;
if (stat (path, &st) >= 0)
{
rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
}
return rval;
}
/* Searches for the full path of the wrapper. Returns
newly allocated full path name if found, NULL otherwise
Does not chase symlinks, even on platforms that support them.
*/
char *
find_executable (const char *wrapper)
{
int has_slash = 0;
const char *p;
const char *p_next;
/* static buffer for getcwd */
char tmp[LT_PATHMAX + 1];
int tmp_len;
char *concat_name;
lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
nonempty (wrapper));
if ((wrapper == NULL) || (*wrapper == '\0'))
return NULL;
/* Absolute path? */
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
{
concat_name = xstrdup (wrapper);
if (check_executable (concat_name))
return concat_name;
XFREE (concat_name);
}
else
{
#endif
if (IS_DIR_SEPARATOR (wrapper[0]))
{
concat_name = xstrdup (wrapper);
if (check_executable (concat_name))
return concat_name;
XFREE (concat_name);
}
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
}
#endif
for (p = wrapper; *p; p++)
if (*p == '/')
{
has_slash = 1;
break;
}
if (!has_slash)
{
/* no slashes; search PATH */
const char *path = getenv ("PATH");
if (path != NULL)
{
for (p = path; *p; p = p_next)
{
const char *q;
size_t p_len;
for (q = p; *q; q++)
if (IS_PATH_SEPARATOR (*q))
break;
p_len = q - p;
p_next = (*q == '\0' ? q : q + 1);
if (p_len == 0)
{
/* empty path: current directory */
if (getcwd (tmp, LT_PATHMAX) == NULL)
lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
nonnull (strerror (errno)));
tmp_len = strlen (tmp);
concat_name =
XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
memcpy (concat_name, tmp, tmp_len);
concat_name[tmp_len] = '/';
strcpy (concat_name + tmp_len + 1, wrapper);
}
else
{
concat_name =
XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
memcpy (concat_name, p, p_len);
concat_name[p_len] = '/';
strcpy (concat_name + p_len + 1, wrapper);
}
if (check_executable (concat_name))
return concat_name;
XFREE (concat_name);
}
}
/* not found in PATH; assume curdir */
}
/* Relative path | not found in path: prepend cwd */
if (getcwd (tmp, LT_PATHMAX) == NULL)
lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
nonnull (strerror (errno)));
tmp_len = strlen (tmp);
concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
memcpy (concat_name, tmp, tmp_len);
concat_name[tmp_len] = '/';
strcpy (concat_name + tmp_len + 1, wrapper);
if (check_executable (concat_name))
return concat_name;
XFREE (concat_name);
return NULL;
}
char *
chase_symlinks (const char *pathspec)
{
#ifndef S_ISLNK
return xstrdup (pathspec);
#else
char buf[LT_PATHMAX];
struct stat s;
char *tmp_pathspec = xstrdup (pathspec);
char *p;
int has_symlinks = 0;
while (strlen (tmp_pathspec) && !has_symlinks)
{
lt_debugprintf (__FILE__, __LINE__,
"checking path component for symlinks: %s\n",
tmp_pathspec);
if (lstat (tmp_pathspec, &s) == 0)
{
if (S_ISLNK (s.st_mode) != 0)
{
has_symlinks = 1;
break;
}
/* search backwards for last DIR_SEPARATOR */
p = tmp_pathspec + strlen (tmp_pathspec) - 1;
while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
p--;
if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
{
/* no more DIR_SEPARATORS left */
break;
}
*p = '\0';
}
else
{
lt_fatal (__FILE__, __LINE__,
"error accessing file \"%s\": %s",
tmp_pathspec, nonnull (strerror (errno)));
}
}
XFREE (tmp_pathspec);
if (!has_symlinks)
{
return xstrdup (pathspec);
}
tmp_pathspec = realpath (pathspec, buf);
if (tmp_pathspec == 0)
{
lt_fatal (__FILE__, __LINE__,
"could not follow symlinks for %s", pathspec);
}
return xstrdup (tmp_pathspec);
#endif
}
char *
strendzap (char *str, const char *pat)
{
size_t len, patlen;
assert (str != NULL);
assert (pat != NULL);
len = strlen (str);
patlen = strlen (pat);
if (patlen <= len)
{
str += len - patlen;
if (strcmp (str, pat) == 0)
*str = '\0';
}
return str;
}
void
lt_debugprintf (const char *file, int line, const char *fmt, ...)
{
va_list args;
if (lt_debug)
{
(void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
va_start (args, fmt);
(void) vfprintf (stderr, fmt, args);
va_end (args);
}
}
static void
lt_error_core (int exit_status, const char *file,
int line, const char *mode,
const char *message, va_list ap)
{
fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
vfprintf (stderr, message, ap);
fprintf (stderr, ".\n");
if (exit_status >= 0)
exit (exit_status);
}
void
lt_fatal (const char *file, int line, const char *message, ...)
{
va_list ap;
va_start (ap, message);
lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
va_end (ap);
}
static const char *
nonnull (const char *s)
{
return s ? s : "(null)";
}
static const char *
nonempty (const char *s)
{
return (s && !*s) ? "(empty)" : nonnull (s);
}
void
lt_setenv (const char *name, const char *value)
{
lt_debugprintf (__FILE__, __LINE__,
"(lt_setenv) setting '%s' to '%s'\n",
nonnull (name), nonnull (value));
{
#ifdef HAVE_SETENV
/* always make a copy, for consistency with !HAVE_SETENV */
char *str = xstrdup (value);
setenv (name, str, 1);
#else
int len = strlen (name) + 1 + strlen (value) + 1;
char *str = XMALLOC (char, len);
sprintf (str, "%s=%s", name, value);
if (putenv (str) != EXIT_SUCCESS)
{
XFREE (str);
}
#endif
}
}
char *
lt_extend_str (const char *orig_value, const char *add, int to_end)
{
char *new_value;
if (orig_value && *orig_value)
{
int orig_value_len = strlen (orig_value);
int add_len = strlen (add);
new_value = XMALLOC (char, add_len + orig_value_len + 1);
if (to_end)
{
strcpy (new_value, orig_value);
strcpy (new_value + orig_value_len, add);
}
else
{
strcpy (new_value, add);
strcpy (new_value + add_len, orig_value);
}
}
else
{
new_value = xstrdup (add);
}
return new_value;
}
void
lt_update_exe_path (const char *name, const char *value)
{
lt_debugprintf (__FILE__, __LINE__,
"(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
nonnull (name), nonnull (value));
if (name && *name && value && *value)
{
char *new_value = lt_extend_str (getenv (name), value, 0);
/* some systems can't cope with a ':'-terminated path #' */
int len = strlen (new_value);
while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
{
new_value[len-1] = '\0';
}
lt_setenv (name, new_value);
XFREE (new_value);
}
}
void
lt_update_lib_path (const char *name, const char *value)
{
lt_debugprintf (__FILE__, __LINE__,
"(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
nonnull (name), nonnull (value));
if (name && *name && value && *value)
{
char *new_value = lt_extend_str (getenv (name), value, 0);
lt_setenv (name, new_value);
XFREE (new_value);
}
}
EOF
case $host_os in
mingw*)
cat <<"EOF"
/* Prepares an argument vector before calling spawn().
Note that spawn() does not by itself call the command interpreter
(getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&v);
v.dwPlatformId == VER_PLATFORM_WIN32_NT;
}) ? "cmd.exe" : "command.com").
Instead it simply concatenates the arguments, separated by ' ', and calls
CreateProcess(). We must quote the arguments since Win32 CreateProcess()
interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
special way:
- Space and tab are interpreted as delimiters. They are not treated as
delimiters if they are surrounded by double quotes: "...".
- Unescaped double quotes are removed from the input. Their only effect is
that within double quotes, space and tab are treated like normal
characters.
- Backslashes not followed by double quotes are not special.
- But 2*n+1 backslashes followed by a double quote become
n backslashes followed by a double quote (n >= 0):
\" -> "
\\\" -> \"
\\\\\" -> \\"
*/
#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
char **
prepare_spawn (char **argv)
{
size_t argc;
char **new_argv;
size_t i;
/* Count number of arguments. */
for (argc = 0; argv[argc] != NULL; argc++)
;
/* Allocate new argument vector. */
new_argv = XMALLOC (char *, argc + 1);
/* Put quoted arguments into the new argument vector. */
for (i = 0; i < argc; i++)
{
const char *string = argv[i];
if (string[0] == '\0')
new_argv[i] = xstrdup ("\"\"");
else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
{
int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
size_t length;
unsigned int backslashes;
const char *s;
char *quoted_string;
char *p;
length = 0;
backslashes = 0;
if (quote_around)
length++;
for (s = string; *s != '\0'; s++)
{
char c = *s;
if (c == '"')
length += backslashes + 1;
length++;
if (c == '\\')
backslashes++;
else
backslashes = 0;
}
if (quote_around)
length += backslashes + 1;
quoted_string = XMALLOC (char, length + 1);
p = quoted_string;
backslashes = 0;
if (quote_around)
*p++ = '"';
for (s = string; *s != '\0'; s++)
{
char c = *s;
if (c == '"')
{
unsigned int j;
for (j = backslashes + 1; j > 0; j--)
*p++ = '\\';
}
*p++ = c;
if (c == '\\')
backslashes++;
else
backslashes = 0;
}
if (quote_around)
{
unsigned int j;
for (j = backslashes; j > 0; j--)
*p++ = '\\';
*p++ = '"';
}
*p = '\0';
new_argv[i] = quoted_string;
}
else
new_argv[i] = (char *) string;
}
new_argv[argc] = NULL;
return new_argv;
}
EOF
;;
esac
cat <<"EOF"
void lt_dump_script (FILE* f)
{
EOF
func_emit_wrapper yes |
$SED -n -e '
s/^\(.\{79\}\)\(..*\)/\1\
\2/
h
s/\([\\"]\)/\\\1/g
s/$/\\n/
s/\([^\n]*\).*/ fputs ("\1", f);/p
g
D'
cat <<"EOF"
}
EOF
}
# end: func_emit_cwrapperexe_src
# func_win32_import_lib_p ARG
# True if ARG is an import lib, as indicated by $file_magic_cmd
func_win32_import_lib_p ()
{
$opt_debug
case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
*import*) : ;;
*) false ;;
esac
}
# func_mode_link arg...
func_mode_link ()
{
$opt_debug
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
# It is impossible to link a dll without this setting, and
# we shouldn't force the makefile maintainer to figure out
# which system we are compiling for in order to pass an extra
# flag for every libtool invocation.
# allow_undefined=no
# FIXME: Unfortunately, there are problems with the above when trying
# to make a dll which has undefined symbols, in which case not
# even a static library is built. For now, we need to specify
# -no-undefined on the libtool link line when we can be certain
# that all symbols are satisfied, otherwise we get a static library.
allow_undefined=yes
;;
*)
allow_undefined=yes
;;
esac
libtool_args=$nonopt
base_compile="$nonopt $@"
compile_command=$nonopt
finalize_command=$nonopt
compile_rpath=
finalize_rpath=
compile_shlibpath=
finalize_shlibpath=
convenience=
old_convenience=
deplibs=
old_deplibs=
compiler_flags=
linker_flags=
dllsearchpath=
lib_search_path=`pwd`
inst_prefix_dir=
new_inherited_linker_flags=
avoid_version=no
bindir=
dlfiles=
dlprefiles=
dlself=no
export_dynamic=no
export_symbols=
export_symbols_regex=
generated=
libobjs=
ltlibs=
module=no
no_install=no
objs=
non_pic_objects=
precious_files_regex=
prefer_static_libs=no
preload=no
prev=
prevarg=
release=
rpath=
xrpath=
perm_rpath=
temp_rpath=
thread_safe=no
vinfo=
vinfo_number=no
weak_libs=
single_module="${wl}-single_module"
func_infer_tag $base_compile
# We need to know -static, to get the right output filenames.
for arg
do
case $arg in
-shared)
test "$build_libtool_libs" != yes && \
func_fatal_configuration "can not build a shared library"
build_old_libs=no
break
;;
-all-static | -static | -static-libtool-libs)
case $arg in
-all-static)
if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
func_warning "complete static linking is impossible in this configuration"
fi
if test -n "$link_static_flag"; then
dlopen_self=$dlopen_self_static
fi
prefer_static_libs=yes
;;
-static)
if test -z "$pic_flag" && test -n "$link_static_flag"; then
dlopen_self=$dlopen_self_static
fi
prefer_static_libs=built
;;
-static-libtool-libs)
if test -z "$pic_flag" && test -n "$link_static_flag"; then
dlopen_self=$dlopen_self_static
fi
prefer_static_libs=yes
;;
esac
build_libtool_libs=no
build_old_libs=yes
break
;;
esac
done
# See if our shared archives depend on static archives.
test -n "$old_archive_from_new_cmds" && build_old_libs=yes
# Go through the arguments, transforming them on the way.
while test "$#" -gt 0; do
arg="$1"
shift
func_quote_for_eval "$arg"
qarg=$func_quote_for_eval_unquoted_result
func_append libtool_args " $func_quote_for_eval_result"
# If the previous option needs an argument, assign it.
if test -n "$prev"; then
case $prev in
output)
func_append compile_command " @OUTPUT@"
func_append finalize_command " @OUTPUT@"
;;
esac
case $prev in
bindir)
bindir="$arg"
prev=
continue
;;
dlfiles|dlprefiles)
if test "$preload" = no; then
# Add the symbol object into the linking commands.
func_append compile_command " @SYMFILE@"
func_append finalize_command " @SYMFILE@"
preload=yes
fi
case $arg in
*.la | *.lo) ;; # We handle these cases below.
force)
if test "$dlself" = no; then
dlself=needless
export_dynamic=yes
fi
prev=
continue
;;
self)
if test "$prev" = dlprefiles; then
dlself=yes
elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
dlself=yes
else
dlself=needless
export_dynamic=yes
fi
prev=
continue
;;
*)
if test "$prev" = dlfiles; then
func_append dlfiles " $arg"
else
func_append dlprefiles " $arg"
fi
prev=
continue
;;
esac
;;
expsyms)
export_symbols="$arg"
test -f "$arg" \
|| func_fatal_error "symbol file \`$arg' does not exist"
prev=
continue
;;
expsyms_regex)
export_symbols_regex="$arg"
prev=
continue
;;
framework)
case $host in
*-*-darwin*)
case "$deplibs " in
*" $qarg.ltframework "*) ;;
*) func_append deplibs " $qarg.ltframework" # this is fixed later
;;
esac
;;
esac
prev=
continue
;;
inst_prefix)
inst_prefix_dir="$arg"
prev=
continue
;;
objectlist)
if test -f "$arg"; then
save_arg=$arg
moreargs=
for fil in `cat "$save_arg"`
do
# func_append moreargs " $fil"
arg=$fil
# A libtool-controlled object.
# Check to see that this really is a libtool object.
if func_lalib_unsafe_p "$arg"; then
pic_object=
non_pic_object=
# Read the .lo file
func_source "$arg"
if test -z "$pic_object" ||
test -z "$non_pic_object" ||
test "$pic_object" = none &&
test "$non_pic_object" = none; then
func_fatal_error "cannot find name of object for \`$arg'"
fi
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
xdir="$func_dirname_result"
if test "$pic_object" != none; then
# Prepend the subdirectory the object is found in.
pic_object="$xdir$pic_object"
if test "$prev" = dlfiles; then
if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
func_append dlfiles " $pic_object"
prev=
continue
else
# If libtool objects are unsupported, then we need to preload.
prev=dlprefiles
fi
fi
# CHECK ME: I think I busted this. -Ossama
if test "$prev" = dlprefiles; then
# Preload the old-style object.
func_append dlprefiles " $pic_object"
prev=
fi
# A PIC object.
func_append libobjs " $pic_object"
arg="$pic_object"
fi
# Non-PIC object.
if test "$non_pic_object" != none; then
# Prepend the subdirectory the object is found in.
non_pic_object="$xdir$non_pic_object"
# A standard non-PIC object
func_append non_pic_objects " $non_pic_object"
if test -z "$pic_object" || test "$pic_object" = none ; then
arg="$non_pic_object"
fi
else
# If the PIC object exists, use it instead.
# $xdir was prepended to $pic_object above.
non_pic_object="$pic_object"
func_append non_pic_objects " $non_pic_object"
fi
else
# Only an error if not doing a dry-run.
if $opt_dry_run; then
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
xdir="$func_dirname_result"
func_lo2o "$arg"
pic_object=$xdir$objdir/$func_lo2o_result
non_pic_object=$xdir$func_lo2o_result
func_append libobjs " $pic_object"
func_append non_pic_objects " $non_pic_object"
else
func_fatal_error "\`$arg' is not a valid libtool object"
fi
fi
done
else
func_fatal_error "link input file \`$arg' does not exist"
fi
arg=$save_arg
prev=
continue
;;
precious_regex)
precious_files_regex="$arg"
prev=
continue
;;
release)
release="-$arg"
prev=
continue
;;
rpath | xrpath)
# We need an absolute path.
case $arg in
[\\/]* | [A-Za-z]:[\\/]*) ;;
*)
func_fatal_error "only absolute run-paths are allowed"
;;
esac
if test "$prev" = rpath; then
case "$rpath " in
*" $arg "*) ;;
*) func_append rpath " $arg" ;;
esac
else
case "$xrpath " in
*" $arg "*) ;;
*) func_append xrpath " $arg" ;;
esac
fi
prev=
continue
;;
shrext)
shrext_cmds="$arg"
prev=
continue
;;
weak)
func_append weak_libs " $arg"
prev=
continue
;;
xcclinker)
func_append linker_flags " $qarg"
func_append compiler_flags " $qarg"
prev=
func_append compile_command " $qarg"
func_append finalize_command " $qarg"
continue
;;
xcompiler)
func_append compiler_flags " $qarg"
prev=
func_append compile_command " $qarg"
func_append finalize_command " $qarg"
continue
;;
xlinker)
func_append linker_flags " $qarg"
func_append compiler_flags " $wl$qarg"
prev=
func_append compile_command " $wl$qarg"
func_append finalize_command " $wl$qarg"
continue
;;
*)
eval "$prev=\"\$arg\""
prev=
continue
;;
esac
fi # test -n "$prev"
prevarg="$arg"
case $arg in
-all-static)
if test -n "$link_static_flag"; then
# See comment for -static flag below, for more details.
func_append compile_command " $link_static_flag"
func_append finalize_command " $link_static_flag"
fi
continue
;;
-allow-undefined)
# FIXME: remove this flag sometime in the future.
func_fatal_error "\`-allow-undefined' must not be used because it is the default"
;;
-avoid-version)
avoid_version=yes
continue
;;
-bindir)
prev=bindir
continue
;;
-dlopen)
prev=dlfiles
continue
;;
-dlpreopen)
prev=dlprefiles
continue
;;
-export-dynamic)
export_dynamic=yes
continue
;;
-export-symbols | -export-symbols-regex)
if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
func_fatal_error "more than one -exported-symbols argument is not allowed"
fi
if test "X$arg" = "X-export-symbols"; then
prev=expsyms
else
prev=expsyms_regex
fi
continue
;;
-framework)
prev=framework
continue
;;
-inst-prefix-dir)
prev=inst_prefix
continue
;;
# The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
# so, if we see these flags be careful not to treat them like -L
-L[A-Z][A-Z]*:*)
case $with_gcc/$host in
no/*-*-irix* | /*-*-irix*)
func_append compile_command " $arg"
func_append finalize_command " $arg"
;;
esac
continue
;;
-L*)
func_stripname "-L" '' "$arg"
if test -z "$func_stripname_result"; then
if test "$#" -gt 0; then
func_fatal_error "require no space between \`-L' and \`$1'"
else
func_fatal_error "need path for \`-L' option"
fi
fi
func_resolve_sysroot "$func_stripname_result"
dir=$func_resolve_sysroot_result
# We need an absolute path.
case $dir in
[\\/]* | [A-Za-z]:[\\/]*) ;;
*)
absdir=`cd "$dir" && pwd`
test -z "$absdir" && \
func_fatal_error "cannot determine absolute directory name of \`$dir'"
dir="$absdir"
;;
esac
case "$deplibs " in
*" -L$dir "* | *" $arg "*)
# Will only happen for absolute or sysroot arguments
;;
*)
# Preserve sysroot, but never include relative directories
case $dir in
[\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
*) func_append deplibs " -L$dir" ;;
esac
func_append lib_search_path " $dir"
;;
esac
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$dir:"*) ;;
::) dllsearchpath=$dir;;
*) func_append dllsearchpath ":$dir";;
esac
case :$dllsearchpath: in
*":$testbindir:"*) ;;
::) dllsearchpath=$testbindir;;
*) func_append dllsearchpath ":$testbindir";;
esac
;;
esac
continue
;;
-l*)
if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
# These systems don't actually have a C or math library (as such)
continue
;;
*-*-os2*)
# These systems don't actually have a C library (as such)
test "X$arg" = "X-lc" && continue
;;
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
# Do not include libc due to us having libc/libc_r.
test "X$arg" = "X-lc" && continue
;;
*-*-rhapsody* | *-*-darwin1.[012])
# Rhapsody C and math libraries are in the System framework
func_append deplibs " System.ltframework"
continue
;;
*-*-sco3.2v5* | *-*-sco5v6*)
# Causes problems with __ctype
test "X$arg" = "X-lc" && continue
;;
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
# Compiler inserts libc in the correct place for threads to work
test "X$arg" = "X-lc" && continue
;;
esac
elif test "X$arg" = "X-lc_r"; then
case $host in
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
# Do not include libc_r directly, use -pthread flag.
continue
;;
esac
fi
func_append deplibs " $arg"
continue
;;
-module)
module=yes
continue
;;
# Tru64 UNIX uses -model [arg] to determine the layout of C++
# classes, name mangling, and exception handling.
# Darwin uses the -arch flag to determine output architecture.
-model|-arch|-isysroot|--sysroot)
func_append compiler_flags " $arg"
func_append compile_command " $arg"
func_append finalize_command " $arg"
prev=xcompiler
continue
;;
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
func_append compiler_flags " $arg"
func_append compile_command " $arg"
func_append finalize_command " $arg"
case "$new_inherited_linker_flags " in
*" $arg "*) ;;
* ) func_append new_inherited_linker_flags " $arg" ;;
esac
continue
;;
-multi_module)
single_module="${wl}-multi_module"
continue
;;
-no-fast-install)
fast_install=no
continue
;;
-no-install)
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
# The PATH hackery in wrapper scripts is required on Windows
# and Darwin in order for the loader to find any dlls it needs.
func_warning "\`-no-install' is ignored for $host"
func_warning "assuming \`-no-fast-install' instead"
fast_install=no
;;
*) no_install=yes ;;
esac
continue
;;
-no-undefined)
allow_undefined=no
continue
;;
-objectlist)
prev=objectlist
continue
;;
-o) prev=output ;;
-precious-files-regex)
prev=precious_regex
continue
;;
-release)
prev=release
continue
;;
-rpath)
prev=rpath
continue
;;
-R)
prev=xrpath
continue
;;
-R*)
func_stripname '-R' '' "$arg"
dir=$func_stripname_result
# We need an absolute path.
case $dir in
[\\/]* | [A-Za-z]:[\\/]*) ;;
=*)
func_stripname '=' '' "$dir"
dir=$lt_sysroot$func_stripname_result
;;
*)
func_fatal_error "only absolute run-paths are allowed"
;;
esac
case "$xrpath " in
*" $dir "*) ;;
*) func_append xrpath " $dir" ;;
esac
continue
;;
-shared)
# The effects of -shared are defined in a previous loop.
continue
;;
-shrext)
prev=shrext
continue
;;
-static | -static-libtool-libs)
# The effects of -static are defined in a previous loop.
# We used to do the same as -all-static on platforms that
# didn't have a PIC flag, but the assumption that the effects
# would be equivalent was wrong. It would break on at least
# Digital Unix and AIX.
continue
;;
-thread-safe)
thread_safe=yes
continue
;;
-version-info)
prev=vinfo
continue
;;
-version-number)
prev=vinfo
vinfo_number=yes
continue
;;
-weak)
prev=weak
continue
;;
-Wc,*)
func_stripname '-Wc,' '' "$arg"
args=$func_stripname_result
arg=
save_ifs="$IFS"; IFS=','
for flag in $args; do
IFS="$save_ifs"
func_quote_for_eval "$flag"
func_append arg " $func_quote_for_eval_result"
func_append compiler_flags " $func_quote_for_eval_result"
done
IFS="$save_ifs"
func_stripname ' ' '' "$arg"
arg=$func_stripname_result
;;
-Wl,*)
func_stripname '-Wl,' '' "$arg"
args=$func_stripname_result
arg=
save_ifs="$IFS"; IFS=','
for flag in $args; do
IFS="$save_ifs"
func_quote_for_eval "$flag"
func_append arg " $wl$func_quote_for_eval_result"
func_append compiler_flags " $wl$func_quote_for_eval_result"
func_append linker_flags " $func_quote_for_eval_result"
done
IFS="$save_ifs"
func_stripname ' ' '' "$arg"
arg=$func_stripname_result
;;
-Xcompiler)
prev=xcompiler
continue
;;
-Xlinker)
prev=xlinker
continue
;;
-XCClinker)
prev=xcclinker
continue
;;
# -msg_* for osf cc
-msg_*)
func_quote_for_eval "$arg"
arg="$func_quote_for_eval_result"
;;
# Flags to be passed through unchanged, with rationale:
# -64, -mips[0-9] enable 64-bit mode for the SGI compiler
# -r[0-9][0-9]* specify processor for the SGI compiler
# -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
# +DA*, +DD* enable 64-bit mode for the HP compiler
# -q* compiler args for the IBM compiler
# -m*, -t[45]*, -txscale* architecture-specific flags for GCC
# -F/path path to uninstalled frameworks, gcc on darwin
# -p, -pg, --coverage, -fprofile-* profiling flags for GCC
# @file GCC response files
# -tp=* Portland pgcc target processor selection
# --sysroot=* for sysroot support
# -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-O*|-flto*|-fwhopr*|-fuse-linker-plugin)
func_quote_for_eval "$arg"
arg="$func_quote_for_eval_result"
func_append compile_command " $arg"
func_append finalize_command " $arg"
func_append compiler_flags " $arg"
continue
;;
# Some other compiler flag.
-* | +*)
func_quote_for_eval "$arg"
arg="$func_quote_for_eval_result"
;;
*.$objext)
# A standard object.
func_append objs " $arg"
;;
*.lo)
# A libtool-controlled object.
# Check to see that this really is a libtool object.
if func_lalib_unsafe_p "$arg"; then
pic_object=
non_pic_object=
# Read the .lo file
func_source "$arg"
if test -z "$pic_object" ||
test -z "$non_pic_object" ||
test "$pic_object" = none &&
test "$non_pic_object" = none; then
func_fatal_error "cannot find name of object for \`$arg'"
fi
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
xdir="$func_dirname_result"
if test "$pic_object" != none; then
# Prepend the subdirectory the object is found in.
pic_object="$xdir$pic_object"
if test "$prev" = dlfiles; then
if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
func_append dlfiles " $pic_object"
prev=
continue
else
# If libtool objects are unsupported, then we need to preload.
prev=dlprefiles
fi
fi
# CHECK ME: I think I busted this. -Ossama
if test "$prev" = dlprefiles; then
# Preload the old-style object.
func_append dlprefiles " $pic_object"
prev=
fi
# A PIC object.
func_append libobjs " $pic_object"
arg="$pic_object"
fi
# Non-PIC object.
if test "$non_pic_object" != none; then
# Prepend the subdirectory the object is found in.
non_pic_object="$xdir$non_pic_object"
# A standard non-PIC object
func_append non_pic_objects " $non_pic_object"
if test -z "$pic_object" || test "$pic_object" = none ; then
arg="$non_pic_object"
fi
else
# If the PIC object exists, use it instead.
# $xdir was prepended to $pic_object above.
non_pic_object="$pic_object"
func_append non_pic_objects " $non_pic_object"
fi
else
# Only an error if not doing a dry-run.
if $opt_dry_run; then
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
xdir="$func_dirname_result"
func_lo2o "$arg"
pic_object=$xdir$objdir/$func_lo2o_result
non_pic_object=$xdir$func_lo2o_result
func_append libobjs " $pic_object"
func_append non_pic_objects " $non_pic_object"
else
func_fatal_error "\`$arg' is not a valid libtool object"
fi
fi
;;
*.$libext)
# An archive.
func_append deplibs " $arg"
func_append old_deplibs " $arg"
continue
;;
*.la)
# A libtool-controlled library.
func_resolve_sysroot "$arg"
if test "$prev" = dlfiles; then
# This library was specified with -dlopen.
func_append dlfiles " $func_resolve_sysroot_result"
prev=
elif test "$prev" = dlprefiles; then
# The library was specified with -dlpreopen.
func_append dlprefiles " $func_resolve_sysroot_result"
prev=
else
func_append deplibs " $func_resolve_sysroot_result"
fi
continue
;;
# Some other compiler argument.
*)
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
func_quote_for_eval "$arg"
arg="$func_quote_for_eval_result"
;;
esac # arg
# Now actually substitute the argument into the commands.
if test -n "$arg"; then
func_append compile_command " $arg"
func_append finalize_command " $arg"
fi
done # argument parsing loop
test -n "$prev" && \
func_fatal_help "the \`$prevarg' option requires an argument"
if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
eval arg=\"$export_dynamic_flag_spec\"
func_append compile_command " $arg"
func_append finalize_command " $arg"
fi
oldlibs=
# calculate the name of the file, without its directory
func_basename "$output"
outputname="$func_basename_result"
libobjs_save="$libobjs"
if test -n "$shlibpath_var"; then
# get the directories listed in $shlibpath_var
eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
else
shlib_search_path=
fi
eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
func_dirname "$output" "/" ""
output_objdir="$func_dirname_result$objdir"
func_to_tool_file "$output_objdir/"
tool_output_objdir=$func_to_tool_file_result
# Create the object directory.
func_mkdir_p "$output_objdir"
# Determine the type of output
case $output in
"")
func_fatal_help "you must specify an output file"
;;
*.$libext) linkmode=oldlib ;;
*.lo | *.$objext) linkmode=obj ;;
*.la) linkmode=lib ;;
*) linkmode=prog ;; # Anything else should be a program.
esac
specialdeplibs=
libs=
# Find all interdependent deplibs by searching for libraries
# that are linked more than once (e.g. -la -lb -la)
for deplib in $deplibs; do
if $opt_preserve_dup_deps ; then
case "$libs " in
*" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
fi
func_append libs " $deplib"
done
if test "$linkmode" = lib; then
libs="$predeps $libs $compiler_lib_search_path $postdeps"
# Compute libraries that are listed more than once in $predeps
# $postdeps and mark them as special (i.e., whose duplicates are
# not to be eliminated).
pre_post_deps=
if $opt_duplicate_compiler_generated_deps; then
for pre_post_dep in $predeps $postdeps; do
case "$pre_post_deps " in
*" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
esac
func_append pre_post_deps " $pre_post_dep"
done
fi
pre_post_deps=
fi
deplibs=
newdependency_libs=
newlib_search_path=
need_relink=no # whether we're linking any uninstalled libtool libraries
notinst_deplibs= # not-installed libtool libraries
notinst_path= # paths that contain not-installed libtool libraries
case $linkmode in
lib)
passes="conv dlpreopen link"
for file in $dlfiles $dlprefiles; do
case $file in
*.la) ;;
*)
func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
;;
esac
done
;;
prog)
compile_deplibs=
finalize_deplibs=
alldeplibs=no
newdlfiles=
newdlprefiles=
passes="conv scan dlopen dlpreopen link"
;;
*) passes="conv"
;;
esac
for pass in $passes; do
# The preopen pass in lib mode reverses $deplibs; put it back here
# so that -L comes before libs that need it for instance...
if test "$linkmode,$pass" = "lib,link"; then
## FIXME: Find the place where the list is rebuilt in the wrong
## order, and fix it there properly
tmp_deplibs=
for deplib in $deplibs; do
tmp_deplibs="$deplib $tmp_deplibs"
done
deplibs="$tmp_deplibs"
fi
if test "$linkmode,$pass" = "lib,link" ||
test "$linkmode,$pass" = "prog,scan"; then
libs="$deplibs"
deplibs=
fi
if test "$linkmode" = prog; then
case $pass in
dlopen) libs="$dlfiles" ;;
dlpreopen) libs="$dlprefiles" ;;
link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
esac
fi
if test "$linkmode,$pass" = "lib,dlpreopen"; then
# Collect and forward deplibs of preopened libtool libs
for lib in $dlprefiles; do
# Ignore non-libtool-libs
dependency_libs=
func_resolve_sysroot "$lib"
case $lib in
*.la) func_source "$func_resolve_sysroot_result" ;;
esac
# Collect preopened libtool deplibs, except any this library
# has declared as weak libs
for deplib in $dependency_libs; do
func_basename "$deplib"
deplib_base=$func_basename_result
case " $weak_libs " in
*" $deplib_base "*) ;;
*) func_append deplibs " $deplib" ;;
esac
done
done
libs="$dlprefiles"
fi
if test "$pass" = dlopen; then
# Collect dlpreopened libraries
save_deplibs="$deplibs"
deplibs=
fi
for deplib in $libs; do
lib=
found=no
case $deplib in
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
func_append compiler_flags " $deplib"
if test "$linkmode" = lib ; then
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
* ) func_append new_inherited_linker_flags " $deplib" ;;
esac
fi
fi
continue
;;
-l*)
if test "$linkmode" != lib && test "$linkmode" != prog; then
func_warning "\`-l' is ignored for archives/objects"
continue
fi
func_stripname '-l' '' "$deplib"
name=$func_stripname_result
if test "$linkmode" = lib; then
searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
else
searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
fi
for searchdir in $searchdirs; do
for search_ext in .la $std_shrext .so .a; do
# Search the libtool library
lib="$searchdir/lib${name}${search_ext}"
if test -f "$lib"; then
if test "$search_ext" = ".la"; then
found=yes
else
found=no
fi
break 2
fi
done
done
if test "$found" != yes; then
# deplib doesn't seem to be a libtool library
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
deplibs="$deplib $deplibs"
test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
fi
continue
else # deplib is a libtool library
# If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
# We need to do some special things here, and not later.
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
*" $deplib "*)
if func_lalib_p "$lib"; then
library_names=
old_library=
func_source "$lib"
for l in $old_library $library_names; do
ll="$l"
done
if test "X$ll" = "X$old_library" ; then # only static version available
found=no
func_dirname "$lib" "" "."
ladir="$func_dirname_result"
lib=$ladir/$old_library
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
deplibs="$deplib $deplibs"
test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
fi
continue
fi
fi
;;
*) ;;
esac
fi
fi
;; # -l
*.ltframework)
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
deplibs="$deplib $deplibs"
if test "$linkmode" = lib ; then
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
* ) func_append new_inherited_linker_flags " $deplib" ;;
esac
fi
fi
continue
;;
-L*)
case $linkmode in
lib)
deplibs="$deplib $deplibs"
test "$pass" = conv && continue
newdependency_libs="$deplib $newdependency_libs"
func_stripname '-L' '' "$deplib"
func_resolve_sysroot "$func_stripname_result"
func_append newlib_search_path " $func_resolve_sysroot_result"
;;
prog)
if test "$pass" = conv; then
deplibs="$deplib $deplibs"
continue
fi
if test "$pass" = scan; then
deplibs="$deplib $deplibs"
else
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
fi
func_stripname '-L' '' "$deplib"
func_resolve_sysroot "$func_stripname_result"
func_append newlib_search_path " $func_resolve_sysroot_result"
;;
*)
func_warning "\`-L' is ignored for archives/objects"
;;
esac # linkmode
continue
;; # -L
-R*)
if test "$pass" = link; then
func_stripname '-R' '' "$deplib"
func_resolve_sysroot "$func_stripname_result"
dir=$func_resolve_sysroot_result
# Make sure the xrpath contains only unique directories.
case "$xrpath " in
*" $dir "*) ;;
*) func_append xrpath " $dir" ;;
esac
fi
deplibs="$deplib $deplibs"
continue
;;
*.la)
func_resolve_sysroot "$deplib"
lib=$func_resolve_sysroot_result
;;
*.$libext)
if test "$pass" = conv; then
deplibs="$deplib $deplibs"
continue
fi
case $linkmode in
lib)
# Linking convenience modules into shared libraries is allowed,
# but linking other static libraries is non-portable.
case " $dlpreconveniencelibs " in
*" $deplib "*) ;;
*)
valid_a_lib=no
case $deplibs_check_method in
match_pattern*)
set dummy $deplibs_check_method; shift
match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
| $EGREP "$match_pattern_regex" > /dev/null; then
valid_a_lib=yes
fi
;;
pass_all)
valid_a_lib=yes
;;
esac
if test "$valid_a_lib" != yes; then
echo
$ECHO "*** Warning: Trying to link with static lib archive $deplib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have"
echo "*** because the file extensions .$libext of this argument makes me believe"
echo "*** that it is just a static archive that I should not use here."
else
echo
$ECHO "*** Warning: Linking the shared library $output against the"
$ECHO "*** static library $deplib is not portable!"
deplibs="$deplib $deplibs"
fi
;;
esac
continue
;;
prog)
if test "$pass" != link; then
deplibs="$deplib $deplibs"
else
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
fi
continue
;;
esac # linkmode
;; # *.$libext
*.lo | *.$objext)
if test "$pass" = conv; then
deplibs="$deplib $deplibs"
elif test "$linkmode" = prog; then
if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
# If there is no dlopen support or we're linking statically,
# we need to preload.
func_append newdlprefiles " $deplib"
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
func_append newdlfiles " $deplib"
fi
fi
continue
;;
%DEPLIBS%)
alldeplibs=yes
continue
;;
esac # case $deplib
if test "$found" = yes || test -f "$lib"; then :
else
func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
fi
# Check to see that this really is a libtool archive.
func_lalib_unsafe_p "$lib" \
|| func_fatal_error "\`$lib' is not a valid libtool archive"
func_dirname "$lib" "" "."
ladir="$func_dirname_result"
dlname=
dlopen=
dlpreopen=
libdir=
library_names=
old_library=
inherited_linker_flags=
# If the library was installed with an old release of libtool,
# it will not redefine variables installed, or shouldnotlink
installed=yes
shouldnotlink=no
avoidtemprpath=
# Read the .la file
func_source "$lib"
# Convert "-framework foo" to "foo.ltframework"
if test -n "$inherited_linker_flags"; then
tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
case " $new_inherited_linker_flags " in
*" $tmp_inherited_linker_flag "*) ;;
*) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
esac
done
fi
dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
if test "$linkmode,$pass" = "lib,link" ||
test "$linkmode,$pass" = "prog,scan" ||
{ test "$linkmode" != prog && test "$linkmode" != lib; }; then
test -n "$dlopen" && func_append dlfiles " $dlopen"
test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
fi
if test "$pass" = conv; then
# Only check for convenience libraries
deplibs="$lib $deplibs"
if test -z "$libdir"; then
if test -z "$old_library"; then
func_fatal_error "cannot find name of link library for \`$lib'"
fi
# It is a libtool convenience library, so add in its objects.
func_append convenience " $ladir/$objdir/$old_library"
func_append old_convenience " $ladir/$objdir/$old_library"
elif test "$linkmode" != prog && test "$linkmode" != lib; then
func_fatal_error "\`$lib' is not a convenience library"
fi
tmp_libs=
for deplib in $dependency_libs; do
deplibs="$deplib $deplibs"
if $opt_preserve_dup_deps ; then
case "$tmp_libs " in
*" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
fi
func_append tmp_libs " $deplib"
done
continue
fi # $pass = conv
# Get the name of the library we link against.
linklib=
if test -n "$old_library" &&
{ test "$prefer_static_libs" = yes ||
test "$prefer_static_libs,$installed" = "built,no"; }; then
linklib=$old_library
else
for l in $old_library $library_names; do
linklib="$l"
done
fi
if test -z "$linklib"; then
func_fatal_error "cannot find name of link library for \`$lib'"
fi
# This library was specified with -dlopen.
if test "$pass" = dlopen; then
if test -z "$libdir"; then
func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
fi
if test -z "$dlname" ||
test "$dlopen_support" != yes ||
test "$build_libtool_libs" = no; then
# If there is no dlname, no dlopen support or we're linking
# statically, we need to preload. We also need to preload any
# dependent libraries so libltdl's deplib preloader doesn't
# bomb out in the load deplibs phase.
func_append dlprefiles " $lib $dependency_libs"
else
func_append newdlfiles " $lib"
fi
continue
fi # $pass = dlopen
# We need an absolute path.
case $ladir in
[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
*)
abs_ladir=`cd "$ladir" && pwd`
if test -z "$abs_ladir"; then
func_warning "cannot determine absolute directory name of \`$ladir'"
func_warning "passing it literally to the linker, although it might fail"
abs_ladir="$ladir"
fi
;;
esac
func_basename "$lib"
laname="$func_basename_result"
# Find the relevant object directory and library name.
if test "X$installed" = Xyes; then
if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
func_warning "library \`$lib' was moved."
dir="$ladir"
absdir="$abs_ladir"
libdir="$abs_ladir"
else
dir="$lt_sysroot$libdir"
absdir="$lt_sysroot$libdir"
fi
test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
else
if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
dir="$ladir"
absdir="$abs_ladir"
# Remove this search path later
func_append notinst_path " $abs_ladir"
else
dir="$ladir/$objdir"
absdir="$abs_ladir/$objdir"
# Remove this search path later
func_append notinst_path " $abs_ladir"
fi
fi # $installed = yes
func_stripname 'lib' '.la' "$laname"
name=$func_stripname_result
# This library was specified with -dlpreopen.
if test "$pass" = dlpreopen; then
if test -z "$libdir" && test "$linkmode" = prog; then
func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
fi
case "$host" in
# special handling for platforms with PE-DLLs.
*cygwin* | *mingw* | *cegcc* )
# Linker will automatically link against shared library if both
# static and shared are present. Therefore, ensure we extract
# symbols from the import library if a shared library is present
# (otherwise, the dlopen module name will be incorrect). We do
# this by putting the import library name into $newdlprefiles.
# We recover the dlopen module name by 'saving' the la file
# name in a special purpose variable, and (later) extracting the
# dlname from the la file.
if test -n "$dlname"; then
func_tr_sh "$dir/$linklib"
eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
func_append newdlprefiles " $dir/$linklib"
else
func_append newdlprefiles " $dir/$old_library"
# Keep a list of preopened convenience libraries to check
# that they are being used correctly in the link pass.
test -z "$libdir" && \
func_append dlpreconveniencelibs " $dir/$old_library"
fi
;;
* )
# Prefer using a static library (so that no silly _DYNAMIC symbols
# are required to link).
if test -n "$old_library"; then
func_append newdlprefiles " $dir/$old_library"
# Keep a list of preopened convenience libraries to check
# that they are being used correctly in the link pass.
test -z "$libdir" && \
func_append dlpreconveniencelibs " $dir/$old_library"
# Otherwise, use the dlname, so that lt_dlopen finds it.
elif test -n "$dlname"; then
func_append newdlprefiles " $dir/$dlname"
else
func_append newdlprefiles " $dir/$linklib"
fi
;;
esac
fi # $pass = dlpreopen
if test -z "$libdir"; then
# Link the convenience library
if test "$linkmode" = lib; then
deplibs="$dir/$old_library $deplibs"
elif test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$dir/$old_library $compile_deplibs"
finalize_deplibs="$dir/$old_library $finalize_deplibs"
else
deplibs="$lib $deplibs" # used for prog,scan pass
fi
continue
fi
if test "$linkmode" = prog && test "$pass" != link; then
func_append newlib_search_path " $ladir"
deplibs="$lib $deplibs"
linkalldeplibs=no
if test "$link_all_deplibs" != no || test -z "$library_names" ||
test "$build_libtool_libs" = no; then
linkalldeplibs=yes
fi
tmp_libs=
for deplib in $dependency_libs; do
case $deplib in
-L*) func_stripname '-L' '' "$deplib"
func_resolve_sysroot "$func_stripname_result"
func_append newlib_search_path " $func_resolve_sysroot_result"
;;
esac
# Need to link against all dependency_libs?
if test "$linkalldeplibs" = yes; then
deplibs="$deplib $deplibs"
else
# Need to hardcode shared library paths
# or/and link against static libraries
newdependency_libs="$deplib $newdependency_libs"
fi
if $opt_preserve_dup_deps ; then
case "$tmp_libs " in
*" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
fi
func_append tmp_libs " $deplib"
done # for deplib
continue
fi # $linkmode = prog...
if test "$linkmode,$pass" = "prog,link"; then
if test -n "$library_names" &&
{ { test "$prefer_static_libs" = no ||
test "$prefer_static_libs,$installed" = "built,yes"; } ||
test -z "$old_library"; }; then
# We need to hardcode the library path
if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
# Make sure the rpath contains only unique directories.
case "$temp_rpath:" in
*"$absdir:"*) ;;
*) func_append temp_rpath "$absdir:" ;;
esac
fi
# Hardcode the library path.
# Skip directories that are in the system default run-time
# search path.
case " $sys_lib_dlsearch_path " in
*" $absdir "*) ;;
*)
case "$compile_rpath " in
*" $absdir "*) ;;
*) func_append compile_rpath " $absdir" ;;
esac
;;
esac
case " $sys_lib_dlsearch_path " in
*" $libdir "*) ;;
*)
case "$finalize_rpath " in
*" $libdir "*) ;;
*) func_append finalize_rpath " $libdir" ;;
esac
;;
esac
fi # $linkmode,$pass = prog,link...
if test "$alldeplibs" = yes &&
{ test "$deplibs_check_method" = pass_all ||
{ test "$build_libtool_libs" = yes &&
test -n "$library_names"; }; }; then
# We only need to search for static libraries
continue
fi
fi
link_static=no # Whether the deplib will be linked statically
use_static_libs=$prefer_static_libs
if test "$use_static_libs" = built && test "$installed" = yes; then
use_static_libs=no
fi
if test -n "$library_names" &&
{ test "$use_static_libs" = no || test -z "$old_library"; }; then
case $host in
*cygwin* | *mingw* | *cegcc*)
# No point in relinking DLLs because paths are not encoded
func_append notinst_deplibs " $lib"
need_relink=no
;;
*)
if test "$installed" = no; then
func_append notinst_deplibs " $lib"
need_relink=yes
fi
;;
esac
# This is a shared library
# Warn about portability, can't link against -module's on some
# systems (darwin). Don't bleat about dlopened modules though!
dlopenmodule=""
for dlpremoduletest in $dlprefiles; do
if test "X$dlpremoduletest" = "X$lib"; then
dlopenmodule="$dlpremoduletest"
break
fi
done
if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
echo
if test "$linkmode" = prog; then
$ECHO "*** Warning: Linking the executable $output against the loadable module"
else
$ECHO "*** Warning: Linking the shared library $output against the loadable module"
fi
$ECHO "*** $linklib is not portable!"
fi
if test "$linkmode" = lib &&
test "$hardcode_into_libs" = yes; then
# Hardcode the library path.
# Skip directories that are in the system default run-time
# search path.
case " $sys_lib_dlsearch_path " in
*" $absdir "*) ;;
*)
case "$compile_rpath " in
*" $absdir "*) ;;
*) func_append compile_rpath " $absdir" ;;
esac
;;
esac
case " $sys_lib_dlsearch_path " in
*" $libdir "*) ;;
*)
case "$finalize_rpath " in
*" $libdir "*) ;;
*) func_append finalize_rpath " $libdir" ;;
esac
;;
esac
fi
if test -n "$old_archive_from_expsyms_cmds"; then
# figure out the soname
set dummy $library_names
shift
realname="$1"
shift
libname=`eval "\\$ECHO \"$libname_spec\""`
# use dlname if we got it. it's perfectly good, no?
if test -n "$dlname"; then
soname="$dlname"
elif test -n "$soname_spec"; then
# bleh windows
case $host in
*cygwin* | mingw* | *cegcc*)
func_arith $current - $age
major=$func_arith_result
versuffix="-$major"
;;
esac
eval soname=\"$soname_spec\"
else
soname="$realname"
fi
# Make a new name for the extract_expsyms_cmds to use
soroot="$soname"
func_basename "$soroot"
soname="$func_basename_result"
func_stripname 'lib' '.dll' "$soname"
newlib=libimp-$func_stripname_result.a
# If the library has no export list, then create one now
if test -f "$output_objdir/$soname-def"; then :
else
func_verbose "extracting exported symbol list from \`$soname'"
func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
fi
# Create $newlib
if test -f "$output_objdir/$newlib"; then :; else
func_verbose "generating import library for \`$soname'"
func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
fi
# make sure the library variables are pointing to the new library
dir=$output_objdir
linklib=$newlib
fi # test -n "$old_archive_from_expsyms_cmds"
if test "$linkmode" = prog || test "$opt_mode" != relink; then
add_shlibpath=
add_dir=
add=
lib_linked=yes
case $hardcode_action in
immediate | unsupported)
if test "$hardcode_direct" = no; then
add="$dir/$linklib"
case $host in
*-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
*-*-sysv4*uw2*) add_dir="-L$dir" ;;
*-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
*-*-unixware7*) add_dir="-L$dir" ;;
*-*-darwin* )
# if the lib is a (non-dlopened) module then we can not
# link against it, someone is ignoring the earlier warnings
if /usr/bin/file -L $add 2> /dev/null |
$GREP ": [^:]* bundle" >/dev/null ; then
if test "X$dlopenmodule" != "X$lib"; then
$ECHO "*** Warning: lib $linklib is a module, not a shared library"
if test -z "$old_library" ; then
echo
echo "*** And there doesn't seem to be a static archive available"
echo "*** The link will probably fail, sorry"
else
add="$dir/$old_library"
fi
elif test -n "$old_library"; then
add="$dir/$old_library"
fi
fi
esac
elif test "$hardcode_minus_L" = no; then
case $host in
*-*-sunos*) add_shlibpath="$dir" ;;
esac
add_dir="-L$dir"
add="-l$name"
elif test "$hardcode_shlibpath_var" = no; then
add_shlibpath="$dir"
add="-l$name"
else
lib_linked=no
fi
;;
relink)
if test "$hardcode_direct" = yes &&
test "$hardcode_direct_absolute" = no; then
add="$dir/$linklib"
elif test "$hardcode_minus_L" = yes; then
add_dir="-L$absdir"
# Try looking first in the location we're being installed to.
if test -n "$inst_prefix_dir"; then
case $libdir in
[\\/]*)
func_append add_dir " -L$inst_prefix_dir$libdir"
;;
esac
fi
add="-l$name"
elif test "$hardcode_shlibpath_var" = yes; then
add_shlibpath="$dir"
add="-l$name"
else
lib_linked=no
fi
;;
*) lib_linked=no ;;
esac
if test "$lib_linked" != yes; then
func_fatal_configuration "unsupported hardcode properties"
fi
if test -n "$add_shlibpath"; then
case :$compile_shlibpath: in
*":$add_shlibpath:"*) ;;
*) func_append compile_shlibpath "$add_shlibpath:" ;;
esac
fi
if test "$linkmode" = prog; then
test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
test -n "$add" && compile_deplibs="$add $compile_deplibs"
else
test -n "$add_dir" && deplibs="$add_dir $deplibs"
test -n "$add" && deplibs="$add $deplibs"
if test "$hardcode_direct" != yes &&
test "$hardcode_minus_L" != yes &&
test "$hardcode_shlibpath_var" = yes; then
case :$finalize_shlibpath: in
*":$libdir:"*) ;;
*) func_append finalize_shlibpath "$libdir:" ;;
esac
fi
fi
fi
if test "$linkmode" = prog || test "$opt_mode" = relink; then
add_shlibpath=
add_dir=
add=
# Finalize command for both is simple: just hardcode it.
if test "$hardcode_direct" = yes &&
test "$hardcode_direct_absolute" = no; then
add="$libdir/$linklib"
elif test "$hardcode_minus_L" = yes; then
add_dir="-L$libdir"
add="-l$name"
elif test "$hardcode_shlibpath_var" = yes; then
case :$finalize_shlibpath: in
*":$libdir:"*) ;;
*) func_append finalize_shlibpath "$libdir:" ;;
esac
add="-l$name"
elif test "$hardcode_automatic" = yes; then
if test -n "$inst_prefix_dir" &&
test -f "$inst_prefix_dir$libdir/$linklib" ; then
add="$inst_prefix_dir$libdir/$linklib"
else
add="$libdir/$linklib"
fi
else
# We cannot seem to hardcode it, guess we'll fake it.
add_dir="-L$libdir"
# Try looking first in the location we're being installed to.
if test -n "$inst_prefix_dir"; then
case $libdir in
[\\/]*)
func_append add_dir " -L$inst_prefix_dir$libdir"
;;
esac
fi
add="-l$name"
fi
if test "$linkmode" = prog; then
test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
else
test -n "$add_dir" && deplibs="$add_dir $deplibs"
test -n "$add" && deplibs="$add $deplibs"
fi
fi
elif test "$linkmode" = prog; then
# Here we assume that one of hardcode_direct or hardcode_minus_L
# is not unsupported. This is valid on all known static and
# shared platforms.
if test "$hardcode_direct" != unsupported; then
test -n "$old_library" && linklib="$old_library"
compile_deplibs="$dir/$linklib $compile_deplibs"
finalize_deplibs="$dir/$linklib $finalize_deplibs"
else
compile_deplibs="-l$name -L$dir $compile_deplibs"
finalize_deplibs="-l$name -L$dir $finalize_deplibs"
fi
elif test "$build_libtool_libs" = yes; then
# Not a shared library
if test "$deplibs_check_method" != pass_all; then
# We're trying link a shared library against a static one
# but the system doesn't support it.
# Just print a warning and add the library to dependency_libs so
# that the program can be linked against the static library.
echo
$ECHO "*** Warning: This system can not link to static lib archive $lib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have."
if test "$module" = yes; then
echo "*** But as you try to build a module library, libtool will still create "
echo "*** a static module, that should work as long as the dlopening application"
echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
if test -z "$global_symbol_pipe"; then
echo
echo "*** However, this would only work if libtool was able to extract symbol"
echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
echo "*** not find such a program. So, this module is probably useless."
echo "*** \`nm' from GNU binutils and a full rebuild may help."
fi
if test "$build_old_libs" = no; then
build_libtool_libs=module
build_old_libs=yes
else
build_libtool_libs=no
fi
fi
else
deplibs="$dir/$old_library $deplibs"
link_static=yes
fi
fi # link shared/static library?
if test "$linkmode" = lib; then
if test -n "$dependency_libs" &&
{ test "$hardcode_into_libs" != yes ||
test "$build_old_libs" = yes ||
test "$link_static" = yes; }; then
# Extract -R from dependency_libs
temp_deplibs=
for libdir in $dependency_libs; do
case $libdir in
-R*) func_stripname '-R' '' "$libdir"
temp_xrpath=$func_stripname_result
case " $xrpath " in
*" $temp_xrpath "*) ;;
*) func_append xrpath " $temp_xrpath";;
esac;;
*) func_append temp_deplibs " $libdir";;
esac
done
dependency_libs="$temp_deplibs"
fi
func_append newlib_search_path " $absdir"
# Link against this library
test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
# ... and its dependency_libs
tmp_libs=
for deplib in $dependency_libs; do
newdependency_libs="$deplib $newdependency_libs"
case $deplib in
-L*) func_stripname '-L' '' "$deplib"
func_resolve_sysroot "$func_stripname_result";;
*) func_resolve_sysroot "$deplib" ;;
esac
if $opt_preserve_dup_deps ; then
case "$tmp_libs " in
*" $func_resolve_sysroot_result "*)
func_append specialdeplibs " $func_resolve_sysroot_result" ;;
esac
fi
func_append tmp_libs " $func_resolve_sysroot_result"
done
if test "$link_all_deplibs" != no; then
# Add the search paths of all dependency libraries
for deplib in $dependency_libs; do
path=
case $deplib in
-L*) path="$deplib" ;;
*.la)
func_resolve_sysroot "$deplib"
deplib=$func_resolve_sysroot_result
func_dirname "$deplib" "" "."
dir=$func_dirname_result
# We need an absolute path.
case $dir in
[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
*)
absdir=`cd "$dir" && pwd`
if test -z "$absdir"; then
func_warning "cannot determine absolute directory name of \`$dir'"
absdir="$dir"
fi
;;
esac
if $GREP "^installed=no" $deplib > /dev/null; then
case $host in
*-*-darwin*)
depdepl=
eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
if test -n "$deplibrary_names" ; then
for tmp in $deplibrary_names ; do
depdepl=$tmp
done
if test -f "$absdir/$objdir/$depdepl" ; then
depdepl="$absdir/$objdir/$depdepl"
darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
if test -z "$darwin_install_name"; then
darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
fi
func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
path=
fi
fi
;;
*)
path="-L$absdir/$objdir"
;;
esac
else
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
test -z "$libdir" && \
func_fatal_error "\`$deplib' is not a valid libtool archive"
test "$absdir" != "$libdir" && \
func_warning "\`$deplib' seems to be moved"
path="-L$absdir"
fi
;;
esac
case " $deplibs " in
*" $path "*) ;;
*) deplibs="$path $deplibs" ;;
esac
done
fi # link_all_deplibs != no
fi # linkmode = lib
done # for deplib in $libs
if test "$pass" = link; then
if test "$linkmode" = "prog"; then
compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
else
compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
fi
fi
dependency_libs="$newdependency_libs"
if test "$pass" = dlpreopen; then
# Link the dlpreopened libraries before other libraries
for deplib in $save_deplibs; do
deplibs="$deplib $deplibs"
done
fi
if test "$pass" != dlopen; then
if test "$pass" != conv; then
# Make sure lib_search_path contains only unique directories.
lib_search_path=
for dir in $newlib_search_path; do
case "$lib_search_path " in
*" $dir "*) ;;
*) func_append lib_search_path " $dir" ;;
esac
done
newlib_search_path=
fi
if test "$linkmode,$pass" != "prog,link"; then
vars="deplibs"
else
vars="compile_deplibs finalize_deplibs"
fi
for var in $vars dependency_libs; do
# Add libraries to $var in reverse order
eval tmp_libs=\"\$$var\"
new_libs=
for deplib in $tmp_libs; do
# FIXME: Pedantically, this is the right thing to do, so
# that some nasty dependency loop isn't accidentally
# broken:
#new_libs="$deplib $new_libs"
# Pragmatically, this seems to cause very few problems in
# practice:
case $deplib in
-L*) new_libs="$deplib $new_libs" ;;
-R*) ;;
*)
# And here is the reason: when a library appears more
# than once as an explicit dependence of a library, or
# is implicitly linked in more than once by the
# compiler, it is considered special, and multiple
# occurrences thereof are not removed. Compare this
# with having the same library being listed as a
# dependency of multiple other libraries: in this case,
# we know (pedantically, we assume) the library does not
# need to be listed more than once, so we keep only the
# last copy. This is not always right, but it is rare
# enough that we require users that really mean to play
# such unportable linking tricks to link the library
# using -Wl,-lname, so that libtool does not consider it
# for duplicate removal.
case " $specialdeplibs " in
*" $deplib "*) new_libs="$deplib $new_libs" ;;
*)
case " $new_libs " in
*" $deplib "*) ;;
*) new_libs="$deplib $new_libs" ;;
esac
;;
esac
;;
esac
done
tmp_libs=
for deplib in $new_libs; do
case $deplib in
-L*)
case " $tmp_libs " in
*" $deplib "*) ;;
*) func_append tmp_libs " $deplib" ;;
esac
;;
*) func_append tmp_libs " $deplib" ;;
esac
done
eval $var=\"$tmp_libs\"
done # for var
fi
# Last step: remove runtime libs from dependency_libs
# (they stay in deplibs)
tmp_libs=
for i in $dependency_libs ; do
case " $predeps $postdeps $compiler_lib_search_path " in
*" $i "*)
i=""
;;
esac
if test -n "$i" ; then
func_append tmp_libs " $i"
fi
done
dependency_libs=$tmp_libs
done # for pass
if test "$linkmode" = prog; then
dlfiles="$newdlfiles"
fi
if test "$linkmode" = prog || test "$linkmode" = lib; then
dlprefiles="$newdlprefiles"
fi
case $linkmode in
oldlib)
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
func_warning "\`-dlopen' is ignored for archives"
fi
case " $deplibs" in
*\ -l* | *\ -L*)
func_warning "\`-l' and \`-L' are ignored for archives" ;;
esac
test -n "$rpath" && \
func_warning "\`-rpath' is ignored for archives"
test -n "$xrpath" && \
func_warning "\`-R' is ignored for archives"
test -n "$vinfo" && \
func_warning "\`-version-info/-version-number' is ignored for archives"
test -n "$release" && \
func_warning "\`-release' is ignored for archives"
test -n "$export_symbols$export_symbols_regex" && \
func_warning "\`-export-symbols' is ignored for archives"
# Now set the variables for building old libraries.
build_libtool_libs=no
oldlibs="$output"
func_append objs "$old_deplibs"
;;
lib)
# Make sure we only generate libraries of the form `libNAME.la'.
case $outputname in
lib*)
func_stripname 'lib' '.la' "$outputname"
name=$func_stripname_result
eval shared_ext=\"$shrext_cmds\"
eval libname=\"$libname_spec\"
;;
*)
test "$module" = no && \
func_fatal_help "libtool library \`$output' must begin with \`lib'"
if test "$need_lib_prefix" != no; then
# Add the "lib" prefix for modules if required
func_stripname '' '.la' "$outputname"
name=$func_stripname_result
eval shared_ext=\"$shrext_cmds\"
eval libname=\"$libname_spec\"
else
func_stripname '' '.la' "$outputname"
libname=$func_stripname_result
fi
;;
esac
if test -n "$objs"; then
if test "$deplibs_check_method" != pass_all; then
func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
else
echo
$ECHO "*** Warning: Linking the shared library $output against the non-libtool"
$ECHO "*** objects $objs is not portable!"
func_append libobjs " $objs"
fi
fi
test "$dlself" != no && \
func_warning "\`-dlopen self' is ignored for libtool libraries"
set dummy $rpath
shift
test "$#" -gt 1 && \
func_warning "ignoring multiple \`-rpath's for a libtool library"
install_libdir="$1"
oldlibs=
if test -z "$rpath"; then
if test "$build_libtool_libs" = yes; then
# Building a libtool convenience library.
# Some compilers have problems with a `.al' extension so
# convenience libraries should have the same extension an
# archive normally would.
oldlibs="$output_objdir/$libname.$libext $oldlibs"
build_libtool_libs=convenience
build_old_libs=yes
fi
test -n "$vinfo" && \
func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
test -n "$release" && \
func_warning "\`-release' is ignored for convenience libraries"
else
# Parse the version information argument.
save_ifs="$IFS"; IFS=':'
set dummy $vinfo 0 0 0
shift
IFS="$save_ifs"
test -n "$7" && \
func_fatal_help "too many parameters to \`-version-info'"
# convert absolute version numbers to libtool ages
# this retains compatibility with .la files and attempts
# to make the code below a bit more comprehensible
case $vinfo_number in
yes)
number_major="$1"
number_minor="$2"
number_revision="$3"
#
# There are really only two kinds -- those that
# use the current revision as the major version
# and those that subtract age and use age as
# a minor version. But, then there is irix
# which has an extra 1 added just for fun
#
case $version_type in
# correct linux to gnu/linux during the next big refactor
darwin|linux|osf|windows|none)
func_arith $number_major + $number_minor
current=$func_arith_result
age="$number_minor"
revision="$number_revision"
;;
freebsd-aout|freebsd-elf|qnx|sunos)
current="$number_major"
revision="$number_minor"
age="0"
;;
irix|nonstopux)
func_arith $number_major + $number_minor
current=$func_arith_result
age="$number_minor"
revision="$number_minor"
lt_irix_increment=no
;;
esac
;;
no)
current="$1"
revision="$2"
age="$3"
;;
esac
# Check that each of the things are valid numbers.
case $current in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
func_error "CURRENT \`$current' must be a nonnegative integer"
func_fatal_error "\`$vinfo' is not valid version information"
;;
esac
case $revision in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
func_error "REVISION \`$revision' must be a nonnegative integer"
func_fatal_error "\`$vinfo' is not valid version information"
;;
esac
case $age in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
func_error "AGE \`$age' must be a nonnegative integer"
func_fatal_error "\`$vinfo' is not valid version information"
;;
esac
if test "$age" -gt "$current"; then
func_error "AGE \`$age' is greater than the current interface number \`$current'"
func_fatal_error "\`$vinfo' is not valid version information"
fi
# Calculate the version variables.
major=
versuffix=
verstring=
case $version_type in
none) ;;
darwin)
# Like Linux, but with the current version available in
# verstring for coding it into the library header
func_arith $current - $age
major=.$func_arith_result
versuffix="$major.$age.$revision"
# Darwin ld doesn't like 0 for these options...
func_arith $current + 1
minor_current=$func_arith_result
xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
;;
freebsd-aout)
major=".$current"
versuffix=".$current.$revision";
;;
freebsd-elf)
major=".$current"
versuffix=".$current"
;;
irix | nonstopux)
if test "X$lt_irix_increment" = "Xno"; then
func_arith $current - $age
else
func_arith $current - $age + 1
fi
major=$func_arith_result
case $version_type in
nonstopux) verstring_prefix=nonstopux ;;
*) verstring_prefix=sgi ;;
esac
verstring="$verstring_prefix$major.$revision"
# Add in all the interfaces that we are compatible with.
loop=$revision
while test "$loop" -ne 0; do
func_arith $revision - $loop
iface=$func_arith_result
func_arith $loop - 1
loop=$func_arith_result
verstring="$verstring_prefix$major.$iface:$verstring"
done
# Before this point, $major must not contain `.'.
major=.$major
versuffix="$major.$revision"
;;
linux) # correct to gnu/linux during the next big refactor
func_arith $current - $age
major=.$func_arith_result
versuffix="$major.$age.$revision"
;;
osf)
func_arith $current - $age
major=.$func_arith_result
versuffix=".$current.$age.$revision"
verstring="$current.$age.$revision"
# Add in all the interfaces that we are compatible with.
loop=$age
while test "$loop" -ne 0; do
func_arith $current - $loop
iface=$func_arith_result
func_arith $loop - 1
loop=$func_arith_result
verstring="$verstring:${iface}.0"
done
# Make executables depend on our current version.
func_append verstring ":${current}.0"
;;
qnx)
major=".$current"
versuffix=".$current"
;;
sunos)
major=".$current"
versuffix=".$current.$revision"
;;
windows)
# Use '-' rather than '.', since we only want one
# extension on DOS 8.3 filesystems.
func_arith $current - $age
major=$func_arith_result
versuffix="-$major"
;;
*)
func_fatal_configuration "unknown library version type \`$version_type'"
;;
esac
# Clear the version info if we defaulted, and they specified a release.
if test -z "$vinfo" && test -n "$release"; then
major=
case $version_type in
darwin)
# we can't check for "0.0" in archive_cmds due to quoting
# problems, so we reset it completely
verstring=
;;
*)
verstring="0.0"
;;
esac
if test "$need_version" = no; then
versuffix=
else
versuffix=".0.0"
fi
fi
# Remove version info from name if versioning should be avoided
if test "$avoid_version" = yes && test "$need_version" = no; then
major=
versuffix=
verstring=""
fi
# Check to see if the archive will have undefined symbols.
if test "$allow_undefined" = yes; then
if test "$allow_undefined_flag" = unsupported; then
func_warning "undefined symbols not allowed in $host shared libraries"
build_libtool_libs=no
build_old_libs=yes
fi
else
# Don't allow undefined symbols.
allow_undefined_flag="$no_undefined_flag"
fi
fi
func_generate_dlsyms "$libname" "$libname" "yes"
func_append libobjs " $symfileobj"
test "X$libobjs" = "X " && libobjs=
if test "$opt_mode" != relink; then
# Remove our outputs, but don't remove object files since they
# may have been created when compiling PIC objects.
removelist=
tempremovelist=`$ECHO "$output_objdir/*"`
for p in $tempremovelist; do
case $p in
*.$objext | *.gcno)
;;
$output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
if test "X$precious_files_regex" != "X"; then
if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
then
continue
fi
fi
func_append removelist " $p"
;;
*) ;;
esac
done
test -n "$removelist" && \
func_show_eval "${RM}r \$removelist"
fi
# Now set the variables for building old libraries.
if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
func_append oldlibs " $output_objdir/$libname.$libext"
# Transform .lo files to .o files.
oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
fi
# Eliminate all temporary directories.
#for path in $notinst_path; do
# lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
# deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
# dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
#done
if test -n "$xrpath"; then
# If the user specified any rpath flags, then add them.
temp_xrpath=
for libdir in $xrpath; do
func_replace_sysroot "$libdir"
func_append temp_xrpath " -R$func_replace_sysroot_result"
case "$finalize_rpath " in
*" $libdir "*) ;;
*) func_append finalize_rpath " $libdir" ;;
esac
done
if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
dependency_libs="$temp_xrpath $dependency_libs"
fi
fi
# Make sure dlfiles contains only unique files that won't be dlpreopened
old_dlfiles="$dlfiles"
dlfiles=
for lib in $old_dlfiles; do
case " $dlprefiles $dlfiles " in
*" $lib "*) ;;
*) func_append dlfiles " $lib" ;;
esac
done
# Make sure dlprefiles contains only unique files
old_dlprefiles="$dlprefiles"
dlprefiles=
for lib in $old_dlprefiles; do
case "$dlprefiles " in
*" $lib "*) ;;
*) func_append dlprefiles " $lib" ;;
esac
done
if test "$build_libtool_libs" = yes; then
if test -n "$rpath"; then
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
# these systems don't actually have a c library (as such)!
;;
*-*-rhapsody* | *-*-darwin1.[012])
# Rhapsody C library is in the System framework
func_append deplibs " System.ltframework"
;;
*-*-netbsd*)
# Don't link with libc until the a.out ld.so is fixed.
;;
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
# Do not include libc due to us having libc/libc_r.
;;
*-*-sco3.2v5* | *-*-sco5v6*)
# Causes problems with __ctype
;;
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
# Compiler inserts libc in the correct place for threads to work
;;
*)
# Add libc to deplibs on all other systems if necessary.
if test "$build_libtool_need_lc" = "yes"; then
func_append deplibs " -lc"
fi
;;
esac
fi
# Transform deplibs into only deplibs that can be linked in shared.
name_save=$name
libname_save=$libname
release_save=$release
versuffix_save=$versuffix
major_save=$major
# I'm not sure if I'm treating the release correctly. I think
# release should show up in the -l (ie -lgmp5) so we don't want to
# add it in twice. Is that correct?
release=""
versuffix=""
major=""
newdeplibs=
droppeddeps=no
case $deplibs_check_method in
pass_all)
# Don't check for shared/static. Everything works.
# This might be a little naive. We might want to check
# whether the library exists or not. But this is on
# osf3 & osf4 and I'm not really sure... Just
# implementing what was already the behavior.
newdeplibs=$deplibs
;;
test_compile)
# This code stresses the "libraries are programs" paradigm to its
# limits. Maybe even breaks it. We compile a program, linking it
# against the deplibs as a proxy for the library. Then we can check
# whether they linked in statically or dynamically with ldd.
$opt_dry_run || $RM conftest.c
cat > conftest.c </dev/null`
$nocaseglob
else
potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
fi
for potent_lib in $potential_libs; do
# Follow soft links.
if ls -lLd "$potent_lib" 2>/dev/null |
$GREP " -> " >/dev/null; then
continue
fi
# The statement above tries to avoid entering an
# endless loop below, in case of cyclic links.
# We might still enter an endless loop, since a link
# loop can be closed while we follow links,
# but so what?
potlib="$potent_lib"
while test -h "$potlib" 2>/dev/null; do
potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
case $potliblink in
[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
esac
done
if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
$SED -e 10q |
$EGREP "$file_magic_regex" > /dev/null; then
func_append newdeplibs " $a_deplib"
a_deplib=""
break 2
fi
done
done
fi
if test -n "$a_deplib" ; then
droppeddeps=yes
echo
$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have"
echo "*** because I did check the linker path looking for a file starting"
if test -z "$potlib" ; then
$ECHO "*** with $libname but no candidates were found. (...for file magic test)"
else
$ECHO "*** with $libname and none of the candidates passed a file format test"
$ECHO "*** using a file magic. Last file checked: $potlib"
fi
fi
;;
*)
# Add a -L argument.
func_append newdeplibs " $a_deplib"
;;
esac
done # Gone through all deplibs.
;;
match_pattern*)
set dummy $deplibs_check_method; shift
match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
for a_deplib in $deplibs; do
case $a_deplib in
-l*)
func_stripname -l '' "$a_deplib"
name=$func_stripname_result
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
*" $a_deplib "*)
func_append newdeplibs " $a_deplib"
a_deplib=""
;;
esac
fi
if test -n "$a_deplib" ; then
libname=`eval "\\$ECHO \"$libname_spec\""`
for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
for potent_lib in $potential_libs; do
potlib="$potent_lib" # see symlink-check above in file_magic test
if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
$EGREP "$match_pattern_regex" > /dev/null; then
func_append newdeplibs " $a_deplib"
a_deplib=""
break 2
fi
done
done
fi
if test -n "$a_deplib" ; then
droppeddeps=yes
echo
$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have"
echo "*** because I did check the linker path looking for a file starting"
if test -z "$potlib" ; then
$ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
else
$ECHO "*** with $libname and none of the candidates passed a file format test"
$ECHO "*** using a regex pattern. Last file checked: $potlib"
fi
fi
;;
*)
# Add a -L argument.
func_append newdeplibs " $a_deplib"
;;
esac
done # Gone through all deplibs.
;;
none | unknown | *)
newdeplibs=""
tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
for i in $predeps $postdeps ; do
# can't use Xsed below, because $i might contain '/'
tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
done
fi
case $tmp_deplibs in
*[!\ \ ]*)
echo
if test "X$deplibs_check_method" = "Xnone"; then
echo "*** Warning: inter-library dependencies are not supported in this platform."
else
echo "*** Warning: inter-library dependencies are not known to be supported."
fi
echo "*** All declared inter-library dependencies are being dropped."
droppeddeps=yes
;;
esac
;;
esac
versuffix=$versuffix_save
major=$major_save
release=$release_save
libname=$libname_save
name=$name_save
case $host in
*-*-rhapsody* | *-*-darwin1.[012])
# On Rhapsody replace the C library with the System framework
newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
;;
esac
if test "$droppeddeps" = yes; then
if test "$module" = yes; then
echo
echo "*** Warning: libtool could not satisfy all declared inter-library"
$ECHO "*** dependencies of module $libname. Therefore, libtool will create"
echo "*** a static module, that should work as long as the dlopening"
echo "*** application is linked with the -dlopen flag."
if test -z "$global_symbol_pipe"; then
echo
echo "*** However, this would only work if libtool was able to extract symbol"
echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
echo "*** not find such a program. So, this module is probably useless."
echo "*** \`nm' from GNU binutils and a full rebuild may help."
fi
if test "$build_old_libs" = no; then
oldlibs="$output_objdir/$libname.$libext"
build_libtool_libs=module
build_old_libs=yes
else
build_libtool_libs=no
fi
else
echo "*** The inter-library dependencies that have been dropped here will be"
echo "*** automatically added whenever a program is linked with this library"
echo "*** or is declared to -dlopen it."
if test "$allow_undefined" = no; then
echo
echo "*** Since this library must not contain undefined symbols,"
echo "*** because either the platform does not support them or"
echo "*** it was explicitly requested with -no-undefined,"
echo "*** libtool will only create a static version of it."
if test "$build_old_libs" = no; then
oldlibs="$output_objdir/$libname.$libext"
build_libtool_libs=module
build_old_libs=yes
else
build_libtool_libs=no
fi
fi
fi
fi
# Done checking deplibs!
deplibs=$newdeplibs
fi
# Time to change all our "foo.ltframework" stuff back to "-framework foo"
case $host in
*-*-darwin*)
newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
;;
esac
# move library search paths that coincide with paths to not yet
# installed libraries to the beginning of the library search list
new_libs=
for path in $notinst_path; do
case " $new_libs " in
*" -L$path/$objdir "*) ;;
*)
case " $deplibs " in
*" -L$path/$objdir "*)
func_append new_libs " -L$path/$objdir" ;;
esac
;;
esac
done
for deplib in $deplibs; do
case $deplib in
-L*)
case " $new_libs " in
*" $deplib "*) ;;
*) func_append new_libs " $deplib" ;;
esac
;;
*) func_append new_libs " $deplib" ;;
esac
done
deplibs="$new_libs"
# All the library-specific variables (install_libdir is set above).
library_names=
old_library=
dlname=
# Test again, we may have decided not to build it any more
if test "$build_libtool_libs" = yes; then
# Remove ${wl} instances when linking with ld.
# FIXME: should test the right _cmds variable.
case $archive_cmds in
*\$LD\ *) wl= ;;
esac
if test "$hardcode_into_libs" = yes; then
# Hardcode the library paths
hardcode_libdirs=
dep_rpath=
rpath="$finalize_rpath"
test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
for libdir in $rpath; do
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
func_replace_sysroot "$libdir"
libdir=$func_replace_sysroot_result
if test -z "$hardcode_libdirs"; then
hardcode_libdirs="$libdir"
else
# Just accumulate the unique libdirs.
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
;;
*)
func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
;;
esac
fi
else
eval flag=\"$hardcode_libdir_flag_spec\"
func_append dep_rpath " $flag"
fi
elif test -n "$runpath_var"; then
case "$perm_rpath " in
*" $libdir "*) ;;
*) func_append perm_rpath " $libdir" ;;
esac
fi
done
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
libdir="$hardcode_libdirs"
eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
fi
if test -n "$runpath_var" && test -n "$perm_rpath"; then
# We should set the runpath_var.
rpath=
for dir in $perm_rpath; do
func_append rpath "$dir:"
done
eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
fi
test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
fi
shlibpath="$finalize_shlibpath"
test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
if test -n "$shlibpath"; then
eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
fi
# Get the real and link names of the library.
eval shared_ext=\"$shrext_cmds\"
eval library_names=\"$library_names_spec\"
set dummy $library_names
shift
realname="$1"
shift
if test -n "$soname_spec"; then
eval soname=\"$soname_spec\"
else
soname="$realname"
fi
if test -z "$dlname"; then
dlname=$soname
fi
lib="$output_objdir/$realname"
linknames=
for link
do
func_append linknames " $link"
done
# Use standard objects if they are pic
test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
test "X$libobjs" = "X " && libobjs=
delfiles=
if test -n "$export_symbols" && test -n "$include_expsyms"; then
$opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
export_symbols="$output_objdir/$libname.uexp"
func_append delfiles " $export_symbols"
fi
orig_export_symbols=
case $host_os in
cygwin* | mingw* | cegcc*)
if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
# exporting using user supplied symfile
if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
# and it's NOT already a .def file. Must figure out
# which of the given symbols are data symbols and tag
# them as such. So, trigger use of export_symbols_cmds.
# export_symbols gets reassigned inside the "prepare
# the list of exported symbols" if statement, so the
# include_expsyms logic still works.
orig_export_symbols="$export_symbols"
export_symbols=
always_export_symbols=yes
fi
fi
;;
esac
# Prepare the list of exported symbols
if test -z "$export_symbols"; then
if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
func_verbose "generating symbol list for \`$libname.la'"
export_symbols="$output_objdir/$libname.exp"
$opt_dry_run || $RM $export_symbols
cmds=$export_symbols_cmds
save_ifs="$IFS"; IFS='~'
for cmd1 in $cmds; do
IFS="$save_ifs"
# Take the normal branch if the nm_file_list_spec branch
# doesn't work or if tool conversion is not needed.
case $nm_file_list_spec~$to_tool_file_cmd in
*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
try_normal_branch=yes
eval cmd=\"$cmd1\"
func_len " $cmd"
len=$func_len_result
;;
*)
try_normal_branch=no
;;
esac
if test "$try_normal_branch" = yes \
&& { test "$len" -lt "$max_cmd_len" \
|| test "$max_cmd_len" -le -1; }
then
func_show_eval "$cmd" 'exit $?'
skipped_export=false
elif test -n "$nm_file_list_spec"; then
func_basename "$output"
output_la=$func_basename_result
save_libobjs=$libobjs
save_output=$output
output=${output_objdir}/${output_la}.nm
func_to_tool_file "$output"
libobjs=$nm_file_list_spec$func_to_tool_file_result
func_append delfiles " $output"
func_verbose "creating $NM input file list: $output"
for obj in $save_libobjs; do
func_to_tool_file "$obj"
$ECHO "$func_to_tool_file_result"
done > "$output"
eval cmd=\"$cmd1\"
func_show_eval "$cmd" 'exit $?'
output=$save_output
libobjs=$save_libobjs
skipped_export=false
else
# The command line is too long to execute in one step.
func_verbose "using reloadable object file for export list..."
skipped_export=:
# Break out early, otherwise skipped_export may be
# set to false by a later but shorter cmd.
break
fi
done
IFS="$save_ifs"
if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
fi
fi
fi
if test -n "$export_symbols" && test -n "$include_expsyms"; then
tmp_export_symbols="$export_symbols"
test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
$opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
fi
if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
# The given exports_symbols file has to be filtered, so filter it.
func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
# FIXME: $output_objdir/$libname.filter potentially contains lots of
# 's' commands which not all seds can handle. GNU sed should be fine
# though. Also, the filter scales superlinearly with the number of
# global variables. join(1) would be nice here, but unfortunately
# isn't a blessed tool.
$opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
func_append delfiles " $export_symbols $output_objdir/$libname.filter"
export_symbols=$output_objdir/$libname.def
$opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
fi
tmp_deplibs=
for test_deplib in $deplibs; do
case " $convenience " in
*" $test_deplib "*) ;;
*)
func_append tmp_deplibs " $test_deplib"
;;
esac
done
deplibs="$tmp_deplibs"
if test -n "$convenience"; then
if test -n "$whole_archive_flag_spec" &&
test "$compiler_needs_object" = yes &&
test -z "$libobjs"; then
# extract the archives, so we have objects to list.
# TODO: could optimize this to just extract one archive.
whole_archive_flag_spec=
fi
if test -n "$whole_archive_flag_spec"; then
save_libobjs=$libobjs
eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
test "X$libobjs" = "X " && libobjs=
else
gentop="$output_objdir/${outputname}x"
func_append generated " $gentop"
func_extract_archives $gentop $convenience
func_append libobjs " $func_extract_archives_result"
test "X$libobjs" = "X " && libobjs=
fi
fi
if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
eval flag=\"$thread_safe_flag_spec\"
func_append linker_flags " $flag"
fi
# Make a backup of the uninstalled library when relinking
if test "$opt_mode" = relink; then
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
fi
# Do each of the archive commands.
if test "$module" = yes && test -n "$module_cmds" ; then
if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
eval test_cmds=\"$module_expsym_cmds\"
cmds=$module_expsym_cmds
else
eval test_cmds=\"$module_cmds\"
cmds=$module_cmds
fi
else
if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
eval test_cmds=\"$archive_expsym_cmds\"
cmds=$archive_expsym_cmds
else
eval test_cmds=\"$archive_cmds\"
cmds=$archive_cmds
fi
fi
if test "X$skipped_export" != "X:" &&
func_len " $test_cmds" &&
len=$func_len_result &&
test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
:
else
# The command line is too long to link in one step, link piecewise
# or, if using GNU ld and skipped_export is not :, use a linker
# script.
# Save the value of $output and $libobjs because we want to
# use them later. If we have whole_archive_flag_spec, we
# want to use save_libobjs as it was before
# whole_archive_flag_spec was expanded, because we can't
# assume the linker understands whole_archive_flag_spec.
# This may have to be revisited, in case too many
# convenience libraries get linked in and end up exceeding
# the spec.
if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
save_libobjs=$libobjs
fi
save_output=$output
func_basename "$output"
output_la=$func_basename_result
# Clear the reloadable object creation command queue and
# initialize k to one.
test_cmds=
concat_cmds=
objlist=
last_robj=
k=1
if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
output=${output_objdir}/${output_la}.lnkscript
func_verbose "creating GNU ld script: $output"
echo 'INPUT (' > $output
for obj in $save_libobjs
do
func_to_tool_file "$obj"
$ECHO "$func_to_tool_file_result" >> $output
done
echo ')' >> $output
func_append delfiles " $output"
func_to_tool_file "$output"
output=$func_to_tool_file_result
elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
output=${output_objdir}/${output_la}.lnk
func_verbose "creating linker input file list: $output"
: > $output
set x $save_libobjs
shift
firstobj=
if test "$compiler_needs_object" = yes; then
firstobj="$1 "
shift
fi
for obj
do
func_to_tool_file "$obj"
$ECHO "$func_to_tool_file_result" >> $output
done
func_append delfiles " $output"
func_to_tool_file "$output"
output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
else
if test -n "$save_libobjs"; then
func_verbose "creating reloadable object files..."
output=$output_objdir/$output_la-${k}.$objext
eval test_cmds=\"$reload_cmds\"
func_len " $test_cmds"
len0=$func_len_result
len=$len0
# Loop over the list of objects to be linked.
for obj in $save_libobjs
do
func_len " $obj"
func_arith $len + $func_len_result
len=$func_arith_result
if test "X$objlist" = X ||
test "$len" -lt "$max_cmd_len"; then
func_append objlist " $obj"
else
# The command $test_cmds is almost too long, add a
# command to the queue.
if test "$k" -eq 1 ; then
# The first file doesn't have a previous command to add.
reload_objs=$objlist
eval concat_cmds=\"$reload_cmds\"
else
# All subsequent reloadable object files will link in
# the last one created.
reload_objs="$objlist $last_robj"
eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
fi
last_robj=$output_objdir/$output_la-${k}.$objext
func_arith $k + 1
k=$func_arith_result
output=$output_objdir/$output_la-${k}.$objext
objlist=" $obj"
func_len " $last_robj"
func_arith $len0 + $func_len_result
len=$func_arith_result
fi
done
# Handle the remaining objects by creating one last
# reloadable object file. All subsequent reloadable object
# files will link in the last one created.
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
reload_objs="$objlist $last_robj"
eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
if test -n "$last_robj"; then
eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
fi
func_append delfiles " $output"
else
output=
fi
if ${skipped_export-false}; then
func_verbose "generating symbol list for \`$libname.la'"
export_symbols="$output_objdir/$libname.exp"
$opt_dry_run || $RM $export_symbols
libobjs=$output
# Append the command to create the export file.
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
if test -n "$last_robj"; then
eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
fi
fi
test -n "$save_libobjs" &&
func_verbose "creating a temporary reloadable object file: $output"
# Loop through the commands generated above and execute them.
save_ifs="$IFS"; IFS='~'
for cmd in $concat_cmds; do
IFS="$save_ifs"
$opt_silent || {
func_quote_for_expand "$cmd"
eval "func_echo $func_quote_for_expand_result"
}
$opt_dry_run || eval "$cmd" || {
lt_exit=$?
# Restore the uninstalled library and exit
if test "$opt_mode" = relink; then
( cd "$output_objdir" && \
$RM "${realname}T" && \
$MV "${realname}U" "$realname" )
fi
exit $lt_exit
}
done
IFS="$save_ifs"
if test -n "$export_symbols_regex" && ${skipped_export-false}; then
func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
fi
fi
if ${skipped_export-false}; then
if test -n "$export_symbols" && test -n "$include_expsyms"; then
tmp_export_symbols="$export_symbols"
test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
$opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
fi
if test -n "$orig_export_symbols"; then
# The given exports_symbols file has to be filtered, so filter it.
func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
# FIXME: $output_objdir/$libname.filter potentially contains lots of
# 's' commands which not all seds can handle. GNU sed should be fine
# though. Also, the filter scales superlinearly with the number of
# global variables. join(1) would be nice here, but unfortunately
# isn't a blessed tool.
$opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
func_append delfiles " $export_symbols $output_objdir/$libname.filter"
export_symbols=$output_objdir/$libname.def
$opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
fi
fi
libobjs=$output
# Restore the value of output.
output=$save_output
if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
test "X$libobjs" = "X " && libobjs=
fi
# Expand the library linking commands again to reset the
# value of $libobjs for piecewise linking.
# Do each of the archive commands.
if test "$module" = yes && test -n "$module_cmds" ; then
if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
cmds=$module_expsym_cmds
else
cmds=$module_cmds
fi
else
if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
cmds=$archive_expsym_cmds
else
cmds=$archive_cmds
fi
fi
fi
if test -n "$delfiles"; then
# Append the command to remove temporary files to $cmds.
eval cmds=\"\$cmds~\$RM $delfiles\"
fi
# Add any objects from preloaded convenience libraries
if test -n "$dlprefiles"; then
gentop="$output_objdir/${outputname}x"
func_append generated " $gentop"
func_extract_archives $gentop $dlprefiles
func_append libobjs " $func_extract_archives_result"
test "X$libobjs" = "X " && libobjs=
fi
save_ifs="$IFS"; IFS='~'
for cmd in $cmds; do
IFS="$save_ifs"
eval cmd=\"$cmd\"
$opt_silent || {
func_quote_for_expand "$cmd"
eval "func_echo $func_quote_for_expand_result"
}
$opt_dry_run || eval "$cmd" || {
lt_exit=$?
# Restore the uninstalled library and exit
if test "$opt_mode" = relink; then
( cd "$output_objdir" && \
$RM "${realname}T" && \
$MV "${realname}U" "$realname" )
fi
exit $lt_exit
}
done
IFS="$save_ifs"
# Restore the uninstalled library and exit
if test "$opt_mode" = relink; then
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
if test -n "$convenience"; then
if test -z "$whole_archive_flag_spec"; then
func_show_eval '${RM}r "$gentop"'
fi
fi
exit $EXIT_SUCCESS
fi
# Create links to the real library.
for linkname in $linknames; do
if test "$realname" != "$linkname"; then
func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
fi
done
# If -module or -export-dynamic was specified, set the dlname.
if test "$module" = yes || test "$export_dynamic" = yes; then
# On all known operating systems, these are identical.
dlname="$soname"
fi
fi
;;
obj)
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
func_warning "\`-dlopen' is ignored for objects"
fi
case " $deplibs" in
*\ -l* | *\ -L*)
func_warning "\`-l' and \`-L' are ignored for objects" ;;
esac
test -n "$rpath" && \
func_warning "\`-rpath' is ignored for objects"
test -n "$xrpath" && \
func_warning "\`-R' is ignored for objects"
test -n "$vinfo" && \
func_warning "\`-version-info' is ignored for objects"
test -n "$release" && \
func_warning "\`-release' is ignored for objects"
case $output in
*.lo)
test -n "$objs$old_deplibs" && \
func_fatal_error "cannot build library object \`$output' from non-libtool objects"
libobj=$output
func_lo2o "$libobj"
obj=$func_lo2o_result
;;
*)
libobj=
obj="$output"
;;
esac
# Delete the old objects.
$opt_dry_run || $RM $obj $libobj
# Objects from convenience libraries. This assumes
# single-version convenience libraries. Whenever we create
# different ones for PIC/non-PIC, this we'll have to duplicate
# the extraction.
reload_conv_objs=
gentop=
# reload_cmds runs $LD directly, so let us get rid of
# -Wl from whole_archive_flag_spec and hope we can get by with
# turning comma into space..
wl=
if test -n "$convenience"; then
if test -n "$whole_archive_flag_spec"; then
eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
else
gentop="$output_objdir/${obj}x"
func_append generated " $gentop"
func_extract_archives $gentop $convenience
reload_conv_objs="$reload_objs $func_extract_archives_result"
fi
fi
# If we're not building shared, we need to use non_pic_objs
test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
# Create the old-style object.
reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
output="$obj"
func_execute_cmds "$reload_cmds" 'exit $?'
# Exit if we aren't doing a library object file.
if test -z "$libobj"; then
if test -n "$gentop"; then
func_show_eval '${RM}r "$gentop"'
fi
exit $EXIT_SUCCESS
fi
if test "$build_libtool_libs" != yes; then
if test -n "$gentop"; then
func_show_eval '${RM}r "$gentop"'
fi
# Create an invalid libtool object if no PIC, so that we don't
# accidentally link it into a program.
# $show "echo timestamp > $libobj"
# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
exit $EXIT_SUCCESS
fi
if test -n "$pic_flag" || test "$pic_mode" != default; then
# Only do commands if we really have different PIC objects.
reload_objs="$libobjs $reload_conv_objs"
output="$libobj"
func_execute_cmds "$reload_cmds" 'exit $?'
fi
if test -n "$gentop"; then
func_show_eval '${RM}r "$gentop"'
fi
exit $EXIT_SUCCESS
;;
prog)
case $host in
*cygwin*) func_stripname '' '.exe' "$output"
output=$func_stripname_result.exe;;
esac
test -n "$vinfo" && \
func_warning "\`-version-info' is ignored for programs"
test -n "$release" && \
func_warning "\`-release' is ignored for programs"
test "$preload" = yes \
&& test "$dlopen_support" = unknown \
&& test "$dlopen_self" = unknown \
&& test "$dlopen_self_static" = unknown && \
func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
case $host in
*-*-rhapsody* | *-*-darwin1.[012])
# On Rhapsody replace the C library is the System framework
compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
;;
esac
case $host in
*-*-darwin*)
# Don't allow lazy linking, it breaks C++ global constructors
# But is supposedly fixed on 10.4 or later (yay!).
if test "$tagname" = CXX ; then
case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
10.[0123])
func_append compile_command " ${wl}-bind_at_load"
func_append finalize_command " ${wl}-bind_at_load"
;;
esac
fi
# Time to change all our "foo.ltframework" stuff back to "-framework foo"
compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
;;
esac
# move library search paths that coincide with paths to not yet
# installed libraries to the beginning of the library search list
new_libs=
for path in $notinst_path; do
case " $new_libs " in
*" -L$path/$objdir "*) ;;
*)
case " $compile_deplibs " in
*" -L$path/$objdir "*)
func_append new_libs " -L$path/$objdir" ;;
esac
;;
esac
done
for deplib in $compile_deplibs; do
case $deplib in
-L*)
case " $new_libs " in
*" $deplib "*) ;;
*) func_append new_libs " $deplib" ;;
esac
;;
*) func_append new_libs " $deplib" ;;
esac
done
compile_deplibs="$new_libs"
func_append compile_command " $compile_deplibs"
func_append finalize_command " $finalize_deplibs"
if test -n "$rpath$xrpath"; then
# If the user specified any rpath flags, then add them.
for libdir in $rpath $xrpath; do
# This is the magic to use -rpath.
case "$finalize_rpath " in
*" $libdir "*) ;;
*) func_append finalize_rpath " $libdir" ;;
esac
done
fi
# Now hardcode the library paths
rpath=
hardcode_libdirs=
for libdir in $compile_rpath $finalize_rpath; do
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
hardcode_libdirs="$libdir"
else
# Just accumulate the unique libdirs.
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
;;
*)
func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
;;
esac
fi
else
eval flag=\"$hardcode_libdir_flag_spec\"
func_append rpath " $flag"
fi
elif test -n "$runpath_var"; then
case "$perm_rpath " in
*" $libdir "*) ;;
*) func_append perm_rpath " $libdir" ;;
esac
fi
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$libdir:"*) ;;
::) dllsearchpath=$libdir;;
*) func_append dllsearchpath ":$libdir";;
esac
case :$dllsearchpath: in
*":$testbindir:"*) ;;
::) dllsearchpath=$testbindir;;
*) func_append dllsearchpath ":$testbindir";;
esac
;;
esac
done
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
libdir="$hardcode_libdirs"
eval rpath=\" $hardcode_libdir_flag_spec\"
fi
compile_rpath="$rpath"
rpath=
hardcode_libdirs=
for libdir in $finalize_rpath; do
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
hardcode_libdirs="$libdir"
else
# Just accumulate the unique libdirs.
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
;;
*)
func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
;;
esac
fi
else
eval flag=\"$hardcode_libdir_flag_spec\"
func_append rpath " $flag"
fi
elif test -n "$runpath_var"; then
case "$finalize_perm_rpath " in
*" $libdir "*) ;;
*) func_append finalize_perm_rpath " $libdir" ;;
esac
fi
done
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
libdir="$hardcode_libdirs"
eval rpath=\" $hardcode_libdir_flag_spec\"
fi
finalize_rpath="$rpath"
if test -n "$libobjs" && test "$build_old_libs" = yes; then
# Transform all the library objects into standard objects.
compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
fi
func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
# template prelinking step
if test -n "$prelink_cmds"; then
func_execute_cmds "$prelink_cmds" 'exit $?'
fi
wrappers_required=yes
case $host in
*cegcc* | *mingw32ce*)
# Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
wrappers_required=no
;;
*cygwin* | *mingw* )
if test "$build_libtool_libs" != yes; then
wrappers_required=no
fi
;;
*)
if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
wrappers_required=no
fi
;;
esac
if test "$wrappers_required" = no; then
# Replace the output file specification.
compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
link_command="$compile_command$compile_rpath"
# We have no uninstalled library dependencies, so finalize right now.
exit_status=0
func_show_eval "$link_command" 'exit_status=$?'
if test -n "$postlink_cmds"; then
func_to_tool_file "$output"
postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
func_execute_cmds "$postlink_cmds" 'exit $?'
fi
# Delete the generated files.
if test -f "$output_objdir/${outputname}S.${objext}"; then
func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
fi
exit $exit_status
fi
if test -n "$compile_shlibpath$finalize_shlibpath"; then
compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
fi
if test -n "$finalize_shlibpath"; then
finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
fi
compile_var=
finalize_var=
if test -n "$runpath_var"; then
if test -n "$perm_rpath"; then
# We should set the runpath_var.
rpath=
for dir in $perm_rpath; do
func_append rpath "$dir:"
done
compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
fi
if test -n "$finalize_perm_rpath"; then
# We should set the runpath_var.
rpath=
for dir in $finalize_perm_rpath; do
func_append rpath "$dir:"
done
finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
fi
fi
if test "$no_install" = yes; then
# We don't need to create a wrapper script.
link_command="$compile_var$compile_command$compile_rpath"
# Replace the output file specification.
link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
# Delete the old output file.
$opt_dry_run || $RM $output
# Link the executable and exit
func_show_eval "$link_command" 'exit $?'
if test -n "$postlink_cmds"; then
func_to_tool_file "$output"
postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
func_execute_cmds "$postlink_cmds" 'exit $?'
fi
exit $EXIT_SUCCESS
fi
if test "$hardcode_action" = relink; then
# Fast installation is not supported
link_command="$compile_var$compile_command$compile_rpath"
relink_command="$finalize_var$finalize_command$finalize_rpath"
func_warning "this platform does not like uninstalled shared libraries"
func_warning "\`$output' will be relinked during installation"
else
if test "$fast_install" != no; then
link_command="$finalize_var$compile_command$finalize_rpath"
if test "$fast_install" = yes; then
relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
else
# fast_install is set to needless
relink_command=
fi
else
link_command="$compile_var$compile_command$compile_rpath"
relink_command="$finalize_var$finalize_command$finalize_rpath"
fi
fi
# Replace the output file specification.
link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
# Delete the old output files.
$opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
func_show_eval "$link_command" 'exit $?'
if test -n "$postlink_cmds"; then
func_to_tool_file "$output_objdir/$outputname"
postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
func_execute_cmds "$postlink_cmds" 'exit $?'
fi
# Now create the wrapper script.
func_verbose "creating $output"
# Quote the relink command for shipping.
if test -n "$relink_command"; then
# Preserve any variables that may affect compiler behavior
for var in $variables_saved_for_relink; do
if eval test -z \"\${$var+set}\"; then
relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
elif eval var_value=\$$var; test -z "$var_value"; then
relink_command="$var=; export $var; $relink_command"
else
func_quote_for_eval "$var_value"
relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
fi
done
relink_command="(cd `pwd`; $relink_command)"
relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
fi
# Only actually do things if not in dry run mode.
$opt_dry_run || {
# win32 will think the script is a binary if it has
# a .exe suffix, so we strip it off here.
case $output in
*.exe) func_stripname '' '.exe' "$output"
output=$func_stripname_result ;;
esac
# test for cygwin because mv fails w/o .exe extensions
case $host in
*cygwin*)
exeext=.exe
func_stripname '' '.exe' "$outputname"
outputname=$func_stripname_result ;;
*) exeext= ;;
esac
case $host in
*cygwin* | *mingw* )
func_dirname_and_basename "$output" "" "."
output_name=$func_basename_result
output_path=$func_dirname_result
cwrappersource="$output_path/$objdir/lt-$output_name.c"
cwrapper="$output_path/$output_name.exe"
$RM $cwrappersource $cwrapper
trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
func_emit_cwrapperexe_src > $cwrappersource
# The wrapper executable is built using the $host compiler,
# because it contains $host paths and files. If cross-
# compiling, it, like the target executable, must be
# executed on the $host or under an emulation environment.
$opt_dry_run || {
$LTCC $LTCFLAGS -o $cwrapper $cwrappersource
$STRIP $cwrapper
}
# Now, create the wrapper script for func_source use:
func_ltwrapper_scriptname $cwrapper
$RM $func_ltwrapper_scriptname_result
trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
$opt_dry_run || {
# note: this script will not be executed, so do not chmod.
if test "x$build" = "x$host" ; then
$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
else
func_emit_wrapper no > $func_ltwrapper_scriptname_result
fi
}
;;
* )
$RM $output
trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
func_emit_wrapper no > $output
chmod +x $output
;;
esac
}
exit $EXIT_SUCCESS
;;
esac
# See if we need to build an old-fashioned archive.
for oldlib in $oldlibs; do
if test "$build_libtool_libs" = convenience; then
oldobjs="$libobjs_save $symfileobj"
addlibs="$convenience"
build_libtool_libs=no
else
if test "$build_libtool_libs" = module; then
oldobjs="$libobjs_save"
build_libtool_libs=no
else
oldobjs="$old_deplibs $non_pic_objects"
if test "$preload" = yes && test -f "$symfileobj"; then
func_append oldobjs " $symfileobj"
fi
fi
addlibs="$old_convenience"
fi
if test -n "$addlibs"; then
gentop="$output_objdir/${outputname}x"
func_append generated " $gentop"
func_extract_archives $gentop $addlibs
func_append oldobjs " $func_extract_archives_result"
fi
# Do each command in the archive commands.
if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
cmds=$old_archive_from_new_cmds
else
# Add any objects from preloaded convenience libraries
if test -n "$dlprefiles"; then
gentop="$output_objdir/${outputname}x"
func_append generated " $gentop"
func_extract_archives $gentop $dlprefiles
func_append oldobjs " $func_extract_archives_result"
fi
# POSIX demands no paths to be encoded in archives. We have
# to avoid creating archives with duplicate basenames if we
# might have to extract them afterwards, e.g., when creating a
# static archive out of a convenience library, or when linking
# the entirety of a libtool archive into another (currently
# not supported by libtool).
if (for obj in $oldobjs
do
func_basename "$obj"
$ECHO "$func_basename_result"
done | sort | sort -uc >/dev/null 2>&1); then
:
else
echo "copying selected object files to avoid basename conflicts..."
gentop="$output_objdir/${outputname}x"
func_append generated " $gentop"
func_mkdir_p "$gentop"
save_oldobjs=$oldobjs
oldobjs=
counter=1
for obj in $save_oldobjs
do
func_basename "$obj"
objbase="$func_basename_result"
case " $oldobjs " in
" ") oldobjs=$obj ;;
*[\ /]"$objbase "*)
while :; do
# Make sure we don't pick an alternate name that also
# overlaps.
newobj=lt$counter-$objbase
func_arith $counter + 1
counter=$func_arith_result
case " $oldobjs " in
*[\ /]"$newobj "*) ;;
*) if test ! -f "$gentop/$newobj"; then break; fi ;;
esac
done
func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
func_append oldobjs " $gentop/$newobj"
;;
*) func_append oldobjs " $obj" ;;
esac
done
fi
func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
tool_oldlib=$func_to_tool_file_result
eval cmds=\"$old_archive_cmds\"
func_len " $cmds"
len=$func_len_result
if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
cmds=$old_archive_cmds
elif test -n "$archiver_list_spec"; then
func_verbose "using command file archive linking..."
for obj in $oldobjs
do
func_to_tool_file "$obj"
$ECHO "$func_to_tool_file_result"
done > $output_objdir/$libname.libcmd
func_to_tool_file "$output_objdir/$libname.libcmd"
oldobjs=" $archiver_list_spec$func_to_tool_file_result"
cmds=$old_archive_cmds
else
# the command line is too long to link in one step, link in parts
func_verbose "using piecewise archive linking..."
save_RANLIB=$RANLIB
RANLIB=:
objlist=
concat_cmds=
save_oldobjs=$oldobjs
oldobjs=
# Is there a better way of finding the last object in the list?
for obj in $save_oldobjs
do
last_oldobj=$obj
done
eval test_cmds=\"$old_archive_cmds\"
func_len " $test_cmds"
len0=$func_len_result
len=$len0
for obj in $save_oldobjs
do
func_len " $obj"
func_arith $len + $func_len_result
len=$func_arith_result
func_append objlist " $obj"
if test "$len" -lt "$max_cmd_len"; then
:
else
# the above command should be used before it gets too long
oldobjs=$objlist
if test "$obj" = "$last_oldobj" ; then
RANLIB=$save_RANLIB
fi
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
objlist=
len=$len0
fi
done
RANLIB=$save_RANLIB
oldobjs=$objlist
if test "X$oldobjs" = "X" ; then
eval cmds=\"\$concat_cmds\"
else
eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
fi
fi
fi
func_execute_cmds "$cmds" 'exit $?'
done
test -n "$generated" && \
func_show_eval "${RM}r$generated"
# Now create the libtool archive.
case $output in
*.la)
old_library=
test "$build_old_libs" = yes && old_library="$libname.$libext"
func_verbose "creating $output"
# Preserve any variables that may affect compiler behavior
for var in $variables_saved_for_relink; do
if eval test -z \"\${$var+set}\"; then
relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
elif eval var_value=\$$var; test -z "$var_value"; then
relink_command="$var=; export $var; $relink_command"
else
func_quote_for_eval "$var_value"
relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
fi
done
# Quote the link command for shipping.
relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
if test "$hardcode_automatic" = yes ; then
relink_command=
fi
# Only create the output if not a dry run.
$opt_dry_run || {
for installed in no yes; do
if test "$installed" = yes; then
if test -z "$install_libdir"; then
break
fi
output="$output_objdir/$outputname"i
# Replace all uninstalled libtool libraries with the installed ones
newdependency_libs=
for deplib in $dependency_libs; do
case $deplib in
*.la)
func_basename "$deplib"
name="$func_basename_result"
func_resolve_sysroot "$deplib"
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
test -z "$libdir" && \
func_fatal_error "\`$deplib' is not a valid libtool archive"
func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
;;
-L*)
func_stripname -L '' "$deplib"
func_replace_sysroot "$func_stripname_result"
func_append newdependency_libs " -L$func_replace_sysroot_result"
;;
-R*)
func_stripname -R '' "$deplib"
func_replace_sysroot "$func_stripname_result"
func_append newdependency_libs " -R$func_replace_sysroot_result"
;;
*) func_append newdependency_libs " $deplib" ;;
esac
done
dependency_libs="$newdependency_libs"
newdlfiles=
for lib in $dlfiles; do
case $lib in
*.la)
func_basename "$lib"
name="$func_basename_result"
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
test -z "$libdir" && \
func_fatal_error "\`$lib' is not a valid libtool archive"
func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
;;
*) func_append newdlfiles " $lib" ;;
esac
done
dlfiles="$newdlfiles"
newdlprefiles=
for lib in $dlprefiles; do
case $lib in
*.la)
# Only pass preopened files to the pseudo-archive (for
# eventual linking with the app. that links it) if we
# didn't already link the preopened objects directly into
# the library:
func_basename "$lib"
name="$func_basename_result"
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
test -z "$libdir" && \
func_fatal_error "\`$lib' is not a valid libtool archive"
func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
;;
esac
done
dlprefiles="$newdlprefiles"
else
newdlfiles=
for lib in $dlfiles; do
case $lib in
[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
*) abs=`pwd`"/$lib" ;;
esac
func_append newdlfiles " $abs"
done
dlfiles="$newdlfiles"
newdlprefiles=
for lib in $dlprefiles; do
case $lib in
[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
*) abs=`pwd`"/$lib" ;;
esac
func_append newdlprefiles " $abs"
done
dlprefiles="$newdlprefiles"
fi
$RM $output
# place dlname in correct position for cygwin
# In fact, it would be nice if we could use this code for all target
# systems that can't hard-code library paths into their executables
# and that have no shared library path variable independent of PATH,
# but it turns out we can't easily determine that from inspecting
# libtool variables, so we have to hard-code the OSs to which it
# applies here; at the moment, that means platforms that use the PE
# object format with DLL files. See the long comment at the top of
# tests/bindir.at for full details.
tdlname=$dlname
case $host,$output,$installed,$module,$dlname in
*cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
# If a -bindir argument was supplied, place the dll there.
if test "x$bindir" != x ;
then
func_relative_path "$install_libdir" "$bindir"
tdlname=$func_relative_path_result$dlname
else
# Otherwise fall back on heuristic.
tdlname=../bin/$dlname
fi
;;
esac
$ECHO > $output "\
# $outputname - a libtool library file
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='$tdlname'
# Names of this library.
library_names='$library_names'
# The name of the static archive.
old_library='$old_library'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags='$new_inherited_linker_flags'
# Libraries that this one depends upon.
dependency_libs='$dependency_libs'
# Names of additional weak libraries provided by this library
weak_library_names='$weak_libs'
# Version information for $libname.
current=$current
age=$age
revision=$revision
# Is this an already installed library?
installed=$installed
# Should we warn about portability when linking against -modules?
shouldnotlink=$module
# Files to dlopen/dlpreopen
dlopen='$dlfiles'
dlpreopen='$dlprefiles'
# Directory that this library needs to be installed in:
libdir='$install_libdir'"
if test "$installed" = no && test "$need_relink" = yes; then
$ECHO >> $output "\
relink_command=\"$relink_command\""
fi
done
}
# Do a symbolic link so that the libtool archive can be found in
# LD_LIBRARY_PATH before the program is installed.
func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
;;
esac
exit $EXIT_SUCCESS
}
{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
func_mode_link ${1+"$@"}
# func_mode_uninstall arg...
func_mode_uninstall ()
{
$opt_debug
RM="$nonopt"
files=
rmforce=
exit_status=0
# This variable tells wrapper scripts just to set variables rather
# than running their programs.
libtool_install_magic="$magic"
for arg
do
case $arg in
-f) func_append RM " $arg"; rmforce=yes ;;
-*) func_append RM " $arg" ;;
*) func_append files " $arg" ;;
esac
done
test -z "$RM" && \
func_fatal_help "you must specify an RM program"
rmdirs=
for file in $files; do
func_dirname "$file" "" "."
dir="$func_dirname_result"
if test "X$dir" = X.; then
odir="$objdir"
else
odir="$dir/$objdir"
fi
func_basename "$file"
name="$func_basename_result"
test "$opt_mode" = uninstall && odir="$dir"
# Remember odir for removal later, being careful to avoid duplicates
if test "$opt_mode" = clean; then
case " $rmdirs " in
*" $odir "*) ;;
*) func_append rmdirs " $odir" ;;
esac
fi
# Don't error if the file doesn't exist and rm -f was used.
if { test -L "$file"; } >/dev/null 2>&1 ||
{ test -h "$file"; } >/dev/null 2>&1 ||
test -f "$file"; then
:
elif test -d "$file"; then
exit_status=1
continue
elif test "$rmforce" = yes; then
continue
fi
rmfiles="$file"
case $name in
*.la)
# Possibly a libtool archive, so verify it.
if func_lalib_p "$file"; then
func_source $dir/$name
# Delete the libtool libraries and symlinks.
for n in $library_names; do
func_append rmfiles " $odir/$n"
done
test -n "$old_library" && func_append rmfiles " $odir/$old_library"
case "$opt_mode" in
clean)
case " $library_names " in
*" $dlname "*) ;;
*) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
esac
test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
;;
uninstall)
if test -n "$library_names"; then
# Do each command in the postuninstall commands.
func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
fi
if test -n "$old_library"; then
# Do each command in the old_postuninstall commands.
func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
fi
# FIXME: should reinstall the best remaining shared library.
;;
esac
fi
;;
*.lo)
# Possibly a libtool object, so verify it.
if func_lalib_p "$file"; then
# Read the .lo file
func_source $dir/$name
# Add PIC object to the list of files to remove.
if test -n "$pic_object" &&
test "$pic_object" != none; then
func_append rmfiles " $dir/$pic_object"
fi
# Add non-PIC object to the list of files to remove.
if test -n "$non_pic_object" &&
test "$non_pic_object" != none; then
func_append rmfiles " $dir/$non_pic_object"
fi
fi
;;
*)
if test "$opt_mode" = clean ; then
noexename=$name
case $file in
*.exe)
func_stripname '' '.exe' "$file"
file=$func_stripname_result
func_stripname '' '.exe' "$name"
noexename=$func_stripname_result
# $file with .exe has already been added to rmfiles,
# add $file without .exe
func_append rmfiles " $file"
;;
esac
# Do a test to see if this is a libtool program.
if func_ltwrapper_p "$file"; then
if func_ltwrapper_executable_p "$file"; then
func_ltwrapper_scriptname "$file"
relink_command=
func_source $func_ltwrapper_scriptname_result
func_append rmfiles " $func_ltwrapper_scriptname_result"
else
relink_command=
func_source $dir/$noexename
fi
# note $name still contains .exe if it was in $file originally
# as does the version of $file that was added into $rmfiles
func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
if test "$fast_install" = yes && test -n "$relink_command"; then
func_append rmfiles " $odir/lt-$name"
fi
if test "X$noexename" != "X$name" ; then
func_append rmfiles " $odir/lt-${noexename}.c"
fi
fi
fi
;;
esac
func_show_eval "$RM $rmfiles" 'exit_status=1'
done
# Try to remove the ${objdir}s in the directories where we deleted files
for dir in $rmdirs; do
if test -d "$dir"; then
func_show_eval "rmdir $dir >/dev/null 2>&1"
fi
done
exit $exit_status
}
{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
func_mode_uninstall ${1+"$@"}
test -z "$opt_mode" && {
help="$generic_help"
func_fatal_help "you must specify a MODE"
}
test -z "$exec_cmd" && \
func_fatal_help "invalid operation mode \`$opt_mode'"
if test -n "$exec_cmd"; then
eval exec "$exec_cmd"
exit $EXIT_FAILURE
fi
exit $exit_status
# The TAGs below are defined such that we never get into a situation
# in which we disable both kinds of libraries. Given conflicting
# choices, we go for a static library, that is the most portable,
# since we can't tell whether shared libraries were disabled because
# the user asked for that or because the platform doesn't support
# them. This is particularly important on AIX, because we don't
# support having both static and shared libraries enabled at the same
# time on that platform, so we default to a shared-only configuration.
# If a disable-shared tag is given, we'll fallback to a static-only
# configuration. But we'll never go from static-only to shared-only.
# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
build_libtool_libs=no
build_old_libs=yes
# ### END LIBTOOL TAG CONFIG: disable-shared
# ### BEGIN LIBTOOL TAG CONFIG: disable-static
build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
# ### END LIBTOOL TAG CONFIG: disable-static
# Local Variables:
# mode:shell-script
# sh-indentation:2
# End:
# vi:sw=2
parser-3.4.3/INSTALL 000644 000000 000000 00000011130 12003146746 014144 0 ustar 00root wheel 000000 000000 $Id: INSTALL,v 1.57 2012/07/23 04:07:02 moko Exp $
1.What is the process to compile Parser3?
Just start ./buildall script and you would get $HOME/parser3install/bin/parser3 binary.
NOTE:
In case you do not need XML support, use ./buildall --without-xml
NOTE:
If case you need apache parser module (DSO), use ./buildall --with-apache
NOTE:
If you have gc, prce, libxml and libxslt installed, you can use ./configure --with-xml
NOTE:
In case you later would experience problems with gcc runtime exception handling
(most notable when reporting sql-related problems), pass this to buildall script:
--with-sjlj-exceptions (HPUX is reported to have such problems)
NOTE:
On some systems there are no "make" and you should run 'gmake', change buildall script accordingly then.
2.What is the process to install Parser3?
Copy files from $HOME/parser3install directory into your cgi-bin directory.
Then install Parser3 to handle documents, step-by-step instrunctions:
http://www.parser.ru/en/docs/lang/install4apachecgi.htm" in English
http://www.parser.ru/docs/lang/install4apachecgi.htm" in Russian
Directory layout:
bin/
parser3 -- CGI and command line Parser3 interpreter
auto.p.dist -- configuration file sample,
copy it to auto.p and adjust to your needs
share/
charsets/
parser3.charsets/ -- charset definition files
koi8-r.cfg -- cyrillic charset [KOI8-R encoding]
windows-1251.cfg -- cyrillic charset [windows-1251 encoding]
...
3.I have heard about $mail:receive experimental support, how do I use it?
Just start ./buildall --with-mailreceive.
If you have glib and gmime installed, you can run ./configure --with-mailreceive.
4.Security issues
You can disable any exec operations by setting --disable-execs option.
file::exec, file::cgi and mail:send (unix version) methods would be disabled.
You can enable reading and executing files, not belonging to group+user
other then effective by setting --disable-safe-mode option.
You can disable user-configured sendmail commands by forcing it, setting
"--with=sendmail=COMMAND" option.
5.Since Parser 3.4.0 the several optimisations were implemented.
If you experience problems you can try to disable them by commenting corresponding
defines and recompiling parser3.
src/include/pa_opcode.h
#define OPTIMIZE_BYTECODE_GET_CLASS -- $a:
#define OPTIMIZE_BYTECODE_GET_ELEMENT -- $a ^a
#define OPTIMIZE_BYTECODE_GET_OBJECT_ELEMENT -- $a.b ^a.b
#define OPTIMIZE_BYTECODE_GET_OBJECT_VAR_ELEMENT -- $a.$b ^a.$b
#define OPTIMIZE_BYTECODE_GET_SELF_ELEMENT -- $self.a ^self.a
#define OPTIMIZE_BYTECODE_CONSTRUCT -- $a(expr), $a[value]
$.a(expr), $.a[value]
$self.a(expr), $self.a[value]
#define OPTIMIZE_BYTECODE_CUT_REM_OPERATOR -- cut rem operator with any number of params during compilation
#define OPTIMIZE_BYTECODE_STRING_POOL -- simplifying string's bytecode into expression
src/include/pa_string.h
#define HASH_CODE_CACHING -- calculated hash codes are cached and used for sequential hash lookups
src/include/pa_memory.h
#define USE_DESTRUCTORS -- destructors are used to decrease memory consumption during code
processing and make ^memory:compact[] calls non-essential.
src/types/pa_method.h
#define OPTIMIZE_CALL -- allows faster operators execution by eliminating method frame
with local variables creation and extra write context switches.
#define OPTIMIZE_RESULT -- parser methods are marked when the $result variable was used.
This allows write operations and context switching optimization.
src/types/pa_wwrapper.h
#define OPTIMIZE_SINGLE_STRING_WRITE -- reuse original VString in single string assignments.
src/lib/cord/include/cord.h
#define CORD_CAT_OPTIMIZATION -- CORD library never modifies source concatenations. But in parser
write operations it is safe to modify them and save some memory.
#define CORD_CHARS_CACHE -- language cords with same language and length are cached and reused.
src/include/pa_string.h
#define STRING_LENGTH_CACHING -- cache String::Body.length() for char* strings
src/include/pa_hash.h
#define HASH_ORDER -- hash keys are iterated in the order of insertion
parser-3.4.3/install-sh 000755 000000 000000 00000033256 11764645505 015146 0 ustar 00root wheel 000000 000000 #!/bin/sh
# install - install a program, script, or datafile
scriptversion=2011-01-19.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# 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.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
# Protect names problematic for `test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
# Protect names problematic for `test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names problematic for `test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set fnord $dstdir
shift
$posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# 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 $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:
parser-3.4.3/missing 000755 000000 000000 00000026233 11764645505 014536 0 ustar 00root wheel 000000 000000 #! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2009-04-28.21; # UTC
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
# 2008, 2009 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard , 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, see .
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-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
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
\`g' are ignored when checking the name.
Send bug reports to ."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# normalize program name to check for.
program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program). This is about non-GNU programs, so use $1 not
# $program.
case $1 in
lex*|yacc*)
# Not GNU programs, they don't have --version.
;;
tar*)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $program in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. 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 $msg. You should only need it if
you modified \`${configure_ac}'. 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 $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
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$/.in/' |
while read f; do touch "$f"; done
;;
autom4te*)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison*|yacc*)
echo 1>&2 "\
WARNING: \`$1' $msg. 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."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex*|flex*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit $?
fi
;;
makeinfo*)
echo 1>&2 "\
WARNING: \`$1' is $msg. 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."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar*)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
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 prerequisites 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
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:
parser-3.4.3/config.sub 000644 000000 000000 00000105052 11764645505 015114 0 ustar 00root wheel 000000 000000 #! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011 Free Software Foundation, Inc.
timestamp='2011-10-08'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# can handle that machine. It does not imply ALL GNU software can.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Please send patches to . Submit a context
# diff and a properly formatted GNU ChangeLog entry.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
# Each package is responsible for reporting which valid configurations
# it does not support. The user should be able to distinguish
# a failure to support a valid configuration from a meaningless
# configuration.
# The goal of this file is to map all the various variations of a given
# machine specification into a single specification in the form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or in some cases, the newer four-part form:
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS
$0 [OPTION] ALIAS
Canonicalize a configuration name.
Operation modes:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
Report bugs and patches to ."
version="\
GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try \`$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
echo "$timestamp" ; exit ;;
--version | -v )
echo "$version" ; exit ;;
--help | --h* | -h )
echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
break ;;
-* )
echo "$me: invalid option $1$help"
exit 1 ;;
*local*)
# First pass through any local machine types.
echo $1
exit ;;
* )
break ;;
esac
done
case $# in
0) echo "$me: missing argument$help" >&2
exit 1;;
1) ;;
*) echo "$me: too many arguments$help" >&2
exit 1;;
esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
then os=`echo $1 | sed 's/.*-/-/'`
else os=; fi
;;
esac
### Let's recognize common machines as not being operating systems so
### that things like config.sub decstation-3100 work. We also
### recognize some manufacturers as not being operating systems, so we
### can provide default operating systems below.
case $os in
-sun*os*)
# Prevent following clause from handling this invalid input.
;;
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple | -axis | -knuth | -cray | -microblaze)
os=
basic_machine=$1
;;
-bluegene*)
os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
basic_machine=$1
;;
-scout)
;;
-wrs)
os=-vxworks
basic_machine=$1
;;
-chorusos*)
os=-chorusos
basic_machine=$1
;;
-chorusrdb)
os=-chorusrdb
basic_machine=$1
;;
-hiux*)
os=-hiuxwe2
;;
-sco6)
os=-sco5v6
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco5)
os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-udk*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-lynx*)
os=-lynxos
;;
-ptx*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
;;
-windowsnt*)
os=`echo $os | sed -e 's/windowsnt/winnt/'`
;;
-psos*)
os=-psos
;;
-mint | -mint[0-9]*)
basic_machine=m68k-atari
os=-mint
;;
esac
# Decode aliases for certain CPU-COMPANY combinations.
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
| be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
| nios | nios2 \
| ns16k | ns32k \
| open8 \
| or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
| rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu \
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
c54x)
basic_machine=tic54x-unknown
;;
c55x)
basic_machine=tic55x-unknown
;;
c6x)
basic_machine=tic6x-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12 | picochip)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
os=-none
;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;;
ms1)
basic_machine=mt-unknown
;;
strongarm | thumb | xscale)
basic_machine=arm-unknown
;;
xscaleeb)
basic_machine=armeb-unknown
;;
xscaleel)
basic_machine=armel-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
*-*-*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
| mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \
| mips64r5900-* | mips64r5900el-* \
| mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
| romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
| tron-* \
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
;;
# Recognize the basic CPU types without company name, with glob match.
xtensa*)
basic_machine=$basic_machine-unknown
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
basic_machine=i386-unknown
os=-bsd
;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
basic_machine=m68000-att
;;
3b*)
basic_machine=we32k-att
;;
a29khif)
basic_machine=a29k-amd
os=-udi
;;
abacus)
basic_machine=abacus-unknown
;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
;;
alliant | fx80)
basic_machine=fx80-alliant
;;
altos | altos3068)
basic_machine=m68k-altos
;;
am29k)
basic_machine=a29k-none
os=-bsd
;;
amd64)
basic_machine=x86_64-pc
;;
amd64-*)
basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
amdahl)
basic_machine=580-amdahl
os=-sysv
;;
amiga | amiga-*)
basic_machine=m68k-unknown
;;
amigaos | amigados)
basic_machine=m68k-unknown
os=-amigaos
;;
amigaunix | amix)
basic_machine=m68k-unknown
os=-sysv4
;;
apollo68)
basic_machine=m68k-apollo
os=-sysv
;;
apollo68bsd)
basic_machine=m68k-apollo
os=-bsd
;;
aros)
basic_machine=i386-pc
os=-aros
;;
aux)
basic_machine=m68k-apple
os=-aux
;;
balance)
basic_machine=ns32k-sequent
os=-dynix
;;
blackfin)
basic_machine=bfin-unknown
os=-linux
;;
blackfin-*)
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
bluegene*)
basic_machine=powerpc-ibm
os=-cnk
;;
c54x-*)
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c55x-*)
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c6x-*)
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c90)
basic_machine=c90-cray
os=-unicos
;;
cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
convex-c1)
basic_machine=c1-convex
os=-bsd
;;
convex-c2)
basic_machine=c2-convex
os=-bsd
;;
convex-c32)
basic_machine=c32-convex
os=-bsd
;;
convex-c34)
basic_machine=c34-convex
os=-bsd
;;
convex-c38)
basic_machine=c38-convex
os=-bsd
;;
cray | j90)
basic_machine=j90-cray
os=-unicos
;;
craynv)
basic_machine=craynv-cray
os=-unicosmp
;;
cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
crds | unos)
basic_machine=m68k-crds
;;
crisv32 | crisv32-* | etraxfs*)
basic_machine=crisv32-axis
;;
cris | cris-* | etrax*)
basic_machine=cris-axis
;;
crx)
basic_machine=crx-unknown
os=-elf
;;
da30 | da30-*)
basic_machine=m68k-da30
;;
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec
;;
decsystem10* | dec10*)
basic_machine=pdp10-dec
os=-tops10
;;
decsystem20* | dec20*)
basic_machine=pdp10-dec
os=-tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
basic_machine=m68k-motorola
;;
delta88)
basic_machine=m88k-motorola
os=-sysv3
;;
dicos)
basic_machine=i686-pc
os=-dicos
;;
djgpp)
basic_machine=i586-pc
os=-msdosdjgpp
;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
;;
dpx2* | dpx2*-bull)
basic_machine=m68k-bull
os=-sysv3
;;
ebmon29k)
basic_machine=a29k-amd
os=-ebmon
;;
elxsi)
basic_machine=elxsi-elxsi
os=-bsd
;;
encore | umax | mmax)
basic_machine=ns32k-encore
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
os=-ose
;;
fx2800)
basic_machine=i860-alliant
;;
genix)
basic_machine=ns32k-ns
;;
gmicro)
basic_machine=tron-gmicro
os=-sysv
;;
go32)
basic_machine=i386-pc
os=-go32
;;
h3050r* | hiux*)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
h8300hms)
basic_machine=h8300-hitachi
os=-hms
;;
h8300xray)
basic_machine=h8300-hitachi
os=-xray
;;
h8500hms)
basic_machine=h8500-hitachi
os=-hms
;;
harris)
basic_machine=m88k-harris
os=-sysv3
;;
hp300-*)
basic_machine=m68k-hp
;;
hp300bsd)
basic_machine=m68k-hp
os=-bsd
;;
hp300hpux)
basic_machine=m68k-hp
os=-hpux
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
basic_machine=m68000-hp
;;
hp9k3[2-9][0-9])
basic_machine=m68k-hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
basic_machine=hppa1.1-hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
basic_machine=hppa1.1-hp
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
basic_machine=hppa1.1-hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
basic_machine=hppa1.1-hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hppa-next)
os=-nextstep3
;;
hppaosf)
basic_machine=hppa1.1-hp
os=-osf
;;
hppro)
basic_machine=hppa1.1-hp
os=-proelf
;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
;;
i*86v4*)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv4
;;
i*86v)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv
;;
i*86sol2)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
i386mach)
basic_machine=i386-mach
os=-mach
;;
i386-vsta | vsta)
basic_machine=i386-unknown
os=-vsta
;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
-irix*)
;;
*)
os=-irix4
;;
esac
;;
isi68 | isi)
basic_machine=m68k-isi
os=-sysv
;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
;;
m68knommu-*)
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
m88k-omron*)
basic_machine=m88k-omron
;;
magnum | m3230)
basic_machine=mips-mips
os=-sysv
;;
merlin)
basic_machine=ns32k-utek
os=-sysv
;;
microblaze)
basic_machine=microblaze-xilinx
;;
mingw32)
basic_machine=i386-pc
os=-mingw32
;;
mingw32ce)
basic_machine=arm-unknown
os=-mingw32ce
;;
miniframe)
basic_machine=m68000-convergent
;;
*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
basic_machine=m68k-atari
os=-mint
;;
mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;;
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
monitor)
basic_machine=m68k-rom68k
os=-coff
;;
morphos)
basic_machine=powerpc-unknown
os=-morphos
;;
msdos)
basic_machine=i386-pc
os=-msdos
;;
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
nacl)
basic_machine=le32-unknown
os=-nacl
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
;;
netbsd386)
basic_machine=i386-unknown
os=-netbsd
;;
netwinder)
basic_machine=armv4l-rebel
os=-linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
os=-newsos
;;
news1000)
basic_machine=m68030-sony
os=-newsos
;;
news-3600 | risc-news)
basic_machine=mips-sony
os=-newsos
;;
necv70)
basic_machine=v70-nec
os=-sysv
;;
next | m*-next )
basic_machine=m68k-next
case $os in
-nextstep* )
;;
-ns2*)
os=-nextstep2
;;
*)
os=-nextstep3
;;
esac
;;
nh3000)
basic_machine=m68k-harris
os=-cxux
;;
nh[45]000)
basic_machine=m88k-harris
os=-cxux
;;
nindy960)
basic_machine=i960-intel
os=-nindy
;;
mon960)
basic_machine=i960-intel
os=-mon960
;;
nonstopux)
basic_machine=mips-compaq
os=-nonstopux
;;
np1)
basic_machine=np1-gould
;;
neo-tandem)
basic_machine=neo-tandem
;;
nse-tandem)
basic_machine=nse-tandem
;;
nsr-tandem)
basic_machine=nsr-tandem
;;
op50n-* | op60c-*)
basic_machine=hppa1.1-oki
os=-proelf
;;
openrisc | openrisc-*)
basic_machine=or32-unknown
;;
os400)
basic_machine=powerpc-ibm
os=-os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
os=-ose
;;
os68k)
basic_machine=m68k-none
os=-os68k
;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
paragon)
basic_machine=i860-intel
os=-osf
;;
parisc)
basic_machine=hppa-unknown
os=-linux
;;
parisc-*)
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
pbd)
basic_machine=sparc-tti
;;
pbb)
basic_machine=m68k-tti
;;
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pc98)
basic_machine=i386-pc
;;
pc98-*)
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
pentiumpro | p6 | 6x86 | athlon | athlon_*)
basic_machine=i686-pc
;;
pentiumii | pentium2 | pentiumiii | pentium3)
basic_machine=i686-pc
;;
pentium4)
basic_machine=i786-pc
;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | 6x86-* | athlon-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentium4-*)
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pn)
basic_machine=pn-gould
;;
power) basic_machine=power-ibm
;;
ppc | ppcbe) basic_machine=powerpc-unknown
;;
ppc-* | ppcbe-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
;;
ppc64le-* | powerpc64little-*)
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ps2)
basic_machine=i386-ibm
;;
pw32)
basic_machine=i586-unknown
os=-pw32
;;
rdos)
basic_machine=i386-pc
os=-rdos
;;
rom68k)
basic_machine=m68k-rom68k
os=-coff
;;
rm[46]00)
basic_machine=mips-siemens
;;
rtpc | rtpc-*)
basic_machine=romp-ibm
;;
s390 | s390-*)
basic_machine=s390-ibm
;;
s390x | s390x-*)
basic_machine=s390x-ibm
;;
sa29200)
basic_machine=a29k-amd
os=-udi
;;
sb1)
basic_machine=mipsisa64sb1-unknown
;;
sb1el)
basic_machine=mipsisa64sb1el-unknown
;;
sde)
basic_machine=mipsisa32-sde
os=-elf
;;
sei)
basic_machine=mips-sei
os=-seiux
;;
sequent)
basic_machine=i386-sequent
;;
sh)
basic_machine=sh-hitachi
os=-hms
;;
sh5el)
basic_machine=sh5le-unknown
;;
sh64)
basic_machine=sh64-unknown
;;
sparclite-wrs | simso-wrs)
basic_machine=sparclite-wrs
os=-vxworks
;;
sps7)
basic_machine=m68k-bull
os=-sysv2
;;
spur)
basic_machine=spur-unknown
;;
st2000)
basic_machine=m68k-tandem
;;
stratus)
basic_machine=i860-stratus
os=-sysv4
;;
strongarm-* | thumb-*)
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
sun2)
basic_machine=m68000-sun
;;
sun2os3)
basic_machine=m68000-sun
os=-sunos3
;;
sun2os4)
basic_machine=m68000-sun
os=-sunos4
;;
sun3os3)
basic_machine=m68k-sun
os=-sunos3
;;
sun3os4)
basic_machine=m68k-sun
os=-sunos4
;;
sun4os3)
basic_machine=sparc-sun
os=-sunos3
;;
sun4os4)
basic_machine=sparc-sun
os=-sunos4
;;
sun4sol2)
basic_machine=sparc-sun
os=-solaris2
;;
sun3 | sun3-*)
basic_machine=m68k-sun
;;
sun4)
basic_machine=sparc-sun
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
sv1)
basic_machine=sv1-cray
os=-unicos
;;
symmetry)
basic_machine=i386-sequent
os=-dynix
;;
t3e)
basic_machine=alphaev5-cray
os=-unicos
;;
t90)
basic_machine=t90-cray
os=-unicos
;;
tile*)
basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
basic_machine=mipstx39-unknown
;;
tx39el)
basic_machine=mipstx39el-unknown
;;
toad1)
basic_machine=pdp10-xkl
os=-tops20
;;
tower | tower-32)
basic_machine=m68k-ncr
;;
tpf)
basic_machine=s390x-ibm
os=-tpf
;;
udi29k)
basic_machine=a29k-amd
os=-udi
;;
ultra3)
basic_machine=a29k-nyu
os=-sym1
;;
v810 | necv810)
basic_machine=v810-nec
os=-none
;;
vaxv)
basic_machine=vax-dec
os=-sysv
;;
vms)
basic_machine=vax-dec
os=-vms
;;
vpp*|vx|vx-*)
basic_machine=f301-fujitsu
;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
;;
vxworks68)
basic_machine=m68k-wrs
os=-vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
os=-vxworks
;;
w65*)
basic_machine=w65-wdc
os=-none
;;
w89k-*)
basic_machine=hppa1.1-winbond
os=-proelf
;;
xbox)
basic_machine=i686-pc
os=-mingw32
;;
xps | xps100)
basic_machine=xps100-honeywell
;;
xscale-* | xscalee[bl]-*)
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
;;
ymp)
basic_machine=ymp-cray
os=-unicos
;;
z8k-*-coff)
basic_machine=z8k-unknown
os=-sim
;;
z80-*-coff)
basic_machine=z80-unknown
os=-sim
;;
none)
basic_machine=none-none
os=-none
;;
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
w89k)
basic_machine=hppa1.1-winbond
;;
op50n)
basic_machine=hppa1.1-oki
;;
op60c)
basic_machine=hppa1.1-oki
;;
romp)
basic_machine=romp-ibm
;;
mmix)
basic_machine=mmix-knuth
;;
rs6000)
basic_machine=rs6000-ibm
;;
vax)
basic_machine=vax-dec
;;
pdp10)
# there are many clones, so DEC is not a safe bet
basic_machine=pdp10-unknown
;;
pdp11)
basic_machine=pdp11-dec
;;
we32k)
basic_machine=we32k-att
;;
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
basic_machine=sparc-sun
;;
cydra)
basic_machine=cydra-cydrome
;;
orion)
basic_machine=orion-highlevel
;;
orion105)
basic_machine=clipper-highlevel
;;
mac | mpw | mac-mpw)
basic_machine=m68k-apple
;;
pmac | pmac-mpw)
basic_machine=powerpc-apple
;;
*-unknown)
# Make sure to match an already-canonicalized machine name.
;;
*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
esac
# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
*-digital*)
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
;;
*-commodore*)
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
;;
*)
;;
esac
# Decode manufacturer-specific aliases for certain operating systems.
if [ x"$os" != x"" ]
then
case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
-auroraux)
os=-auroraux
;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
-solaris)
os=-solaris2
;;
-svr4*)
os=-sysv4
;;
-unixware*)
os=-sysv4.2uw
;;
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
# First accept the basic system types.
# The portable systems comes first.
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
case $basic_machine in
x86-* | i*86-*)
;;
*)
os=-nto$os
;;
esac
;;
-nto-qnx*)
;;
-nto*)
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
-mac*)
os=`echo $os | sed -e 's|mac|macos|'`
;;
-linux-dietlibc)
os=-linux-dietlibc
;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'`
;;
-sunos6*)
os=`echo $os | sed -e 's|sunos6|solaris3|'`
;;
-opened*)
os=-openedition
;;
-os400*)
os=-os400
;;
-wince*)
os=-wince
;;
-osfrose*)
os=-osfrose
;;
-osf*)
os=-osf
;;
-utek*)
os=-bsd
;;
-dynix*)
os=-bsd
;;
-acis*)
os=-aos
;;
-atheos*)
os=-atheos
;;
-syllable*)
os=-syllable
;;
-386bsd)
os=-bsd
;;
-ctix* | -uts*)
os=-sysv
;;
-nova*)
os=-rtmk-nova
;;
-ns2 )
os=-nextstep2
;;
-nsk*)
os=-nsk
;;
# Preserve the version number of sinix5.
-sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
-sinix*)
os=-sysv4
;;
-tpf*)
os=-tpf
;;
-triton*)
os=-sysv3
;;
-oss*)
os=-sysv3
;;
-svr4)
os=-sysv4
;;
-svr3)
os=-sysv3
;;
-sysvr4)
os=-sysv4
;;
# This must come after -sysvr4.
-sysv*)
;;
-ose*)
os=-ose
;;
-es1800*)
os=-ose
;;
-xenix)
os=-xenix
;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint
;;
-aros*)
os=-aros
;;
-kaos*)
os=-kaos
;;
-zvmoe)
os=-zvmoe
;;
-dicos*)
os=-dicos
;;
-nacl*)
;;
-none)
;;
*)
# Get rid of the `-' at the beginning of $os.
os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
exit 1
;;
esac
else
# Here we handle the default operating systems that come with various machines.
# The value should be what the vendor currently ships out the door with their
# machine or put another way, the most popular os provided with the machine.
# Note that if you're going to try to match "-MANUFACTURER" here (say,
# "-sun"), then you have to tell the case statement up towards the top
# that MANUFACTURER isn't an operating system. Otherwise, code above
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
case $basic_machine in
score-*)
os=-elf
;;
spu-*)
os=-elf
;;
*-acorn)
os=-riscix1.2
;;
arm*-rebel)
os=-linux
;;
arm*-semi)
os=-aout
;;
c4x-* | tic4x-*)
os=-coff
;;
tic54x-*)
os=-coff
;;
tic55x-*)
os=-coff
;;
tic6x-*)
os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
;;
pdp11-*)
os=-none
;;
*-dec | vax-*)
os=-ultrix4.2
;;
m68*-apollo)
os=-domain
;;
i386-sun)
os=-sunos4.0.2
;;
m68000-sun)
os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;;
m68*-cisco)
os=-aout
;;
mep-*)
os=-elf
;;
mips*-cisco)
os=-elf
;;
mips*-*)
os=-elf
;;
or32-*)
os=-coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
sparc-* | *-sun)
os=-sunos4.1.1
;;
*-be)
os=-beos
;;
*-haiku)
os=-haiku
;;
*-ibm)
os=-aix
;;
*-knuth)
os=-mmixware
;;
*-wec)
os=-proelf
;;
*-winbond)
os=-proelf
;;
*-oki)
os=-proelf
;;
*-hp)
os=-hpux
;;
*-hitachi)
os=-hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
os=-sysv
;;
*-cbm)
os=-amigaos
;;
*-dg)
os=-dgux
;;
*-dolphin)
os=-sysv3
;;
m68k-ccur)
os=-rtu
;;
m88k-omron*)
os=-luna
;;
*-next )
os=-nextstep
;;
*-sequent)
os=-ptx
;;
*-crds)
os=-unos
;;
*-ns)
os=-genix
;;
i370-*)
os=-mvs
;;
*-next)
os=-nextstep3
;;
*-gould)
os=-sysv
;;
*-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
*-sgi)
os=-irix
;;
*-siemens)
os=-sysv4
;;
*-masscomp)
os=-rtu
;;
f30[01]-fujitsu | f700-fujitsu)
os=-uxpv
;;
*-rom68k)
os=-coff
;;
*-*bug)
os=-coff
;;
*-apple)
os=-macos
;;
*-atari*)
os=-mint
;;
*)
os=-none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
vendor=unknown
case $basic_machine in
*-unknown)
case $os in
-riscix*)
vendor=acorn
;;
-sunos*)
vendor=sun
;;
-cnk*|-aix*)
vendor=ibm
;;
-beos*)
vendor=be
;;
-hpux*)
vendor=hp
;;
-mpeix*)
vendor=hp
;;
-hiux*)
vendor=hitachi
;;
-unos*)
vendor=crds
;;
-dgux*)
vendor=dg
;;
-luna*)
vendor=omron
;;
-genix*)
vendor=ns
;;
-mvs* | -opened*)
vendor=ibm
;;
-os400*)
vendor=ibm
;;
-ptx*)
vendor=sequent
;;
-tpf*)
vendor=ibm
;;
-vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
-aux*)
vendor=apple
;;
-hms*)
vendor=hitachi
;;
-mpw* | -macos*)
vendor=apple
;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
vendor=atari
;;
-vos*)
vendor=stratus
;;
esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
echo $basic_machine$os
exit
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:
parser-3.4.3/bin/ 000755 000000 000000 00000000000 12234223576 013672 5 ustar 00root wheel 000000 000000 parser-3.4.3/operators.txt 000644 000000 000000 00000163123 12172775534 015716 0 ustar 00root wheel 000000 000000 !ñäåëàíî
Xíå ñäåëàíî, âèäèìî, íå áóäåò ñäåëàíî
áåç çíà÷êà - áóäåò ñäåëàíî
îïåðàòîðû
!^eval(âûðàæåíèå)[ôîðìàò] âûðàæåíèå, êðîìå îáû÷íûõ ôóíêöèé::
!äîïóñòèìû #êîììåíòàðèè
ðàáîòàþò äî êîíöà ñòðîêè èëè çàêðûâàþùåéñÿ êðóãëîé ñêîáêè
âíóòðè êîììåíòàðèÿ äîïóñòèìû âëîæåííûå êðóãëûå ñêîáêè
!èç íåî÷åâèäíûõ îïåðàòîðîâ:
!| ïîáèòíûé xor
!|| ëîãè÷åñêèé xor
~ ïîáèòíîå îòðèöàíèå
\ öåëî÷èñëåííîå äåëåíèå 10\3=3
!def äëÿ ïðîâåðêè defined,
ïóñòàÿ ñòðîêà íå defined
ïóñòàÿ òàáëèöà íå defined
ïóñòîé hash íå defined
^if(method $hash.delete){yes}
!eq ne lt gt le ge äëÿ ñðàâíåíèÿ ñòðîê,
!in "/dir/" äëÿ ïðîâåðêè
["âíóòðè íå äîïóñòèìû, åñëè íàäî ñðàâíèòü ñî ñëîæíûì,
ïóñòü ýòî áóäåò ïåðåìåííàÿ].
!is 'type' äëÿ ïðîâåðêè òèïà ëåâîãî îïåðàíäà,
ñêàæåì, ìîæíî ïðîâåðèòü, "íå hash ëè ïàðàìåòð ìåòîäà?"
!-f äëÿ ïðîâåðêè ñóùåñòâîâàíèÿ ôàéëà íà äèñêå,
!-d äëÿ ïðîâåðêè ñóùåñòâîâàíèÿ êàòàëîãà íà äèñêå,
!ñòðîêà â êàâû÷êàõ|àïîñòðîôàõ - ñòðîêà, áåç êàâû÷åê|àïîñòðîôîâ ñòðîêà äî
áëèæàéøåãî whitespace
!÷èñëîâîé ëèòåðàë áûâàåò 0xABC
!ïðèîðèòåòû:
/* logical */
%left "!||"
%left "||"
%left "&&"
%left '<' '>' "<=" ">=" "lt" "gt" "le" "ge"
%left "==" "!=" "eq" "ne"
%left "is" "def" "in" "-f" "-d"
%left '!'
óñëîâèå ? êîãäàÄà: êîãäàÍåò
/* bitwise */
%left '!|'
%left '|'
%left '&'
%left '~'
/* numerical */
%left '-' '+'
%left '*' '/' '%' '\\'
%left NEG /* negation: unary - */
!ëèòåðàëû
true
false
!^if(óñëîâèå){êîãäà äà}{êîãäà íåò}
!^if(óñëîâèå1){äà}[(óñëîâèå2){äà}[(óñëîâèå2){äà}[...]]]{íåò} -- êîëè÷åñòâî äîï. óñëîâèé íå îãðàíè÷åíî (â îáùåì elseif ýòî :)
!^switch[çíà÷åíèå]{^case[âàðèàíò1[;âàðèàíò2...]]{äåéñòâèå}^case[DEFAULT]{äåéñòâèå ïî óìîë÷àíèþ}}
!^while(óñëîâèå){òåëî}[[ðàçäåëèòåëü]|{ðàçäåëèòåëü êîòîðûé âûïîëíÿåòñÿ ïåðåä íåïóñòûì î÷åðåäíûì íå ïåðâûì òåëîì}]
!^for[i](0;4){òåëî}[[ðàçäåëèòåëü]|{ðàçäåëèòåëü êîòîðûé âûïîëíÿåòñÿ ïåðåä íåïóñòûì î÷åðåäíûì íå ïåðâûì òåëîì}]
!^use[ìîäóëü]
!^try{
...
!^throw[sql.connect[;âàñÿ[;áîëâàí]]] // áûë ^error[òåêñò]
!^throw[
$.type[sql.connect]
$.source[âàñÿ]
$.comment[áîëâàí]
]
...
}{
^if($exception.type eq "sql"){
$exception.handled(1|true) ^rem{ôëàã, ÷òî exception îáðàáîòàí}
....
}
^switch[$exception.type]{
^case[sql;mail]{
$exception.handled(1)
êîä, îáðàáàòûâàþùèé sql îøèáêó
$exception.type = sql.connect
$exception.file $exception.lineno $exception.colno [åñëè íå çàïðåùåíû ïðè êîìïèëÿöèè]
$exception.source = âàñÿ
$exception.comment = áîëâàí
}
^case[DEFAULT]{
êîä, îáðàáàòûâàþùèé äðóãóþ îøèáêó
^throw[$exception] << re-throw // DON'T! It's default behaviour!
}
}
}
^exit[] + - ïðåêðàùÿåò îáðàáîòêó çàïðîñà.
óäîáíî ñäåëàòü ïîñëå âûñòàâëåíèÿ 401 îøèáêè
^return[ðåçóëüòàò] + - îòâàëèâàåò èç âûïîëíåíèÿ ìåòîäà,
âûäàâàÿ íåñòàíäàðòíûé ðåçóëüòàò
!^break[] + - îáðûâàåò öèêë
!^continue[] + - îáðûâàåò èòåðàöèþ öèêëà
!^untaint[[as-is|file-spec|http-header|mail-header|uri|sql|js|xml|html|optimized-html|regex|parser-code]]{êîä}
default as-is
!^taint[[lang]][êîä]
default "just tainted, language unknown"
!^process[[$caller.CLASS|$object|$ÊËÀÑÑ:CLASS]]{ñòðîêà, êîòîðàÿ áóäåò process-ed, êàê êîä}[
$.main[âî ÷òî ïåðåèìåíîâàòü @main]
$.file[èìÿ ôàéëà èç êîòîðîãî, ÿêîáû, äàííûé òåêñò]
$.lineno(íîìåð ñòðîêè â ôàéëå, îòêóäà äàííûé òåêñò. ìîæíî îòðèöàòåëüíûé)
]
!^process..[ïóòü][âî ÷òî ïåðåèìåíîâàòü @main]
ïî óìîë÷àíèþ, ìåòîäû êîìïèëèðóþòñÿ â $self [â ñëó÷àå îïåðàòîðà, $self=$MAIN:CLASS]
!^connect[protocol://ñòðîêà ñîåäèíåíèÿ]]{êîä ñ ^sql[...]-ÿìè}
!mysql://user:pass@{host[:port]|[/unix/socket]}/database?
ClientCharset=parser-charset << charset in which parser thinks client works
charset=cp1251_koi8&
timeout=3&
compress=0&
named_pipe=1&
multi_statements=1& allow execute more then one query in one parser :sql{} request
autocommit=1
autocommit åñëè âûñòàâèòü â 0, áóäåò äåëàòü commit/rollback
!pgsql://user:pass@{host[:port]|[local]}/database?
client_encoding=win,[to-find-out]
&datestyle=ISO,SQL,Postgres,European,NonEuropean=US,German,DEFAULT=ISO
&ClientCharset=parser-charset << charset in which parser thinks client works
!oracle://user:pass@service?
NLS_LANG=RUSSIAN_AMERICA.CL8MSWIN1251&
NLS_LANGUAGE language-dependent conventions
NLS_TERRITORY territory-dependent conventions
NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
NLS_DATE_LANGUAGE language for day and month names
NLS_NUMERIC_CHARACTERS decimal character and group separator
NLS_CURRENCY local currency symbol
NLS_ISO_CURRENCY ISO currency symbol
NLS_SORT sort sequence
ORA_ENCRYPT_LOGIN=TRUE
ClientCharset=parser-charset << charset in which parser thinks client works
!odbc://DSN=dsn^;UID=user^;PWD=password^;ClientCharset=parser-charset
ClientCharset << charset in which parser thinks client works
!sqlite://DBfile?
ClientCharset=parser-charset& << charset in which parser thinks client works
autocommit=1
äëÿ ðàáîòû connect íóæíî, ÷òîáû çàðàíåå(ðåêîìåíäóåòñÿ â ñèñòåìíîì êîíôèãóðàöèîííîì auto.p)
áûëà îïðåäåëåíà òàáëèöà
#sql drivers
$SQL[
$.drivers[^table::create{protocol driver client
mysql /www/parser3/libparser3mysql.so /usr/local/lib/mysql/libmysqlclient.so
pgsql /www/parser3/libparser3pgsql.so /usr/local/pgsql/lib/libpq.so
oracle /www/parser3/libparser3oracle.so /u01/app/oracle/product/8.1.5/lib/libclntsh.so?ORACLE_HOME=/u01/app/oracle/product/8.1.5&ORA_NLS33=/u01/app/oracle/product/8.1.5/ocommon/nls/admin/data
sqlite /www/parser3/libparser3sqlite.so /usr/local/sqlite/lib/sqlite3.so
odbc c:\drives\y\parser3project\odbc\debug\parser3odbc.dll
}]
]
!â òàáëèöå ó oracle â ñòîëáöå êëèåíòñêîé áèáëèîòåêè
äîïóñòèìî çàäàòü environment ïàðàìåòðû èíèöèàëèçàöèè(åñëè îíè íå çàäàíû èíà÷å çàðàíåå),
äîïóñòèìû èìåíà, íà÷èíàþùèåñÿ íà NLS_ ORA_ è ORACLE_, èëè îêàí÷èâàþùèåñÿ íà +
ïîä win32
íåîáõîäèì PATH+=^;C:\Oracle\Ora81\bin
ê ñâåäåíèþ:
ORA_NLS33 íóæåí äëÿ ñ÷èòûâàíèÿ ôàéëèêà ñ êëèåíòñêîé êîäèðîâêîé(çàäàâàåìîé NLS_LANG)
åñëè êîäèðîâêà íå ïî-óìîë÷àíèþ, îáÿçàòåëüíî óêàçàòü â .drivers,
èíà÷å áóäåò ñîîáùåíèå ïðî íåïðàâèëüíûé NLS ïàðàìåòð
(èìåþò â âèäó, ÷òî íå íàøëè êîäèðîâêó èç NLS_LANG)
ORACLE_HOME íóæåí äëÿ ñ÷èòûâàíèÿ òåêñòîâ ñîîáùåíèé îá îøèáêàõ,
ìîæíî óêàçûâàòü è â ñòðîêå ñîåäèíåíèÿ, íî ãëîáàëåí, è ëó÷øå âûíåñòè çà ñêîáêè,
â îòëè÷èå îò êëèåíòñêîé êîäèðîâêè NLS_LANG, è ïðî÷åãî.
ÂÍÈÌÀÍÈÅ: ïðè ðàáîòå ñ áîëüøèìè òåêñòîâûìè áëîêàìè â oracle&pgsql[à ëó÷øå âñåãäà],
ñòàâèòü òàêîé ïðåôèêñ ïåðåä îòêðûâàþùèì àïîñòðîôîì, âïðèòûê, âåçäå áåç ïðîáëåëîâ
/**èìÿ_ïîëÿ**/'literal'
!^rem{}
!^cache[ôàéë](ñåêóíä){êîä}[{catch êîä}]
!îòíîñèòåëüíîå çàäàíèå âðåìåíè
!ñêýøèðîâàòü ñòðîêó, êîòîðàÿ ïîëó÷àåòñÿ ïðè âûïîëíåíèè êîäà íà 'ñåêóíä' ñåêóíä
!åñëè 0ñåêóíä, çíà÷èò íå êýøèðîâàòü, à ñòàðûé òàêîé ñòåðåòü
!â catch êîäå $exception.handled[cache] ^rem{ôëàã, ÷òî exception îáðàáîòàí}
!^cache[ôàéë][expires date]{êîä}[{catch êîä}]
!àáñîëþòíîå çàäàíèå âðåìåíè
!^cache[ôàéë] óäàëèòü ôàéë [íå ðóãàåò, åñëè åãî íåò]
!^cache(ñåêóíä)
!^cache[expires date]
!ñèãíàëèçèðóåò âûøåñòîÿùåìó ^cache "óìåíüøè äî ñòîëüêèõ-òî 'ñåêóíä'/'expires'"
!â ïðåäåëå: ^cache(0) îòìåíèòü êýøèðîâàíèå
!^cache[] âûäà¸ò òåêóùóþ expires date
X^cache[read]
ñèãíàëèçèðóåò âûøåñòîÿùåìó ^cache "âçÿòü ñêýøèðîâàííîå íàñèëüíî, èãíîðèðóÿ expires",
âûäà¸ò bool "ïîëó÷èëîñü/íåò"
!^sleep(seconds)
Xåñòü ãëîáàëüíûé ôëàæîê â ñâîéñòâàõ/êîìàíäíîé ñòðîêå "íå îïòèìèçèðîâàòü"
!è åñòü èñêëþ÷åíèå: ^untaint[html]{êîä} íå îïòèìèçèðóåòñÿ
Xáåçîòíîñòèòåëüíî ôëàæêà
!ó âñåõ ìåòîäîâ åñòü ëîêàëüíàÿ ïåðåìåííàÿ $result, åñëè â íå¸ ÷òî ïîëîæèòü,
!òî _ýòî_ áóäåò ðåçóëüòàòîì ìàêðîñà, à íå åãî òåëî
!ó âñåõ ìåòîäîâ åñòü ëîêàëüíàÿ ïåðåìåííàÿ $caller, â íåé ëåæèò ðîäèòåëüñêèé stack frame,
!åñëè òóäà çàïèñàòü
!use(^use èëè @USE) èùåò ôàéë...
!1. ...åñëè ïóòü íà÷èíàåòñÿ ñ /, òî ñ÷èòàåòñÿ, ÷òî ýòî ïóòü îò êîðíÿ âåá ïðîñòðàíñòâà
!åñòü ãëîáàëüíàÿ ñòðîêà/òàáëèöà $MAIN:CLASS_PATH ñ ïóò¸ì/ïóòÿìè ê êàòàëîãó ñ êëàññàìè.
!êîðåíü ïóòÿ/ïóòåé ñ÷èòàåòñÿ îò êîðíÿ âåá ïðîñòðàíñòâà.
!2. ...îòíîñèòåëüíî ñòðî÷êè èç table $MAIN:CLASS_PATH, ñíèçó ââåðõ
çàäàâàéòå å¸ â êîíôèãóðàöèîííîì auto.p âàøåãî ñàéòà
!ãëîáàëüíàÿ òàáëè÷êà $CHARSETS[$.íàçâàíèå[èìÿ ôàéëà]]
!çàäà¸ò êàêèå áóêâû ñ÷èòàþòñÿ êàêèìè(whitespace, letter, etc), à òàêæå èõ unicode
!ôîðìàò: tab delimited ôàéë, ñ çàãîëîâêîì:
! char white-space digit hex-digit letter word lowercase unicode1 unicode2
! A x x x a 0x0041 0xFF21
! ãäå char è lowercase ìîãóò áûòü áóêâàìè, à ìîãóò áûòü è 0xÊÎÄÀÌÈ
! åñëè ñèìâîë èìååò åäèíñòâåííîå unicode ïðåäñòàâëåíèå, ðàâíîå ñàìîìó ñèìâîëó,
! ìîæíî íå óêàçûâàòü unicode
!âñåãäà åñòü êîäèðîâêà UTF-8,
!îíà ÿâëÿåòñÿ êîäèðîâêîé ïî-óìîë÷àíèþ äëÿ request è response
!ÂÍÈÌÀÍÈÅ: èìÿ êîäèðîâêè case sensitive
ñèíòàêñèñ
!$èìÿ[íîâîå çíà÷åíèå]
!$èìÿ(ìàòåìàòè÷åñêîå âûðàæåíèå íîâîãî çíà÷åíèÿ)
!$èìÿ{êîä íîâîãî çíà÷åíèÿ}
!$èìÿ whitespace èëè ${èìÿ}íåâàæíî ïîäñòàíîâêà çíà÷åíèÿ
!^èìÿ ïàðàìåòðû âûçîâ
!$èìÿ.CLASS êëàññ çíà÷åíèÿ
!$èìÿ.CLASS_NAME èìÿ êëàññà
!$èìÿ[$.key[] () {}] êîíñòðóêòîð ýëåìåíòà ïåðåìåííîé-õýøà $èìÿ.key
!^method[$.key[] () {}] êîíñòðóêòîð ýëåìåíòà ïàðàìåòðà-õåøà $parameter.key
$CLASS.èìÿ îáðàùåíèå ê ïåðåìåííîé êëàññà
èìÿ çàêàí÷èâàåòñÿ ïåðåä: ïðîáåë tab linefeed ; ] } ) " < > + * / % & | = ! ' , ? {óòî÷íèòü}
ò.å. ìîæíî
$èìÿ,aaaa
íî åñëè íóæíî ïîñëå èìåíè áóêâó, ñêàæåì -, òî
${èìÿ}-
â âûðàæåíèÿõ + è - ÿâëÿþòñÿ äîïîëíèòåëüíûìè êîíöàìè èìåíè
!ìîæíî îáðàùàòüñÿ ê ñîñòàâíûì îáúåêòàì òàê: $name.subname
!ãäå subname áûâàåò:
! ñòðîêà
! $ïåðåìåííàÿ
! ñòðîêà$ïåðåìåííàÿ
! [êîä, âû÷èñëÿþùèé ñòðîêó]
íàïðèìåð: $õýø[$.âîçðàñò(88)] $äîñòàòü[$.ïîëå[âîçðàñò]] ^õýø.[$äîñòàòü.ïîëå].format{%05d}
ïàðàìåòðû:=îäèí èëè ìíîãî ïàðàìåòðîâ
ïàðàìåòð:=
!(ìàòåìàòè÷åñêîå âûðàæåíèå) âû÷èñëÿåòñÿ ìíîãî ðàç âíóòðè âûçîâà,
| ![êîä] âû÷èñëÿåòñÿ îäèí ðàç ïåðåä âûçîâîì,
| !{êîä} âû÷èñëÿåòñÿ 0 èëè ìíîãî ðàç âíóòðè âûçîâà,
!âåçäå äîïóñòèìû ; âíóòðè - äåëàåò ìíîãî ïàðàìåòðîâ â îäíèõ ñêîáêàõ
!void
!^èìÿ.length[]
0
!^èìÿ.pos[...]
-1
!^èìÿ.left(n)
íè÷åãî íå âûäà¸ò
!^èìÿ.right(n)
íè÷åãî íå âûäà¸ò
!^èìÿ.mid(p[;n])
íè÷åãî íå âûäà¸ò
!^èìÿ.int[] (default)
0 èëè default
!^èìÿ.double[] (default)
0 èëè default
!^èìÿ.bool[] (default)
false èëè default
!^void:sql{çàïðîñ áåç ðåçóëüòàòà}{$.bind[ñì. table::sql]}
!int,double
!^èìÿ.int[] öåëî÷èñëåííîå çíà÷åíèå
!^èìÿ.double[]+ double çíà÷åíèå
!^èìÿ.bool[] + .bool(true|false) bool çíà÷åíèå
!^èìÿ.inc(íà ñêîëüêî +)
!^èìÿ.dec(íà ñêîëüêî -)
!^èìÿ.mul(íà ñêîëüêî *)
!^èìÿ.div(íà ñêîëüêî /)
!^èìÿ.mod(íà ñêîëüêî %)
!^èìÿ.format[ôîðìàò]
!^int/double:sql{query}[[$.limit(2) $.offset(4) $.default{0} $.bind[ñì. table::sql]]]
çàïðîñ, ðåçóëüòàò êîòîðîãî äîëæåí áûòü îäèí ñòîëáåö/îäíà ñòðîêà
!string
!â âûðàæåíèè
!def çíà÷åíèå ðàâíî "íå ïóñòà?"
!ëîãè÷åñêîå/÷èñëîâîå çíà÷åíèå ðàâíî ïîïûòêå ïðåîáðàçîâûâàíèÿ ê double,
ïóñòàÿ ñòðîêà òèõî ïðåîáðàçóåòñÿ ê 0
ïðèìåð:
^if(def $form:name) íå ïóñòà?
^if($user.isAlive) èñòèíà? [àâòîïðåîáðàçîâàíèå ê ÷èñëó, íå íîëü?]
!^string:sql{query}[[$.limit(1) $.offset(4) $.default{n/a} $.bind[ñì. table::sql]]]
ðåçóëüòàò çàïðîñà äîëæåí áûòü îäèí ñòîëáåö/îäíà ñòðîêà
!^ñòðîêà.int[] .int(default) öåëî÷èñëåííîå çíà÷åíèå ñòðîêè.
åñëè ëîìàåòñÿ ïðåîáðàçîâàíèå, áåð¸òñÿ default
!^ñòðîêà.double[]+ .double(default) double çíà÷åíèå ñòðîêè
!^ñòðîêà.bool[] + .bool(default) bool çíà÷åíèå ñòðîêè
åñëè ëîìàåòñÿ ïðåîáðàçîâàíèå, áåð¸òñÿ default
!^ñòðîêà.format[ôîðìàò] %d %.2f %02d...
!^ñòðîêà.match[øàáëîí-ñòðîêà|øàáëîí-regex][[îïöèè ïîèñêà]] $prematch $match $postmatch $1 $2...
îïöèè ïîèñêà=
i CASELESS
x whitespace in regex ignored
s singleline = $ ñ÷èòàåòñÿ êîíöîì âñåãî òåêñòà
m multiline = $ ñ÷èòàåòñÿ êîíöîì ñòðîêè[\n], íå êîíöîì âñåãî òåêñòà
g íàéòè âñå âõîæäåíèÿ, à íå îäíî
' ñîçäàâàòü ñòîëáöû prematch, match, postmatch
n âåðíóòü öèñëî ñ êîëè÷åñòâîì íàéäåííûõ ñîâïàäåíèé, à íå òàáëèöó ñ ðåçóëüòàòàìè
U èíâåðòèðîâàòü ñìûñë ìîäèôèêàòîðà '?'
!^ñòðîêà.match[øàáëîí-ñòðîêà|øàáëîí-regex][îïöèè ïîèñêà]{çàìåíà}
îïöèè ïîèñêà+=
g çàìåíèòü âñå âõîæäåíèÿ, à íå îäíî
!^ñòðîêà.split[ðàçäåëèòåëü][[lrhv]][[íàçâàíèå ñòîëáöà äëÿ âåðòèêàëüíîãî ðàçáèåíèÿ]]
l ñëåâà íàïðàâî [default]
r ñïðàâà íàëåâî
h nameless òàáëèöà ñ êëþ÷àìè 0, 1, 2, ...
v òàáëèöà èç 1 ñòîëáöà 'piece' èëè êàê ïåðåäàäóò [default]
!^ñòðîêà.{l|r}split[ðàçäåëèòåëü] òàáëèöà èç ñòîëáöà $piece
îñòàâëåí äëÿ ñîâìåñòèìîñòè
!^ñòðîêà.upper|lower[]
X^ñòðîêà.truncate(ïðåäåë òåðïåíüÿ) ñòèëü :(
!^ñòðîêà.length[]
!^ñòðîêà.mid(P[;N])
áåç N - "äî êîíöà ñòðîêè"
!^ñòðîêà.left(N)
!^ñòðîêà.right(N)
!^ñòðîêà.pos[ïîäñòðîêà]
!^ñòðîêà.pos[ïîäñòðîêà](ïîçèöèÿ, ñ êîòîðîé èùåì)
<0 = íå íàéäåíî
!^ñòðîêà.replace[$òàáëèöà_ïîäñòàíîâîê_ñòðîêà_íà_ñòðîêó]
!^ñòðîêà.replace[$÷òî;$íà-÷òî]
!^ñòðîêà.save[[append;]ïóòü]
!^ñòðîêà.save[ïóòü[;$.charset[â êàêîé êîäèðîâêå ñîõðàíÿåì] $.append(true)]]
!^ñòðîêà.normalize[] âûäàåò äðóãóþ ñòðîêó, â êîòîðîé ôðàãìåíòû íà îäíîì ÿçûêå îáúåäèíåíû
ïîëåçíî äåëàòü ïåðåä ñëîæíûìè match îïåðàöèÿìè, åñëè âû çíàåòå, ÷òî âõîäíàÿ ñòðîêà
ñîñòîèò èç áîëüøîãî ÷èñëà ôðàãìåíòîâ
!^ñòðîêà.trim[start|both|end|left|right[;chars]] âûêèäûâàåò chars èç íà÷àëà/êîíöà/è íà÷àëà è êîíöà
default 'chars' -- whitespace chars
!^ñòðîêà.append[string]
!^ñòðîêà.base64[] encode
!^string:base64[encoded[;$.strict(true)]] decode
!table
â âûðàæåíèè
ëîãè÷åñêîå çíà÷åíèå ðàâíî "íå ïóñòà?"
÷èñëîâîå çíà÷åíèå ðàâíî count[]
!^table::create[[nameless]]{äàííûå}[[$.separator[^#09]]] ñòàðîå èìÿ "set"
!^table::create[table][[$.limit(1) $.offset(5) $.offset[cur] $.reverse(1)]]
êëîíèðóåò òàáëèöó
reverse << ñçàäó íà ïåð¸ä (ðàáîòàåò ïîêà òîëüêî â locate, â table::create ÍÅ ðàáîòàåò)
!^table::load[[nameless;]ïóòü[;îïöèè]]
!åñëè íå nameless, íàçâàíèÿ êîëîíîê áåðóòñÿ èç ïåðâîé ñòðîêè
!ïóñòûå ñòðîêè, è ñòðîêè â ïåðâîé êîëîíêå ñîäåðæàùèå '#', èãíîðèðóþòñÿ
!$.separator[^#09]
!$.encloser["] ïî-óìîë÷àíèþ, íåò.
!^table::sql{query}[[$.limit(2) $.offset(4) $.bind[hash] todo:$.default{ ^table::create[...] }]]
bind ïðèâÿçûâàåò ïåðåìåííûå â çàïðîñå ê èõ çíà÷åíèÿì
ïîêà ðåàëèçîâàí òîëüêî äëÿ oracle
â çàïðîñå íàäî íàïèñàòü ":èìÿ"
â ïàðàìåòðå bind ïåðåäàòü hash, èç êîòîðîãî âîçüì¸òñÿ(èëè êóäà çàïèøåòñÿ) çíà÷åíèå
!^òàáëèöà.save[[nameless|append;]ïóòü[;îïöèè, ñì. load]]
!$òàáëèöà.ïîëå
!$òàáëèöà.fields èç named òàáëèöû âûäà¸ò òåêóùóþ çàïèñü êàê Hash
!^òàáëèöà.menu{òåëî}[[ðàçäåëèòåëü]]
!^òàáëèöà.offset[] ïå÷àòàåò offset
!^òàáëèöà.offset[[whence]](5) ñäâèãàåò
!whence=cur|set
!áåç whence - ýòî cur
!^òàáëèöà.count[], ^òàáëèöà.count[rows] - êîëè÷åñòâî ñòðîê â òàáëèöå
!^òàáëèöà.count[columns] - äëÿ named òàáëèöû êîëè÷åñòâî ñòîëáöîâ (ñîêðàùåíèå îò $c[^òàáëèöà.columns[]]^c.count[])
!^òàáëèöà.count[cells] - êîëè÷åñòâî ÿ÷ååê â òåêóùåé ñòðîêå òàáëèöû
!^òàáëèöà.line[] 1-based offset
!^òàáëèöà.sort{{êëþ÷åäåëàòåëü ñòðîêà}|(êëþ÷åäåëàòåëü ÷èñëî)}[{desc|asc}] default=asc
!^òàáëèöà.append{äàííûå}
X^òàáëèöà.insert{äàííûå}[(n)] äîáàâèòü çàïèñü
íà òåêóùóþ ïîçèöèþ [äîáàâèòü çàïèñü íà ïîçèöèþ n]
X^òàáëèöà.remove(position[;count]) - ñòèðàåò çàïèñü
èç òåêóùåé ïîçèöèè [ñòèðàåò çàïèñü èç êîíêðåòíîé ïîçèöèè]
[ñòèðàåò count çàïèñåé]
!^òàáëèöà.join[òàáëèöà][$.limit(1) $.offset(5) $.offset[cur]] - äîáàâëÿåò çàïèñè èç òàáëèöû.
òàáëèöû äîëæíû èìåòü îäèíàêîâóþ ñòðóêòóðó.
!^òàáëèöà.flip[] âûäà¸ò òðàíñïîíèðîâàííóþ, íàäî êóäà-òî ñëîæèòü, ïîòîì ïîëüçîâàòü
!^òàáëèöà.locate[ïîëå;çíà÷åíèå][[$.limit(1) $.offset(5) $.offset[cur] $.reverse(1)]]
ïåðåäâèãàåò òåêóùóþ ñòðîêó, åñëè íàéä¸ò. âûäà¸ò bool
!^òàáëèöà.locate(ëîãè÷åñêîå âûðàæåíèå)[[$.limit(1) $.offset(5) $.offset[cur] $.reverse(1)]]
ïåðåäâèãàåò òåêóùóþ ñòðîêó, åñëè íàéä¸ò. âûäà¸ò bool
!^òàáëèöà.hash{[ïîëå]|{êîä}|(âûðàæåíèå)}[[ïîëå çíà÷åíèé|table ïîëÿ çíà÷åíèé]][[$.distinct(1) $.distinct[tables]]]
çíà÷åíèåì $hash.êëþ÷ áóäåò hash â êîòîðîì ïîëÿ çíà÷åíèé áóäóò êëþ÷àìè
ïîëÿ çíà÷åíèé ìîãóò áûòü íå óêàçàíû, òîãäà èìè áóäóò âñå ñòîëáöû, âêëþ÷àÿ êëþ÷åâîé
åñëè distinct ñîäåðæèò true, òî íå áóäåò îøèáêè ïðè ïîâòîðÿþùèõñÿ êëþ÷àõ
åñëè distinct ñîäåðæèò tables, òî áóäåò ñîçäàí hash èç òàáëèö, ñîäåðæàùèõ ñòðîêè ñ êëþ÷îì
!^òàáëèöà.columns[[íàçâàíèå ñòîëáöà]]+ òàáëèöà èç îäíîãî ñòîëáöà 'column' èëè êàê ïåðåäàäóò
!$îòîáðàííîå[^òàáëèöà.select(âûðàæåíèå)] = òàáëèöà èç òåõ æå ñòîëáöîâ è ñòðîê, ó êîòîðûõ óñëîâèå ñîâïàëî
$adults[^man.select($man.age>=18)]
^òàáëèöà.color[öâåò1;öâåò2]
!hash
!â âûðàæåíèè
!ëîãè÷åñêîå çíà÷åíèå ðàâíî "íå ïóñòà?"
!÷èñëîâîå çíà÷åíèå ðàâíî _count[]
!$õåø.êëþ÷
!_default - ñïåöèàëüíûé êëþ÷, åñëè çàäàí,
òî ïðè îáðàùåíèè ïî êëþ÷ó, êîòîðîìó íåò ñîîòâåòñòâèÿ, âûäà¸òñÿ _default çíà÷åíèå
!$õåø.fields âûäàåò $hash. ÷òîáû êëàññ hash áûë ÷óòü áîëüøå ïîõîæ íà êëàññ table
!^hash::create[[!copy_from_hash|copy_from_hashfile]]
ñîçäà¸ò íîâûé hash, êîïèþ ñòàðîãî
!^õåø.add[ñëàãàåìîå]
ïåðåçàïèñûâàåò îäíîèì¸ííûå
!^õåø.sub[âû÷èòàåìîå]
!^õåø.union[b] = îáúåäèíåíèå
îäíîèì¸ííûå îñòàþòñÿ
!^õåø.intersection[b] = ïåðåñå÷åíèå
çíà÷åíèÿ õåø
!^õåø.intersects[b] = bool
!^hash::sql{çàïðîñ}[[$.distinct(1) $.limit(2) $.offset(4) todo:$.default{$.field[]...}]]
ïîëó÷àåòñÿ hash(êëþ÷è=çíà÷åíèÿ ïåðâàÿ êîëîíêà îòâåòà)
of hash(êëþ÷è=íàçâàíèÿ îñòàëüíûõ êîëîíêîê îòâåòà)
!^õåø._keys[[íàçâàíèå êîëîíêè ñ êëþ÷àìè]]+ òàáëèöà èç îäíîãî ñòîëáöà $key èëè êàê ïåðåäàäóò
!^õåø._count[]
!^õåø.foreach[key;value]{òåëî}[[ðàçäåëèòåëü]|{ðàçäåëèòåëü êîòîðûé âûïîëíÿåòñÿ ïåðåä íåïóñòûì î÷åðåäíûì íå ïåðâûì òåëîì}]
!^õåø.delete[êëþ÷] óäàëèòü êëþ÷
!^õåø.contain[êëþ÷] - ñóùåñòâóåò ëè â õåøå êëþ÷ (bool)
!^õýø._at[first|last]
!^õýø._at([-]N)
äîñòóï ê çàäàííûì ýëåìåíòàì óïîðÿäî÷åííîãî õåøà
!hashfile
!^hashfile::open[filename]
!^õåøôàéë.clear[] çàáûòü âñ¸
!$õåøôàéë.êëþ÷[çíà÷åíèå] ïîëîæèòü çíà÷åíèå
!$õåøôàéë.êëþ÷[$.value[çíà÷åíèå] $.expires[ÇÍÀ×ÅÍÈÅ]}
ïîëîæèòü çíà÷åíèå äî expires
çíà÷åíèå ïîëÿ expires ìîæåò áûòü date, èëè ÷èñëî äíåé(0äíåé=íà âå÷íî)
!$õåøôàéë.êëþ÷ äîñòàòü
!^õåøôàéë.delete[êëþ÷] óäàëèòü êëþ÷
!^õåøôàéë.delete[] óäàëèòü ôàéëû, ñîäåðæàùèå äàííûå
!^õåøôàéë.hash[]
ïðåîáðàçîâàòü â îáû÷íûé hash
ïîïóòíî ñòèðàåò óñòàðåâøèå ïàðû
!^õåøôàéë.foreach[key;value]{òåëî}[[ðàçäåëèòåëü]|{ðàçäåëèòåëü êîòîðûé âûïîëíÿåòñÿ ïåðåä íåïóñòûì î÷åðåäíûì íå ïåðâûì òåëîì}]
!^õåøôàéë.release[]
çàïèñàòü äàííûå è ñíÿòü áëîêèðîâêè.
ïðè ïîâòîðíîì îáðàùåíèè ê ýëåìåíòàì îòêðîåòñÿ àâòîìàòè÷åñêè.
!^õåøôàéë.cleanup[] ïðîáåæàòüñÿ ïî âñåì ýëåìåíòàì è óäàëèòü óñòàðåâøèå.
ïðèìåð:
$sessions[^hashfile::open[/db/sessions]]
$sid[^math:uuid[]]
$sessions.$sid[$.value[$uid] $.expires(1)]
$uid[$sessions.$sid]
!form
[áåð¸òñÿ ïåðâûé ýëåìåíò èç îäíîèì¸ííûõ èç GET, ïîòîì ïåðâûé èç POST]
!$form:ïîëå = string/file
!$form:nameless = ïîëå ñî çíà÷åíèåì ïîëÿ áåç èìåíè "?value&...", "...&value&...", "...&value"
!$form:qtail = ñòðîêà ñî çíà÷åíèåì òåêñòà ïîñëå âòîðîãî "?xxxxx", åñëè òàì íå áûëî ',' [imap]
!$form:fields = hash ñî âñåìè ïîëÿìè ôîðìû
!$form:tables.ïîëå = table ñ îäíèì ñòîëáöîì "field" ñî çíà÷åíèÿìè "ïîëÿ"
!$form:files.ïîëå = hash ñî çíà÷åíèÿìè ïîëåé òèïà ôàéë, êëþ÷è - 0, 1, ..., çíà÷åíèå - ôàéë
!$form:imap = õýø ñ êëþ÷àìè 'x' è 'y'
ñî çíà÷åíèåì ?1,2 ïðèïèñêè ïðè èñïîëüçîâàíèè server-site image map
!env
!$env:ïåðåìåííàÿ
!$env:PARSER òî æå ñàìîå, ÷òî ïîêàçûâàåòñÿ ïðè çàïóñêå parser.cgi
!cookie
!$cookie:èìÿ ñ÷èòàòü ñòàðîå èëè ñâåæåçàäàííîå
!$cookie:èìÿ[çíà÷åíèå] íà 90 äíåé
!$cookie:èìÿ[$.value[çíà÷åíèå] $.expires[ÇÍÀ×ÅÍÈÅ] $.secure(true)]
!çíà÷åíèå ïîëÿ expires ìîæåò áûòü 'session', date, èëè ÷èñëî äíåé(0äíåé=session)
! åñëè äàòà, îíà áóäåò ïðåîáðàçîâàíà ê ôîðìàòó "Sun, 25-Aug-2002 12:03:45 GMT"
! ìîæíî óñòàíàâëèâàòü bool ñâîéñòâà, íàïðèìåð $.secure(true), $.httponly(true)
!$cookie:fields = hash ñî âñåìè cookies
!request
!$request:query
!$request:body unprocessed POST request body
!$request:uri
!$request:document-root
êàòàëîã, îòíîñèòåëüíî êîòîðîãî ñ÷èòàþòñÿ ïóòè â parser, ïî-óìîë÷àíèþ = $env:DOCUMENT_ROOT
ìîæíî èçìåíèòü, åñëè íà hosting ÷òî-òî íåóäîáíî íàñòðîåíî
!$request:argv = hash ñ ïàðàìåòðàìè êîììàíäíîé ñòðîêè. êëþ÷è 0, 1, ... [0 -- èìÿ îáðàáàòûâàåìîãî ôàéëà].
X!$request:browser ýòî hash, ïîëÿ:
!$type = ie/nn è !$version = íîìåð, ñêàæåì 5.5
X$request:user
X$request:password
!$request:charset
Êîäèðîâêà èñõîäíîãî äîêóìåíòà
!èñïîëüçóåòñÿ ïðè upper/lower è match[][i]
ÏÐÅÄÓÏÐÅÆÄÅÍÈÅ: êëàññ form ïîëó÷àåò ñâîè ïîëÿ ïîñëå îáðàáîòêè âñåõ auto êëàññà MAIN
ïîýòîìó íåîáõîäèìî çàäàòü $request/response:charset â îäíîì èç íèõ. íå ïîñëå.
!response
!$response:ïîëå[çíà÷åíèå] è ìîæíî ñ÷èòàòü ñòàðîå -- $response:ïîëå
!çíà÷åíèå ìîæåò áûòü string à ìîæåò áûòü hash:
! $value[abc] field: {abc}<<÷àñòü
! $attribute[zzz] field: abc; {attribute=zzz}<<÷àñòü
!çíà÷åíèå ïîëÿ èëè àòðèáóòà ìîæåò áûòü string èëè date
! åñëè äàòà, îíà áóäåò ïðåîáðàçîâàíà ê ôîðìàòó "Sun, 25-Aug-2002 12:03:45 GMT"
!$response:headers íàêîïëåííûå ïîëÿ
!$response:body[DATA] çàìåùàåò ñòàíäàðòíûé îòâåò
!$response:download[DATA] çàìåùàåò ñòàíäàðòíûé îòâåò,
âûñòàâëÿåò ôëàã, çàñòàâëÿþùèé browser ïðåäëîæèòü download
!$response:status
!^response:clear[] çàáûòü âñå çàäàííûå response ïîëÿ
!$response:charset
êîäèðîâêà êëèåíòà ò.å. òà,
1) èç êîòîðîé áóäóò ïåðåêîäèðîâàíû $form:ïîëÿ ïîñëå çàáèðàíèÿ èç browser'à
2) â êîòîðóþ äîêóìåíò áóäåò ïåðåêîäèðîâàí ïåðåä îòäàâàíèåì â browser
3) â êîòîðóþ áóäåò ïåðåêîäèðîâàí òåêñò ÿçûêà uri
íå äîáàâëÿåò ê content-type íè÷åãî, åñëè õî÷åòñÿ, ýòî íàäî ñäåëàòü âðó÷íóþ
ÏÐÅÄÓÏÐÅÆÄÅÍÈÅ: êëàññ form ïîëó÷àåò ñâîè ïîëÿ ïîñëå îáðàáîòêè âñåõ auto êëàññà MAIN
ïîýòîìó íåîáõîäèìî çàäàòü $request/response:charset â îäíîì èç íèõ. íå ïîñëå.
!regex
!â âûðàæåíèè
!ëîãè÷åñêîå çíà÷åíèå âñåãäà ðàâíî true
!÷èñëîâîå çíà÷åíèå ðàâíî êîëè÷åñòâó áàéò ñêîìïèëèðîâàííîãî øàáëîíà.
!^regex::create[øàáëîí-ñòðîêà][[îïöèè ïîèñêà]]
!^øàáëîí.size[] êîëè÷åñòâî áàéò ñêîìïèëèðîâàííîãî øàáëîíà
åñëè çíà÷åíèå î÷åíü áîëüøîå -- ñòîèò ïî÷èòàòü äîêóìåíòàöèþ ïî pcre è, âîçìîæíî, ïåðåïèñàòü øàáëîí.
!^øàáëîí.study_size[] ðàçìåð study-ñòðóêòóðû. åñëè==0 -- øàáëîí íå ìîæåò áûòü "èçó÷åí"
^øàáëîí.save[filespec]
^øàáëîí.load[filespec]
!reflection
!^reflection:create[êëàññ;êîíñòðóêòîð[;ïàðà;[ìåò[;ðû]]]] âûçûâàåò óêàçàííûé êîíñòðóêòîð êëàññà (íå áîëåå 100 ïàðàìåòðîâ)
!^reflection:classes[] õåø ñî âñåìè êëàññàìè. êëþ÷ -- èìÿ êëàññà, çíà÷åíèå áûâàåò methoded (êëàññ ñ ìåòîäàìè) èëè void
!^reflection:class[îáúåêò] êëàññ ïåðåäàííîãî îáúåêòà
!^reflection:class_name[îáúåêò] èìÿ êëàññà ïåðåäàííîãî îáúåêòà
!^reflection:base[îáúåêò] ðîäèòåëüñêèé êëàññ ïåðåäàííîãî îáúåêòà
!^reflection:base_name[îáúåêò] èìÿ ðîäèòåëüñêîãî êëàññà ïåðåäàííîãî îáúåêòà
!^reflection:methods[êëàññ] õåø ñî ñïèñêîì ìåòîäîâ óêàçàííîãî êëàññà, çíà÷åíèÿ -- ñòðîêè 'native' èëè 'parser'
!^reflection:method[êëàññ èëè îáúåêò;èìÿ ìåòîäà] âîçâðàùàåò junction-method êëàññà èëè îáúåêòà
!^reflection:fields[êëàññ èëè îáúåêò] õåø ñî ñïèñêîì ñòàòè÷åñêèõ ïîëåé óêàçàííîãî êëàññà èëè äèíàìè÷åñêèõ ïîëåé óêàçàííîãî îáúåêòà
!^reflection:field[êëàññ èëè îáúåêò;èìÿ ïîëÿ] âîçâðàùàåò çíà÷åíèå óêàçàííîãî ïîëÿ êëàññà èëè îáúåêòà. getter-û èãíîðèðóþòñÿ.
!^reflection:uid[êëàññ èëè îáúåêò] âîçâðàùàåò èäåíòèôèêàòîð îáúåêòà èëè êëàññà
!^reflection:method_info[êëàññ;ìåòîä] õåø ñ ïàðàìåòðàìè óêàçàííîãî ìåòîäà êëàññà
$.inherited[êëàññ] èìÿ êëàññà, ãäå ìåòîä áûë îïðåäåë¸í (âîçâðàùàåòñÿ òîëüêî åñëè ìåòîä áûë îïðåäåë¸í â ïðåäêå)
$.overridden[êëàññ] èìÿ êëàññà, ãäå ìåòîä áûë îïðåäåë¸í (âîçâðàùàåòñÿ òîëüêî åñëè ìåòîä áûë îïðåäåë¸í â ïðåäêå)
äëÿ native êëàññîâ âîçâðàùàåòñÿ õåø:
.min_params(ìèíèìàëüíî íåîáõîäèìîå ÷èñëî ïàðàìåòðîâ)
.max_params(ìàêñèìàëüíî âîçìîæíîå ÷èñëî ïàðàìåòðîâ)
.call_type[dynamic|static|any]
äëÿ parser êëàññîâ âîçâðàùàåòñÿ õåø:
êëþ÷ -- íîìåð ïàðàìåòðà (0, 1, ...), çíà÷åíèå - èìÿ ïàðàìåòðà
!^reflection:dynamical[[object or class, caller if absent]] âîçâðàùàåò true, åñëè ìåòîä áûë âûçâàí èç äèíàìè÷åñêîãî êîíòåêñòà
ïðè ïåðåäà÷å ïàðàìåòðà âîçâðàùàåò true, åñëè ïåðåäàí äèíàìè÷åñêèé îáúåêò,
false åñëè êëàññ
!^reflection:delete[êëàññ èëè îáúåêò;èìÿ ïåðåìåííîé] óäàëÿåò ïåðåìåííóþ ñ óêàçàííûì èìåíåì â óêàçàííîì êëàññå èëè îáúåêòå
!mail
!$mail.received=MESSAGE:
.from
.reply-to
.subject
.date êëàññà date
.message-id
.raw[
.ÑÛÐÎÅ_ÏÎËÜÇÎÂÀÒÅËÜÑÊÎÅ-ÏÎËÅ-ÇÀÃÎËÎÂÊÀ
]
$.{text|html|file#}[ << íóìåðóåòñÿ êàê è â mail:send (text, text2, ...) (file, file2, ...)
$.content-type[
$.value[{text|...|x-unknown}/{plain|html|...|x-unknown}]
[$.charset[windows-1251]] << â êàêîì ïðèøëî, ñåé÷àñ óæå ïåðåêîäèðîâàíî
$.ÏÎËÜÇÎÂÀÒÅËÜÑÊÈÉ-ÏÀÐÀÌÅÒÐ-ÇÀÃÎËÎÂÊÀ
]
$.description
$.content-id
$.content-md5
$.content-location
.raw[
.ÑÛÐÎÅ_ÏÎËÜÇÎÂÀÒÅËÜÑÊÎÅ-ÏÎËÅ-ÇÀÃÎËÎÂÊÀ
]
$.value[ñòðîêà|FILE]
]
$.message#[MESSAGE] (message, message2, ...)
!^mail:send[
$.options[-odd]
unix: ñòðîêà, êîòîðàÿ áóäåò äîáàâëåíà ê êîìàíäå çàïóñêà sendmail
-odd îçíà÷àåò "áûñòðî ïîñòàâü â î÷åðåäü áåç ïðîâåðêè email"
win32: èãíîðèðóåòñÿ
$.charset[êîäèðîâêà çàãîëîâêà è òåêñòîâûõ áëîêîâ]
$.any-header-field
$.text[string]
$.text[
$.any-header-field
$.value[string]
]
$.html{string}
$.html[
$.any-header-field
$.value{string}
]
$.file#[FILE]
$.file#[
$.any-header-field
$value[FILE]
]
]
!åñëè charset óêàçàí, ïèñüìî ïåðåêîäèðóåòñÿ â ýòîò charset
!content-type.charset íå âëèÿåò íà ïåðåêîäèðîâàíèå
!ïîñëå èìåíè ÷àñòè ìîæåò èäòè # ÷èñëî
^mail:send[
# ïî-óìîë÷àíèþ, ñîâïàäàåò ñ source encoding.
# çàäà¸ò êîäèðîâêó body
$.charset[windows-1251]
# íåò óìîë÷àíèÿ
$.content-type[$.value[text/plain] $.charset[windows-1251]]
$.from["âàñÿ" ]
$.to["ïåòÿ" ]
$.subject[ïîéä¸ì ïèâêà]
$.body[
ñëîâà
]
]
!:send[$.header-field[] $.charset[êîäèðîâêà ïèñüìà] $.body[êîãäà body íå ñòðîêà,
à hash, îòñûëàåòñÿ multipart ïèñüìî]]
!åñëè charset óêàçàí, ïèñüìî ïåðåêîäèðóåòñÿ â ýòîò charset
!content-type.charset íå âëèÿåò íà ïåðåêîäèðîâàíèå
!ïîñëå èìåíè ÷àñòè ìîæåò èäòè öåëîå ÷èñëî, ÷àñòè ïîéäóò â ïîðÿäêå ÷èñåë.
!åñëè body óêàçàí ñòðîêîé, òî ýòî òåêñò ïèñüìà, íèêàêèõ âëîæåíèé.
!åñëè body óêàçàí hash, òî ýòî ÷àñòè, áóäóò ñîáðàíû òåêñòîâûå áëîêè, çàòåì âëîæåíèÿ
!ýòî ñòàðûé ôîðìàò, ïîääåðæèâàåòñÿ äëÿ îáðàòíîé ñîâìåñòèìîñòè
!åñëè èìÿ ÷àñòè íà÷èíàåòñÿ ñî ñëîâà text, òî ýòî òåêñòîâûé áëîê.
!åñëè èìÿ ÷àñòè íà÷èíàåòñÿ ñî ñëîâà file, òî ýòî âëîæåíèå, ôîðìàò çàäàíèÿ::
!$file[$.format[!uue|!base64] $.value[DATA] $.name[user-file-name]]
!âàæíî: ïðè multipart íå óêàçûâàòü content-type
^mail:send[
# ïî-óìîë÷àíèþ, ñîâïàäàåò ñ source encoding.
# çàäà¸ò êîäèðîâêó body
$.charset[windows-1251]
# íåò óìîë÷àíèÿ
$.content-type[$.value[text/plain] $.charset[windows-1251]]
$.from["âàñÿ" ]
$.to["ïåòÿ" ]
$.subject[ïîéä¸ì ïèâêà]
$.body[
ñëîâà
]
]
^mail:send[
$.from["âàñÿ" ]
$.to["ïåòÿ" ]
$.subject[ïîéä¸ì ïèâêà]
$.body[
$.text[
# çàäà¸ò êîäèðîâêó body
$.charset[windows-1251]
# íåò óìîë÷àíèÿ
$.content-type[$.value[text/plain] $.charset[windows-1251]]
$.body[ñëîâà]
]
#äëÿ óäîáñòâà ñêðèïòîâàíèÿ ìîæíî óêàçàòü òîëüêî îäíó ÷àñòü, ïðè ýòîì íå áóäåò multipart
$.file[
$.value[^file::load[my beloved.doc]]
$.name[ìîé ëþáèìûé.doc]
$.format[base64]
]
$.file2[
$.value[^file::load[my beloved.doc]]
$.name[ìîé ëþáèìûé.doc]
]
]
]
!äëÿ îòïðàâêè
ïîä unix èñïîëüçóåòñÿ ïðîãðàììà ñ ïàðàìåòðàìè, çàäàâàåìàÿ
$MAIL.sendmail[êîìàíäà]
åñëè íå áóäåò çàäàíà, ïðîâåðÿåòñÿ, äîñòóïíà ëè
/usr/sbin/sendmail èëè
/usr/lib/sendmail
è, åñëè äîñòóïíà, òî çàïóñêàåòñÿ ñ ïàðàìåòðîì "-t".
ïîä win32 èñïîëüçóåòñÿ SMTP ïðîòîêîë, ñåðâåð çàäà¸òñÿ
$MAIL.SMTP[smtp.domain.ru]
!image
!$êàðòèíêà[^image::measure[DATA]]
ñìîòðèò íà .ext case insensitive,
óìååò ìåðèòü ïîêà òîëüêî .gif è .jpg .jpeg
!$êàðòèíêà.exif << hash ïîñëå measure jpeg ñ exif èíôîðìàöèåé
!$image.exif.DateTime & co
[ïîëíûé ñïèñîê ñì. http://www.ba.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html]
!÷èñëà òèïà int/double,
!äàòû òèïà date
!ïåðå÷èñëåíèÿ â âèäå hash ñ êëþ÷àìè 0..count-1
!$êàðòèíêà.src .width .height
!$êàðòèíêà.line-width ÷èñëî=øèðèíà ëèíèé
!$êàðòèíêà.line-style ñòðîêà=ñòèëü ëèíèé '*** * '='*** * *** * *** * '
!^êàðòèíêà.html[[hash]] =
!^image::load[ôîí.gif]
òîëüêî gif ïîêà
!^image::create(ðàçìåð X;ðàçìåð Y[;öâåò ôîíà default áåëûé]])
!^êàðòèíêà.line(x0;y0;x1;y1;0xffFFff)
!^êàðòèíêà.fill(x;y;0xffFFff)
!^êàðòèíêà.rectangle(x0;y0;x1;y1;0xffFFff)
!^êàðòèíêà.bar(x0;y0;x1;y1;0xffFFff)
!^êàðòèíêà.replace(hex-öâåò1;hex-öâåò2)[table x:y âåðøèíû_ìíîãîóãîëüíèêà]
!^êàðòèíêà.polyline+(öâåò)[table x:y òî÷êè]
!^êàðòèíêà.polygon(öâåò)[table x:y âåðøèíû_ìíîãîóãîëüíèêà]
!^êàðòèíêà.polybar(öâåò)[table x;y âåðøèíû_ìíîãîóãîëüíèêà]
!^êàðòèíêà.font[íàáîð_áóêâ;èìÿ_ôàéëà_øðèôòà.gif][(øèðèíà_ïðîáåëà[;øèðèíà_ñèìâîëà])]
âûñîòà ñèìâîëà = âûñîòà êàðòèíêè/êîëè÷åñòâî áóêâ â íàáîðå
åñëè óêàçàíà øèðèíà_ñèìâîëà, òî monospaced, åñëè 0, òî øèðèíà_ñèìâîëà = øèðèíå gif
!^êàðòèíêà.font[íàáîð_áóêâ;èìÿ_ôàéëà_øðèôòà.gif;
$.space(øèðèíà_ïðîáåëà) // ïî óìîë÷àíèþ = øèðèíå gif
$.width(øèðèíà_ñèìâîëà) // ñì. âûøå, ïî óìîë÷àíèþ proportional
$.spacing(ðàññòîÿíèå ìåæäó áóêâàìè) // ïî óìîë÷àíèþ = 1
]
!^êàðòèíêà.text(x;y)[òåêñò_íàäïèñè] AS_IS
!^êàðòèíêà.length[òåêñò_íàäïèñè] AS_IS
!^êàðòèíêà.gif[âîçìîæíî, èìÿ ôàéëà] -- êîäèðóåò â FILE ñ content-type=image/gif
èìÿ ôàéëà áóäåò èñïîëüçîâàíî ïðè $response:download
!^êàðòèíêà.arc(center x;center y;width;height;start in degrees;end in degrees;color)
!^êàðòèíêà.sector(center x;center y;width;height;start in degrees;end in degrees;color)
!^êàðòèíêà.circle(center x;center y;r;color)
!^êàðòèíêà.copy[source](src x;src y;src w;src h;dst x;dst y[;dest w[;dest h[;tolerance]]])
ïðè çàäàííûõ dest_w/dest_h äåëàåò èçìåíåíèå ðàçìåðà êóñî÷êà
ïðè óìåíüøåíèè äåëàåò resample
ãîäèòñÿ òîëüêî äëÿ óìåíüøåíèÿ ïðîñòîé[ìàëîöâåòíîé] äðåáåäåíè âðîäå ãðàôèêîâ/pie,
äëÿ thumbnais íå ãîäèòñÿ.
ïðè íå óêàçàííîì dest_h ñîõðàíÿåò aspect ratio
tolerance - íåêîå ÷èñëî[êâàäðàò ðàññòîÿíèÿ â RGB ïðîñòðàíñòâå äî èñêîìîãî öâåòà],
îïðåäåëÿþùåå ïðîæîðëèâîñòü âûäåëÿëêè öâåòîâ èç ïàëèòðû [default=150]
ìåíüøå - òî÷íåå ïðèáëèæàåò öâåòà, íî îíè áûñòðî êîí÷àþòñÿ
áîëüøå - íåòî÷íî ïðèáëèæàåò öâåò, íî áÎëüøåé ÷àñòè õâàòèò
!^êàðòèíêà.pixel(x;y)[(color)]
óçíàòü èëè çàäàòü öâåò ïèêñåëà
!file
!$ôàéë_èç_post.name
!$ôàéë_èç_post.size
!$ôàéëtèç_post.text
!^ôàéë.save[text|binary;èìÿ ôàéëà[;$.charset[â êàêîé êîäèðîâêå ñîõðàíÿåì]]]
!^file:delete[èìÿ ôàéëà]
!^file:find[èìÿ ôàéëà][{êîãäà íå íàøëè}]
!^file:list[ïóòü[;øàáëîí-ñòðîêà|øàáëîí-regex]] = table ñ êîëîíêàìè name dir
!^file:list[ïóòü;$.filter[øàáëîí-ñòðîêà|øàáëîí-regex] $.stat(true)] = table ñ êîëîíêàìè name dir size [mca]date
!^file::load[text|binary;!big.zip[;!domain_press_release_2001_03_01.zip][;îïöèè]]
!^file::create[text|binary;èìÿ;data]
!^file::create[text|binary;èìÿ;data[;$.charset[êîäèðîâêà áóêâ â ñîçäàâàåìîì ôàéëå] $.content-type[...]]]
!^file::create[string-or-file-content[;$.name[èìÿ] $.mode[text|binary] $.content-type[...] $.charset[...]]]
!$ôàéë_êîòîðûé_áûë_loaded.size
!$ôàéë_êîòîðûé_áûë_loaded_èëè_created.mode = text/binary
!^file::stat[èìÿ ôàéëà]
!$ôàéë_êîòîðûé_áûë_stated_èëè_loaded.size !.adate !.mdate !.cdate
!^file::cgi[[text|binary;]èìÿ ôàéëà[;env hash +options[;1cmd[;2line[;3ar[;4g[;5s]]]]]]]
âîçâðàù¸ííûé çàãîëîâîê ðàññûïàåòñÿ íà $ïîëÿ
$status
$stderr
!^file::exec[[text|binary;]èìÿ ôàéëà[;env hash[;1cmd[;2line[;3ar[;4g[;5s;...under unix max 50 args]]]]]]]
options:
$.stdin[òåêñò] åñëè òåêñò ïóñò, îòêëþ÷àåòñÿ àâòîìàòè÷åñêîå ïåðåñîâûâàíèå äàííûõ HTTP-POST
!^file:move[ñòàðîå èìÿ ôàéëà;íîâîå èìÿ ôàéëà]
ìîæíî ïåðåèìåíîâûâàòü è äâèãàòü êàòàëîãè[win32: íî íå ÷åðåç ãðàíèöó äèñêîâ]
êàòàëîãè äëÿ dest ñîçäàþòñÿ ñ ïðàâàìè 775
êàòàëîã ñòàðîãî ôàéëà ñòèðàåòñÿ, åñëè ïîñëå move îí îñòà¸òñÿ ïóñò
!^file:copy[èìÿ ôàéëà;èìÿ êîïèè ôàéëà]
ìîæíî êîïèðîâàòü òîëüêî ôàéëû
!^file:lock[èìÿ ôàéëà]{êîä}
ôàéë ïðè íåîáõîäèìîñòè ñîçäà¸òñÿ
áëîêèðóåòñÿ
âûïîëíÿåòñÿ êîä
ðàçáëîêèðóåòñÿ
Xchmod[...] ÍÅÒ È ÍÅ ÁÓÄÅÒ, ×ÒÎÁÛ ÍÅ ÌÎÃËÈ ÑÄÅËÀÒÜ executable è çàïóñòèòü, äàæå åñëè ftp çàïðåùàåò chmod.
!^file:dirname[/a/some.tar.gz]=/a (ðàáîòàåò àíàëîãè÷íî êîììàíäå *nix)
!^file:dirname[/a/b/]=/a (ðàáîòàåò àíàëîãè÷íî êîììàíäå *nix)
!^file:basename[/a/some.tar.gz]=some.tar.gz (ðàáîòàåò àíàëîãè÷íî êîììàíäå *nix)
!^file:basename[/a/b/]=b (ðàáîòàåò àíàëîãè÷íî êîììàíäå *nix)
!^file:justname[/a/some.tar.gz]=some.tar
!^file:justext[/a/some.tar.gz]=gz
!/some/page.html: ^file:fullpath[a.gif] => /some/a.gif
!^ôàéë.sql-string[] âíóòðè ^connect äàñò ïðàâèëüíî escaped ñòðîêó, êîòîðóþ ìîæíî â çàïðîñ îòäàòü
X^file::sql[[èìÿ_ôàéëà_äëÿ_download]]{query}
!^file::sql{query}[[
$.name[èìÿ_ôàéëà_äëÿ_download]
$.content-type[ïîëüçîâàòåëüñêèé content-type]
]]
ðåçóëüòàò çàïðîñà äîëæåí áûòü "îäíà ñòðîêà".
êîëîíêè:
ïåðâàÿ êîëîíêà - äàííûå
åñëè åñòü âòîðàÿ - ýòî èìÿ ôàéëà
åñëè åñòü òðåòüÿ - ýòî content-type
!^ôàéë.base64[] encode
!^file:base64[èìÿ ôàéëà]
encode
!^file::base64[encoded string]
!^file::base64[mode;èìÿ ôàéëà;encoded string[;$.content-type[...]]]
decode
!^file:crc32[èìÿ ôàéëà]
âû÷èñëÿåò crc32 ôàéëà ñ óêàçàííûì èìåíåì
!^ôàéë.crc32[]
âû÷èñëÿåò crc32 îáúåêòà
!^ôàéë.md5[]
!^file:md5[èìÿ ôàéëà]
âûäàåò digest ôàéëà, äëèíîé 16 áàéò â âèäå ñòðîêè,
ãäå áàéòû digest âûäàíû â hex âèäå, âïðèòûê, â íèæíåì ðåãèñòðå
!math
!$math:PI
!^math:round floor ceiling
!^math:trunc frac
!^math:abs sign
!^math:exp log
!^math:sin asin cos acos tan atan
!^math:degrees radians
!^math:pow sqrt
!^math:random(øèðèíà äèàïàçîíà)
!^math:uuid[]
22C0983C-E26E-4169-BD07-77ECE9405BA5
win32: ïîëüçóåòñÿ cryptapi
unix: ïîëüçóåòñÿ /dev/urandom,
åñëè íåò, /dev/random,
åñëè íåò, rand
[íà solaris /dev/random ìîæíî äîáàâèòü]
!^math:uid64[]
BA39BAB6340BE370
!^math:md5[string]
âûäàåò digest ñòðîêè, äëèíîé 16 áàéò â âèäå ñòðîêè,
ãäå áàéòû digest âûäàíû â hex âèäå, âïðèòûê, â íèæíåì ðåãèñòðå
!^math:crypt[password;salt]
salt prefix $apr1$ âûçûâàåò âñòðîåííûé MD5 àëãîðèòì,
åñëè íåò òåëà salt, îíî ñîçäà¸òñÿ ñëó÷àéíûì
$1$ âûçûâàåò MD5 àëãîðèòì ôóíêöèè OS 'crypt', åñëè ïîääåðæèâàåòñÿ [çàâåäîìî íåò íà solaris].
äðóãèå salt ÷èòàéòå äîêóìåíòàöèþ ïî ôóíêöèè OS 'crypt'.
!^math:crc32[string]
âû÷èñëÿåò crc32 ñòðîêè
!^math:sha1[string]
!^math:convert[number](base-from;base-to) ïðåîáðàçóåò ñòðîêó ñ ÷èñëîì èç îäíîé ñèñòåìû èñ÷èñëåíèÿ â äðóãóþ
!inet
!^inet:ntoa(long)
!^inet:aton[IP]
!json
!^json:parse[-json-ñòðîêà-[;
$.depth(ìàêñèìàëüíàÿ ãëóáèíà, default == 19)
$.double(false) îòêëþ÷èòü âñòðîåííûé ïàðñèíã ÷èñåë ñ ïëàâàþùåé òî÷êîé (ïî óìîë÷àíèþ âêëþ÷åí)
â ýòîì ñëó÷àå îíè ïîïàäóò â ðåçóëüòèðóþùèé îáúåêò êàê ñòðîêè
$.distinct[first|last|all] êàê áóäåò ïðîèñõîäèòü ðàçáîð äóáëèðóþùèõñÿ êëþ÷åé ó îáúåêòîâ
first -- áóäåò îñòàâëåí ïåðâûé âñòðåòèâøèéñÿ ýëåìåíò
last -- áóäåò îñòàâëåí ïîñëåäíèé âñòðåòèâøèéñÿ ýëåìåíò
all -- áóäóò îñòàâëåíû âñå ýëåìåíòû. ïðè ýòîì ýëåìåíòû, íà÷èíàÿ ñî 2
ïîëó÷àò ÷èñëîâûå ñóôôèêñû (key_2 èòä)
ïî óìîë÷àíèþ äóáëèðóþùèåñÿ êëþ÷è ïðèâåäóò ê exception
$.object[method-junction] ïîëüçîâàòåëüñêèé ìåòîä[êëþ÷;îáúåêò], êîòîðîìó áóäóò ïåðåäàâàòüñÿ âñå ðàçîáðàííûå
îáúåêòû è êëþ÷è îáúåêòà, ìåòîä âîçâðàùàåò íîâûé îáúåêò
$.array[method-junction] ïîëüçîâàòåëüñêèé ìåòîä, êîòîðîìó áóäóò ïåðåäàâàòüñÿ ìàññèâû
]]
ïàðñèò json-ñòðîêó â õýø
!^json:string[system or user object[;
$.skip-unknown(false) îòêëþ÷èòü exception è âûäàâàòü 'null' ïðè ñåðèàëèçàöèè îáúåêòîâ ñ òèïàìè
îòëè÷íûõ îò void, bool, string, int, double, date, table, hash è file
$.indent(true) ôîðìàòèðîâàòü ðåçóëüòèðóþùóþ ñòðîêó òàáóëÿöèÿìè ïî ãëóáèíå âëîæåííîñòè
$.date[sql-string|gmt-string|unix-timestamp] ôîðìàò âûâîäà äàòû, ïî óìîë÷àíèþ -- sql-string
$.table[object|array|compact] ôîðìàò âûâîäà òàáëèöû, ïî óìîë÷àíèþ -- object
object: [{"c1":"v11","c2":"v12",...},{"c1":"v21","c2":"v22",...},...]
array: [["c1","c2",...] || null (for nameless),["v11","v12",...],...]
compact: ["v11" || ["v11","v12",...],...]
$.file[text|base64|stat] âûâåñòè òåëî ôàéëà â óêàçàííîì âèäå (ïî óìîë÷àíèå òåëî ôàéëà
íå ïîïàäàåò â output)
$.xdoc[hash] ïàðàìåòðû ïðåîáðàçîâàíèÿ xdoc â ñòðîêó (êàê â ^xdoc.string[])
$.òèï[method-junction] ëþáîé òèï ìîæíî âûâåñòè ñ ïîìîùüþ ïîëüçîâàòåëüñêîãî ìåòîäà, êîòîðûé
äîëæåí ïðèíèìàòü 3 ïàðàìåòðà: êëþ÷, îáúåêò äàííîãî òèïà è îïöèè
âûçîâà ^json:string[]
]]
ñåðèàëèçóåò ñèñòåìíûé èëè ïîëüçîâàòåëüñêèé îáúåêò â json-ñòðîêó
!date
!âðåìÿ òèïà time ìîæíî èñïîëüçîâàòü â âûðàæåíèÿõ, ïîäñòàâëÿåò
êîëè÷åñòâî äíåé ñ epoch [1 ÿíâàðÿ 1970 (UTC)], äðîáíîå
!âñ¸ ïðîèñõîäèò â localtime,
!âðåìåííàÿ çîíà çàäà¸òñÿ âíå parser ñðåäñòâàìè OS
$date:UTC-offset ñêîëüêî äíåé íàäî ïðèáàâèòü,÷òîáû ïîïàñòü â local âðåìÿ
$date:TZ íàø ÷àñîâîé ïîÿñ, äðîáíîå, â ÷àñàõ (ãäå-òî åñòü ñ òî÷íîñòüþ äî ïîëó÷àñà)
!^date::now[]
!^date::now(ñìåùåíèå â äíÿõ) âûäà¸ò ñåé÷àñ+ñìåùåíèå
!^date::today[] äàòà íà 00:00:00 òåêóùåãî äíÿ
!^date::create(äíåé ñ epoch) // ñòàðîå èìÿ set
!^date::create(year;month[;day[;hour[;minute[;second]]]]) // ñòàðîå èìÿ set
!^date::create[äàòà â ôîðìàòå %Y-%m-%d %H:%M:%S]
äëÿ óäîáíîãî ñîçäàíèÿ ïî çíà÷åíèþ èç áàçû
ôîðìàò1: %Y[-%m[-%d[ %H[:%M[:%S]]]]]
ôîðìàò2: %H:%M[:%S]
!^date::unix-timestamp()
!^äàòà.unix-timestamp[]
!$äàòà.year month day hour minute second weekday yearday(0...) daylightsaving TZ weekyear
read-only
TZ="" << ëîêàëüíàÿ çîíà
!^äàòà.roll[year|month|day](+-ñìåùåíèå) ñäâèãàåò äàòó
!^äàòà.roll[TZ;Íîâàÿ çîíà] ãîâîðèò, ÷òî äàòà â òàêîì-òî ÷àñîâîì ïîÿñå: âëèÿåò íà .hour & Co
!^äàòà.sql-string[[datetime|date|time]]
datetime èëè áåç ïàðàìåòðà -- %Y-%m-%d %H:%M:%S
date -- %Y-%m-%d
time -- %H:%M:%S
where published='^äàòà.sql-string[]'
!^date:calendar[rus|eng](ãîä;ìåñÿö) âûäà¸ò íåèìåíîâàííóþ òàáëèöó
ñòîëáöû: 0..6, week, year
!^date:calendar[rus|eng](ãîä;ìåñÿö;äåíü) âûäà¸ò èìåííîâàííóþ òàáëèöó
ñòîëáöû: year, month, day, weekday
!^date:last-day(ãîä;ìåñÿö) âåðí¸ò ïîñëåäíèé äåíü ìåñÿöà
!^äàòà.last-day[] âåðí¸ò ïîñëåäíèé äåíü ìåñÿöà $äàòà
!^äàòà.gmt-string[] Fri, 23 Mar 2001 09:32:23 GMT
xdoc(xnode)
!$xdoc.search-namespaces hash, where keys=prefixes, values=urls
DOM1 attributes:
!readonly attribute DocumentType doctype
Xreadonly attribute DOMImplementation implementation
!readonly attribute Element documentElement
DOM1 methods:
!Element createElement(in DOMString tagName)
!DocumentFragment createDocumentFragment()
!Text createTextNode(in DOMString data)
!Comment createComment(in DOMString data)
!CDATASection createCDATASection(in DOMString data)
!ProcessingInstruction createProcessingInstruction(in DOMString target,in DOMString data)
!Attr createAttribute(in DOMString name)
!EntityReference createEntityReference(in DOMString name)
!NodeList getElementsByTagName(in DOMString tagname)
DOM2 some methods:
!^.getElementById[elementId] = xnode
The DOM implementation must have information that says which attributes are of type ID.
Attributes with the name "ID" are not of type ID unless so defined.
Implementations that do not know whether attributes are of type ID or not
are expected to return null.
!êîäèðîâêà ñòðîê è óìîë÷àíèå äëÿ $.encoding
!ðàâíî òåêóùåé êîäèðîâêå âûõîäíîé ñòðàíèöû,
$response:charset
::sql{...}
!::create[[URI]]{ } ñòàðîå èìÿ 'set'
!::create[[URI]][qualifiedName]
URI default = disk path to requested document
äëÿ êàòàëîãîâ êîíå÷íûé / îáÿçàòåëåí
!::create[file] can be usable:
$f[^file::load[binary;http://;some HTTP options here...]]
$x[^xdoc::create[$f]]
!::load[file.xml[;îïöèè]]
!.transform[rules.xsl|xdoc][[params hash]] âûäà¸ò dom
øàáëîí êýøèðóåòñÿ, êýø îáíîâëÿåòñÿ ïðè èçìåíåíèè äàòû ôàéëà øàáëîíà,
èëè èçìåíåíèè äàòû ôàéëà "èìÿ øàáëîíà.stamp"[ïðîâåðêà äàòû stamp ïðèîðèòåòíåå]
!ïàðàìåòðû ïåðåäàþòñÿ êàê åñòü, íå xpath âûðàæåíèÿ
!.string[[output options]]
!.save[file.xml[;output options]] ñ øàïêîé
!.file[[output options]] = file
output options èäåíòè÷íû àòðèáóòàì xsl:output
[èñêëþ÷åíèå: èãíîðèðóåòñÿ cdata-section-elements, íóæíî áóäåò, ñäåëàþ]
âûäà¸ò media-type ïðè ïîäñòàíîâêå $response:body[ñþäà]
!åñëè íà äîêóìåíò ññûëàþòñÿ òàê:
parser://method/param/to/that/method
òî â êà÷åñòâå äîêóìåíòà èñïîëüçóåòñÿ ^MAIN:method[/param/to/that/method]
[ïðèìå÷àíèå: â ïàðàìåòð âñåãäà ïðèõîäèò ëèäèðóþùàÿ /, äàæå, åñëè ïàðàìåòðîâ âîîáùå íå áûëî]
!xnode
DOM1 attributes:
!$node.nodeName
!$node.nodeValue
!read
!write
!$node.nodeType = int
ELEMENT_NODE = 1
ATTRIBUTE_NODE = 2
TEXT_NODE = 3
CDATA_SECTION_NODE = 4
ENTITY_REFERENCE_NODE = 5
ENTITY_NODE = 6
PROCESSING_INSTRUCTION_NODE = 7
COMMENT_NODE = 8
DOCUMENT_NODE = 9
DOCUMENT_TYPE_NODE = 10
DOCUMENT_FRAGMENT_NODE = 11
NOTATION_NODE = 12
$vasyaNode.type==$xnode:ELEMENT_NODE
!$node.parentNode
!$node.childNodes = array of nodes
!$node.firstChild
!$node.lastChild
!$node.previousSibling
!$node.nextSibling
!$node.ownerDocument = xdoc
!$node.prefix
!$node.namespaceURI
!$element_node.attributes = hash of xnodes
!$element_node.tagName
!$attribute_node.specified = boolean
true if the attribute received its value explicitly in the XML document,
or if a value was assigned programatically with the setValue function.
false if the attribute value came from the default value declared in the document's DTD.
!$attribute_node.name
!$attribute_node.value
$text_node/cdata_node/comment_node.substringData
!$pi_node.target = target of this processing instruction
XML defines this as being the first token following the markup
that begins the processing instruction.
!$pi_node.data = The content of this processing instruction
This is from the first non white space character after the target
to the character immediately preceding the ?>.
document_node.
readonly attribute DocumentType doctype
readonly attribute DOMImplementation implementation
readonly attribute Element documentElement
document_type_node.
!readonly attribute DOMString name
readonly attribute NamedNodeMap entities
readonly attribute NamedNodeMap notations
!notation_node.
!readonly attribute DOMString publicId
!readonly attribute DOMString systemId
!DOM1 node methods:
!Node insertBefore(in Node newChild,in Node refChild)
!Node replaceChild(in Node newChild,in Node oldChild)
!Node removeChild(in Node oldChild)
!Node appendChild(in Node newChild)
!boolean hasChildNodes()
!Node cloneNode(in boolean deep)
!DOM1 element methods:
!DOMString getAttribute(in DOMString name)
!void setAttribute(in DOMString name, in DOMString value) raises(DOMException)
!void removeAttribute(in DOMString name) raises(DOMException)
!Attr getAttributeNode(in DOMString name)
!Attr setAttributeNode(in Attr newAttr) raises(DOMException)
!Attr removeAttributeNode(in Attr oldAttr) raises(DOMException)
!NodeList getElementsByTagName(in DOMString name)
!void normalize()
!Introduced in DOM Level 2:
!Node importNode(in Node importedNode, in boolean deep) raises(DOMException)
!NodeList getElementsByTagNameNS(in DOMString namespaceURI, in DOMString localName)
!boolean hasAttributes()
!XPath:
!^node.select[xpath/query/expression] = array of nodes,
empty array if nothing found
!^node.selectSingle[xpath/query/expression] = first node if any
!^node.selectBool[xpath/query/expression] = bool if any or die
!^node.selectNumber[xpath/query/expression] = double if any or die
!^node.selectString[xpath/query/expression] = string if any or die
!error codes(ïîêà ïðèäóò êàê òåêñò â ñëó÷àå ñîîòâåòñòâóþùèõ îøèáîê):
INDEX_SIZE_ERR
If index or size is negative, or greater
than the allowed value
DOMSTRING_SIZE_ERR
If the specified range of text does not
fit into a DOMString
HIERARCHY_REQUEST_ERR
If any node is inserted somewhere it
doesn't belong
WRONG_DOCUMENT_ERR
If a node is used in a different
document than the one that created it
(that doesn't support it)
INVALID_CHARACTER_ERR
If an invalid character is specified,
such as in a name.
NO_DATA_ALLOWED_ERR
If data is specified for a node which
does not support data
NO_MODIFICATION_ALLOWED_ERR
If an attempt is made to modify an
object where modifications are not
allowed
NOT_FOUND_ERR
If an attempt was made to reference a
node in a context where it does not
exist
NOT_SUPPORTED_ERR
If the implementation does not support
the type of object requested
INUSE_ATTRIBUTE_ERR
If an attempt is made to add an
attribute that is already inuse
elsewhere
!memory
!^memory:compact[] ñîáðàòü ìóñîð, îñâîáîäèâ ìåñòî ïîä íîâûå äàííûå
(ïðåäóïðåæäåíèå: ïàìÿòü ïðîöåññà íèêîãäà íå îñâîáîæäàåòñÿ)
ïîëåçíî äåëàòü ïåðåä XSL transform.
!status
!÷òîáû êëàññ áûë äîñòóïåí, â apache íóæíî ñêàçàòü
ParserStatusAllowed
!â cgi äîñòóïåí âåçäå
!â isapi íå äîñòóïåí íèãäå
!$status:sql hash
!cache table
url time
url time
url time
!$status:stylesheet
!cache table
file time
file time
file time
!$status:rusage hash
!utime user time used
!stime system time used
!maxrss max resident set size
!ixrss integral shared text memory size
!idrss integral unshared data size
!isrss integral unshared stack size
!tv_sec
!tv_usec
$s[$status:rusage]
^s.tv_sec.format[%.0f].^s.tv_usec.format[%06.0f]
!$status:memory hash
!used
Includes some pages that were allocated but never written.
!free
!ever_allocated_since_compact
Return the number of bytes allocated since the last collection.
!ever_allocated_since_start
Return the total number of bytes [EVER(c)PAF] allocated in this process.
Never decreases.
!$status:pid process id
!$status:tid thread id
console
$console:timeout
!$console:line
read/write ñòðîêó
DATA::=string | file | hash
!hash âèäà
[
$.file[èìÿ ôàéëà íà äèñêå]
$.name[èìÿ ôàéëà äëÿ ïîëüçîâàòåëÿ]
$.mdate[date]
]
!MAIN
ýòî êëàññ, çàãðóæàåìûé íà àâòîìàòå èç êîíôèãóðàöèîííîãî auto.p,
êó÷è auto.p è çàïðàøèâàåìîãî äîêóìåíòà:
!êîíôèãóðàöèîííûé auto.p
cgi:
1. èëè ïîëíûé ïóòü èç ïåðåìåííîé îêðóæåíèÿ CGI_PARSER_SITE_CONFIG
èëè ðÿäîì ñ áèíàðíèêîì parser'à
isapi: windows directory
apache module:
1) ParserConfig [can be in .htaccess]
!auto.p âíèç îò DOCUMENT_ROOT/ ïî äåðåâó äî êàòàëîãà ñ îáðàáàòûâàåìûì ôàéëîì âêëþ÷èòåëüíî
êëàññ ñîáèðàåòñÿ èç âñåõ ýòèõ ôàéëîâ, ïîñëåäóþùèå ñòàíîâÿòñÿ ðîäèòåëÿìè ïðåäûäóùèõ
èìÿ ïîñëåäíåãî çàãðóæåííîãî MAIN, èì¸í ó ïðåäûäóùèõ íåò
!ïîñëå çàãðóçêè MAIN êëàññà âûçûâàåòñÿ åãî @main[]
!ðåçóëüòàò êîòîðîãî ïåðåäà¸òñÿ â åãî @postprocess[data] if($data is string) ...
!ðåçóëüòàò êîòîðîãî îòäà¸òñÿ ïîëüçîâàòåëþ
!åñëè âñòðå÷àåòñÿ îøèáêà è try íå çàäàí, å¸ ìîæíî êðàñèâî ñîîáùèòü ïîëüçîâàòåëþ,
!îïðåäåëèâ
!@unhandled_exception[exception;stack]
!$exception.type ñòðîêà "òèï ïðîáëåìû"
!$exception.file $exception.lineno $exception.colno ôàéë, ñòðîêà è ïîçèöèÿ, ãäå ñëó÷èëàñü ïðîáëåìà [åñëè íå çàïðåùåíû ïðè êîìïèëÿöèè]
!$exception.source ñòðîêà, èç-çà êîòîðîé ñëó÷èëàñü ïðîáëåìà
!$exception.comment êîììåíòàðèé english
!stack òàáëè÷êà èç êîëîíîê file line name,
òàì ëåæàò â îáðàòíîì ïîðÿäêå èìåíà[name] è ìåñòà âûçîâîâ[file line]
îïåðàòîðîâ/ìåòîäîâ, ïðèâåäøèõ ê îøèáêå.
!ïðè çàãðóçêå ôàéëà (file::load, table::load, xdoc::load) ìîæíî óêàçàòü òàêîå èìÿ ôàéëà:
!http://domain/document[?params<> ñîçäàåò http.status îøèáêó,
!ýòî ìîæíî îòêëþ÷èòü, ïåðåäàâ
!$.any-status(1)
!$.charset[êîäèðîâêà óäàë¸ííûõ äîêóìåòîâ ïî-óìîë÷àíèþ] << åñëè ñåðâåð âåðí¸ò content-type:charset=ÎÍÀ_ÏÅÐÅÁÈÂÀÅÒ
!$.user[ïîëüçîâàòåëü]
!$.password[ïàðîëü]
!file::load â äîïîëíèòåëüíûå ïîëÿ çàïèñûâàåò
!ÏÎËÅ:çíà÷åíèå (èìåíà ïîëåé îòâåòà çàãëàâíûìè áóêâàìè)
!tables << õåø èõ ÏÎËÅ->table ñ åäèíñòâåííûì ñòîëáöîì "value".
â òàêèõ òàáëèöàõ ìîæíî áðàòü ïîâòîðÿþùèåñÿ çàãîëîâêè. íàïðèìåð, íåñêîëüêî set-cookies
todo:ñäåëàòü îòäåëüíûé cookies
!ñèñòåìíûå òèïû îøèáîê:
!parser.compile ^test[} êîìïèëÿöèÿ (íåïàðíàÿ ñêîáêà, ...)
!parser.runtime ^if(0). ïàðàìåòðû (áîëüøå/ìåíüøå, ÷åì íóæíî, íå òåõ òèïîâ, ...)
!number.zerodivision ^eval(1/0) ^eval(1%0)
!number.format ^eval(abc*5)
!file.lock shared/exclusive lock error
!file.missing ^file:delete[delme] not found
!file.access ^table::load[.] no rights
!file.read ^file::load[...] error while reading file
!file.seek seek failed
!file.execute ^file::cgi[...] incorrect cgi header/can't execute
!image.format ^image::measure[index.html] not gif/jpg
!sql.connect ^connect[mysql://baduser:pass@host/db]{} not found/timeout
!sql.execute ^void:sql{select bad} syntax error
sql.duplicate
sql.access
sql.missing
sql.xxx [serge asked]
!xml ^xdoc::create{} any error in xml/xslt libs
!smtp.connect not found/timeout
!smtp.execute communication error
!email.format hren tam@null.ru wrong email format(bad chars/empty)
!email.send $MAIL.sendmail[/shit] sendmail not executable
!http.host ^file::load[http://notfound/there] host not found
!http.connect ^file::load[http://not_accepting/there] host found, but do not accept connections
!http.timeout ^file::load[http://host/doc] whole load operation failed to complete in # seconds
!http.response ^file::load[http://ok/there] host found, connection accepted, bad answer
!http.status ^file::load[http://ok/there] host found, connection accepted, status!=200
!date.range ^date::create(1950;1;1) date out of valid range
!íóæíî âûêëþ÷èòü ðóññêèé apache: CharsetDisable on
Xåñëè â MAIN áóäåò îïðåäåë¸í ôëàã $ORIGINS(1) òî âìåñòî îáû÷íîãî âûâîäà ñòðàíèöû áóäåò
âûäàí ñïèñîê ôðàãìåíòîâ ðåçóëüòàòà ñ óêàçàíèåì èõ ïðîèñõîæäåíèÿ
!åñëè â MAIN îïðåäåë¸í $SIGPIPE(1) òî â ñëó÷àå, åñëè îáðàáîòêà áûëà ïðåðâàíà ïîëüçîâàòåëåì, ñîîáùåíèå
îá ýòîì áóäåò çàïèñàíî â parser3.log (ðàíüøå îíî âñåãäà ïèñàëîñü)
!åñëè îïèñàíèå ìåòîäà ñîäåðæèò ëîêàëüíóþ ïåðåìåííóþ result â ÿâíîì âèäå
(åñòü è íåÿâíàÿ ïåðåìåííàÿ)
òî êîä âûâîäà ñòðîêîâûõ ëèòåðàëîâ íå ïîïàäàåò â êîíå÷íûé áàéò-êîä,
à íåïðîáåëüíûå ñèìâîëû ñ÷èòàþòñÿ ñèíòàêñè÷åñêîé îøèáêîé
äëÿ âûâîäà ÷åãî áû òî íè áûëî íàäî ïîëüçîâàòüñÿ ýòîé ïåðåìåííîé
parser-3.4.3/gnu.vcproj 000644 000000 000000 00000004201 10734724454 015141 0 ustar 00root wheel 000000 000000
parser-3.4.3/aclocal.m4 000644 000000 000000 00000104766 12234222474 014774 0 ustar 00root wheel 000000 000000 # generated automatically by aclocal 1.11.1 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])])
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.11.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# _AM_AUTOCONF_VERSION(VERSION)
# -----------------------------
# aclocal traces this macro to find the Autoconf version.
# This is a private macro too. Using m4_define simplifies
# the logic in aclocal, which can simply ignore this definition.
m4_define([_AM_AUTOCONF_VERSION], [])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.11.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
# therefore $ac_aux_dir as well) can be either absolute or relative,
# depending on how configure is run. This is pretty annoying, since
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
# source directory, any form will work fine, but in subdirectories a
# relative path needs to be adjusted first.
#
# $ac_aux_dir/missing
# fails when called from a subdirectory if $ac_aux_dir is relative
# $top_srcdir/$ac_aux_dir/missing
# fails if $ac_aux_dir is absolute,
# fails when called from a subdirectory in a VPATH build with
# a relative $ac_aux_dir
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
# harmless because $srcdir is `.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
# and then we would define $MISSING as
# MISSING="\${SHELL} $am_aux_dir/missing"
# This will work as long as MISSING is not called from configure, because
# unfortunately $(top_srcdir) has no meaning in configure.
# However there are other variables, like CC, which are often used in
# configure, and could therefore not use this "fixed" $ac_aux_dir.
#
# Another solution, used here, is to always expand $ac_aux_dir to an
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
[dnl Rely on autoconf to set up CDPATH properly.
AC_PREREQ([2.50])dnl
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
])
# AM_CONDITIONAL -*- Autoconf -*-
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 9
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
[AC_PREREQ(2.52)dnl
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])dnl
AC_SUBST([$1_FALSE])dnl
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
m4_define([_AM_COND_VALUE_$1], [$2])dnl
if $2; then
$1_TRUE=
$1_FALSE='#'
else
$1_TRUE='#'
$1_FALSE=
fi
AC_CONFIG_COMMANDS_PRE(
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
AC_MSG_ERROR([[conditional "$1" was never defined.
Usually this means the macro was only invoked conditionally.]])
fi])])
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 10
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it's
# C support machinery. Also note that it means that autoscan, seeing
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
# NAME is "CC", "CXX", "GCJ", or "OBJC".
# We try a few techniques and use that to set a single cache variable.
#
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
# dependency, and given that the user is not expected to run this macro,
# just rely on AC_PROG_CC.
AC_DEFUN([_AM_DEPENDENCIES],
[AC_REQUIRE([AM_SET_DEPDIR])dnl
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
[$1], CXX, [depcc="$CXX" am_compiler_list=],
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
[$1], UPC, [depcc="$UPC" am_compiler_list=],
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
[depcc="$$1" am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
cp "$am_depcomp" conftest.dir
cd conftest.dir
# We will build objects and dependencies in a subdirectory because
# it helps to detect inapplicable dependency modes. For instance
# both Tru64's cc and ICC support -MD to output dependencies as a
# side effect of compilation, but ICC will put the dependencies in
# the current directory while Tru64 will put them in the object
# directory.
mkdir sub
am_cv_$1_dependencies_compiler_type=none
if test "$am_compiler_list" = ""; then
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
fi
am__universal=false
m4_case([$1], [CC],
[case " $depcc " in #(
*\ -arch\ *\ -arch\ *) am__universal=true ;;
esac],
[CXX],
[case " $depcc " in #(
*\ -arch\ *\ -arch\ *) am__universal=true ;;
esac])
for depmode in $am_compiler_list; do
# Setup a source with many dependencies, because some compilers
# like to wrap large dependency lists on column 80 (with \), and
# we should not choose a depcomp mode which is confused by this.
#
# We need to recreate these files for each test, as the compiler may
# overwrite some of them when testing with obscure command lines.
# This happens at least with the AIX C compiler.
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
# Solaris 8's {/usr,}/bin/sh.
touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
# We check with `-c' and `-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
# handle `-M -o', and we need to detect this. Also, some Intel
# versions had trouble with output in subdirs
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
gcc)
# This depmode causes a compiler race in universal mode.
test "$am__universal" = false || continue
;;
nosideeffect)
# after this tag, mechanisms are not by side-effect, so they'll
# only be used when explicitly requested
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
am__minus_obj=
;;
none) break ;;
esac
if depmode=$depmode \
source=sub/conftest.c object=$am__obj \
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
$SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
>/dev/null 2>conftest.err &&
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
if (grep 'ignoring option' conftest.err ||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_$1_dependencies_compiler_type=$depmode
break
fi
fi
done
cd ..
rm -rf conftest.dir
else
am_cv_$1_dependencies_compiler_type=none
fi
])
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
AM_CONDITIONAL([am__fastdep$1], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
])
# AM_SET_DEPDIR
# -------------
# Choose a directory name for dependency files.
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
])
# AM_DEP_TRACK
# ------------
AC_DEFUN([AM_DEP_TRACK],
[AC_ARG_ENABLE(dependency-tracking,
[ --disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
#serial 5
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[{
# Autoconf 2.62 quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
*\'*) eval set x "$CONFIG_FILES" ;;
*) set x $CONFIG_FILES ;;
esac
shift
for mf
do
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
# We used to match only the files named `Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# Grep'ing the whole file is not good either: AIX grep has a line
# limit of 2048, but all sed's we know have understand at least 4000.
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
dirpart=`AS_DIRNAME("$mf")`
else
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running `make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
AS_MKDIR_P([$dirpart/$fdir])
# echo "creating $dirpart/$file"
echo '# dummy' > "$dirpart/$file"
done
done
}
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
# AM_OUTPUT_DEPENDENCY_COMMANDS
# -----------------------------
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
# is enabled. FIXME. This creates each `.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 8
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 16
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
# The call with PACKAGE and VERSION arguments is the old style
# call (pre autoconf-2.50), which is being phased out. PACKAGE
# and VERSION should now be passed to AC_INIT and removed from
# the call to AM_INIT_AUTOMAKE.
# We support both call styles for the transition. After
# the next Automake release, Autoconf can make the AC_INIT
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.62])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
if test "`cd $srcdir && pwd`" != "`pwd`"; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
# is not polluted with repeated "-I."
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
fi
# test whether we have cygpath
if test -z "$CYGPATH_W"; then
if (cygpath --version) >/dev/null 2>/dev/null; then
CYGPATH_W='cygpath -w'
else
CYGPATH_W=echo
fi
fi
AC_SUBST([CYGPATH_W])
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
AM_MISSING_PROG(AUTOCONF, autoconf)
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
AM_MISSING_PROG(AUTOHEADER, autoheader)
AM_MISSING_PROG(MAKEINFO, makeinfo)
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
[_AM_DEPENDENCIES(CC)],
[define([AC_PROG_CC],
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
[_AM_DEPENDENCIES(CXX)],
[define([AC_PROG_CXX],
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
[_AM_DEPENDENCIES(OBJC)],
[define([AC_PROG_OBJC],
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
])
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
])
dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
# that is generated. The stamp files are numbered to have different names.
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
# loop where config.status creates the headers, so we can generate
# our stamp files there.
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
[# Compute $1's index in $config_headers.
_am_arg=$1
_am_stamp_count=1
for _am_header in $config_headers :; do
case $_am_header in
$_am_arg | $_am_arg:* )
break ;;
* )
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
esac
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
if test x"${install_sh}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
*)
install_sh="\${SHELL} $am_aux_dir/install-sh"
esac
fi
AC_SUBST(install_sh)])
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
[rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 4
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
AC_DEFUN([AM_MAKE_INCLUDE],
[am_make=${MAKE-make}
cat > confinc << 'END'
am__doit:
@echo this is the am__doit target
.PHONY: am__doit
END
# If we don't find an include directive, just comment out the code.
AC_MSG_CHECKING([for style of include used by $am_make])
am__include="#"
am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
# Ignore all kinds of additional output from `make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
am__quote=
_am_result=GNU
;;
esac
# Now try BSD make style include.
if test "$am__include" = "#"; then
echo '.include "confinc"' > confmf
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=.include
am__quote="\""
_am_result=BSD
;;
esac
fi
AC_SUBST([am__include])
AC_SUBST([am__quote])
AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 6
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
[AC_REQUIRE([AM_MISSING_HAS_RUN])
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
# AM_MISSING_HAS_RUN
# ------------------
# Define MISSING if not defined so far and test if it supports --run.
# If it does, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
*)
MISSING="\${SHELL} $am_aux_dir/missing" ;;
esac
fi
# Use eval to expand $SHELL
if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run "
else
am_missing_run=
AC_MSG_WARN([`missing' script is too old or missing])
fi
])
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_MKDIR_P
# ---------------
# Check for `mkdir -p'.
AC_DEFUN([AM_PROG_MKDIR_P],
[AC_PREREQ([2.60])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
dnl while keeping a definition of mkdir_p for backward compatibility.
dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
dnl Makefile.ins that do not define MKDIR_P, so we do our own
dnl adjustment using top_builddir (which is defined more often than
dnl MKDIR_P).
AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
case $mkdir_p in
[[\\/$]]* | ?:[[\\/]]*) ;;
*/*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
esac
])
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 4
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
# ------------------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
# _AM_SET_OPTIONS(OPTIONS)
# ----------------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
# -------------------------------------------
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 5
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
'
case `pwd` in
*[[\\\"\#\$\&\'\`$am_lf]]*)
AC_MSG_ERROR([unsafe absolute working directory name]);;
esac
case $srcdir in
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
esac
# Do `set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
if test "$[*]" = "X"; then
# -L didn't work.
set X `ls -t "$srcdir/configure" conftest.file`
fi
rm -f conftest.file
if test "$[*]" != "X $srcdir/configure conftest.file" \
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "$[2]" = conftest.file
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
AC_MSG_RESULT(yes)])
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor `install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
# always use install-sh in `make install-strip', and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
# Installed binaries are usually stripped using `strip' when the user
# run `make install-strip'. However `strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the `STRIP' environment variable to overrule this program.
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
# This macro is traced by Automake.
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
# FORMAT should be one of `v7', `ustar', or `pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
# $tardir.
# tardir=directory && $(am__tar) > result.tar
#
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility.
AM_MISSING_PROG([AMTAR], [tar])
m4_if([$1], [v7],
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
# Do not fold the above two line into one, because Tru64 sh and
# Solaris sh will not grok spaces in the rhs of `-'.
for _am_tool in $_am_tools
do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar;
do
AM_RUN_LOG([$_am_tar --version]) && break
done
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar='tar chf - "$$tardir"'
am__tar_='tar chf - "$tardir"'
am__untar='tar xf -'
;;
pax)
am__tar='pax -L -x $1 -w "$$tardir"'
am__tar_='pax -L -x $1 -w "$tardir"'
am__untar='pax -r'
;;
cpio)
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
am__untar='cpio -i -H $1 -d'
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
test -n "${am_cv_prog_tar_$1}" && break
# tar/untar a dummy directory, and stop if the command works
rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
rm -rf conftest.dir
if test -s conftest.tar; then
AM_RUN_LOG([$am__untar /dev/null 2>&1 && break
fi
done
rm -rf conftest.dir
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
m4_include([src/lib/ltdl/m4/argz.m4])
m4_include([src/lib/ltdl/m4/libtool.m4])
m4_include([src/lib/ltdl/m4/ltdl.m4])
m4_include([src/lib/ltdl/m4/ltoptions.m4])
m4_include([src/lib/ltdl/m4/ltsugar.m4])
m4_include([src/lib/ltdl/m4/ltversion.m4])
m4_include([src/lib/ltdl/m4/lt~obsolete.m4])
parser-3.4.3/AUTHORS 000644 000000 000000 00000000255 12166314563 014175 0 ustar 00root wheel 000000 000000 Alexandr Petrosian (http://paf.design.ru)
Michael Petrushin (http://misha.design.ru)
Konstantin Morshnev (http://moko.ru)
parser-3.4.3/config.guess 000644 000000 000000 00000126755 11764645505 015466 0 ustar 00root wheel 000000 000000 #! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011 Free Software Foundation, Inc.
timestamp='2011-10-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Per Bothner. Please send patches (context
# diff format) to and include a ChangeLog
# entry.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION]
Output the configuration name of the system \`$me' is run on.
Operation modes:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
Report bugs and patches to ."
version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try \`$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
echo "$timestamp" ; exit ;;
--version | -v )
echo "$version" ; exit ;;
--help | --h* | -h )
echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
break ;;
-* )
echo "$me: invalid option $1$help" >&2
exit 1 ;;
* )
break ;;
esac
done
if test $# != 0; then
echo "$me: too many arguments$help" >&2
exit 1
fi
trap 'exit 1' 1 2 15
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
# Portable tmp directory creation inspired by the Autoconf team.
set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
: ${TMPDIR=/tmp} ;
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
dummy=$tmp/dummy ;
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
,,) echo "int x;" > $dummy.c ;
for c in cc gcc c89 c99 ; do
if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found ;
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
esac ; set_cc_for_build= ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
PATH=$PATH:/.attbin ; export PATH
fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
# compatibility and a consistent mechanism for selecting the
# object file format.
#
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
/usr/sbin/$sysctl 2>/dev/null || echo unknown)`
case "${UNAME_MACHINE_ARCH}" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently, or will in the future.
case "${UNAME_MACHINE_ARCH}" in
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
os=netbsd
else
os=netbsdelf
fi
;;
*)
os=netbsd
;;
esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
case "${UNAME_VERSION}" in
Debian*)
release='-gnu'
;;
*)
release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
exit ;;
*:ekkoBSD:*:*)
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
exit ;;
*:SolidBSD:*:*)
echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
exit ;;
macppc:MirBSD:*:*)
echo powerpc-unknown-mirbsd${UNAME_RELEASE}
exit ;;
*:MirBSD:*:*)
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
# OSF/1 and Tru64 systems produced since 1995. I hope that
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
UNAME_MACHINE="alpha" ;;
"EV4.5 (21064)")
UNAME_MACHINE="alpha" ;;
"LCA4 (21066/21068)")
UNAME_MACHINE="alpha" ;;
"EV5 (21164)")
UNAME_MACHINE="alphaev5" ;;
"EV5.6 (21164A)")
UNAME_MACHINE="alphaev56" ;;
"EV5.6 (21164PC)")
UNAME_MACHINE="alphapca56" ;;
"EV5.7 (21164PC)")
UNAME_MACHINE="alphapca57" ;;
"EV6 (21264)")
UNAME_MACHINE="alphaev6" ;;
"EV6.7 (21264A)")
UNAME_MACHINE="alphaev67" ;;
"EV6.8CB (21264C)")
UNAME_MACHINE="alphaev68" ;;
"EV6.8AL (21264B)")
UNAME_MACHINE="alphaev68" ;;
"EV6.8CX (21264D)")
UNAME_MACHINE="alphaev68" ;;
"EV6.9A (21264/EV69A)")
UNAME_MACHINE="alphaev69" ;;
"EV7 (21364)")
UNAME_MACHINE="alphaev7" ;;
"EV7.9 (21364A)")
UNAME_MACHINE="alphaev79" ;;
esac
# A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
# of the specific Alpha model?
echo alpha-pc-interix
exit ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
exit ;;
*:z/VM:*:*)
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
arm:riscos:*:*|arm:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
exit ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
echo pyramid-pyramid-sysv3
else
echo pyramid-pyramid-bsd
fi
exit ;;
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
exit ;;
DRS?6000:unix:4.0:6*)
echo sparc-icl-nx6
exit ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
echo i386-pc-auroraux${UNAME_RELEASE}
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
SUN_ARCH="i386"
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
SUN_ARCH="x86_64"
fi
fi
echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
echo m68k-sun-sunos${UNAME_RELEASE}
;;
sun4)
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
exit ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
# > m68000). The system name ranges from "MiNT" over "FreeMiNT"
# to the lowercase version "mint" (or "freemint"). Finally
# the system name "TOS" denotes a system which is actually not
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
echo m68k-milan-mint${UNAME_RELEASE}
exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
echo m68k-hades-mint${UNAME_RELEASE}
exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
exit ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#ifdef __cplusplus
#include /* for printf() prototype */
int main (int argc, char *argv[]) {
#else
int main (argc, argv) int argc; char *argv[]; {
#endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
$CC_FOR_BUILD -o $dummy $dummy.c &&
dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
SYSTEM_NAME=`$dummy $dummyarg` &&
{ echo "$SYSTEM_NAME"; exit; }
echo mips-mips-riscos${UNAME_RELEASE}
exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
exit ;;
Motorola:*:4.3:PL8-*)
echo powerpc-harris-powermax
exit ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
echo powerpc-harris-powermax
exit ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
exit ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
exit ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
exit ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
[ ${TARGET_BINARY_INTERFACE}x = x ]
then
echo m88k-dg-dgux${UNAME_RELEASE}
else
echo m88k-dg-dguxbcs${UNAME_RELEASE}
fi
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
exit ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
exit ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
exit ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
echo i386-ibm-aix
exit ;;
ia64:AIX:*:*)
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#include
main()
{
if (!__power_pc())
exit(1);
puts("powerpc-ibm-aix3.2.5");
exit(0);
}
EOF
if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
then
echo "$SYSTEM_NAME"
else
echo rs6000-ibm-aix3.2.5
fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
else
echo rs6000-ibm-aix3.2
fi
exit ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
exit ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
exit ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
exit ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
exit ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
exit ;;
9000/[34678]??:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case "${sc_cpu_version}" in
523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
case "${sc_kernel_bits}" in
32) HP_ARCH="hppa2.0n" ;;
64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
esac ;;
esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#define _HPUX_SOURCE
#include
#include
int main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
if [ ${HP_ARCH} = "hppa2.0w" ]
then
eval $set_cc_for_build
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
# generating 64-bit code. GNU and HP use different nomenclature:
#
# $ CC_FOR_BUILD=cc ./config.guess
# => hppa2.0w-hp-hpux11.23
# $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
grep -q __LP64__
then
HP_ARCH="hppa2.0w"
else
HP_ARCH="hppa64"
fi
fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit ;;
ia64:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ia64-hp-hpux${HPUX_REV}
exit ;;
3050*:HI-UX:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#include
int
main ()
{
long cpu = sysconf (_SC_CPU_VERSION);
/* The order matters, because CPU_IS_HP_MC68K erroneously returns
true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
results, however. */
if (CPU_IS_PA_RISC (cpu))
{
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
default: puts ("hppa-hitachi-hiuxwe2"); break;
}
}
else if (CPU_IS_HP_MC68K (cpu))
puts ("m68k-hitachi-hiuxwe2");
else puts ("unknown-hitachi-hiuxwe2");
exit (0);
}
EOF
$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
{ echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
exit ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
exit ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
exit ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
exit ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
exit ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
exit ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*[A-Z]90:*:*:*)
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
*:UNICOS/mp:*:*)
echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:windows32*:*)
# uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
*:Interix*:*)
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
authenticamd | genuineintel | EM64T)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
IA64)
echo ia64-unknown-interix${UNAME_RELEASE}
exit ;;
esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
8664:Windows_NT:*)
echo x86_64-pc-mks
exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
# UNAME_MACHINE based on the output of uname instead of i386?
echo i586-pc-interix
exit ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
exit ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
echo x86_64-unknown-cygwin
exit ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
*:GNU:*:*)
# the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
PCA57) UNAME_MACHINE=alphapca56 ;;
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
echo ${UNAME_MACHINE}-unknown-linux-gnu
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
else
echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
echo cris-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
echo crisv32-axis-linux-gnu
exit ;;
frv:Linux:*:*)
echo frv-unknown-linux-gnu
exit ;;
hexagon:Linux:*:*)
echo hexagon-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
LIBC=gnu
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#ifdef __dietlibc__
LIBC=dietlibc
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
#undef ${UNAME_MACHINE}
#undef ${UNAME_MACHINE}el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
CPU=${UNAME_MACHINE}el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=${UNAME_MACHINE}
#else
CPU=
#endif
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
echo or32-unknown-linux-gnu
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-gnu
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
PA7*) echo hppa1.1-unknown-linux-gnu ;;
PA8*) echo hppa2.0-unknown-linux-gnu ;;
*) echo hppa-unknown-linux-gnu ;;
esac
exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
exit ;;
sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
tile*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
exit ;;
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
echo ${UNAME_MACHINE}-pc-os2-emx
exit ;;
i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop
exit ;;
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
exit ;;
i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit ;;
i*86:*DOS:*:*)
echo ${UNAME_MACHINE}-pc-msdosdjgpp
exit ;;
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
fi
exit ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configury will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
paragon:*:*:*)
echo i860-intel-osf1
exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
fi
exit ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
exit ;;
mc68k:UNIX:SYSTEM5:3.51m)
echo m68k-convergent-sysv
exit ;;
M680?0:D-NIX:5.3:*)
echo m68k-diab-dnix
exit ;;
M68*:*:R3V[5678]*:*)
test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit ;;
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
exit ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
exit ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
echo ${UNAME_MACHINE}-sni-sysv4
else
echo ns32k-sni-sysv
fi
exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says
echo i586-unisys-sysv4
exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes .
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
exit ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
exit ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
echo ${UNAME_MACHINE}-stratus-vos
exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
exit ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
fi
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
exit ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
exit ;;
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
exit ;;
SX-7:SUPER-UX:*:*)
echo sx7-nec-superux${UNAME_RELEASE}
exit ;;
SX-8:SUPER-UX:*:*)
echo sx8-nec-superux${UNAME_RELEASE}
exit ;;
SX-8R:SUPER-UX:*:*)
echo sx8r-nec-superux${UNAME_RELEASE}
exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
case $UNAME_PROCESSOR in
i386)
eval $set_cc_for_build
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
UNAME_PROCESSOR="x86_64"
fi
fi ;;
unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = "x86"; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
NSE-?:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
exit ;;
BS2000:POSIX*:*:*)
echo bs2000-siemens-sysv
exit ;;
DS/*:UNIX_System_V:*:*)
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
if test "$cputype" = "386"; then
UNAME_MACHINE=i386
else
UNAME_MACHINE="$cputype"
fi
echo ${UNAME_MACHINE}-unknown-plan9
exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
exit ;;
*:TENEX:*:*)
echo pdp10-unknown-tenex
exit ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
echo pdp10-dec-tops20
exit ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
echo pdp10-xkl-tops20
exit ;;
*:TOPS-20:*:*)
echo pdp10-unknown-tops20
exit ;;
*:ITS:*:*)
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
V*) echo vax-dec-vms ; exit ;;
esac ;;
*:XENIX:*:SysV)
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
exit ;;
i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos
exit ;;
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
eval $set_cc_for_build
cat >$dummy.c <
# include
#endif
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
printf ("m68k-hp-bsd\n"); exit (0);
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
if (version < 4)
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
else
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
# if !defined (ultrix)
# include
# if defined (BSD)
# if BSD == 43
printf ("vax-dec-bsd4.3\n"); exit (0);
# else
# if BSD == 199006
printf ("vax-dec-bsd4.3reno\n"); exit (0);
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# endif
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# else
printf ("vax-dec-ultrix\n"); exit (0);
# endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
if [ -x /usr/convex/getsysinfo ]
then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
c34*)
echo c34-convex-bsd
exit ;;
c38*)
echo c38-convex-bsd
exit ;;
c4*)
echo c4-convex-bsd
exit ;;
esac
fi
cat >&2 < in order to provide the needed
information to handle your system.
config.guess timestamp = $timestamp
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`
/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
hostinfo = `(hostinfo) 2>/dev/null`
/bin/universe = `(/bin/universe) 2>/dev/null`
/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
/bin/arch = `(/bin/arch) 2>/dev/null`
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
UNAME_MACHINE = ${UNAME_MACHINE}
UNAME_RELEASE = ${UNAME_RELEASE}
UNAME_SYSTEM = ${UNAME_SYSTEM}
UNAME_VERSION = ${UNAME_VERSION}
EOF
exit 1
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:
parser-3.4.3/NEWS 000644 000000 000000 00000000000 07426215136 013607 0 ustar 00root wheel 000000 000000 parser-3.4.3/bin/Makefile.in 000644 000000 000000 00000030654 11766635214 015754 0 ustar 00root wheel 000000 000000 # Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = bin
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/auto.p.dist.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/src/lib/ltdl/m4/argz.m4 \
$(top_srcdir)/src/lib/ltdl/m4/libtool.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltdl.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltoptions.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltsugar.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltversion.m4 \
$(top_srcdir)/src/lib/ltdl/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/include/pa_config_auto.h
CONFIG_CLEAN_FILES = auto.p.dist
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(confdir)"
DATA = $(conf_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APACHE = @APACHE@
APACHE_CFLAGS = @APACHE_CFLAGS@
APACHE_INC = @APACHE_INC@
AR = @AR@
ARGZ_H = @ARGZ_H@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GC_LIBS = @GC_LIBS@
GREP = @GREP@
INCLTDL = @INCLTDL@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBADD_DL = @LIBADD_DL@
LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
LIBADD_DLOPEN = @LIBADD_DLOPEN@
LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
LIBLTDL = @LIBLTDL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTDLDEPS = @LTDLDEPS@
LTDLINCL = @LTDLINCL@
LTDLOPEN = @LTDLOPEN@
LTLIBOBJS = @LTLIBOBJS@
LT_CONFIG_H = @LT_CONFIG_H@
LT_DLLOADERS = @LT_DLLOADERS@
LT_DLPREOPEN = @LT_DLPREOPEN@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MIME_INCLUDES = @MIME_INCLUDES@
MIME_LIBS = @MIME_LIBS@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
P3S = @P3S@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PCRE_INCLUDES = @PCRE_INCLUDES@
PCRE_LIBS = @PCRE_LIBS@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
XML_INCLUDES = @XML_INCLUDES@
XML_LIBS = @XML_LIBS@
YACC = @YACC@
YFLAGS = @YFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
dll_extension = @dll_extension@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
ltdl_LIBOBJS = @ltdl_LIBOBJS@
ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
subdirs = @subdirs@
sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
confdir = @bindir@
conf_DATA = auto.p.dist
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bin/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu bin/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
auto.p.dist: $(top_builddir)/config.status $(srcdir)/auto.p.dist.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-confDATA: $(conf_DATA)
@$(NORMAL_INSTALL)
test -z "$(confdir)" || $(MKDIR_P) "$(DESTDIR)$(confdir)"
@list='$(conf_DATA)'; test -n "$(confdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(confdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(confdir)" || exit $$?; \
done
uninstall-confDATA:
@$(NORMAL_UNINSTALL)
@list='$(conf_DATA)'; test -n "$(confdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
echo " ( cd '$(DESTDIR)$(confdir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(confdir)" && rm -f $$files
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(confdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-confDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-confDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-confDATA install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am uninstall-confDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
parser-3.4.3/bin/Makefile.am 000644 000000 000000 00000000047 07504355454 015734 0 ustar 00root wheel 000000 000000 confdir=@bindir@
conf_DATA=auto.p.dist
parser-3.4.3/bin/auto.p.dist.in 000644 000000 000000 00000010453 12230467111 016364 0 ustar 00root wheel 000000 000000 #$Id: auto.p.dist.in,v 1.19 2013/10/19 11:34:33 misha Exp $
@conf[filespec]
$confdir[^file:dirname[$filespec]]
$charsetsdir[$confdir/charsets]
$sqldriversdir[$confdir/lib]
$CHARSETS[
# $.cp866[$charsetsdir/cp866.cfg]
# $.koi8-r[$charsetsdir/koi8-r.cfg]
# $.koi8-u[$charsetsdir/koi8-u.cfg]
# $.windows-1250[$charsetsdir/windows-1250.cfg]
# $.windows-1251[$charsetsdir/windows-1251.cfg]
# $.windows-1254[$charsetsdir/windows-1254.cfg]
# $.windows-1257[$charsetsdir/windows-1257.cfg]
# $.x-mac-cyrillic[$charsetsdir/x-mac-cyrillic.cfg]
]
#change your client libraries paths to those on your system
$SQL[
$.drivers[^table::create{protocol driver client
mysql $sqldriversdir/libparser3mysql.@dll_extension@ libmysqlclient.@dll_extension@
#sqlite $sqldriversdir/libparser3sqlite.@dll_extension@ sqlite3.@dll_extension@
#pgsql $sqldriversdir/libparser3pgsql.@dll_extension@ libpq.@dll_extension@
#oracle $sqldriversdir/libparser3oracle.@dll_extension@ libclntsh.@dll_extension@
}]
]
#for ^file::load[name;user-name] mime-type autodetection
$MIME-TYPES[^table::create{ext mime-type
7z application/x-7z-compressed
au audio/basic
avi video/x-msvideo
css text/css
cvs text/csv
doc application/msword
docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
dtd application/xml-dtd
gif image/gif
gz application/x-gzip
htm text/html
html text/html
ico image/x-icon
jpeg image/jpeg
jpg image/jpeg
js application/javascript
log text/plain
mid audio/midi
midi audio/midi
mov video/quicktime
mp3 audio/mpeg
mpg video/mpeg
mpeg video/mpeg
mts application/metastream
pdf application/pdf
png image/png
ppt application/powerpoint
ra audio/x-realaudio
ram audio/x-pn-realaudio
rar application/x-rar-compressed
rdf application/rdf+xml
rpm audio/x-pn-realaudio-plugin
rss application/rss+xml
rtf application/rtf
svg image/svg+xml
swf application/x-shockwave-flash
tar application/x-tar
tgz application/x-gzip
tif image/tiff
txt text/plain
wav audio/x-wav
xls application/vnd.ms-excel
xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xml text/xml
xsl text/xml
zip application/zip
}]
$LIMITS[
$.post_max_size(10*0x400*0x400)
]
#$MAIL[
# $.sendmail[your sendmail command goes here]
# these are tried when no 'sendmail' specified:
# /usr/sbin/sendmail -t -i -f postmaster
# /usr/lib/sendmail -t -i -f postmaster
#]
@fatal_error[title;subtitle;body]
$response:status(500)
$response:content-type[
$.value[text/html]
$.charset[$response:charset]
]
$title
^if(def $subtitle){$subtitle;$title}
$body
#for [x] MSIE friendly
^for[i](0;512/8){}
@unhandled_exception_debug[exception;stack]
^fatal_error[Unhandled Exception^if(def $exception.type){ ($exception.type)};$exception.source;
^untaint[html]{$exception.comment}
^if(def $exception.file){
^untaint[html]{$exception.file^(${exception.lineno}:$exception.colno^)}
}
^if($stack){
^stack.menu{
$stack.name $stack.file^(${stack.lineno}:$stack.colno^)
}
}
]
@unhandled_exception_release[exception;stack]
^fatal_error[Unhandled Exception;;
The server encountered an unhandled exception and was unable to complete your request.
Please contact the server administrator, $env:SERVER_ADMIN and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the Parser error log or in debug version of unhandled_exception.
]
@is_developer[]
#change mask to your ip address
$result(def $env:REMOTE_ADDR && ^env:REMOTE_ADDR.match[^^127\.0\.0\.1^$])
@unhandled_exception[exception;stack]
#developer? use debug version to see problem details
^if(^is_developer[]){
^unhandled_exception_debug[$exception;$stack]
}{
^if($exception.type eq "file.missing"){
# ^log404[]
# ^location[/404/]
$response:status(404)
}{
^unhandled_exception_release[$exception;$stack]
}
}
@auto[]
#source/client charsets
$request:charset[utf-8]
$response:charset[utf-8]
$response:content-type[
$.value[text/html]
$.charset[$response:charset]
]
#$SQL.connect-string[mysql://user:pass@host/db?charset=utf8]
#$SQL.connect-string[sqlite://db]
#$SQL.connect-string[pgsql://user:pass@host/db]
#$SQL.connect-string[odbc://DSN=datasource^;UID=user^;PWD=password]
parser-3.4.3/etc/Makefile.in 000644 000000 000000 00000042646 11766635214 015763 0 ustar 00root wheel 000000 000000 # Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = etc
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/src/lib/ltdl/m4/argz.m4 \
$(top_srcdir)/src/lib/ltdl/m4/libtool.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltdl.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltoptions.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltsugar.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltversion.m4 \
$(top_srcdir)/src/lib/ltdl/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/include/pa_config_auto.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
distdir
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APACHE = @APACHE@
APACHE_CFLAGS = @APACHE_CFLAGS@
APACHE_INC = @APACHE_INC@
AR = @AR@
ARGZ_H = @ARGZ_H@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GC_LIBS = @GC_LIBS@
GREP = @GREP@
INCLTDL = @INCLTDL@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBADD_DL = @LIBADD_DL@
LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
LIBADD_DLOPEN = @LIBADD_DLOPEN@
LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
LIBLTDL = @LIBLTDL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTDLDEPS = @LTDLDEPS@
LTDLINCL = @LTDLINCL@
LTDLOPEN = @LTDLOPEN@
LTLIBOBJS = @LTLIBOBJS@
LT_CONFIG_H = @LT_CONFIG_H@
LT_DLLOADERS = @LT_DLLOADERS@
LT_DLPREOPEN = @LT_DLPREOPEN@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MIME_INCLUDES = @MIME_INCLUDES@
MIME_LIBS = @MIME_LIBS@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
P3S = @P3S@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PCRE_INCLUDES = @PCRE_INCLUDES@
PCRE_LIBS = @PCRE_LIBS@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
XML_INCLUDES = @XML_INCLUDES@
XML_LIBS = @XML_LIBS@
YACC = @YACC@
YFLAGS = @YFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
dll_extension = @dll_extension@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
ltdl_LIBOBJS = @ltdl_LIBOBJS@
ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
subdirs = @subdirs@
sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = parser3.charsets
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu etc/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu etc/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
install-am install-strip tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am check check-am clean clean-generic clean-libtool \
ctags ctags-recursive distclean distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
parser-3.4.3/etc/parser3.charsets/ 000755 000000 000000 00000000000 12234223576 017067 5 ustar 00root wheel 000000 000000 parser-3.4.3/etc/Makefile.am 000644 000000 000000 00000000033 07503631237 015725 0 ustar 00root wheel 000000 000000 SUBDIRS = parser3.charsets
parser-3.4.3/etc/parser3.charsets/windows-1257.cfg 000644 000000 000000 00000011075 11445753747 021655 0 ustar 00root wheel 000000 000000 char white-space digit hex-digit letter word lowercase unicode1 unicode2
0x09 x
0x0A x
0x0B x
0x0C x
0x0D x
0x20 x
! 0x0021 0xFF01
0x22 0x0022 0xFF02
0x23 0x0023 0xFF03
$ 0x0024 0xFF04
% 0x0025 0xFF05
& 0x0026 0xFF06
' 0x0027 0xFF07
( 0x0028 0xFF08
) 0x0029 0xFF09
* 0x002A 0xFF0A
+ 0x002B 0xFF0B
, 0x002C 0xFF0C
- 0x002D 0xFF0D
. 0x002E 0xFF0E
/ 0x002F 0xFF0F
0 x x x 0x0030 0xFF10
1 x x x 0x0031 0xFF11
2 x x x 0x0032 0xFF12
3 x x x 0x0033 0xFF13
4 x x x 0x0034 0xFF14
5 x x x 0x0035 0xFF15
6 x x x 0x0036 0xFF16
7 x x x 0x0037 0xFF17
8 x x x 0x0038 0xFF18
9 x x x 0x0039 0xFF19
: 0x003A 0xFF1A
; 0x003B 0xFF1B
< 0x003C 0xFF1C
= 0x003D 0xFF1D
> 0x003E 0xFF1E
? 0x003F 0xFF1F
@ 0x0040 0xFF20
A x x x a 0x0041 0xFF21
B x x x b 0x0042 0xFF22
C x x x c 0x0043 0xFF23
D x x x d 0x0044 0xFF24
E x x x e 0x0045 0xFF25
F x x x f 0x0046 0xFF26
G x x g 0x0047 0xFF27
H x x h 0x0048 0xFF28
I x x i 0x0049 0xFF29
J x x j 0x004A 0xFF2A
K x x k 0x004B 0xFF2B
L x x l 0x004C 0xFF2C
M x x m 0x004D 0xFF2D
N x x n 0x004E 0xFF2E
O x x o 0x004F 0xFF2F
P x x p 0x0050 0xFF30
Q x x q 0x0051 0xFF31
R x x r 0x0052 0xFF32
S x x s 0x0053 0xFF33
T x x t 0x0054 0xFF34
U x x u 0x0055 0xFF35
V x x v 0x0056 0xFF36
W x x w 0x0057 0xFF37
X x x x 0x0058 0xFF38
Y x x y 0x0059 0xFF39
Z x x z 0x005A 0xFF3A
[ 0x005B 0xFF3B
\ 0x005C 0xFF3C
] 0x005D 0xFF3D
^ 0x005E 0xFF3E
_ x 0x005F 0xFF3F
` 0x0060 0xFF40
a x x x 0x0061 0xFF41
b x x x 0x0062 0xFF42
c x x x 0x0063 0xFF43
d x x x 0x0064 0xFF44
e x x x 0x0065 0xFF45
f x x x 0x0066 0xFF46
g x x 0x0067 0xFF47
h x x 0x0068 0xFF48
i x x 0x0069 0xFF49
j x x 0x006A 0xFF4A
k x x 0x006B 0xFF4B
l x x 0x006C 0xFF4C
m x x 0x006D 0xFF4D
n x x 0x006E 0xFF4E
o x x 0x006F 0xFF4F
p x x 0x0070 0xFF50
q x x 0x0071 0xFF51
r x x 0x0072 0xFF52
s x x 0x0073 0xFF53
t x x 0x0074 0xFF54
u x x 0x0075 0xFF55
v x x 0x0076 0xFF56
w x x 0x0077 0xFF57
x x x 0x0078 0xFF58
y x x 0x0079 0xFF59
z x x 0x007A 0xFF5A
{ 0x007B 0xFF5B
| 0x007C 0xFF5C
} 0x007D 0xFF5D
~ 0x007E 0xFF5E
0x7F
0x80 0x20AC
0x82 0x201A
0x84 0x201E
0x85 0x2026
0x86 0x2020
0x87 0x2021
0x89 0x2030
0x8B 0x2039
0x8D 0x00A8
0x8E 0x02C7
0x8F 0x00B8
0x91 0x2018
0x92 0x2019
0x93 0x201C
0x94 0x201D
0x95 0x2022
0x96 0x2013
0x97 0x2014
0x99 0x2122
0x9B 0x203A
0x9D 0x00AF
0x9E 0x02DB
0xA0 x
0xA2
0xA3
0xA4
0xA6
0xA7
0xA8 x x 0xB8 0x00D8
0xA9
0xAA x x 0xBA 0x0156
0xAB
0xAC
0xAD
0xAE
0xAF x x 0xBF 0x00C6
0xB0
0xB1
0xB2 x x
0xB3 x x
0xB4
0xB5
0xB6
0xB7
0xB8 x x 0x00F8
0xB9 x x
0xBA x x 0x0157
0xBB
0xBC
0xBD
0xBE
0xBF x x 0x00E6
0xC0 x x 0xE0 0x0104
0xC1 x x 0xE1 0x012E
0xC2 x x 0xE2 0x0100
0xC3 x x 0xE3 0x0106
0xC4 x x 0xE4
0xC5 x x 0xE5
0xC6 x x 0xE6 0x0118
0xC7 x x 0xE7 0x0112
0xC8 x x 0xE8 0x010C
0xC9 x x 0xE9
0xCA x x 0xEA 0x0179
0xCB x x 0xEB 0x0116
0xCC x x 0xEC 0x0122
0xCD x x 0xED 0x0136
0xCE x x 0xEE 0x012A
0xCF x x 0xEF 0x013B
0xD0 x x 0xF0 0x0160
0xD1 x x 0xF1 0x0143
0xD2 x x 0xF2 0x0145
0xD3 x x 0xF3
0xD4 x x 0xF4 0x014C
0xD5 x x 0xF5
0xD6 x x 0xF6
0xD7
0xD8 x x 0xF8 0x0172
0xD9 x x 0xF9 0x0141
0xDA x x 0xFA 0x015A
0xDB x x 0xFB 0x016A
0xDC x x 0xFC
0xDD x x 0xFD 0x017B
0xDE x x 0xFE 0x017D
0xDF x x
0xE0 x x 0x0105
0xE1 x x 0x012F
0xE2 x x 0x0101
0xE3 x x 0x0107
0xE4 x x
0xE5 x x
0xE6 x x 0x0119
0xE7 x x 0x0113
0xE8 x x 0x010D
0xE9 x x
0xEA x x 0x017A
0xEB x x 0x0117
0xEC x x 0x0123
0xED x x 0x0137
0xEE x x 0x012B
0xEF x x 0x013C
0xF0 x x 0x0161
0xF1 x x 0x0144
0xF2 x x 0x0146
0xF3 x x
0xF4 x x 0x014D
0xF5 x x
0xF6 x x
0xF7
0xF8 x x 0x0173
0xF9 x x 0x0142
0xFA x x 0x015B
0xFB x x 0x016B
0xFC x x
0xFD x x 0x017C
0xFE x x 0x017E
0xFF 0x02D9
#$Id: windows-1257.cfg,v 1.3 2010/09/20 21:53:43 moko Exp $
#Conforms to http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1257.TXT
parser-3.4.3/etc/parser3.charsets/Makefile.in 000644 000000 000000 00000031041 11766635214 021140 0 ustar 00root wheel 000000 000000 # Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = etc/parser3.charsets
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/src/lib/ltdl/m4/argz.m4 \
$(top_srcdir)/src/lib/ltdl/m4/libtool.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltdl.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltoptions.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltsugar.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltversion.m4 \
$(top_srcdir)/src/lib/ltdl/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/include/pa_config_auto.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(charsetsdir)"
DATA = $(charsets_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APACHE = @APACHE@
APACHE_CFLAGS = @APACHE_CFLAGS@
APACHE_INC = @APACHE_INC@
AR = @AR@
ARGZ_H = @ARGZ_H@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GC_LIBS = @GC_LIBS@
GREP = @GREP@
INCLTDL = @INCLTDL@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBADD_DL = @LIBADD_DL@
LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
LIBADD_DLOPEN = @LIBADD_DLOPEN@
LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
LIBLTDL = @LIBLTDL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTDLDEPS = @LTDLDEPS@
LTDLINCL = @LTDLINCL@
LTDLOPEN = @LTDLOPEN@
LTLIBOBJS = @LTLIBOBJS@
LT_CONFIG_H = @LT_CONFIG_H@
LT_DLLOADERS = @LT_DLLOADERS@
LT_DLPREOPEN = @LT_DLPREOPEN@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MIME_INCLUDES = @MIME_INCLUDES@
MIME_LIBS = @MIME_LIBS@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
P3S = @P3S@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PCRE_INCLUDES = @PCRE_INCLUDES@
PCRE_LIBS = @PCRE_LIBS@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
XML_INCLUDES = @XML_INCLUDES@
XML_LIBS = @XML_LIBS@
YACC = @YACC@
YFLAGS = @YFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
dll_extension = @dll_extension@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
ltdl_LIBOBJS = @ltdl_LIBOBJS@
ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
subdirs = @subdirs@
sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
charsetsdir = @datadir@/charsets
charsets_DATA = cp866.cfg koi8-r.cfg koi8-u.cfg windows-1250.cfg windows-1251.cfg windows-1254.cfg windows-1257.cfg x-mac-cyrillic.cfg
EXTRA_DIST = $(charsets_DATA)
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu etc/parser3.charsets/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu etc/parser3.charsets/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-charsetsDATA: $(charsets_DATA)
@$(NORMAL_INSTALL)
test -z "$(charsetsdir)" || $(MKDIR_P) "$(DESTDIR)$(charsetsdir)"
@list='$(charsets_DATA)'; test -n "$(charsetsdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(charsetsdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(charsetsdir)" || exit $$?; \
done
uninstall-charsetsDATA:
@$(NORMAL_UNINSTALL)
@list='$(charsets_DATA)'; test -n "$(charsetsdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
echo " ( cd '$(DESTDIR)$(charsetsdir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(charsetsdir)" && rm -f $$files
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(charsetsdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-charsetsDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-charsetsDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-charsetsDATA install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am uninstall-charsetsDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
parser-3.4.3/etc/parser3.charsets/windows-1251.cfg 000644 000000 000000 00000012010 11445753746 021634 0 ustar 00root wheel 000000 000000 char white-space digit hex-digit letter word lowercase unicode1 unicode2
0x09 x
0x0A x
0x0B x
0x0C x
0x0D x
0x20 x
! 0x0021 0xFF01
0x22 0x0022 0xFF02
0x23 0x0023 0xFF03
$ 0x0024 0xFF04
% 0x0025 0xFF05
& 0x0026 0xFF06
' 0x0027 0xFF07
( 0x0028 0xFF08
) 0x0029 0xFF09
* 0x002A 0xFF0A
+ 0x002B 0xFF0B
, 0x002C 0xFF0C
- 0x002D 0xFF0D
. 0x002E 0xFF0E
/ 0x002F 0xFF0F
0 x x x 0x0030 0xFF10
1 x x x 0x0031 0xFF11
2 x x x 0x0032 0xFF12
3 x x x 0x0033 0xFF13
4 x x x 0x0034 0xFF14
5 x x x 0x0035 0xFF15
6 x x x 0x0036 0xFF16
7 x x x 0x0037 0xFF17
8 x x x 0x0038 0xFF18
9 x x x 0x0039 0xFF19
: 0x003A 0xFF1A
; 0x003B 0xFF1B
< 0x003C 0xFF1C
= 0x003D 0xFF1D
> 0x003E 0xFF1E
? 0x003F 0xFF1F
@ 0x0040 0xFF20
A x x x a 0x0041 0xFF21
B x x x b 0x0042 0xFF22
C x x x c 0x0043 0xFF23
D x x x d 0x0044 0xFF24
E x x x e 0x0045 0xFF25
F x x x f 0x0046 0xFF26
G x x g 0x0047 0xFF27
H x x h 0x0048 0xFF28
I x x i 0x0049 0xFF29
J x x j 0x004A 0xFF2A
K x x k 0x004B 0xFF2B
L x x l 0x004C 0xFF2C
M x x m 0x004D 0xFF2D
N x x n 0x004E 0xFF2E
O x x o 0x004F 0xFF2F
P x x p 0x0050 0xFF30
Q x x q 0x0051 0xFF31
R x x r 0x0052 0xFF32
S x x s 0x0053 0xFF33
T x x t 0x0054 0xFF34
U x x u 0x0055 0xFF35
V x x v 0x0056 0xFF36
W x x w 0x0057 0xFF37
X x x x 0x0058 0xFF38
Y x x y 0x0059 0xFF39
Z x x z 0x005A 0xFF3A
[ 0x005B 0xFF3B
\ 0x005C 0xFF3C
] 0x005D 0xFF3D
^ 0x005E 0xFF3E
_ x 0x005F 0xFF3F
` 0x0060 0xFF40
a x x x 0x0061 0xFF41
b x x x 0x0062 0xFF42
c x x x 0x0063 0xFF43
d x x x 0x0064 0xFF44
e x x x 0x0065 0xFF45
f x x x 0x0066 0xFF46
g x x 0x0067 0xFF47
h x x 0x0068 0xFF48
i x x 0x0069 0xFF49
j x x 0x006A 0xFF4A
k x x 0x006B 0xFF4B
l x x 0x006C 0xFF4C
m x x 0x006D 0xFF4D
n x x 0x006E 0xFF4E
o x x 0x006F 0xFF4F
p x x 0x0070 0xFF50
q x x 0x0071 0xFF51
r x x 0x0072 0xFF52
s x x 0x0073 0xFF53
t x x 0x0074 0xFF54
u x x 0x0075 0xFF55
v x x 0x0076 0xFF56
w x x 0x0077 0xFF57
x x x 0x0078 0xFF58
y x x 0x0079 0xFF59
z x x 0x007A 0xFF5A
{ 0x007B 0xFF5B
| 0x007C 0xFF5C
} 0x007D 0xFF5D
~ 0x007E 0xFF5E
0x7F
0x80 x x 0x90 0x0402
0x81 x x 0x83 0x0403
0x82 0x201A
0x83 x x 0x0453
0x84 0x201E
0x85 0x2026
0x86 0x2020
0x87 0x2021
0x88 0x20AC
0x89 0x2030
0x8A x x 0x9A 0x0409
0x8B 0x2039
0x8C x x 0x9C 0x040A
0x8D x x 0x9D 0x040C
0x8E x x 0x9E 0x040B
0x8F x x 0x9F 0x040F
0x90 x x 0x0452
0x91 0x2018
0x92 0x2019
0x93 0x201C
0x94 0x201D
0x95 0x2022
0x96 0x2013
0x97 0x2014
0x99 0x2122
0x9A x x 0x0459
0x9B 0x203A
0x9C x x 0x045A
0x9D x x 0x045C
0x9E x x 0x045B
0x9F x x 0x045F
0xA0 x
0xA1 x x 0xA2 0x040E
0xA2 x x 0x045E
0xA3 x x 0xBC 0x0408
0xA4
0xA5 x x 0xB4 0x0490
0xA6
0xA7
0xA8 x x 0xB8 0x0401
0xA9
0xAA x x 0xBA 0x0404
0xAB
0xAC
0xAD
0xAE
0xAF x x 0xBF 0x0407
0xB0
0xB1
0xB2 x x 0xB3 0x0406
0xB3 x x 0x0456
0xB4 x x 0x0491
0xB5
0xB6
0xB7
0xB8 x x 0x0451
0xB9 0x2116
0xBA x x 0x0454
0xBB
0xBC x x 0x0458
0xBD x x 0xBE 0x0405
0xBE x x 0x0455
0xBF x x 0x0457
0xC0 x x 0xE0 0x0410
0xC1 x x 0xE1 0x0411
0xC2 x x 0xE2 0x0412
0xC3 x x 0xE3 0x0413
0xC4 x x 0xE4 0x0414
0xC5 x x 0xE5 0x0415
0xC6 x x 0xE6 0x0416
0xC7 x x 0xE7 0x0417
0xC8 x x 0xE8 0x0418
0xC9 x x 0xE9 0x0419
0xCA x x 0xEA 0x041A
0xCB x x 0xEB 0x041B
0xCC x x 0xEC 0x041C
0xCD x x 0xED 0x041D
0xCE x x 0xEE 0x041E
0xCF x x 0xEF 0x041F
0xD0 x x 0xF0 0x0420
0xD1 x x 0xF1 0x0421
0xD2 x x 0xF2 0x0422
0xD3 x x 0xF3 0x0423
0xD4 x x 0xF4 0x0424
0xD5 x x 0xF5 0x0425
0xD6 x x 0xF6 0x0426
0xD7 x x 0xF7 0x0427
0xD8 x x 0xF8 0x0428
0xD9 x x 0xF9 0x0429
0xDA x x 0xFA 0x042A
0xDB x x 0xFB 0x042B
0xDC x x 0xFC 0x042C
0xDD x x 0xFD 0x042D
0xDE x x 0xFE 0x042E
0xDF x x 0xFF 0x042F
0xE0 x x 0x0430
0xE1 x x 0x0431
0xE2 x x 0x0432
0xE3 x x 0x0433
0xE4 x x 0x0434
0xE5 x x 0x0435
0xE6 x x 0x0436
0xE7 x x 0x0437
0xE8 x x 0x0438
0xE9 x x 0x0439
0xEA x x 0x043A
0xEB x x 0x043B
0xEC x x 0x043C
0xED x x 0x043D
0xEE x x 0x043E
0xEF x x 0x043F
0xF0 x x 0x0440
0xF1 x x 0x0441
0xF2 x x 0x0442
0xF3 x x 0x0443
0xF4 x x 0x0444
0xF5 x x 0x0445
0xF6 x x 0x0446
0xF7 x x 0x0447
0xF8 x x 0x0448
0xF9 x x 0x0449
0xFA x x 0x044A
0xFB x x 0x044B
0xFC x x 0x044C
0xFD x x 0x044D
0xFE x x 0x044E
0xFF x x 0x044F
#$Id: windows-1251.cfg,v 1.14 2010/09/20 21:53:42 moko Exp $
#Conforms to http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT
parser-3.4.3/etc/parser3.charsets/windows-1254.cfg 000644 000000 000000 00000010557 11445753746 021655 0 ustar 00root wheel 000000 000000 char white-space digit hex-digit letter word lowercase unicode1 unicode2
0x09 x
0x0A x
0x0B x
0x0C x
0x0D x
0x20 x
! 0x0021 0xFF01
0x22 0x0022 0xFF02
0x23 0x0023 0xFF03
$ 0x0024 0xFF04
% 0x0025 0xFF05
& 0x0026 0xFF06
' 0x0027 0xFF07
( 0x0028 0xFF08
) 0x0029 0xFF09
* 0x002A 0xFF0A
+ 0x002B 0xFF0B
, 0x002C 0xFF0C
- 0x002D 0xFF0D
. 0x002E 0xFF0E
/ 0x002F 0xFF0F
0 x x x 0x0030 0xFF10
1 x x x 0x0031 0xFF11
2 x x x 0x0032 0xFF12
3 x x x 0x0033 0xFF13
4 x x x 0x0034 0xFF14
5 x x x 0x0035 0xFF15
6 x x x 0x0036 0xFF16
7 x x x 0x0037 0xFF17
8 x x x 0x0038 0xFF18
9 x x x 0x0039 0xFF19
: 0x003A 0xFF1A
; 0x003B 0xFF1B
< 0x003C 0xFF1C
= 0x003D 0xFF1D
> 0x003E 0xFF1E
? 0x003F 0xFF1F
@ 0x0040 0xFF20
A x x x a 0x0041 0xFF21
B x x x b 0x0042 0xFF22
C x x x c 0x0043 0xFF23
D x x x d 0x0044 0xFF24
E x x x e 0x0045 0xFF25
F x x x f 0x0046 0xFF26
G x x g 0x0047 0xFF27
H x x h 0x0048 0xFF28
I x x i 0x0049 0xFF29
J x x j 0x004A 0xFF2A
K x x k 0x004B 0xFF2B
L x x l 0x004C 0xFF2C
M x x m 0x004D 0xFF2D
N x x n 0x004E 0xFF2E
O x x o 0x004F 0xFF2F
P x x p 0x0050 0xFF30
Q x x q 0x0051 0xFF31
R x x r 0x0052 0xFF32
S x x s 0x0053 0xFF33
T x x t 0x0054 0xFF34
U x x u 0x0055 0xFF35
V x x v 0x0056 0xFF36
W x x w 0x0057 0xFF37
X x x x 0x0058 0xFF38
Y x x y 0x0059 0xFF39
Z x x z 0x005A 0xFF3A
[ 0x005B 0xFF3B
\ 0x005C 0xFF3C
] 0x005D 0xFF3D
^ 0x005E 0xFF3E
_ x 0x005F 0xFF3F
` 0x0060 0xFF40
a x x x 0x0061 0xFF41
b x x x 0x0062 0xFF42
c x x x 0x0063 0xFF43
d x x x 0x0064 0xFF44
e x x x 0x0065 0xFF45
f x x x 0x0066 0xFF46
g x x 0x0067 0xFF47
h x x 0x0068 0xFF48
i x x 0x0069 0xFF49
j x x 0x006A 0xFF4A
k x x 0x006B 0xFF4B
l x x 0x006C 0xFF4C
m x x 0x006D 0xFF4D
n x x 0x006E 0xFF4E
o x x 0x006F 0xFF4F
p x x 0x0070 0xFF50
q x x 0x0071 0xFF51
r x x 0x0072 0xFF52
s x x 0x0073 0xFF53
t x x 0x0074 0xFF54
u x x 0x0075 0xFF55
v x x 0x0076 0xFF56
w x x 0x0077 0xFF57
x x x 0x0078 0xFF58
y x x 0x0079 0xFF59
z x x 0x007A 0xFF5A
{ 0x007B 0xFF5B
| 0x007C 0xFF5C
} 0x007D 0xFF5D
~ 0x007E 0xFF5E
0x7F
0x80 0x20AC
0x82 0x201A
0x83 x x 0x0192
0x84 0x201E
0x85 0x2026
0x86 0x2020
0x87 0x2021
0x88 0x02C6
0x89 0x2030
0x8A x x 0x9A 0x0160
0x8B 0x2039
0x8C x x 0x9C 0x0152
0x91 0x2018
0x92 0x2019
0x93 0x201C
0x94 0x201D
0x95 0x2022
0x96 0x2013
0x97 0x2014
0x98 0x02DC
0x99 0x2122
0x9A x x 0x0161
0x9B 0x203A
0x9C x x 0x0153
0x9F x x 0xFF 0x0178
0xA0 x
0xA1
0xA2
0xA3
0xA4
0xA5
0xA6
0xA7
0xA8
0xA9
0xAA
0xAB
0xAC
0xAD
0xAE
0xAF
0xB0
0xB1
0xB2 x x
0xB3 x x
0xB4
0xB5
0xB6
0xB7
0xB8
0xB9 x x
0xBA
0xBB
0xBC
0xBD
0xBE
0xBF
0xC0 x x 0xE0
0xC1 x x 0xE1
0xC2 x x 0xE2
0xC3 x x 0xE3
0xC4 x x 0xE4
0xC5 x x 0xE5
0xC6 x x 0xE6
0xC7 x x 0xE7
0xC8 x x 0xE8
0xC9 x x 0xE9
0xCA x x 0xEA
0xCB x x 0xEB
0xCC x x 0xEC
0xCD x x 0xED
0xCE x x 0xEE
0xCF x x 0xEF
0xD0 x x 0xF0 0x011E
0xD1 x x 0xF1
0xD2 x x 0xF2
0xD3 x x 0xF3
0xD4 x x 0xF4
0xD5 x x 0xF5
0xD6 x x 0xF6
0xD7
0xD8 x x 0xF8
0xD9 x x 0xF9
0xDA x x 0xFA
0xDB x x 0xFB
0xDC x x 0xFC
0xDD x x 0x0130
0xDE x x 0xFE 0x015E
0xDF x x
0xE0 x x
0xE1 x x
0xE2 x x
0xE3 x x
0xE4 x x
0xE5 x x
0xE6 x x
0xE7 x x
0xE8 x x
0xE9 x x
0xEA x x
0xEB x x
0xEC x x
0xED x x
0xEE x x
0xEF x x
0xF0 x x 0x011F
0xF1 x x
0xF2 x x
0xF3 x x
0xF4 x x
0xF5 x x
0xF6 x x
0xF7
0xF8 x x
0xF9 x x
0xFA x x
0xFB x x
0xFC x x
0xFD x x 0x0131
0xFE x x 0x015F
0xFF x x
#$Id: windows-1254.cfg,v 1.2 2010/09/20 21:53:42 moko Exp $
#Conforms to http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1254.TXT
parser-3.4.3/etc/parser3.charsets/cp866.cfg 000644 000000 000000 00000012015 11534227423 020412 0 ustar 00root wheel 000000 000000 char white-space digit hex-digit letter word lowercase unicode1 unicode2
0x09 x
0x0A x
0x0B x
0x0C x
0x0D x
0x20 x
! 0x0021 0xFF01
0x22 0x0022 0xFF02
0x23 0x0023 0xFF03
$ 0x0024 0xFF04
% 0x0025 0xFF05
& 0x0026 0xFF06
' 0x0027 0xFF07
( 0x0028 0xFF08
) 0x0029 0xFF09
* 0x002A 0xFF0A
+ 0x002B 0xFF0B
, 0x002C 0xFF0C
- 0x002D 0xFF0D
. 0x002E 0xFF0E
/ 0x002F 0xFF0F
0 x x x 0x0030 0xFF10
1 x x x 0x0031 0xFF11
2 x x x 0x0032 0xFF12
3 x x x 0x0033 0xFF13
4 x x x 0x0034 0xFF14
5 x x x 0x0035 0xFF15
6 x x x 0x0036 0xFF16
7 x x x 0x0037 0xFF17
8 x x x 0x0038 0xFF18
9 x x x 0x0039 0xFF19
: 0x003A 0xFF1A
; 0x003B 0xFF1B
< 0x003C 0xFF1C
= 0x003D 0xFF1D
> 0x003E 0xFF1E
? 0x003F 0xFF1F
@ 0x0040 0xFF20
A x x x a 0x0041 0xFF21
B x x x b 0x0042 0xFF22
C x x x c 0x0043 0xFF23
D x x x d 0x0044 0xFF24
E x x x e 0x0045 0xFF25
F x x x f 0x0046 0xFF26
G x x g 0x0047 0xFF27
H x x h 0x0048 0xFF28
I x x i 0x0049 0xFF29
J x x j 0x004A 0xFF2A
K x x k 0x004B 0xFF2B
L x x l 0x004C 0xFF2C
M x x m 0x004D 0xFF2D
N x x n 0x004E 0xFF2E
O x x o 0x004F 0xFF2F
P x x p 0x0050 0xFF30
Q x x q 0x0051 0xFF31
R x x r 0x0052 0xFF32
S x x s 0x0053 0xFF33
T x x t 0x0054 0xFF34
U x x u 0x0055 0xFF35
V x x v 0x0056 0xFF36
W x x w 0x0057 0xFF37
X x x x 0x0058 0xFF38
Y x x y 0x0059 0xFF39
Z x x z 0x005A 0xFF3A
[ 0x005B 0xFF3B
\ 0x005C 0xFF3C
] 0x005D 0xFF3D
^ 0x005E 0xFF3E
_ x 0x005F 0xFF3F
` 0x0060 0xFF40
a x x x 0x0061 0xFF41
b x x x 0x0062 0xFF42
c x x x 0x0063 0xFF43
d x x x 0x0064 0xFF44
e x x x 0x0065 0xFF45
f x x x 0x0066 0xFF46
g x x 0x0067 0xFF47
h x x 0x0068 0xFF48
i x x 0x0069 0xFF49
j x x 0x006A 0xFF4A
k x x 0x006B 0xFF4B
l x x 0x006C 0xFF4C
m x x 0x006D 0xFF4D
n x x 0x006E 0xFF4E
o x x 0x006F 0xFF4F
p x x 0x0070 0xFF50
q x x 0x0071 0xFF51
r x x 0x0072 0xFF52
s x x 0x0073 0xFF53
t x x 0x0074 0xFF54
u x x 0x0075 0xFF55
v x x 0x0076 0xFF56
w x x 0x0077 0xFF57
x x x 0x0078 0xFF58
y x x 0x0079 0xFF59
z x x 0x007A 0xFF5A
{ 0x007B 0xFF5B
| 0x007C 0xFF5C
} 0x007D 0xFF5D
~ 0x007E 0xFF5E
0x7F
0x80 x x 0xA0 0x0410
0x81 x x 0xA1 0x0411
0x82 x x 0xA2 0x0412
0x83 x x 0xA3 0x0413
0x84 x x 0xA4 0x0414
0x85 x x 0xA5 0x0415
0x86 x x 0xA6 0x0416
0x87 x x 0xA7 0x0417
0x88 x x 0xA8 0x0418
0x89 x x 0xA9 0x0419
0x8A x x 0xAA 0x041A
0x8B x x 0xAB 0x041B
0x8C x x 0xAC 0x041C
0x8D x x 0xAD 0x041D
0x8E x x 0xAE 0x041E
0x8F x x 0xAF 0x041F
0x90 x x 0xE0 0x0420
0x91 x x 0xE1 0x0421
0x92 x x 0xE2 0x0422
0x93 x x 0xE3 0x0423
0x94 x x 0xE4 0x0424
0x95 x x 0xE5 0x0425
0x96 x x 0xE6 0x0426
0x97 x x 0xE7 0x0427
0x98 x x 0xE8 0x0428
0x99 x x 0xE9 0x0429
0x9A x x 0xEA 0x042A
0x9B x x 0xEB 0x042B
0x9C x x 0xEC 0x042C
0x9D x x 0xED 0x042D
0x9E x x 0xEE 0x042E
0x9F x x 0xEF 0x042F
0xA0 x x 0x0430
0xA1 x x 0x0431
0xA2 x x 0x0432
0xA3 x x 0x0433
0xA4 x x 0x0434
0xA5 x x 0x0435
0xA6 x x 0x0436
0xA7 x x 0x0437
0xA8 x x 0x0438
0xA9 x x 0x0439
0xAA x x 0x043A
0xAB x x 0x043B
0xAC x x 0x043C
0xAD x x 0x043D
0xAE x x 0x043E
0xAF x x 0x043F
0xB0 0x2591
0xB1 0x2592
0xB2 0x2593
0xB3 0x2502
0xB4 0x2524
0xB5 0x2561
0xB6 0x2562
0xB7 0x2556
0xB8 0x2555
0xB9 0x2563
0xBA 0x2551
0xBB 0x2557
0xBC 0x255d
0xBD 0x255c
0xBE 0x255b
0xBF 0x2510
0xC0 0x2514
0xC1 0x2534
0xC2 0x252c
0xC3 0x251c
0xC4 0x2500
0xC5 0x253c
0xC6 0x255e
0xC7 0x255f
0xC8 0x255a
0xC9 0x2554
0xCA 0x2569
0xCB 0x2566
0xCC 0x2560
0xCD 0x2550
0xCE 0x256c
0xCF 0x2567
0xD0 0x2568
0xD1 0x2564
0xD2 0x2565
0xD3 0x2559
0xD4 0x2558
0xD5 0x2552
0xD6 0x2553
0xD7 0x256b
0xD8 0x256a
0xD9 0x2518
0xDA 0x250c
0xDB 0x2588
0xDC 0x2584
0xDD 0x258c
0xDE 0x2590
0xDF 0x2580
0xE0 x x 0x0440
0xE1 x x 0x0441
0xE2 x x 0x0442
0xE3 x x 0x0443
0xE4 x x 0x0444
0xE5 x x 0x0445
0xE6 x x 0x0446
0xE7 x x 0x0447
0xE8 x x 0x0448
0xE9 x x 0x0449
0xEA x x 0x044A
0xEB x x 0x044B
0xEC x x 0x044C
0xED x x 0x044D
0xEE x x 0x044E
0xEF x x 0x044F
0xF0 x x 0xF1 0x0401
0xF1 x x 0x0451
0xF2 x x 0xF3 0x0404
0xF3 x x 0x0454
0xF4 x x 0xF5 0x0407
0xF5 x x 0x0457
0xF6 x x 0xF7 0x040E
0xF7 x x 0x045E
0xF8 0x00b0
0xF9 0x2219
0xFA 0x00b7
0xFB 0x221a
0xFC 0x2116
0xFD 0x00a4
0xFE 0x25a0
0xFF 0x00a0
#$Id: cp866.cfg,v 1.2 2011/03/04 18:27:31 moko Exp $
#Conforms to http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP866.TXT
parser-3.4.3/etc/parser3.charsets/koi8-r.cfg 000644 000000 000000 00000011760 11446221750 020662 0 ustar 00root wheel 000000 000000 char white-space digit hex-digit letter word lowercase unicode1 unicode2
0x09 x
0x0A x
0x0B x
0x0C x
0x0D x
0x20 x
! 0x0021 0xFF01
0x22 0x0022 0xFF02
0x23 0x0023 0xFF03
$ 0x0024 0xFF04
% 0x0025 0xFF05
& 0x0026 0xFF06
' 0x0027 0xFF07
( 0x0028 0xFF08
) 0x0029 0xFF09
* 0x002A 0xFF0A
+ 0x002B 0xFF0B
, 0x002C 0xFF0C
- 0x002D 0xFF0D
. 0x002E 0xFF0E
/ 0x002F 0xFF0F
0 x x x 0x0030 0xFF10
1 x x x 0x0031 0xFF11
2 x x x 0x0032 0xFF12
3 x x x 0x0033 0xFF13
4 x x x 0x0034 0xFF14
5 x x x 0x0035 0xFF15
6 x x x 0x0036 0xFF16
7 x x x 0x0037 0xFF17
8 x x x 0x0038 0xFF18
9 x x x 0x0039 0xFF19
: 0x003A 0xFF1A
; 0x003B 0xFF1B
< 0x003C 0xFF1C
= 0x003D 0xFF1D
> 0x003E 0xFF1E
? 0x003F 0xFF1F
@ 0x0040 0xFF20
A x x x a 0x0041 0xFF21
B x x x b 0x0042 0xFF22
C x x x c 0x0043 0xFF23
D x x x d 0x0044 0xFF24
E x x x e 0x0045 0xFF25
F x x x f 0x0046 0xFF26
G x x g 0x0047 0xFF27
H x x h 0x0048 0xFF28
I x x i 0x0049 0xFF29
J x x j 0x004A 0xFF2A
K x x k 0x004B 0xFF2B
L x x l 0x004C 0xFF2C
M x x m 0x004D 0xFF2D
N x x n 0x004E 0xFF2E
O x x o 0x004F 0xFF2F
P x x p 0x0050 0xFF30
Q x x q 0x0051 0xFF31
R x x r 0x0052 0xFF32
S x x s 0x0053 0xFF33
T x x t 0x0054 0xFF34
U x x u 0x0055 0xFF35
V x x v 0x0056 0xFF36
W x x w 0x0057 0xFF37
X x x x 0x0058 0xFF38
Y x x y 0x0059 0xFF39
Z x x z 0x005A 0xFF3A
[ 0x005B 0xFF3B
\ 0x005C 0xFF3C
] 0x005D 0xFF3D
^ 0x005E 0xFF3E
_ x 0x005F 0xFF3F
` 0x0060 0xFF40
a x x x 0x0061 0xFF41
b x x x 0x0062 0xFF42
c x x x 0x0063 0xFF43
d x x x 0x0064 0xFF44
e x x x 0x0065 0xFF45
f x x x 0x0066 0xFF46
g x x 0x0067 0xFF47
h x x 0x0068 0xFF48
i x x 0x0069 0xFF49
j x x 0x006A 0xFF4A
k x x 0x006B 0xFF4B
l x x 0x006C 0xFF4C
m x x 0x006D 0xFF4D
n x x 0x006E 0xFF4E
o x x 0x006F 0xFF4F
p x x 0x0070 0xFF50
q x x 0x0071 0xFF51
r x x 0x0072 0xFF52
s x x 0x0073 0xFF53
t x x 0x0074 0xFF54
u x x 0x0075 0xFF55
v x x 0x0076 0xFF56
w x x 0x0077 0xFF57
x x x 0x0078 0xFF58
y x x 0x0079 0xFF59
z x x 0x007A 0xFF5A
{ 0x007B 0xFF5B
| 0x007C 0xFF5C
} 0x007D 0xFF5D
~ 0x007E 0xFF5E
0x7F
0x80 0x2500
0x81 0x2502
0x82 0x250C
0x83 0x2510
0x84 0x2514
0x85 0x2518
0x86 0x251C
0x87 0x2524
0x88 0x252C
0x89 0x2534
0x8A 0x253C
0x8B 0x2580
0x8C 0x2584
0x8D 0x2588
0x8E 0x258C
0x8F 0x2590
0x90 0x2591
0x91 0x2592
0x92 0x2593
0x93 0x2320
0x94 0x25A0
0x95 0x2219
0x96 0x221A
0x97 0x2248
0x98 0x2264
0x99 0x2265
0x9A 0x00A0
0x9B 0x2321
0x9C 0xB0
0x9D 0x00B2
0x9E 0x00B7
0x9F 0x00F7
0xA0 0x2550
0xA1 0x2551
0xA2 0x2552
0xA3 x x 0x0451
0xA4 0x2553
0xA5 0x2554
0xA6 0x2555
0xA7 0x2556
0xA8 0x2557
0xA9 0x2558
0xAA 0x2559
0xAB 0x255A
0xAC 0x255B
0xAD 0x255C
0xAE 0x255D
0xAF 0x255E
0xB0 0x255F
0xB1 0x2560
0xB2 0x2561
0xB3 x x 0xA3 0x0401
0xB4 0x2562
0xB5 0x2563
0xB6 0x2564
0xB7 0x2565
0xB8 0x2566
0xB9 0x2567
0xBA 0x2568
0xBB 0x2569
0xBC 0x256A
0xBD 0x256B
0xBE 0x256C
0xBF 0x00A9
0xC0 x x 0x044E
0xC1 x x 0x0430
0xC2 x x 0x0431
0xC3 x x 0x0446
0xC4 x x 0x0434
0xC5 x x 0x0435
0xC6 x x 0x0444
0xC7 x x 0x0433
0xC8 x x 0x0445
0xC9 x x 0x0438
0xCA x x 0x0439
0xCB x x 0x043A
0xCC x x 0x043B
0xCD x x 0x043C
0xCE x x 0x043D
0xCF x x 0x043E
0xD0 x x 0x043F
0xD1 x x 0x044F
0xD2 x x 0x0440
0xD3 x x 0x0441
0xD4 x x 0x0442
0xD5 x x 0x0443
0xD6 x x 0x0436
0xD7 x x 0x0432
0xD8 x x 0x044C
0xD9 x x 0x044B
0xDA x x 0x0437
0xDB x x 0x0448
0xDC x x 0x044D
0xDD x x 0x0449
0xDE x x 0x0447
0xDF x x 0x044A
0xE0 x x 0xC0 0x042E
0xE1 x x 0xC1 0x0410
0xE2 x x 0xC2 0x0411
0xE3 x x 0xC3 0x0426
0xE4 x x 0xC4 0x0414
0xE5 x x 0xC5 0x0415
0xE6 x x 0xC6 0x0424
0xE7 x x 0xC7 0x0413
0xE8 x x 0xC8 0x0425
0xE9 x x 0xC9 0x0418
0xEA x x 0xCA 0x0419
0xEB x x 0xCB 0x041A
0xEC x x 0xCC 0x041B
0xED x x 0xCD 0x041C
0xEE x x 0xCE 0x041D
0xEF x x 0xCF 0x041E
0xF0 x x 0xD0 0x041F
0xF1 x x 0xD1 0x042F
0xF2 x x 0xD2 0x0420
0xF3 x x 0xD3 0x0421
0xF4 x x 0xD4 0x0422
0xF5 x x 0xD5 0x0423
0xF6 x x 0xD6 0x0416
0xF7 x x 0xD7 0x0412
0xF8 x x 0xD8 0x042C
0xF9 x x 0xD9 0x042B
0xFA x x 0xDA 0x0417
0xFB x x 0xDB 0x0428
0xFC x x 0xDC 0x042D
0xFD x x 0xDD 0x0429
0xFE x x 0xDE 0x0427
0xFF x x 0xDF 0x042A
#$Id: koi8-r.cfg,v 1.8 2010/09/21 21:30:16 moko Exp $
#Conforms to http://unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT
parser-3.4.3/etc/parser3.charsets/Makefile.am 000644 000000 000000 00000000277 11764601311 021123 0 ustar 00root wheel 000000 000000 charsetsdir=@datadir@/charsets
charsets_DATA=cp866.cfg koi8-r.cfg koi8-u.cfg windows-1250.cfg windows-1251.cfg windows-1254.cfg windows-1257.cfg x-mac-cyrillic.cfg
EXTRA_DIST=$(charsets_DATA) parser-3.4.3/etc/parser3.charsets/x-mac-cyrillic.cfg 000644 000000 000000 00000011770 11445753747 022406 0 ustar 00root wheel 000000 000000 char white-space digit hex-digit letter word lowercase unicode1 unicode2
0x09 x
0x0A x
0x0B x
0x0C x
0x0D x
0x20 x
! 0x0021 0xFF01
0x22 0x0022 0xFF02
0x23 0x0023 0xFF03
$ 0x0024 0xFF04
% 0x0025 0xFF05
& 0x0026 0xFF06
' 0x0027 0xFF07
( 0x0028 0xFF08
) 0x0029 0xFF09
* 0x002A 0xFF0A
+ 0x002B 0xFF0B
, 0x002C 0xFF0C
- 0x002D 0xFF0D
. 0x002E 0xFF0E
/ 0x002F 0xFF0F
0 x x x 0x0030 0xFF10
1 x x x 0x0031 0xFF11
2 x x x 0x0032 0xFF12
3 x x x 0x0033 0xFF13
4 x x x 0x0034 0xFF14
5 x x x 0x0035 0xFF15
6 x x x 0x0036 0xFF16
7 x x x 0x0037 0xFF17
8 x x x 0x0038 0xFF18
9 x x x 0x0039 0xFF19
: 0x003A 0xFF1A
; 0x003B 0xFF1B
< 0x003C 0xFF1C
= 0x003D 0xFF1D
> 0x003E 0xFF1E
? 0x003F 0xFF1F
@ 0x0040 0xFF20
A x x x a 0x0041 0xFF21
B x x x b 0x0042 0xFF22
C x x x c 0x0043 0xFF23
D x x x d 0x0044 0xFF24
E x x x e 0x0045 0xFF25
F x x x f 0x0046 0xFF26
G x x g 0x0047 0xFF27
H x x h 0x0048 0xFF28
I x x i 0x0049 0xFF29
J x x j 0x004A 0xFF2A
K x x k 0x004B 0xFF2B
L x x l 0x004C 0xFF2C
M x x m 0x004D 0xFF2D
N x x n 0x004E 0xFF2E
O x x o 0x004F 0xFF2F
P x x p 0x0050 0xFF30
Q x x q 0x0051 0xFF31
R x x r 0x0052 0xFF32
S x x s 0x0053 0xFF33
T x x t 0x0054 0xFF34
U x x u 0x0055 0xFF35
V x x v 0x0056 0xFF36
W x x w 0x0057 0xFF37
X x x x 0x0058 0xFF38
Y x x y 0x0059 0xFF39
Z x x z 0x005A 0xFF3A
[ 0x005B 0xFF3B
\ 0x005C 0xFF3C
] 0x005D 0xFF3D
^ 0x005E 0xFF3E
_ x 0x005F 0xFF3F
` 0x0060 0xFF40
a x x x 0x0061 0xFF41
b x x x 0x0062 0xFF42
c x x x 0x0063 0xFF43
d x x x 0x0064 0xFF44
e x x x 0x0065 0xFF45
f x x x 0x0066 0xFF46
g x x 0x0067 0xFF47
h x x 0x0068 0xFF48
i x x 0x0069 0xFF49
j x x 0x006A 0xFF4A
k x x 0x006B 0xFF4B
l x x 0x006C 0xFF4C
m x x 0x006D 0xFF4D
n x x 0x006E 0xFF4E
o x x 0x006F 0xFF4F
p x x 0x0070 0xFF50
q x x 0x0071 0xFF51
r x x 0x0072 0xFF52
s x x 0x0073 0xFF53
t x x 0x0074 0xFF54
u x x 0x0075 0xFF55
v x x 0x0076 0xFF56
w x x 0x0077 0xFF57
x x x 0x0078 0xFF58
y x x 0x0079 0xFF59
z x x 0x007A 0xFF5A
{ 0x007B 0xFF5B
| 0x007C 0xFF5C
} 0x007D 0xFF5D
~ 0x007E 0xFF5E
0x80 x x 0xE0 0x0410
0x81 x x 0xE1 0x0411
0x82 x x 0xE2 0x0412
0x83 x x 0xE3 0x0413
0x84 x x 0xE4 0x0414
0x85 x x 0xE5 0x0415
0x86 x x 0xE6 0x0416
0x87 x x 0xE7 0x0417
0x88 x x 0xE8 0x0418
0x89 x x 0xE9 0x0419
0x8A x x 0xEA 0x041A
0x8B x x 0xEB 0x041B
0x8C x x 0xEC 0x041C
0x8D x x 0xED 0x041D
0x8E x x 0xEE 0x041E
0x8F x x 0xEF 0x041F
0x90 x x 0xF0 0x0420
0x91 x x 0xF1 0x0421
0x92 x x 0xF2 0x0422
0x93 x x 0xF3 0x0423
0x94 x x 0xF4 0x0424
0x95 x x 0xF5 0x0425
0x96 x x 0xF6 0x0426
0x97 x x 0xF7 0x0427
0x98 x x 0xF8 0x0428
0x99 x x 0xF9 0x0429
0x9A x x 0xFA 0x042A
0x9B x x 0xFB 0x042B
0x9C x x 0xFC 0x042C
0x9D x x 0xFD 0x042D
0x9E x x 0xFE 0x042E
0x9F x x 0xDF 0x042F
0xA0 0x2020
0xA1 0x00B0
0xA2 0x0490
0xA3
0xA4 0x00A7
0xA5 0x2022
0xA6 0x00B6
0xA7 x x 0xB4 0x0406
0xA8 0x00AE
0xA9
0xAA 0x2122
0xAB 0x0402
0xAC 0x0452
0xAD 0x2260
0xAE 0x0403
0xAF 0x0453
0xB0 0x221E
0xB1 0x00B1
0xB2 0x2264
0xB3 0x2265
0xB4 x x 0x0456
0xB5
0xB6 0x0491
0xB7 0x0408
0xB8 x x 0xB9 0x0404
0xB9 x x 0x0454
0xBA x x 0xBB 0x0407
0xBB x x 0x0457
0xBC 0x0409
0xBD 0x0459
0xBE 0x040A
0xBF 0x045A
0xC0 0x0458
0xC1 0x0405
0xC2 0x00AC
0xC3 0x221A
0xC4 0x0192
0xC5 0x2248
0xC6 0x2206
0xC7 0x00AB
0xC8 0x00BB
0xC9 0x2026
0xCA x 0x00A0
0xCB 0x040B
0xCC 0x045B
0xCD 0x040C
0xCE 0x045C
0xCF 0x0455
0xD0 0x2013
0xD1 0x2014
0xD2 0x201C
0xD3 0x201D
0xD4 0x2018
0xD5 0x2019
0xD6 0x00F7
0xD7 0x201E
0xD8 0x040E
0xD9 0x045E
0xDA 0x040F
0xDB 0x045F
0xDC 0x2116
0xDD x x 0xDE 0x0401
0xDE x x 0x0451
0xDF x x 0x044F
0xE0 x x 0x0430
0xE1 x x 0x0431
0xE2 x x 0x0432
0xE3 x x 0x0433
0xE4 x x 0x0434
0xE5 x x 0x0435
0xE6 x x 0x0436
0xE7 x x 0x0437
0xE8 x x 0x0438
0xE9 x x 0x0439
0xEA x x 0x043A
0xEB x x 0x043B
0xEC x x 0x043C
0xED x x 0x043D
0xEE x x 0x043E
0xEF x x 0x043F
0xF0 x x 0x0440
0xF1 x x 0x0441
0xF2 x x 0x0442
0xF3 x x 0x0443
0xF4 x x 0x0444
0xF5 x x 0x0445
0xF6 x x 0x0446
0xF7 x x 0x0447
0xF8 x x 0x0448
0xF9 x x 0x0449
0xFA x x 0x044A
0xFB x x 0x044B
0xFC x x 0x044C
0xFD x x 0x044D
0xFE x x 0x044E
0xFF 0x20AC
#$Id: x-mac-cyrillic.cfg,v 1.3 2010/09/20 21:53:43 moko Exp $
#Conforms to http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/CYRILLIC.TXT
parser-3.4.3/etc/parser3.charsets/windows-1250.cfg 000644 000000 000000 00000011275 11445753746 021647 0 ustar 00root wheel 000000 000000 char white-space digit hex-digit letter word lowercase unicode1 unicode2
0x09 x
0x0A x
0x0B x
0x0C x
0x0D x
0x20 x
! 0x0021 0xFF01
0x22 0x0022 0xFF02
0x23 0x0023 0xFF03
$ 0x0024 0xFF04
% 0x0025 0xFF05
& 0x0026 0xFF06
' 0x0027 0xFF07
( 0x0028 0xFF08
) 0x0029 0xFF09
* 0x002A 0xFF0A
+ 0x002B 0xFF0B
, 0x002C 0xFF0C
- 0x002D 0xFF0D
. 0x002E 0xFF0E
/ 0x002F 0xFF0F
0 x x x 0x0030 0xFF10
1 x x x 0x0031 0xFF11
2 x x x 0x0032 0xFF12
3 x x x 0x0033 0xFF13
4 x x x 0x0034 0xFF14
5 x x x 0x0035 0xFF15
6 x x x 0x0036 0xFF16
7 x x x 0x0037 0xFF17
8 x x x 0x0038 0xFF18
9 x x x 0x0039 0xFF19
: 0x003A 0xFF1A
; 0x003B 0xFF1B
< 0x003C 0xFF1C
= 0x003D 0xFF1D
> 0x003E 0xFF1E
? 0x003F 0xFF1F
@ 0x0040 0xFF20
A x x x a 0x0041 0xFF21
B x x x b 0x0042 0xFF22
C x x x c 0x0043 0xFF23
D x x x d 0x0044 0xFF24
E x x x e 0x0045 0xFF25
F x x x f 0x0046 0xFF26
G x x g 0x0047 0xFF27
H x x h 0x0048 0xFF28
I x x i 0x0049 0xFF29
J x x j 0x004A 0xFF2A
K x x k 0x004B 0xFF2B
L x x l 0x004C 0xFF2C
M x x m 0x004D 0xFF2D
N x x n 0x004E 0xFF2E
O x x o 0x004F 0xFF2F
P x x p 0x0050 0xFF30
Q x x q 0x0051 0xFF31
R x x r 0x0052 0xFF32
S x x s 0x0053 0xFF33
T x x t 0x0054 0xFF34
U x x u 0x0055 0xFF35
V x x v 0x0056 0xFF36
W x x w 0x0057 0xFF37
X x x x 0x0058 0xFF38
Y x x y 0x0059 0xFF39
Z x x z 0x005A 0xFF3A
[ 0x005B 0xFF3B
\ 0x005C 0xFF3C
] 0x005D 0xFF3D
^ 0x005E 0xFF3E
_ x 0x005F 0xFF3F
` 0x0060 0xFF40
a x x x 0x0061 0xFF41
b x x x 0x0062 0xFF42
c x x x 0x0063 0xFF43
d x x x 0x0064 0xFF44
e x x x 0x0065 0xFF45
f x x x 0x0066 0xFF46
g x x 0x0067 0xFF47
h x x 0x0068 0xFF48
i x x 0x0069 0xFF49
j x x 0x006A 0xFF4A
k x x 0x006B 0xFF4B
l x x 0x006C 0xFF4C
m x x 0x006D 0xFF4D
n x x 0x006E 0xFF4E
o x x 0x006F 0xFF4F
p x x 0x0070 0xFF50
q x x 0x0071 0xFF51
r x x 0x0072 0xFF52
s x x 0x0073 0xFF53
t x x 0x0074 0xFF54
u x x 0x0075 0xFF55
v x x 0x0076 0xFF56
w x x 0x0077 0xFF57
x x x 0x0078 0xFF58
y x x 0x0079 0xFF59
z x x 0x007A 0xFF5A
{ 0x007B 0xFF5B
| 0x007C 0xFF5C
} 0x007D 0xFF5D
~ 0x007E 0xFF5E
0x7F
0x80 0x20AC
0x82 0x201A
0x84 0x201E
0x85 0x2026
0x86 0x2020
0x87 0x2021
0x89 0x2030
0x8A x x 0x9A 0x0160
0x8B 0x2039
0x8C x x 0x9C 0x015A
0x8D x x 0x9D 0x0164
0x8E x x 0x9E 0x017D
0x8F x x 0x9F 0x0179
0x91 0x2018
0x92 0x2019
0x93 0x201C
0x94 0x201D
0x95 0x2022
0x96 0x2013
0x97 0x2014
0x99 0x2122
0x9A x x 0x0161
0x9B 0x203A
0x9C x x 0x015B
0x9D x x 0x0165
0x9E x x 0x017E
0x9F x x 0x017A
0xA0 x
0xA1 0x02C7
0xA2 0x02D8
0xA3 x x 0xB3 0x0141
0xA4
0xA5 x x 0xB9 0x0104
0xA6
0xA7
0xA8
0xA9
0xAA x x 0xBA 0x015E
0xAB
0xAC
0xAD
0xAE
0xAF x x 0xBF 0x017B
0xB0
0xB1
0xB2 0x02DB
0xB3 x x 0x0142
0xB4
0xB5
0xB6
0xB7
0xB8
0xB9 x x 0x0105
0xBA x x 0x015F
0xBB
0xBC x x 0xBE 0x013D
0xBD 0x02DD
0xBE x x 0x013E
0xBF x x 0x017C
0xC0 x x 0xE0 0x0154
0xC1 x x 0xE1
0xC2 x x 0xE2
0xC3 x x 0xE3 0x0102
0xC4 x x 0xE4
0xC5 x x 0xE5 0x0139
0xC6 x x 0xE6 0x0106
0xC7 x x 0xE7
0xC8 x x 0xE8 0x010C
0xC9 x x 0xE9
0xCA x x 0xEA 0x0118
0xCB x x 0xEB
0xCC x x 0xEC 0x011A
0xCD x x 0xED
0xCE x x 0xEE
0xCF x x 0xEF 0x010E
0xD0 x x 0xF0 0x0110
0xD1 x x 0xF1 0x0143
0xD2 x x 0xF2 0x0147
0xD3 x x 0xF3
0xD4 x x 0xF4
0xD5 x x 0xF5 0x0150
0xD6 x x 0xF6
0xD7
0xD8 x x 0xF8 0x0158
0xD9 x x 0xF9 0x016E
0xDA x x 0xFA
0xDB x x 0xFB 0x0170
0xDC x x 0xFC
0xDD x x 0xFD
0xDE x x 0xFE 0x0162
0xDF x x
0xE0 x x 0x0155
0xE1 x x
0xE2 x x
0xE3 x x 0x0103
0xE4 x x
0xE5 x x 0x013A
0xE6 x x 0x0107
0xE7 x x
0xE8 x x 0x010D
0xE9 x x
0xEA x x 0x0119
0xEB x x
0xEC x x 0x011B
0xED x x
0xEE x x
0xEF x x 0x010F
0xF0 x x 0x0111
0xF1 x x 0x0144
0xF2 x x 0x0148
0xF3 x x
0xF4 x x
0xF5 x x 0x0151
0xF6 x x
0xF7
0xF8 x x 0x0159
0xF9 x x 0x016F
0xFA x x
0xFB x x 0x0171
0xFC x x
0xFD x x
0xFE x x 0x0163
0xFF 0x02D9
#$Id: windows-1250.cfg,v 1.2 2010/09/20 21:53:42 moko Exp $
#Conforms to http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT
parser-3.4.3/etc/parser3.charsets/koi8-u.cfg 000644 000000 000000 00000012020 11446221750 020653 0 ustar 00root wheel 000000 000000 char white-space digit hex-digit letter word lowercase unicode1 unicode2
0x09 x
0x0A x
0x0B x
0x0C x
0x0D x
0x20 x
! 0x0021 0xFF01
0x22 0x0022 0xFF02
0x23 0x0023 0xFF03
$ 0x0024 0xFF04
% 0x0025 0xFF05
& 0x0026 0xFF06
' 0x0027 0xFF07
( 0x0028 0xFF08
) 0x0029 0xFF09
* 0x002A 0xFF0A
+ 0x002B 0xFF0B
, 0x002C 0xFF0C
- 0x002D 0xFF0D
. 0x002E 0xFF0E
/ 0x002F 0xFF0F
0 x x x 0x0030 0xFF10
1 x x x 0x0031 0xFF11
2 x x x 0x0032 0xFF12
3 x x x 0x0033 0xFF13
4 x x x 0x0034 0xFF14
5 x x x 0x0035 0xFF15
6 x x x 0x0036 0xFF16
7 x x x 0x0037 0xFF17
8 x x x 0x0038 0xFF18
9 x x x 0x0039 0xFF19
: 0x003A 0xFF1A
; 0x003B 0xFF1B
< 0x003C 0xFF1C
= 0x003D 0xFF1D
> 0x003E 0xFF1E
? 0x003F 0xFF1F
@ 0x0040 0xFF20
A x x x a 0x0041 0xFF21
B x x x b 0x0042 0xFF22
C x x x c 0x0043 0xFF23
D x x x d 0x0044 0xFF24
E x x x e 0x0045 0xFF25
F x x x f 0x0046 0xFF26
G x x g 0x0047 0xFF27
H x x h 0x0048 0xFF28
I x x i 0x0049 0xFF29
J x x j 0x004A 0xFF2A
K x x k 0x004B 0xFF2B
L x x l 0x004C 0xFF2C
M x x m 0x004D 0xFF2D
N x x n 0x004E 0xFF2E
O x x o 0x004F 0xFF2F
P x x p 0x0050 0xFF30
Q x x q 0x0051 0xFF31
R x x r 0x0052 0xFF32
S x x s 0x0053 0xFF33
T x x t 0x0054 0xFF34
U x x u 0x0055 0xFF35
V x x v 0x0056 0xFF36
W x x w 0x0057 0xFF37
X x x x 0x0058 0xFF38
Y x x y 0x0059 0xFF39
Z x x z 0x005A 0xFF3A
[ 0x005B 0xFF3B
\ 0x005C 0xFF3C
] 0x005D 0xFF3D
^ 0x005E 0xFF3E
_ x 0x005F 0xFF3F
` 0x0060 0xFF40
a x x x 0x0061 0xFF41
b x x x 0x0062 0xFF42
c x x x 0x0063 0xFF43
d x x x 0x0064 0xFF44
e x x x 0x0065 0xFF45
f x x x 0x0066 0xFF46
g x x 0x0067 0xFF47
h x x 0x0068 0xFF48
i x x 0x0069 0xFF49
j x x 0x006A 0xFF4A
k x x 0x006B 0xFF4B
l x x 0x006C 0xFF4C
m x x 0x006D 0xFF4D
n x x 0x006E 0xFF4E
o x x 0x006F 0xFF4F
p x x 0x0070 0xFF50
q x x 0x0071 0xFF51
r x x 0x0072 0xFF52
s x x 0x0073 0xFF53
t x x 0x0074 0xFF54
u x x 0x0075 0xFF55
v x x 0x0076 0xFF56
w x x 0x0077 0xFF57
x x x 0x0078 0xFF58
y x x 0x0079 0xFF59
z x x 0x007A 0xFF5A
{ 0x007B 0xFF5B
| 0x007C 0xFF5C
} 0x007D 0xFF5D
~ 0x007E 0xFF5E
0x7F
0x80 0x2500
0x81 0x2502
0x82 0x250C
0x83 0x2510
0x84 0x2514
0x85 0x2518
0x86 0x251C
0x87 0x2524
0x88 0x252C
0x89 0x2534
0x8A 0x253C
0x8B 0x2580
0x8C 0x2584
0x8D 0x2588
0x8E 0x258C
0x8F 0x2590
0x90 0x2591
0x91 0x2592
0x92 0x2593
0x93 0x2320
0x94 0x25A0
0x95 0x2219
0x96 0x221A
0x97 0x2248
0x98 0x2264
0x99 0x2265
0x9A 0x00A0
0x9B 0x2321
0x9C 0xB0
0x9D 0x00B2
0x9E 0x00B7
0x9F 0x00F7
0xA0 0x2550
0xA1 0x2551
0xA2 0x2552
0xA3 x x 0x0451
0xA4 x x 0x0454
0xA5 0x2554
0xA6 x x 0x0456
0xA7 x x 0x0457
0xA8 0x2557
0xA9 0x2558
0xAA 0x2559
0xAB 0x255A
0xAC 0x255B
0xAD x x 0x0491
0xAE 0x255D
0xAF 0x255E
0xB0 0x255F
0xB1 0x2560
0xB2 0x2561
0xB3 x x 0xA3 0x0401
0xB4 x x 0xA4 0x0404
0xB5 0x2563
0xB6 x x 0xA6 0x0406
0xB7 x x 0xA7 0x0407
0xB8 0x2566
0xB9 0x2567
0xBA 0x2568
0xBB 0x2569
0xBC 0x256A
0xBD x x 0xAD 0x0490
0xBE 0x256C
0xBF 0x00A9
0xC0 x x 0x044E
0xC1 x x 0x0430
0xC2 x x 0x0431
0xC3 x x 0x0446
0xC4 x x 0x0434
0xC5 x x 0x0435
0xC6 x x 0x0444
0xC7 x x 0x0433
0xC8 x x 0x0445
0xC9 x x 0x0438
0xCA x x 0x0439
0xCB x x 0x043A
0xCC x x 0x043B
0xCD x x 0x043C
0xCE x x 0x043D
0xCF x x 0x043E
0xD0 x x 0x043F
0xD1 x x 0x044F
0xD2 x x 0x0440
0xD3 x x 0x0441
0xD4 x x 0x0442
0xD5 x x 0x0443
0xD6 x x 0x0436
0xD7 x x 0x0432
0xD8 x x 0x044C
0xD9 x x 0x044B
0xDA x x 0x0437
0xDB x x 0x0448
0xDC x x 0x044D
0xDD x x 0x0449
0xDE x x 0x0447
0xDF x x 0x044A
0xE0 x x 0xC0 0x042E
0xE1 x x 0xC1 0x0410
0xE2 x x 0xC2 0x0411
0xE3 x x 0xC3 0x0426
0xE4 x x 0xC4 0x0414
0xE5 x x 0xC5 0x0415
0xE6 x x 0xC6 0x0424
0xE7 x x 0xC7 0x0413
0xE8 x x 0xC8 0x0425
0xE9 x x 0xC9 0x0418
0xEA x x 0xCA 0x0419
0xEB x x 0xCB 0x041A
0xEC x x 0xCC 0x041B
0xED x x 0xCD 0x041C
0xEE x x 0xCE 0x041D
0xEF x x 0xCF 0x041E
0xF0 x x 0xD0 0x041F
0xF1 x x 0xD1 0x042F
0xF2 x x 0xD2 0x0420
0xF3 x x 0xD3 0x0421
0xF4 x x 0xD4 0x0422
0xF5 x x 0xD5 0x0423
0xF6 x x 0xD6 0x0416
0xF7 x x 0xD7 0x0412
0xF8 x x 0xD8 0x042C
0xF9 x x 0xD9 0x042B
0xFA x x 0xDA 0x0417
0xFB x x 0xDB 0x0428
0xFC x x 0xDC 0x042D
0xFD x x 0xDD 0x0429
0xFE x x 0xDE 0x0427
0xFF x x 0xDF 0x042A
#$Id: koi8-u.cfg,v 1.1 2010/09/21 21:30:16 moko Exp $
#Conforms to http://unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-U.TXT
parser-3.4.3/src/sql/ 000755 000000 000000 00000000000 12234223575 014507 5 ustar 00root wheel 000000 000000 parser-3.4.3/src/targets/ 000755 000000 000000 00000000000 12234223575 015361 5 ustar 00root wheel 000000 000000 parser-3.4.3/src/lib/ 000755 000000 000000 00000000000 12234223575 014456 5 ustar 00root wheel 000000 000000 parser-3.4.3/src/Makefile.in 000644 000000 000000 00000042700 11766635214 015766 0 ustar 00root wheel 000000 000000 # Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = src
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/src/lib/ltdl/m4/argz.m4 \
$(top_srcdir)/src/lib/ltdl/m4/libtool.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltdl.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltoptions.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltsugar.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltversion.m4 \
$(top_srcdir)/src/lib/ltdl/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/include/pa_config_auto.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
distdir
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APACHE = @APACHE@
APACHE_CFLAGS = @APACHE_CFLAGS@
APACHE_INC = @APACHE_INC@
AR = @AR@
ARGZ_H = @ARGZ_H@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GC_LIBS = @GC_LIBS@
GREP = @GREP@
INCLTDL = @INCLTDL@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBADD_DL = @LIBADD_DL@
LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
LIBADD_DLOPEN = @LIBADD_DLOPEN@
LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
LIBLTDL = @LIBLTDL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTDLDEPS = @LTDLDEPS@
LTDLINCL = @LTDLINCL@
LTDLOPEN = @LTDLOPEN@
LTLIBOBJS = @LTLIBOBJS@
LT_CONFIG_H = @LT_CONFIG_H@
LT_DLLOADERS = @LT_DLLOADERS@
LT_DLPREOPEN = @LT_DLPREOPEN@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MIME_INCLUDES = @MIME_INCLUDES@
MIME_LIBS = @MIME_LIBS@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
P3S = @P3S@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PCRE_INCLUDES = @PCRE_INCLUDES@
PCRE_LIBS = @PCRE_LIBS@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
XML_INCLUDES = @XML_INCLUDES@
XML_LIBS = @XML_LIBS@
YACC = @YACC@
YFLAGS = @YFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
dll_extension = @dll_extension@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
ltdl_LIBOBJS = @ltdl_LIBOBJS@
ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
subdirs = @subdirs@
sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = include main sql types classes lib targets
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
install-am install-strip tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am check check-am clean clean-generic clean-libtool \
ctags ctags-recursive distclean distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
parser-3.4.3/src/Makefile.am 000644 000000 000000 00000000065 07522215527 015747 0 ustar 00root wheel 000000 000000 SUBDIRS = include main sql types classes lib targets
parser-3.4.3/src/types/ 000755 000000 000000 00000000000 12234223575 015054 5 ustar 00root wheel 000000 000000 parser-3.4.3/src/include/ 000755 000000 000000 00000000000 12234223575 015333 5 ustar 00root wheel 000000 000000 parser-3.4.3/src/main/ 000755 000000 000000 00000000000 12234223575 014634 5 ustar 00root wheel 000000 000000 parser-3.4.3/src/classes/ 000755 000000 000000 00000000000 12234223575 015345 5 ustar 00root wheel 000000 000000 parser-3.4.3/src/classes/classes.vcproj 000644 000000 000000 00000015045 12230131504 020216 0 ustar 00root wheel 000000 000000
parser-3.4.3/src/classes/hashfile.C 000644 000000 000000 00000011543 12230062002 017216 0 ustar 00root wheel 000000 000000 /** @file
Parser: @b hashfile parser class.
Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com)
Author: Alexandr Petrosian (http://paf.design.ru)
*/
#include "classes.h"
#include "pa_request.h"
#include "pa_vmethod_frame.h"
#include "pa_vhashfile.h"
#include "pa_vhash.h"
volatile const char * IDENT_HASHFILE_C="$Id: hashfile.C,v 1.55 2013/10/17 22:26:10 moko Exp $";
// class
class MHashfile : public Methoded {
public: // VStateless_class
Value *create_new_value(Pool& apool) { return new VHashfile(apool); }
public:
MHashfile();
};
// global variable
DECLARE_CLASS_VAR(hashfile, new MHashfile, 0);
// defines for statics
#define OPEN_DATA_NAME "HASHFILE-OPEN-DATA"
// methods
typedef HashString HashStringBool;
static void _open(Request& r, MethodParams& params) {
HashStringBool* file_list=static_cast(r.classes_conf.get(OPEN_DATA_NAME));
if(!file_list) {
file_list=new HashStringBool();
r.classes_conf.put(OPEN_DATA_NAME, file_list);
}
const String& file_spec=r.absolute(params.as_string(0, FILE_NAME_MUST_BE_STRING));
if(file_list->get(file_spec))
throw Exception(PARSER_RUNTIME,
0,
"this hashfile is already opened, use existing variable");
file_list->put(file_spec, true);
VHashfile& self=GET_SELF(r, VHashfile);
self.open(file_spec);
}
static void _hash(Request& r, MethodParams&) {
VHashfile& self=GET_SELF(r, VHashfile);
// write out result
VHash& result=*new VHash(*self.get_hash());
r.write_no_lang(result);
}
static void _delete(Request& r, MethodParams& params) {
VHashfile& self=GET_SELF(r, VHashfile);
if(!params.count()) {
// ^hashfile.delete[] asked to delete hashfile itself
self.delete_files();
return;
}
// key
const String &key=params.as_string(0, "key must be string");
// remove
self.remove(key);
}
static void _clear(Request& r, MethodParams&) {
VHashfile& self=GET_SELF(r, VHashfile);
self.delete_files();
}
#ifndef DOXYGEN
struct Foreach_info {
Request* r;
const String* key_var_name;
const String* value_var_name;
Value* body_code;
Value* delim_maybe_code;
Value* var_context;
bool need_delim;
};
#endif
static bool one_foreach_cycle(
const String::Body key,
const String& value,
void* ainfo) {
Foreach_info& info=*static_cast(ainfo);
if(info.key_var_name){
VString* vkey=new VString(*new String(key, String::L_TAINTED));
info.r->put_element(*info.var_context, *info.key_var_name, vkey);
}
if(info.value_var_name){
VString* vvalue=new VString(value);
info.r->put_element(*info.var_context, *info.value_var_name, vvalue);
}
StringOrValue sv_processed=info.r->process(*info.body_code);
Request::Skip lskip=info.r->get_skip(); info.r->set_skip(Request::SKIP_NOTHING);
const String* s_processed=sv_processed.get_string();
if(info.delim_maybe_code && s_processed && !s_processed->is_empty()) { // delimiter set and we have body
if(info.need_delim) // need delim & iteration produced string?
info.r->write_pass_lang(info.r->process(*info.delim_maybe_code));
else
info.need_delim=true;
}
info.r->write_pass_lang(sv_processed);
return lskip==Request::SKIP_BREAK;
}
static void _foreach(Request& r, MethodParams& params) {
InCycle temp(r);
const String& key_var_name=params.as_string(0, "key-var name must be string");
const String& value_var_name=params.as_string(1, "value-var name must be string");
Foreach_info info={
&r,
key_var_name.is_empty()? 0 : &key_var_name,
value_var_name.is_empty()? 0 : &value_var_name,
¶ms.as_junction(2, "body must be code"),
/*delimiter*/params.count()>3 ? params.get(3) : 0,
/*var_context*/r.get_method_frame()->caller(),
false
};
VHashfile& self=GET_SELF(r, VHashfile);
self.for_each(one_foreach_cycle, &info);
}
static bool one_cleanup_cycle(const String::Body, const String&, void*) {
return false;
}
static void _cleanup(Request& r, MethodParams&) {
VHashfile& self=GET_SELF(r, VHashfile);
self.for_each(one_cleanup_cycle, 0);
}
static void _release(Request& r, MethodParams&) {
VHashfile& self=GET_SELF(r, VHashfile);
self.close();
}
// constructor
MHashfile::MHashfile(): Methoded("hashfile") {
// ^hashfile::open[filename]
add_native_method("open", Method::CT_DYNAMIC, _open, 1, 1);
// ^hashfile.hash[]
add_native_method("hash", Method::CT_DYNAMIC, _hash, 0, 0);
// ^hashfile.delete[key]
add_native_method("delete", Method::CT_DYNAMIC, _delete, 0, 1);
// ^hashfile.clear[] -- for backward compatibility. use .delete[] instead.
add_native_method("clear", Method::CT_DYNAMIC, _clear, 0, 0);
// ^hashfile.release[]
add_native_method("release", Method::CT_DYNAMIC, _release, 0, 0);
// ^hashfile.cleanup[]
add_native_method("cleanup", Method::CT_DYNAMIC, _cleanup, 0, 0);
add_native_method("defecate", Method::CT_DYNAMIC, _cleanup, 0, 0);
// ^hashfile.foreach[key;value]{code}[delim]
add_native_method("foreach", Method::CT_DYNAMIC, _foreach, 2+1, 2+1+1);
}
parser-3.4.3/src/classes/memory.C 000644 000000 000000 00000002150 11730603267 016757 0 ustar 00root wheel 000000 000000 /** @file
Parser: @b memory parser class.
Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com)
Author: Alexandr Petrosian (http://paf.design.ru)
*/
#include "pa_common.h"
#include "pa_vmemory.h"
#include "pa_request.h"
volatile const char * IDENT_MEMORY_C="$Id: memory.C,v 1.9 2012/03/16 09:24:07 moko Exp $" IDENT_PA_VMEMORY_H;
class MMemory: public Methoded {
public:
MMemory();
public: // Methoded
bool used_directly() { return false; }
};
// global variables
DECLARE_CLASS_VAR(memory, 0 /*fictive*/, new MMemory);
#undef GC_DEBUG
#ifdef GC_DEBUG
extern "C" GC_API void GC_print_backtrace(void *);
void *debug_print_backtrace=0;
#endif
static void _compact(Request& r, MethodParams&) {
r.wipe_unused_execution_stack();
#ifndef PA_DEBUG_DISABLE_GC
{
int saved=GC_dont_gc;
GC_dont_gc=0;
GC_gcollect();
GC_dont_gc=saved;
}
#ifdef GC_DEBUG
if(debug_print_backtrace)
GC_print_backtrace(debug_print_backtrace);
#endif
#endif
}
// constructor
MMemory::MMemory(): Methoded("memory") {
// ^compact[]
add_native_method("compact", Method::CT_STATIC, _compact, 0, 0);
}
parser-3.4.3/src/classes/Makefile.in 000644 000000 000000 00000043461 11766635214 017430 0 ustar 00root wheel 000000 000000 # Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = src/classes
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/src/lib/ltdl/m4/argz.m4 \
$(top_srcdir)/src/lib/ltdl/m4/libtool.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltdl.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltoptions.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltsugar.m4 \
$(top_srcdir)/src/lib/ltdl/m4/ltversion.m4 \
$(top_srcdir)/src/lib/ltdl/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/include/pa_config_auto.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libclasses_la_LIBADD =
am__objects_1 = bool.lo curl.lo date.lo double.lo file.lo form.lo \
hash.lo hashfile.lo image.lo inet.lo int.lo json.lo mail.lo \
math.lo memcached.lo memory.lo op.lo reflection.lo regex.lo \
response.lo string.lo table.lo void.lo xnode.lo xdoc.lo
am_libclasses_la_OBJECTS = $(am__objects_1) classes.lo
libclasses_la_OBJECTS = $(am_libclasses_la_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src/include
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(libclasses_la_SOURCES)
DIST_SOURCES = $(libclasses_la_SOURCES)
HEADERS = $(noinst_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APACHE = @APACHE@
APACHE_CFLAGS = @APACHE_CFLAGS@
APACHE_INC = @APACHE_INC@
AR = @AR@
ARGZ_H = @ARGZ_H@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GC_LIBS = @GC_LIBS@
GREP = @GREP@
INCLTDL = @INCLTDL@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBADD_DL = @LIBADD_DL@
LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
LIBADD_DLOPEN = @LIBADD_DLOPEN@
LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
LIBLTDL = @LIBLTDL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTDLDEPS = @LTDLDEPS@
LTDLINCL = @LTDLINCL@
LTDLOPEN = @LTDLOPEN@
LTLIBOBJS = @LTLIBOBJS@
LT_CONFIG_H = @LT_CONFIG_H@
LT_DLLOADERS = @LT_DLLOADERS@
LT_DLPREOPEN = @LT_DLPREOPEN@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MIME_INCLUDES = @MIME_INCLUDES@
MIME_LIBS = @MIME_LIBS@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
P3S = @P3S@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PCRE_INCLUDES = @PCRE_INCLUDES@
PCRE_LIBS = @PCRE_LIBS@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
XML_INCLUDES = @XML_INCLUDES@
XML_LIBS = @XML_LIBS@
YACC = @YACC@
YFLAGS = @YFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
dll_extension = @dll_extension@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
ltdl_LIBOBJS = @ltdl_LIBOBJS@
ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
subdirs = @subdirs@
sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
INCLUDES = -I../types -I../sql -I../lib/gd -I../lib/gc/include -I../lib/cord/include -I../lib/sdbm/pa-include -Igd $(INCLTDL) @PCRE_INCLUDES@ @XML_INCLUDES@ -I../lib/md5 -I../lib/smtp -I../lib/json -I../lib/memcached -I../lib/curl
CLASSES_SOURCE_FILES = classes.awk bool.C curl.C date.C double.C file.C form.C hash.C hashfile.C image.C inet.C int.C json.C mail.C math.C memcached.C memory.C op.C reflection.C regex.C response.C string.C table.C void.C xnode.C xdoc.C
noinst_HEADERS = classes.h xnode.h
noinst_LTLIBRARIES = libclasses.la
libclasses_la_SOURCES = $(CLASSES_SOURCE_FILES) classes.C
CLEANFILES = classes.inc
EXTRA_DIST = classes.vcproj
all: all-am
.SUFFIXES:
.SUFFIXES: .C .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/classes/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/classes/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
libclasses.la: $(libclasses_la_OBJECTS) $(libclasses_la_DEPENDENCIES)
$(CXXLINK) $(libclasses_la_OBJECTS) $(libclasses_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bool.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/classes.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/date.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/double.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/form.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hashfile.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/json.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcached.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/op.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reflection.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/response.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/void.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xdoc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xnode.Plo@am__quote@
.C.o:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.C.obj:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.C.lo:
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES) $(HEADERS)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags uninstall uninstall-am
classes.inc: $(CLASSES_SOURCE_FILES) Makefile.am
echo "/* do not edit. autogenerated by Makefile.am */" > classes.inc
echo >> classes.inc
ls $(CLASSES_SOURCE_FILES) | $(AWK) -f classes.awk >> classes.inc
classes.C: classes.inc
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
parser-3.4.3/src/classes/xnode.C 000644 000000 000000 00000071002 12227340624 016563 0 ustar 00root wheel 000000 000000 /** @file
Parser: @b dom parser class.
Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com)
Author: Alexandr Petrosian (http://paf.design.ru)
*/
#include "classes.h"
#ifdef XML
#include "pa_vmethod_frame.h"
#include "pa_charset.h"
#include "pa_request.h"
#include "pa_vxnode.h"
#include "pa_vxdoc.h"
#include "pa_vvoid.h"
#include "pa_xml_exception.h"
#include "pa_vbool.h"
#include "xnode.h"
#include "libxml/xpath.h"
#include "libxml/xpathInternals.h"
volatile const char * IDENT_XNODE_C="$Id: xnode.C,v 1.88 2013/10/15 22:28:36 moko Exp $" IDENT_XNODE_H;
// global variable
DECLARE_CLASS_VAR(xnode, new MXnode, 0);
// classes
class xmlXPathObject_auto_ptr {
public:
explicit xmlXPathObject_auto_ptr(xmlXPathObject *_APtr = 0)
: _Owns(_APtr != 0), _Ptr(_APtr) {}
xmlXPathObject_auto_ptr(const xmlXPathObject_auto_ptr& _Y)
: _Owns(_Y._Owns), _Ptr(_Y.release()) {}
xmlXPathObject_auto_ptr& operator=(const xmlXPathObject_auto_ptr& _Y)
{if (this != &_Y)
{if (_Ptr != _Y.get())
{if (_Owns && _Ptr)
xmlXPathFreeObject(_Ptr);
_Owns = _Y._Owns; }
else if (_Y._Owns)
_Owns = true;
_Ptr = _Y.release(); }
return (*this); }
~xmlXPathObject_auto_ptr()
{if (_Owns && _Ptr)
xmlXPathFreeObject(_Ptr); }
xmlXPathObject& operator*() const
{return (*get()); }
xmlXPathObject *operator->() const
{return (get()); }
xmlXPathObject *get() const
{return (_Ptr); }
xmlXPathObject *release() const
{((xmlXPathObject_auto_ptr *)this)->_Owns = false;
return (_Ptr); }
private:
bool _Owns;
xmlXPathObject *_Ptr;
};
class xmlXPathContext_auto_ptr {
public:
explicit xmlXPathContext_auto_ptr(xmlXPathContext *_APtr = 0)
: _Owns(_APtr != 0), _Ptr(_APtr) {}
xmlXPathContext_auto_ptr(const xmlXPathContext_auto_ptr& _Y)
: _Owns(_Y._Owns), _Ptr(_Y.release()) {}
xmlXPathContext_auto_ptr& operator=(const xmlXPathContext_auto_ptr& _Y)
{if (this != &_Y)
{if (_Ptr != _Y.get())
{if (_Owns && _Ptr)
xmlXPathFreeContext(_Ptr);
_Owns = _Y._Owns; }
else if (_Y._Owns)
_Owns = true;
_Ptr = _Y.release(); }
return (*this); }
~xmlXPathContext_auto_ptr()
{if (_Owns && _Ptr)
xmlXPathFreeContext(_Ptr); }
xmlXPathContext& operator*() const
{return (*get()); }
xmlXPathContext *operator->() const
{return (get()); }
xmlXPathContext *get() const
{return (_Ptr); }
xmlXPathContext *release() const
{((xmlXPathContext_auto_ptr *)this)->_Owns = false;
return (_Ptr); }
private:
bool _Owns;
xmlXPathContext *_Ptr;
};
// helpers
xmlNode& as_node(MethodParams& params, int index, const char* msg) {
Value& value=params.as_no_junction(index, msg);
if(Value* vxnode=value.as(VXNODE_TYPE))
return static_cast(vxnode)->get_xmlnode();
else
throw Exception(PARSER_RUNTIME,
0,
msg);
}
xmlChar* as_xmlchar(Request& r, MethodParams& params, int index, const char* msg) {
return r.transcode(params.as_string(index, msg));
}
xmlChar* as_xmlqname(Request& r, MethodParams& params, int index, const char* msg) {
xmlChar* qname=r.transcode(params.as_string(index, msg ? msg : XML_QUALIFIED_NAME_MUST_BE_STRING));
if(xmlValidateQName(qname, 0))
throw XmlException(0, XML_INVALID_QUALIFIED_NAME, qname);
return qname;
}
xmlChar* as_xmlncname(Request& r, MethodParams& params, int index, const char* msg) {
xmlChar* ncname=r.transcode(params.as_string(index, msg ? msg : XML_NC_NAME_MUST_BE_STRING));
if(xmlValidateNCName(ncname, 0))
throw XmlException(0, XML_INVALID_NC_NAME, ncname);
return ncname;
}
xmlChar* as_xmlname(Request& r, MethodParams& params, int index, const char* msg) {
xmlChar* localName=r.transcode(params.as_string(index, msg ? msg : XML_LOCAL_NAME_MUST_BE_STRING));
if(xmlValidateName(localName, 0))
throw XmlException(0, XML_INVALID_LOCAL_NAME, localName);
return localName;
}
xmlChar* as_xmlnsuri(Request& r, MethodParams& params, int index) {
return r.transcode(params.as_string(index, XML_NAMESPACEURI_MUST_BE_STRING));
}
xmlAttr& as_attr(MethodParams& params, int index, const char* msg) {
xmlNode& xmlnode=as_node(params, index, msg);
if(xmlnode.type!=XML_ATTRIBUTE_NODE)
throw Exception(PARSER_RUNTIME,
0,
msg);
return *(xmlAttr*)&xmlnode;
}
static void writeNode(Request& r, VXdoc& xdoc, xmlNode* node) {
if(!node|| xmlHaveGenericErrors())
throw XmlException(0, r); // OOM, bad name, things like that
// write out result
r.write_no_lang(xdoc.wrap(*node));
}
static xmlNode* pa_getAttributeNodeNS(xmlNode& selfNode,
const xmlChar* localName,
const xmlChar* namespaceURI)
{
for(xmlNode* currentNode=(xmlNode*)selfNode.properties;
currentNode;
currentNode=currentNode->next)
{
if(!namespaceURI || currentNode->ns && xmlStrEqual(currentNode->ns->href, namespaceURI))
if(!localName || xmlStrEqual(currentNode->name, localName))
return currentNode;
}
return 0;
}
xmlNs& pa_xmlMapNs(xmlDoc& doc, const xmlChar *href, const xmlChar *prefix) {
assert(href);
// prefix can be null
xmlNs *cur=doc.oldNs;
while (cur != NULL &&
((cur->prefix == NULL && prefix != NULL) ||
(cur->prefix != NULL && prefix == NULL) ||
!xmlStrEqual (cur->prefix, prefix)) &&
!xmlStrEqual (cur->href, href))
cur = cur->next;
if (cur == NULL) {
cur = xmlNewNs (NULL, href, prefix);
if(!cur || xmlHaveGenericErrors())
throw XmlException();
cur->next = doc.oldNs;
doc.oldNs = cur;
}
return *cur;
}
/// @todo: ïðîâåðèòü, îáíîâëÿåòñÿ ëè parent!
static void pa_addAttributeNode(xmlNode& selfNode, xmlAttr& attrNode)
{
if(attrNode.type!=XML_ATTRIBUTE_NODE)
throw Exception(PARSER_RUNTIME,
0,
"must be ATTRIBUTE_NODE");
/*
* Add it at the end to preserve parsing order ...
*/
if (selfNode.properties == NULL) {
selfNode.properties = &attrNode;
} else {
xmlAttrPtr prev = selfNode.properties;
while (prev->next != NULL)
prev = prev->next;
prev->next = &attrNode;
attrNode.prev = prev;
}
if (xmlIsID(selfNode.doc, &selfNode, &attrNode) == 1)
xmlAddID(NULL, selfNode.doc, xmlNodeGetContent((xmlNode*)&attrNode), &attrNode);
}
static const xmlChar *
pa_xmlGetNsURI(xmlNode *node) {
if (node == NULL || node->ns == NULL)
return NULL;
return node->ns->href;
}
#ifndef DOXYGEN
struct AccumulateFoundInfo
{
HashStringValue* hash;
VXdoc* vdoc;
int index;
};
#endif
static void AccumulateFound(xmlNode& node, AccumulateFoundInfo* info)
{
info->hash->put(
String::Body::Format(info->index++),
&info->vdoc->wrap(node));
}
template static void
pa_xmlNamedPreorderTraversal (
xmlNode *root,
xmlChar *tagURI,
xmlChar *tagName,
void callback(xmlNode& node, I info),
I info)
{
for(xmlNode *iter=root->children; iter; iter = iter->next) {
if(iter->type == XML_ELEMENT_NODE &&
(xmlStrEqual(iter->name, tagName) ||
xmlStrEqual(tagName, (const xmlChar*)"*"))) {
if(tagURI != NULL &&
(xmlStrEqual(pa_xmlGetNsURI(iter), tagURI) ||
xmlStrEqual(tagURI, (const xmlChar*)"*")))
callback(*iter, info);
else if(tagURI == NULL)
callback(*iter, info);
}
pa_xmlNamedPreorderTraversal(iter, tagURI, tagName, callback, info);
}
return;
}
// methods
// DOM1 node
// Node insertBefore(in Node newChild,in Node refChild) raises(DOMException);
static void _insertBefore(Request& r, MethodParams& params) {
xmlNode& newChild=as_node(params, 0, "newChild must be node");
xmlNode& refChild=as_node(params, 1, "refChild must be node");
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vxdoc=vnode.get_vxdoc();
//xmlNode& selfNode=vnode.get_xmlnode();
xmlNode* retNode=xmlAddPrevSibling(&refChild, &newChild);
// write out result
writeNode(r, vxdoc, retNode);
}
// Node replaceChild(in Node newChild,in Node oldChild) raises(DOMException);
static void _replaceChild(Request& r, MethodParams& params) {
xmlNode& newChild=as_node(params, 0, "newChild must be node");
xmlNode& oldChild=as_node(params, 1, "oldChild must be node");
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlDoc& xmldoc=vxdoc.get_xmldoc();
xmlNode& selfNode=vnode.get_xmlnode();
if(newChild.doc!=&xmldoc)
throw Exception("xml.dom",
0,
"WRONG_DOCUMENT_ERR");
if(oldChild.doc!=&xmldoc)
throw Exception("xml.dom",
0,
"WRONG_DOCUMENT_ERR");
if(oldChild.parent!=&selfNode)
throw Exception("xml.dom",
0,
"NOT_FOUND_ERR");
xmlNode* refChild=oldChild.next;
xmlUnlinkNode(&oldChild);
xmlNode* retNode;
if(refChild)
retNode=xmlAddPrevSibling(refChild, &newChild);
else
retNode=xmlAddChild(&selfNode, &newChild);
// write out result
writeNode(r, vxdoc, retNode);
}
// Node removeChild(in Node oldChild) raises(DOMException);
static void _removeChild(Request& r, MethodParams& params) {
xmlNode& oldChild=as_node(params, 0, "refChild must be node");
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlDoc& xmldoc=vxdoc.get_xmldoc();
// xmlNode& selfNode=vnode.get_xmlnode();
if(oldChild.doc!=&xmldoc)
throw Exception("xml.dom",
0,
"WRONG_DOCUMENT_ERR");
xmlUnlinkNode(&oldChild);
// write out result
writeNode(r, vxdoc, &oldChild);
}
// Node appendChild(in Node newChild) raises(DOMException);
static void _appendChild(Request& r, MethodParams& params) {
xmlNode& newChild=as_node(params, 0, "newChild must be node");
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlNode& selfNode=vnode.get_xmlnode();
xmlNode* retNode=xmlAddChild(&selfNode, &newChild);
// write out result
writeNode(r, vxdoc, retNode);
}
// boolean hasChildNodes();
static void _hasChildNodes(Request& r, MethodParams&) {
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& node=vnode.get_xmlnode();
// write out result
r.write_no_lang(VBool::get(node.children!=0));
}
// Node cloneNode(in boolean deep);
static void _cloneNode(Request& r, MethodParams& params) {
bool deep=params.as_bool(0, "deep must be bool", r);
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& selfNode=vnode.get_xmlnode();
VXdoc& vxdoc=vnode.get_vxdoc();
xmlDoc& xmldoc=vxdoc.get_xmldoc();
xmlNode* retNode=xmlDocCopyNode(&selfNode, &xmldoc, deep?1: 0);
// write out result
writeNode(r, vxdoc, retNode);
}
// DOM1 element
xmlNode& get_self_element(VXnode& vnode) {
xmlNode& node=vnode.get_xmlnode();
if(node.type!=XML_ELEMENT_NODE)
throw Exception(PARSER_RUNTIME,
0,
"method can only be called on nodes of ELEMENT type");
return node;
}
// DOMString getAttribute(in DOMString name);
static void _getAttribute(Request& r, MethodParams& params) {
const xmlChar* name=as_xmlname(r, params, 0);
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& element=get_self_element(vnode);
// @todo: when name="xmlns"
xmlChar* attribute_value=xmlGetProp(&element, name);
// write out result
r.write_pass_lang(r.transcode(attribute_value));
}
// void setAttribute(in DOMString name, in DOMString value) raises(DOMException);
static void _setAttribute(Request& r, MethodParams& params) {
const xmlChar* name=as_xmlname(r, params, 0);
const xmlChar* attribute_value=as_xmlchar(r, params, 1, XML_VALUE_MUST_BE_STRING);
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& element=get_self_element(vnode);
// @todo: when name="xmlns"
if(!xmlSetProp(&element, name, attribute_value))
throw XmlException(0, r);
}
// void removeAttribute(in DOMString name) raises(DOMException);
static void _removeAttribute(Request& r, MethodParams& params) {
const xmlChar* name=as_xmlname(r, params, 0);
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& element=get_self_element(vnode);
// @todo: when name="xmlns"
xmlUnsetProp(&element, name);
}
// Attr getAttributeNode(in DOMString name);
static void _getAttributeNode(Request& r, MethodParams& params) {
const xmlChar* localName=as_xmlname(r, params, 0);
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlNode& element=get_self_element(vnode);
if(xmlNode* retNode=pa_getAttributeNodeNS(element, localName, 0)){
// write out result
writeNode(r, vxdoc, retNode);
}
}
// Attr setAttributeNode(in Attr newAttr) raises(DOMException);
// Attr setAttributeNodeNS(in Attr newAttr) raises(DOMException);
static void _setAttributeNode(Request& r, MethodParams& params) {
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlNode& element=get_self_element(vnode);
xmlDoc& xmldoc=vxdoc.get_xmldoc();
xmlAttr& newAttr=as_attr(params, 0, "newAttr must be ATTRIBUTE node");
if(newAttr.doc!=&xmldoc)
throw Exception("xml.dom",
0,
"WRONG_DOCUMENT_ERR");
if(newAttr.parent)
throw Exception("xml.dom",
0,
"INUSE_ATTRIBUTE_ERR");
if(xmlNode* retNode=pa_getAttributeNodeNS(element, newAttr.name, pa_xmlGetNsURI((xmlNode*)&newAttr))) {
// write out result
writeNode(r, vxdoc, retNode);
xmlUnlinkNode(retNode);
}
pa_addAttributeNode(element, newAttr);
}
// Attr removeAttributeNode(in Attr oldAttr) raises(DOMException);
static void _removeAttributeNode(Request& r, MethodParams& params) {
xmlAttr& oldAttr=as_attr(params, 0, "oldAttr must be ATTRIBUTE node");
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlNode& element=get_self_element(vnode);
if(oldAttr.parent!=&element)
throw Exception("xml.dom",
0,
"NOT_FOUND_ERR");
xmlUnlinkNode((xmlNode*)&oldAttr);
// write out result
writeNode(r, vxdoc, (xmlNode*)&oldAttr);
}
// NodeList getElementsByTagName(in DOMString name);
// '*' means all tags
static void _getElementsByTagName(Request& r, MethodParams& params) {
xmlChar* tagName=as_xmlchar(r, params, 0, XML_LOCAL_NAME_MUST_BE_STRING);
if(xmlValidateName(tagName, 0) != 0 && strcmp((const char*)tagName, "*") != 0)
throw XmlException(0, XML_INVALID_LOCAL_NAME, tagName);
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlNode& xmlnode=vnode.get_xmlnode();
VHash& result=*new VHash;
AccumulateFoundInfo info={&result.hash(), &vxdoc, 0};
pa_xmlNamedPreorderTraversal(&xmlnode,
0,
tagName,
AccumulateFound,
&info);
// write out result
r.write_no_lang(result);
}
// DOM 2
// DOMString getAttributeNS(in DOMString namespaceURI, in DOMString localName);
static void _getAttributeNS(Request& r, MethodParams& params) {
xmlChar* namespaceURI=as_xmlnsuri(r, params, 0);
xmlChar* localName=as_xmlname(r, params, 1);
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& element=get_self_element(vnode);
// todo: when name="xmlns"
xmlChar* attribute_value=xmlGetNsProp(&element, localName, namespaceURI);
// write out result
r.write_pass_lang(r.transcode(attribute_value));
}
// void setAttributeNS(in DOMString namespaceURI, in DOMString qualifiedName, in DOMString value) raises(DOMException);
static void _setAttributeNS(Request& r, MethodParams& params) {
const xmlChar* namespaceURI=as_xmlnsuri(r, params, 0);
const xmlChar* qualifiedName=as_xmlqname(r, params, 1);
const xmlChar* attribute_value=as_xmlchar(r, params, 2, XML_VALUE_MUST_BE_STRING);
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& element=get_self_element(vnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlDoc& xmldoc=vxdoc.get_xmldoc();
xmlChar* prefix=0;
xmlChar* localName=xmlSplitQName2(qualifiedName, &prefix);
// @todo: name=xmlns
xmlAttr* attrNode;
if(localName) {
xmlNs& ns=pa_xmlMapNs(xmldoc, namespaceURI, prefix);
attrNode=xmlSetNsProp(&element, &ns,
localName,
attribute_value);
} else {
attrNode=xmlSetProp(&element,
qualifiedName/*unqualified, actually*/,
attribute_value);
}
if(!attrNode)
throw XmlException(0, r);
}
// void removeAttributeNS(in DOMString namespaceURI, in DOMString localName) raises(DOMException);
static void _removeAttributeNS(Request& r, MethodParams& params) {
const xmlChar* namespaceURI=as_xmlnsuri(r, params, 0);
const xmlChar* localName=as_xmlname(r, params, 1);
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& element=get_self_element(vnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlDoc& xmldoc=vxdoc.get_xmldoc();
// @todo: when name="xmlns"
xmlNs& ns=pa_xmlMapNs(xmldoc, namespaceURI, 0);
xmlUnsetNsProp(&element, &ns, localName);
}
// Attr getAttributeNodeNS(in DOMString namespaceURI, in DOMString localName);
static void _getAttributeNodeNS(Request& r, MethodParams& params) {
const xmlChar* namespaceURI=as_xmlnsuri(r, params, 0);
const xmlChar* localName=as_xmlname(r, params, 1);
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vxdoc=vnode.get_vxdoc();
xmlNode& element=get_self_element(vnode);
if(xmlNode* retNode=pa_getAttributeNodeNS(element, localName, namespaceURI)){
// write out result
writeNode(r, vxdoc, retNode);
}
}
// boolean hasAttribute(in DOMString name) raises(DOMException);
static void _hasAttribute(Request& r, MethodParams& params) {
const xmlChar* name=as_xmlname(r, params, 0);
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& element=get_self_element(vnode);
// @todo: when name="xmlns"
// write out result
r.write_no_lang(VBool::get(xmlHasProp(&element, name)!=0));
}
// boolean hasAttributeNS(n DOMString namespaceURI, in DOMString localName) raises(DOMException);
static void _hasAttributeNS(Request& r, MethodParams& params) {
const xmlChar* namespaceURI=as_xmlnsuri(r, params, 0);
const xmlChar* localName=as_xmlname(r, params, 1);
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& element=get_self_element(vnode);
// write out result
r.write_no_lang(VBool::get(xmlHasNsProp(&element, localName, namespaceURI)!=0));
}
// boolean hasAttributes
static void _hasAttributes(Request& r, MethodParams&) {
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& element=get_self_element(vnode);
// write out result
r.write_no_lang(VBool::get(element.properties!=0));
}
// NodeList getElementsByTagNameNS(in DOMString namespaceURI, in DOMString localName);
// '*' as namespaceURI means get all namespaces
// '*' as localName means get all tags
static void _getElementsByTagNameNS(Request& r, MethodParams& params) {
xmlChar* namespaceURI=as_xmlchar(r, params, 0, XML_NAMESPACEURI_MUST_BE_STRING);
xmlChar* localName=as_xmlchar(r, params, 1, XML_LOCAL_NAME_MUST_BE_STRING);
if(xmlValidateName(localName, 0) != 0 && strcmp((const char*)localName, "*") != 0)
throw XmlException(0, XML_INVALID_LOCAL_NAME, localName);
VXnode& vnode=GET_SELF(r, VXnode);
VXdoc& vdoc=vnode.get_vxdoc();
xmlDoc& xmldoc=vdoc.get_xmldoc();
VHash& result=*new VHash;
AccumulateFoundInfo info={&result.hash(), &vdoc, 0};
pa_xmlNamedPreorderTraversal((xmlNode*)&xmldoc,
namespaceURI,
localName,
AccumulateFound,
&info);
// write out result
r.write_no_lang(result);
}
// void normalize();
static void _normalize(Request&, MethodParams&) {
/*maybe someday
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& selfNode=vnode.get_xmlnode();
gdome_n_normalize(selfNode, &exc);
if(exc)
throw XmlException(0, exc);
*/
}
#ifndef DOXYGEN
struct Register_one_ns_info {
Request* r;
xmlXPathContextPtr ctxt;
};
#endif
static void register_one_ns(
HashStringValue::key_type key,
HashStringValue::value_type value,
Register_one_ns_info* info) {
if(const String* svalue=value->get_string())
xmlXPathRegisterNs(info->ctxt,
info->r->transcode(key),
info->r->transcode(*svalue));
else
throw Exception(PARSER_RUNTIME,
new String(key, String::L_TAINTED),
"value is %s, must be string or number", value->type());
}
static void _selectX(Request& r, MethodParams& params,
void (*handler)(Request& r,
const String& expression,
xmlXPathObject_auto_ptr res,
VXdoc& xdoc,
Value*& result))
{
VXnode& vnode=GET_SELF(r, VXnode);
xmlNode& xmlnode=vnode.get_xmlnode();
VXdoc& vdoc=vnode.get_vxdoc();
xmlDoc& xmldoc=vdoc.get_xmldoc();
// expression
const String& expression=params.as_string(0, "expression must be string");
xmlXPathContext_auto_ptr ctxt(xmlXPathNewContext(&xmldoc));
{
Register_one_ns_info info={&r, ctxt.get()};
vdoc.search_namespaces.hash().for_each(register_one_ns, &info);
}
ctxt->node=&xmlnode;
/*error to stderr for now*/
xmlXPathObject_auto_ptr res(
xmlXPathEvalExpression(r.transcode(expression), ctxt.get()));
if(xmlHaveGenericErrors())
throw XmlException(0, r);
Value* result=0;
if(res.get())
handler(r, expression, res, vdoc, result);
if(result)
r.write_no_lang(*result);
}
static void selectNodesHandler(Request&,
const String& expression,
xmlXPathObject_auto_ptr res,
VXdoc& xdoc,
Value*& result) {
VHash& vhash=*new VHash; result=&vhash;
switch(res->type) {
case XPATH_UNDEFINED:
break;
case XPATH_NODESET:
if(res->nodesetval)
if(int size=res->nodesetval->nodeNr) {
HashStringValue& hash=vhash.hash();
for(int i=0; inodesetval->nodeTab[i]));
}
break;
default:
throw Exception(PARSER_RUNTIME,
&expression,
"wrong xmlXPathEvalExpression result type (%d)", res->type);
break; // never
}
}
static void selectNodeHandler(Request& r,
const String& expression,
xmlXPathObject_auto_ptr res,
VXdoc& xdoc,
Value*& result) {
switch(res->type) {
case XPATH_UNDEFINED:
break;
case XPATH_NODESET:
if(res->nodesetval && res->nodesetval->nodeNr) { // empty result strangely has NODESET res->type
if(res->nodesetval->nodeNr>1)
throw Exception(PARSER_RUNTIME,
&expression,
"resulted not in a single node (%d)", res->nodesetval->nodeNr);
result=&xdoc.wrap(*res->nodesetval->nodeTab[0]);
}
break;
case XPATH_BOOLEAN:
result=&VBool::get(res->boolval!=0);
break;
case XPATH_NUMBER:
result=new VDouble(res->floatval);
break;
case XPATH_STRING:
result=new VString(r.transcode((xmlChar*)res->stringval));
break;
default:
throw Exception(PARSER_RUNTIME,
&expression,
"wrong xmlXPathEvalExpression result type (%d)", res->type);
}
}
static void selectBoolHandler(Request&,
const String& expression,
xmlXPathObject_auto_ptr res,
VXdoc& /*xdoc*/,
Value*& result) {
switch(res->type) {
case XPATH_BOOLEAN:
result=&VBool::get(res->boolval!=0);
break;
case XPATH_NODESET:
if(!(res->nodesetval && res->nodesetval->nodeNr))
break;
// else[nodeset] fall down to default
default:
throw Exception(PARSER_RUNTIME,
&expression,
"wrong xmlXPathEvalExpression result type (%d)", res->type);
break; // never
}
}
static void selectNumberHandler(Request&,
const String& expression,
xmlXPathObject_auto_ptr res,
VXdoc& /*xdoc*/,
Value*& result) {
switch(res->type) {
case XPATH_NUMBER:
result=new VDouble(res->floatval);
break;
case XPATH_NODESET:
if(!(res->nodesetval && res->nodesetval->nodeNr))
break;
// else[nodeset] fall down to default
default:
throw Exception(PARSER_RUNTIME,
&expression,
"wrong xmlXPathEvalExpression result type (%d)", res->type);
break; // never
}
}
static void selectStringHandler(Request& r,
const String& expression,
xmlXPathObject_auto_ptr res,
VXdoc& /*xdoc*/,
Value*& result) {
switch(res->type) {
case XPATH_UNDEFINED:
break;
case XPATH_STRING:
result=new VString(r.transcode((xmlChar*)res->stringval));
break;
case XPATH_NODESET:
if(!(res->nodesetval && res->nodesetval->nodeNr))
break;
// else[nodeset] fall down to default
default:
throw Exception(PARSER_RUNTIME,
&expression,
"wrong xmlXPathEvalExpression result type (%d)", res->type);
break; // never
}
}
static void _select(Request& r, MethodParams& params) {
_selectX(r, params,
selectNodesHandler);
}
static void _selectSingle(Request& r, MethodParams& params) {
_selectX(r, params,
selectNodeHandler);
}
static void _selectBool(Request& r, MethodParams& params) {
_selectX(r, params,
selectBoolHandler);
}
static void _selectNumber(Request& r, MethodParams& params) {
_selectX(r, params,
selectNumberHandler);
}
static void _selectString(Request& r, MethodParams& params) {
_selectX(r, params,
selectStringHandler);
}
// constructor
/// @bug one can change const and ruin other's work, we need unchangable VIntConst class
MXnode::MXnode(const char* aname, VStateless_class *abase):
Methoded(aname?aname:"xnode", abase)
{
/// DOM1 node
// Node insertBefore(in Node newChild,in Node refChild) raises(DOMException);
add_native_method("insertBefore", Method::CT_DYNAMIC, _insertBefore, 2, 2);
// Node replaceChild(in Node newChild,in Node oldChild) raises(DOMException);
add_native_method("replaceChild", Method::CT_DYNAMIC, _replaceChild, 2, 2);
// Node removeChild(in Node oldChild) raises(DOMException);
add_native_method("removeChild", Method::CT_DYNAMIC, _removeChild, 1, 1);
// Node appendChild(in Node newChild) raises(DOMException);
add_native_method("appendChild", Method::CT_DYNAMIC, _appendChild, 1, 1);
// boolean hasChildNodes();
add_native_method("hasChildNodes", Method::CT_DYNAMIC, _hasChildNodes, 0, 0);
// Node cloneNode(in boolean deep);
add_native_method("cloneNode", Method::CT_DYNAMIC, _cloneNode, 1, 1);
/// DOM1 element
// DOMString getAttribute(in DOMString name);
add_native_method("getAttribute", Method::CT_DYNAMIC, _getAttribute, 1, 1);
// void setAttribute(in DOMString name, in DOMString value) raises(DOMException);
add_native_method("setAttribute", Method::CT_DYNAMIC, _setAttribute, 2, 2);
// void removeAttribute(in DOMString name) raises(DOMException);
add_native_method("removeAttribute", Method::CT_DYNAMIC, _removeAttribute, 1, 1);
// Attr getAttributeNode(in DOMString name);
add_native_method("getAttributeNode", Method::CT_DYNAMIC, _getAttributeNode, 1, 1);
// Attr setAttributeNode(in Attr newAttr) raises(DOMException);
add_native_method("setAttributeNode", Method::CT_DYNAMIC, _setAttributeNode, 1, 1);
// Attr removeAttributeNode(in Attr oldAttr) raises(DOMException);
add_native_method("removeAttributeNode", Method::CT_DYNAMIC, _removeAttributeNode, 1, 1);
// NodeList getElementsByTagName(in DOMString name);
add_native_method("getElementsByTagName", Method::CT_DYNAMIC, _getElementsByTagName, 1, 1);
// NodeList getElementsByTagNameNS(in DOMString namespaceURI, in DOMString localName);
add_native_method("getElementsByTagNameNS", Method::CT_DYNAMIC, _getElementsByTagNameNS, 2, 2);
// void normalize();
add_native_method("normalize", Method::CT_DYNAMIC, _normalize, 0, 0);
/// DOM2 element
// DOMString getAttributeNS(in DOMString namespaceURI, in DOMString localName);
add_native_method("getAttributeNS", Method::CT_DYNAMIC, _getAttributeNS, 2, 2);
// void setAttributeNS(in DOMString namespaceURI, in DOMString qualifiedName, in DOMString value) raises(DOMException);
add_native_method("setAttributeNS", Method::CT_DYNAMIC, _setAttributeNS, 3, 3);
// void removeAttributeNS(in DOMString namespaceURI, in DOMString localName) raises(DOMException);
add_native_method("removeAttributeNS", Method::CT_DYNAMIC, _removeAttributeNS, 2, 2);
// Attr getAttributeNodeNS(in DOMString namespaceURI, in DOMString localName);
add_native_method("getAttributeNodeNS", Method::CT_DYNAMIC, _getAttributeNodeNS, 2, 2);
// Attr setAttributeNodeNS(in Attr newAttr) raises(DOMException);
add_native_method("setAttributeNodeNS", Method::CT_DYNAMIC, _setAttributeNode, 1, 1);
// boolean hasAttribute(in DOMString name) raises(DOMException);
add_native_method("hasAttribute", Method::CT_DYNAMIC, _hasAttribute, 1, 1);
// boolean hasAttributeNS(in DOMString namespaceURI, in DOMString localName) raises(DOMException);
add_native_method("hasAttributeNS", Method::CT_DYNAMIC, _hasAttributeNS, 2, 2);
// boolean hasAttributes
add_native_method("hasAttributes", Method::CT_DYNAMIC, _hasAttributes, 0, 0);
/// parser
// ^node.select[/some/xpath/query] = hash $.#[dnode]
add_native_method("select", Method::CT_DYNAMIC, _select, 1, 1);
// ^node.selectSingle[/some/xpath/query] = first node [if any]
add_native_method("selectSingle", Method::CT_DYNAMIC, _selectSingle, 1, 1);
// ^node.selectBool[/some/xpath/query] = bool value [if any]
add_native_method("selectBool", Method::CT_DYNAMIC, _selectBool, 1, 1);
// ^node.selectNumber[/some/xpath/query] = double value [if any]
add_native_method("selectNumber", Method::CT_DYNAMIC, _selectNumber, 1, 1);
// ^node.selectString[/some/xpath/query] = strinv value [if any]
add_native_method("selectString", Method::CT_DYNAMIC, _selectString, 1, 1);
// consts
#define CONST(name) \
consts.put(String::Body(#name), new VInt(XML_##name))
#define CONST2(name, value) \
consts.put(String::Body(#name), new VInt(value))
CONST(ELEMENT_NODE);
CONST(ATTRIBUTE_NODE);
CONST(TEXT_NODE);
CONST(CDATA_SECTION_NODE);
CONST2(ENTITY_REFERENCE_NODE, XML_ENTITY_REF_NODE);
CONST(ENTITY_NODE);
CONST2(PROCESSING_INSTRUCTION_NODE, XML_PI_NODE);
CONST(COMMENT_NODE);
CONST(DOCUMENT_NODE);
CONST(DOCUMENT_TYPE_NODE);
CONST2(DOCUMENT_FRAGMENT_NODE, XML_DOCUMENT_FRAG_NODE);
CONST(NOTATION_NODE);
}
#else
// global variable
DECLARE_CLASS_VAR(xnode, 0, 0); // fictive
#endif
parser-3.4.3/src/classes/image.C 000644 000000 000000 00000117272 12223102011 016520 0 ustar 00root wheel 000000 000000 /** @file
Parser: @b image parser class.
Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com)
Author: Alexandr Petrosian (http://paf.design.ru)
*/
/*
jpegsize: gets the width and height (in pixels) of a jpeg file
Andrew Tong, werdna@ugcs.caltech.edu February 14, 1995
modified slightly by alex@ed.ac.uk
and further still by rjray@uswest.com
optimization and general re-write from tmetro@vl.com
from perl by paf@design.ru
*/
#include "pa_config_includes.h"
#include "gif.h"
#include "pa_vmethod_frame.h"
#include "pa_common.h"
#include "pa_request.h"
#include "pa_vfile.h"
#include "pa_vimage.h"
#include "pa_vdate.h"
#include "pa_table.h"
volatile const char * IDENT_IMAGE_C="$Id: image.C,v 1.144 2013/10/02 20:37:29 moko Exp $";
// defines
static const String spacebar_width_name("space");
static const String monospace_width_name("width");
static const String letter_spacing_name("spacing");
// class
class MImage: public Methoded {
public: // VStateless_class
Value* create_new_value(Pool&) { return new VImage(); }
public:
MImage();
};
// globals
DECLARE_CLASS_VAR(image, new MImage, 0);
// helpers
#define EXIF_TAG(tag, name) put(tag, #name);
/// value of exif tag -> it's value
class EXIF_tag_value2name: public Hash {
public:
EXIF_tag_value2name() {
// image JPEG Exif
// Tags used by IFD0 (main image)
EXIF_TAG(0x010e, ImageDescription);
EXIF_TAG(0x010f, Make);
EXIF_TAG(0x0110, Model);
EXIF_TAG(0x0112, Orientation);
EXIF_TAG(0x011a, XResolution);
EXIF_TAG(0x011b, YResolution);
EXIF_TAG(0x0128, ResolutionUnit);
EXIF_TAG(0x0131, Software);
EXIF_TAG(0x0132, DateTime);
EXIF_TAG(0x013e, WhitePoint);
EXIF_TAG(0x013f, PrimaryChromaticities);
EXIF_TAG(0x0211, YCbCrCoefficients);
EXIF_TAG(0x0213, YCbCrPositioning);
EXIF_TAG(0x0214, ReferenceBlackWhite);
EXIF_TAG(0x8298, Copyright);
EXIF_TAG(0x8769, ExifOffset);
// Tags used by Exif SubIFD
EXIF_TAG(0x829a, ExposureTime);
EXIF_TAG(0x829d, FNumber);
EXIF_TAG(0x8822, ExposureProgram);
EXIF_TAG(0x8827, ISOSpeedRatings);
EXIF_TAG(0x9000, ExifVersion);
EXIF_TAG(0x9003, DateTimeOriginal);
EXIF_TAG(0x9004, DateTimeDigitized);
EXIF_TAG(0x9101, ComponentsConfiguration);
EXIF_TAG(0x9102, CompressedBitsPerPixel);
EXIF_TAG(0x9201, ShutterSpeedValue);
EXIF_TAG(0x9202, ApertureValue);
EXIF_TAG(0x9203, BrightnessValue);
EXIF_TAG(0x9204, ExposureBiasValue);
EXIF_TAG(0x9205, MaxApertureValue);
EXIF_TAG(0x9206, SubjectDistance);
EXIF_TAG(0x9207, MeteringMode);
EXIF_TAG(0x9208, LightSource);
EXIF_TAG(0x9209, Flash);
EXIF_TAG(0x920a, FocalLength);
EXIF_TAG(0x927c, MakerNote);
EXIF_TAG(0x9286, UserComment);
EXIF_TAG(0x9290, SubsecTime);
EXIF_TAG(0x9291, SubsecTimeOriginal);
EXIF_TAG(0x9292, SubsecTimeDigitized);
EXIF_TAG(0xa000, FlashPixVersion);
EXIF_TAG(0xa001, ColorSpace);
EXIF_TAG(0xa002, ExifImageWidth);
EXIF_TAG(0xa003, ExifImageHeight);
EXIF_TAG(0xa004, RelatedSoundFile);
EXIF_TAG(0xa005, ExifInteroperabilityOffset);
EXIF_TAG(0xa20e, FocalPlaneXResolution);
EXIF_TAG(0xa20f, FocalPlaneYResolution);
EXIF_TAG(0xa210, FocalPlaneResolutionUnit);
EXIF_TAG(0xa215, ExposureIndex);
EXIF_TAG(0xa217, SensingMethod);
EXIF_TAG(0xa300, FileSource);
EXIF_TAG(0xa301, SceneType);
EXIF_TAG(0xa302, CFAPattern);
// Misc Tags
EXIF_TAG(0x00fe, NewSubfileType);
EXIF_TAG(0x00ff, SubfileType);
EXIF_TAG(0x012d, TransferFunction);
EXIF_TAG(0x013b, Artist);
EXIF_TAG(0x013d, Predictor);
EXIF_TAG(0x0142, TileWidth);
EXIF_TAG(0x0143, TileLength);
EXIF_TAG(0x0144, TileOffsets);
EXIF_TAG(0x0145, TileByteCounts);
EXIF_TAG(0x014a, SubIFDs);
EXIF_TAG(0x015b, JPEGTables);
EXIF_TAG(0x828d, CFARepeatPatternDim);
EXIF_TAG(0x828e, CFAPattern);
EXIF_TAG(0x828f, BatteryLevel);
EXIF_TAG(0x83bb, IPTC/NAA);
EXIF_TAG(0x8773, InterColorProfile);
EXIF_TAG(0x8824, SpectralSensitivity);
//EXIF_TAG(0x8825, GPSInfo);
EXIF_TAG(0x8828, OECF);
EXIF_TAG(0x8829, Interlace);
EXIF_TAG(0x882a, TimeZoneOffset);
EXIF_TAG(0x882b, SelfTimerMode);
EXIF_TAG(0x920b, FlashEnergy);
EXIF_TAG(0x920c, SpatialFrequencyResponse);
EXIF_TAG(0x920d, Noise);
EXIF_TAG(0x9211, ImageNumber);
EXIF_TAG(0x9212, SecurityClassification);
EXIF_TAG(0x9213, ImageHistory);
EXIF_TAG(0x9214, SubjectLocation);
EXIF_TAG(0x9215, ExposureIndex);
EXIF_TAG(0x9216, TIFF/EPStandardID);
EXIF_TAG(0xa20b, FlashEnergy);
EXIF_TAG(0xa20c, SpatialFrequencyResponse);
EXIF_TAG(0xa214, SubjectLocation);
// additional things added by misha@
EXIF_TAG(0x0100, ImageWidth);
EXIF_TAG(0x0101, ImageLength);
EXIF_TAG(0x0102, BitsPerSample);
EXIF_TAG(0x0103, Compression);
EXIF_TAG(0x0106, PhotometricInterpretation);
EXIF_TAG(0x010a, FillOrder);
EXIF_TAG(0x010d, DocumentName);
EXIF_TAG(0x0111, StripOffsets);
EXIF_TAG(0x0115, SamplesPerPixel);
EXIF_TAG(0x0116, RowsPerStrip);
EXIF_TAG(0x0117, StripByteCounts);
EXIF_TAG(0x011c, PlanarConfiguration);
EXIF_TAG(0x0156, TransferRange);
EXIF_TAG(0x0200, JPEGProc);
EXIF_TAG(0x0201, JPEGInterchangeFormat);
EXIF_TAG(0x0202, JPEGInterchangeFormatLength);
EXIF_TAG(0x0212, YCbCrSubSampling);
EXIF_TAG(0xa401, CustomRendered);
EXIF_TAG(0xa402, ExposureMode);
EXIF_TAG(0xa403, WhiteBalance);
EXIF_TAG(0xa404, DigitalZoomRatio);
EXIF_TAG(0xa405, FocalLengthIn35mmFilm);
EXIF_TAG(0xa406, SceneCaptureType);
EXIF_TAG(0xa407, GainControl);
EXIF_TAG(0xa408, Contrast);
EXIF_TAG(0xa409, Saturation);
EXIF_TAG(0xa40a, Sharpness);
EXIF_TAG(0xa40b, DeviceSettingDescription);
EXIF_TAG(0xa40c, SubjectDistanceRange);
EXIF_TAG(0xa420, ImageUniqueID);
}
} exif_tag_value2name;
class EXIF_gps_tag_value2name: public Hash {
public:
EXIF_gps_tag_value2name() {
EXIF_TAG(0x0, GPSVersionID);
EXIF_TAG(0x1, GPSLatitudeRef);
EXIF_TAG(0x2, GPSLatitude);
EXIF_TAG(0x3, GPSLongitudeRef);
EXIF_TAG(0x4, GPSLongitude);
EXIF_TAG(0x5, GPSAltitudeRef);
EXIF_TAG(0x6, GPSAltitude);
EXIF_TAG(0x7, GPSTimeStamp);
EXIF_TAG(0x8, GPSSatellites);
EXIF_TAG(0x9, GPSStatus);
EXIF_TAG(0xA, GPSMeasureMode);
EXIF_TAG(0xB, GPSDOP);
EXIF_TAG(0xC, GPSSpeedRef);
EXIF_TAG(0xD, GPSSpeed);
EXIF_TAG(0xE, GPSTrackRef);
EXIF_TAG(0xF, GPSTrack);
EXIF_TAG(0x10, GPSImgDirectionRef);
EXIF_TAG(0x11, GPSImgDirection);
EXIF_TAG(0x12, GPSMapDatum);
EXIF_TAG(0x13, GPSDestLatitudeRef);
EXIF_TAG(0x14, GPSDestLatitude);
EXIF_TAG(0x15, GPSDestLongitudeRef);
EXIF_TAG(0x16, GPSDestLongitude);
EXIF_TAG(0x17, GPSDestBearingRef);
EXIF_TAG(0x18, GPSDestBearing);
EXIF_TAG(0x19, GPSDestDistanceRef);
EXIF_TAG(0x1A, GPSDestDistance);
EXIF_TAG(0x1B, GPSProcessingMethod);
EXIF_TAG(0x1C, GPSAreaInformation);
EXIF_TAG(0x1D, GPSDateStamp);
EXIF_TAG(0x1E, GPSDifferential);
}
} exif_gps_tag_value2name;
#undef EXIF_TAG
#ifndef DOXYGEN
class Measure_reader {
public:
virtual size_t read(const char* &buf, size_t limit)=0;
virtual void seek(long value, int whence)=0;
virtual long tell()=0;
};
class Measure_file_reader: public Measure_reader {
const String& file_name; const char* fname;
int f;
public:
Measure_file_reader(int af, const String& afile_name, const char* afname):
file_name(afile_name), fname(afname), f(af) {
}
override size_t read(const char* &abuf, size_t limit) {
if(limit==0)
return 0;
char* lbuf=new(PointerFreeGC) char[limit];
ssize_t read_size=::read(f, lbuf, limit); abuf=lbuf;
if(read_size<0)
throw Exception(0, &file_name, "measure read failed: %s (%d)", strerror(errno), errno);
return read_size;
}
override void seek(long value, int whence) {
if(lseek(f, value, whence)<0)
throw Exception(IMAGE_FORMAT,
&file_name,
"seek(value=%ld, whence=%d) failed: %s (%d), actual filename '%s'",
value, whence, strerror(errno), errno, fname);
}
override long tell() { return lseek(f, 0, SEEK_CUR); }
};
class Measure_buf_reader: public Measure_reader {
const char* buf; size_t size;
const String& file_name;
size_t offset;
public:
Measure_buf_reader(const char* abuf, size_t asize, const String& afile_name):
buf(abuf), size(asize), file_name(afile_name), offset(0) {
}
override size_t read(const char* &abuf, size_t limit) {
size_t to_read=min(limit, size-offset);
abuf=buf+offset;
offset+=to_read;
return to_read;
}
override void seek(long value, int whence) {
size_t new_offset;
switch(whence) {
case SEEK_CUR: new_offset=offset+value; break;
case SEEK_SET: new_offset=(size_t)value; break;
default:
throw Exception(0,
0,
"whence #%d not supported", 0, whence);
break; // never
}
if((ssize_t)new_offset<0 || new_offset>size)
throw Exception(IMAGE_FORMAT,
&file_name,
"seek(value=%l, whence=%d) failed: out of buffer, new_offset>size (%l>%l) or new_offset<0",
value, whence, new_offset, size);
offset=new_offset;
}
override long tell() { return offset; }
};
#endif
/// PNG file header
struct PNG_Header {
char dummy[12];
char signature[4]; //< must be "IHDR"
uchar high_width[2]; //< image width high bytes [we ignore for now]
uchar width[2]; //< image width low bytes
uchar high_height[2]; //< image height high bytes [we ignore for now]
uchar height[4]; //< image height
};
/// GIF file header
struct GIF_Header {
char signature[3]; // 'GIF'
char version[3];
uchar width[2];
uchar height[2];
char dif;
char fonColor;
char nulls;
};
/// JPEG record head
struct JPG_Segment_head {
uchar marker;
uchar code;
uchar length[2];
};
/// JPEG frame header
struct JPG_Size_segment_body {
char data; //< data precision of bits/sample
uchar height[2]; //< image height
uchar width[2]; //< image width
char numComponents; //< number of color components
};
/// JPEG frame header
struct JPG_Exif_segment_begin {
char signature[6]; // Exif\0\0
};
/// JPEG Exif TIFF Header
struct JPG_Exif_TIFF_header {
uchar byte_align_identifier[2];
char dummy[2]; // always 000A [or 0A00]
uchar first_IFD_offset[4]; // Usually the first IFD starts immediately next to TIFF header, so this offset has value '0x00000008'.
};
// JPEG Exif IFD start
struct JPG_Exif_IFD_begin {
uchar directory_entry_count[2]; // the number of directory entry contains in this IFD
};
// TTTT ffff NNNNNNNN DDDDDDDD
struct JPG_Exif_IFD_entry {
uchar tag[2]; // Tag number, this shows a kind of data
uchar format[2]; // data format
uchar components_count[4]; // number of components
uchar value_or_offset_to_it[4]; // data value or offset to data value
};
#define JPG_IFD_TAG_EXIF_OFFSET 0x8769
#define JPG_IFD_TAG_EXIF_GPS_OFFSET 0x8825
#define JPEG_EXIF_DATE_CHARS 20
//
inline ushort x_endian_to_ushort(uchar b0, uchar b1) {
return (ushort)((b1<<8) + b0);
}
inline uint x_endian_to_uint(uchar b0, uchar b1, uchar b2, uchar b3) {
return (uint)(((((b3<<8) + b2)<<8)+b1)<<8)+b0;
}
inline ushort endian_to_ushort(bool is_big, const uchar *b/* [2] */) {
return is_big?x_endian_to_ushort(b[1], b[0]):
x_endian_to_ushort(b[0], b[1]);
}
inline uint endian_to_uint(bool is_big, const uchar *b /* [4] */) {
return is_big?x_endian_to_uint(b[3], b[2], b[1], b[0]):
x_endian_to_uint(b[0], b[1], b[2], b[3]);
}
static void measure_gif(const String& origin_string,
Measure_reader& reader, ushort& width, ushort& height) {
const char* buf;
const size_t head_size=sizeof(GIF_Header);
if(reader.read(buf, head_size)signature, "GIF", 3)!=0)
throw Exception(IMAGE_FORMAT,
&origin_string,
"not GIF file - wrong signature");
width=endian_to_ushort(false, head->width);
height=endian_to_ushort(false, head->height);
}
static Value* parse_IFD_entry_formatted_one_value(
bool is_big,
ushort format,
size_t component_size,
const uchar *value) {
switch(format) {
case 1: // unsigned byte
return new VInt((uchar)value[0]);
case 3: // unsigned short
return new VInt(endian_to_ushort(is_big, value));
case 4: // unsigned long
// 'double' because parser's Int is signed
return new VDouble(endian_to_uint(is_big, value));
case 5: // unsigned rational
{
uint numerator=endian_to_uint(is_big, value); value+=component_size/2;
uint denominator=endian_to_uint(is_big, value);
if(!denominator)
return 0;
return new VDouble(((double)numerator)/denominator);
}
case 6: // signed byte
return new VInt((signed char)value[0]);
case 8: // signed short
return new VInt((signed short)endian_to_ushort(is_big, value));
case 9: // signed long
return new VInt((signed int)endian_to_uint(is_big, value));
case 10: // signed rational
{
signed int numerator=(signed int)endian_to_uint(is_big, value); value+=component_size/2;
uint denominator=endian_to_uint(is_big, value);
if(!denominator)
return 0;
return new VDouble(numerator/denominator);
}
/*
case 11: // single float
@todo
case 12: // double float
@todo
*/
};
return 0;
}
// date.C
tm cstr_to_time_t(char *cstr);
static Value* parse_IFD_entry_formatted_value(bool is_big, ushort format,
size_t component_size, uint components_count,
const uchar *value) {
if(format==2) { // ascii string, exception: the only type with varying size
const char* cstr=(const char* )value;
size_t length=components_count;
// Data format is "YYYY:MM:DD HH:MM:SS"+0x00, total 20bytes
if(length==JPEG_EXIF_DATE_CHARS
&& isdigit((unsigned char)cstr[0])
&& cstr[length-1]==0) {
char cstr_writable[JPEG_EXIF_DATE_CHARS];
strcpy(cstr_writable, cstr);
try {
return new VDate(cstr_to_time_t(cstr_writable));
}
catch(...) { /*ignore bad date times*/ }
}
return new VString(*new String(cstr, String::L_TAINTED));
}
if(components_count==1)
return parse_IFD_entry_formatted_one_value(is_big, format, component_size, value);
VHash* result=new VHash;
HashStringValue& hash=result->hash();
for(uint i=0; i=sizeof(format2component_size)/sizeof(format2component_size[0]))
return 0; // format out of range, ignoring
size_t component_size=format2component_size[format];
if(component_size==0)
return 0; // undefined format
// You can get the total data byte length by multiplies
// a 'bytes/components' value (see above chart) by number of components stored 'NNNNNNNN' area
uint components_count=endian_to_uint(is_big, entry.components_count);
uint value_size=component_size*components_count;
// If its size is over 4bytes, 'DDDDDDDD' contains the offset to data stored address
Value* result;
if(value_size<=4)
result=parse_IFD_entry_formatted_value(
is_big, format,
component_size, components_count,
entry.value_or_offset_to_it);
else {
long remembered=reader.tell();
{
reader.seek(tiff_base+endian_to_uint(is_big, entry.value_or_offset_to_it), SEEK_SET);
const char* value;
if(reader.read(value, value_size)directory_entry_count);
for(int i=0; isignature, "Exif\0\0", 4+2)!=0) //signature invalid?
return 0; // ignore invalid block
uint tiff_base=reader.tell();
if(reader.read(buf, sizeof(JPG_Exif_TIFF_header))byte_align_identifier[0]=='M'; // [M]otorola vs [I]ntel
uint first_IFD_offset=endian_to_uint(is_big, head->first_IFD_offset);
reader.seek(tiff_base+first_IFD_offset, SEEK_SET);
VHash* vhash=new VHash;
// IFD
parse_IFD(vhash->hash(), is_big, reader, tiff_base);
return vhash;
}
static void measure_jpeg(const String& origin_string,
Measure_reader& reader, ushort& width, ushort& height, Value** exif) {
// JFIF format markers
const uchar MARKER=0xFF;
const uchar CODE_SIZE_A=0xC0;
const uchar CODE_SIZE_B=0xC1;
const uchar CODE_SIZE_C=0xC2;
const uchar CODE_SIZE_D=0xC3;
const uchar CODE_EXIF=0xE1;
const char* buf;
const size_t prefix_size=2;
if(reader.read(buf, prefix_size)marker!=MARKER)
throw Exception(IMAGE_FORMAT,
&origin_string,
"not JPEG file - marker not found");
switch(head->code) {
// http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html
case CODE_EXIF:
if(exif && !*exif) // seen .jpg with some xml under EXIF tag, after real exif block :)
*exif=parse_exif(reader, origin_string);
break;
case CODE_SIZE_A:
case CODE_SIZE_B:
case CODE_SIZE_C:
case CODE_SIZE_D:
{
// Segments that contain size info
if(reader.read(buf, sizeof(JPG_Size_segment_body))width);
height=endian_to_ushort(true, body->height);
}
return;
};
reader.seek(segment_base+endian_to_ushort(true, head->length), SEEK_SET);
}
throw Exception(IMAGE_FORMAT,
&origin_string,
"broken JPEG file - size frame not found");
}
static void measure_png(const String& origin_string,
Measure_reader& reader, ushort& width, ushort& height) {
const char* buf;
const size_t head_size=sizeof(PNG_Header);
if(reader.read(buf, head_size)signature, "IHDR", 4)!=0)
throw Exception(IMAGE_FORMAT,
&origin_string,
"not PNG file - wrong signature");
width=endian_to_ushort(true, head->width);
height=endian_to_ushort(true, head->height);
}
// measure center
static void measure(const String& file_name,
Measure_reader& reader, ushort& width, ushort& height, Value** exif) {
const char* file_name_cstr=file_name.taint_cstr(String::L_FILE_SPEC);
if(const char* cext=strrchr(file_name_cstr, '.')) {
cext++;
if(strcasecmp(cext, "GIF")==0)
measure_gif(file_name, reader, width, height);
else if(strcasecmp(cext, "JPG")==0 || strcasecmp(cext, "JPEG")==0)
measure_jpeg(file_name, reader, width, height, exif);
else if(strcasecmp(cext, "PNG")==0)
measure_png(file_name, reader, width, height);
else
throw Exception(IMAGE_FORMAT,
&file_name,
"unhandled image file name extension '%s'", cext);
} else
throw Exception(IMAGE_FORMAT,
&file_name,
"can not determine image type - no file name extension");
}
// methods
#ifndef DOXYGEN
struct File_measure_action_info {
ushort* width;
ushort* height;
Value** exif;
const String* file_name;
};
#endif
static void file_measure_action(
struct stat& /*finfo*/, int f,
const String& /*file_spec*/, const char* fname, bool /*as_text*/,
void *context) {
File_measure_action_info& info=*static_cast(context);
Measure_file_reader reader(f, *info.file_name, fname);
measure(*info.file_name, reader, *info.width, *info.height, info.exif);
}
static void _measure(Request& r, MethodParams& params) {
Value& data=params.as_no_junction(0, "data must not be code");
ushort width=0;
ushort height=0;
Value* exif=0;
const String* file_name;
if((file_name=data.get_string())) {
File_measure_action_info info={
&width, &height,
&exif,
file_name
};
file_read_action_under_lock(r.absolute(*file_name),
"measure", file_measure_action, &info);
} else {
VFile* vfile=data.as_vfile(String::L_AS_IS);
file_name=&vfile->fields().get(name_name)->as_string();
Measure_buf_reader reader(
vfile->value_ptr(),
vfile->value_size(),
*file_name
);
measure(*file_name, reader, width, height, &exif);
}
GET_SELF(r, VImage).set(file_name, width, height, 0, exif);
}
#ifndef DOXYGEN
struct Attrib_info {
String* tag; ///< html tag being constructed
HashStringValue* skip; ///< tag attributes not to append to tag string [to skip]
};
#endif
static void append_attrib_pair(
HashStringValue::key_type key,
HashStringValue::value_type value,
Attrib_info* info) {
// skip user-specified, internal(starting with "line-") attributes and border attribute with empty value
if(
(info->skip && info->skip->get(key))
|| key.pos("line-")==0
|| (key=="border" && !value->is_defined())
)
return;
// src="a.gif" width="123" ismap[=-1]
*info->tag << " " << key;
if(value->is_string() || value->as_int()>=0)
*info->tag << "=\"" << value->as_string() << "\"";
}
static void _html(Request& r, MethodParams& params) {
String tag;
tag << "
for_each(append_attrib_pair, &info);
} else
throw Exception(PARSER_RUNTIME,
0,
"attributes must be hash");
}
{
Attrib_info info={&tag, attribs};
fields.for_each(append_attrib_pair, &info);
}
tag << " />";
r.write_pass_lang(tag);
}
/// @test wrap FILE to auto-object
static gdImage* load(Request& r,
const String& file_name){
const char* file_name_cstr=r.absolute(file_name).taint_cstr(String::L_FILE_SPEC);
if(FILE *f=fopen(file_name_cstr, "rb")) {
gdImage* image=new gdImage;
bool ok=image->CreateFromGif(f);
fclose(f);
if(!ok)
throw Exception(IMAGE_FORMAT,
&file_name,
"is not in GIF format");
return image;
} else {
throw Exception("file.missing",
0,
"can not open '%s'", file_name_cstr);
}
}
static void _load(Request& r, MethodParams& params) {
const String& file_name=params.as_string(0, FILE_NAME_MUST_NOT_BE_CODE);
gdImage* image=load(r, file_name);
GET_SELF(r, VImage).set(&file_name, image->SX(), image->SY(), image);
}
static void _create(Request& r, MethodParams& params) {
int width=params.as_int(0, "width must be int", r);
int height=params.as_int(1, "height must be int", r);
int bgcolor_value=0xffFFff;
if(params.count()>2)
bgcolor_value=params.as_int(2, "color must be int", r);
gdImage* image=new gdImage;
image->Create(width, height);
image->FilledRectangle(0, 0, width-1, height-1, image->Color(bgcolor_value));
GET_SELF(r, VImage).set(0, width, height, image);
}
static void _gif(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
const String *file_name=params.count()>0?¶ms.as_string(0, FILE_NAME_MUST_BE_STRING):0;
gdBuf buf=image.Gif();
VFile& vfile=*new VFile;
vfile.set_binary(false/*not tainted*/, (const char *)buf.ptr, buf.size, file_name, new VString(*new String("image/gif")));
r.write_no_lang(vfile);
}
static void _line(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
image.Line(
params.as_int(0, "x0 must be int", r),
params.as_int(1, "y0 must be int", r),
params.as_int(2, "x1 must be int", r),
params.as_int(3, "y1 must be int", r),
image.Color(params.as_int(4, "color must be int", r)));
}
static void _fill(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
image.Fill(
params.as_int(0, "x must be int", r),
params.as_int(1, "y must be int", r),
image.Color(params.as_int(2, "color must be int", r)));
}
static void _rectangle(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
image.Rectangle(
params.as_int(0, "x0 must be int", r),
params.as_int(1, "y0 must be int", r),
params.as_int(2, "x1 must be int", r),
params.as_int(3, "y1 must be int", r),
image.Color(params.as_int(4, "color must be int", r)));
}
static void _bar(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
image.FilledRectangle(
params.as_int(0, "x0 must be int", r),
params.as_int(1, "y0 must be int", r),
params.as_int(2, "x1 must be int", r),
params.as_int(3, "y1 must be int", r),
image.Color(params.as_int(4, "color must be int", r)));
}
#ifndef DOXYGEN
static void add_point(Table::element_type row,
gdImage::Point **p) {
if(row->count()!=2)
throw Exception(0,
0,
"coordinates table must contain two columns: x and y values");
(**p).x=row->get(0)->as_int();
(**p).y=row->get(1)->as_int();
(*p)++;
}
#endif
#ifndef DOXYGEN
static void add_point(int x, int y,
gdImage::Point **p) {
(**p).x=x;
(**p).y=y;
(*p)++;
}
#endif
static void _replace(Request& r, MethodParams& params) {
int src_color=params.as_int(0, "src color must be int", r);
int dest_color=params.as_int(1, "dest color must be int", r);
gdImage& image=GET_SELF(r, VImage).image();
gdImage::Point* all_p=0;
size_t count=0;
if(params.count() == 3){
Table* table=params.as_table(2, "coordinates");
count=table->count();
all_p=new(PointerFreeGC) gdImage::Point[count];
gdImage::Point* add_p=all_p;
table->for_each(add_point, &add_p);
} else {
int max_x=image.SX()-1;
int max_y=image.SY()-1;
if(max_x > 0 && max_y > 0){
count=4;
all_p=new(PointerFreeGC) gdImage::Point[count];
gdImage::Point* add_p=all_p;
add_point(0, 0, &add_p);
add_point(max_x, 0, &add_p);
add_point(max_x, max_y, &add_p);
add_point(0, max_y, &add_p);
}
}
if(count)
image.FilledPolygonReplaceColor(all_p, count, image.Color(src_color), image.Color(dest_color));
}
static void _polyline(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
Table* table=params.as_table(1, "coordinates");
gdImage::Point* all_p=new(PointerFreeGC) gdImage::Point[table->count()];
gdImage::Point *add_p=all_p;
table->for_each(add_point, &add_p);
image.Polygon(all_p, table->count(),
image.Color(params.as_int(0, "color must be int", r)),
false/*not closed*/);
}
static void _polygon(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
Table* table=(Table*)params.as_table(1, "coordinates");
gdImage::Point* all_p=new(PointerFreeGC) gdImage::Point[table->count()];
gdImage::Point *add_p=all_p;
table->for_each(add_point, &add_p);
image.Polygon(all_p, table->count(),
image.Color(params.as_int(0, "color must be int", r)));
}
static void _polybar(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
Table* table=(Table*)params.as_table(1, "coordinates");
gdImage::Point* all_p=new(PointerFreeGC) gdImage::Point[table->count()];
gdImage::Point *add_p=all_p;
table->for_each(add_point, &add_p);
image.FilledPolygon(all_p, table->count(),
image.Color(params.as_int(0, "color must be int", r)));
}
// font
#define Y(y)(y+index*height)
// Font class
Font::Font(
Charset& asource_charset,
const String& aalphabet,
gdImage* aifont, int aheight, int amonospace, int aspacebarspace, int aletterspacing):
fsource_charset(asource_charset),
height(aheight),
monospace(amonospace),
spacebarspace(aspacebarspace),
letterspacing(aletterspacing),
ifont(aifont),
alphabet(aalphabet) {
if(fsource_charset.isUTF8()){
size_t index=0;
for(UTF8_string_iterator i(alphabet); i.has_next(); )
fletter2index.put_dont_replace(i.next(), index++);
}
}
/* ******************************** char ********************************** */
size_t Font::index_of(char ch) {
if(ch==' ') return STRING_NOT_FOUND;
return alphabet.pos(ch);
}
size_t Font::index_of(XMLCh ch) {
if(ch==' ') return STRING_NOT_FOUND;
return fletter2index.get(ch);
}
int Font::index_width(size_t index) {
if(index==STRING_NOT_FOUND)
return spacebarspace;
int tr=ifont->GetTransparent();
for(int x=ifont->SX()-1; x>=0; x--) {
for(int y=0; yGetPixel(x, Y(y))!=tr)
return x+1;
}
return 0;
}
void Font::index_display(gdImage& image, int x, int y, size_t index){
if(index!=STRING_NOT_FOUND)
ifont->Copy(image, x, y, 0, Y(0), index_width(index), height);
}
/* ******************************** string ********************************** */
int Font::step_width(int index) {
return letterspacing + (monospace ? monospace : index_width(index));
}
// counts trailing letter_spacing, consider this OK. useful for contiuations
int Font::string_width(const String& s){
const char* cstr=s.cstr();
int result=0;
if(fsource_charset.isUTF8()){
for(UTF8_string_iterator i(s); i.has_next(); )
result+=step_width(index_of(i.next()));
} else {
for(const char* current=cstr; *current; current++)
result+=step_width(index_of(*current));
}
return result;
}
void Font::string_display(gdImage& image, int x, int y, const String& s){
const char* cstr=s.cstr();
if(fsource_charset.isUTF8()){
for(UTF8_string_iterator i(s); i.has_next(); ){
size_t index=index_of(i.next());
index_display(image, x, y, index);
x+=step_width(index);
}
} else {
for(const char* current=cstr; *current; current++) {
size_t index=index_of(*current);
index_display(image, x, y, index);
x+=step_width(index);
}
}
}
//
static void _font(Request& r, MethodParams& params) {
const String& alphabet=params.as_string(0, "alphabet must not be code");
size_t alphabet_length=alphabet.length(r.charsets.source());
if(!alphabet_length)
throw Exception(PARSER_RUNTIME,
0,
"alphabet must not be empty");
gdImage* image=load(r, params.as_string(1, FILE_NAME_MUST_NOT_BE_CODE));
int spacebar_width=image->SX();
int monospace_width=0; // proportional
int letter_spacing=1;
if(params.count()>2){
if(HashStringValue* options=params[2].get_hash()){
// third option is hash
if(params.count()>3)
throw Exception(PARSER_RUNTIME, 0, "too many params were specified");
int valid_options=0;
if(Value* vspacebar_width=options->get(spacebar_width_name)){
valid_options++;
spacebar_width=r.process_to_value(*vspacebar_width).as_int();
}
if(Value* vmonospace_width=options->get(monospace_width_name)){
valid_options++;
monospace_width=r.process_to_value(*vmonospace_width).as_int();
if(!monospace_width)
monospace_width=image->SX();
}
if(Value* vletter_spacing=options->get(letter_spacing_name)){
valid_options++;
letter_spacing=r.process_to_value(*vletter_spacing).as_int();
}
if(valid_options!=options->count())
throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION);
} else {
// backward
spacebar_width=params.as_int(2, "param must be int or hash", r);
if(params.count()>3) {
monospace_width=params.as_int(3, "monospace_width must be int", r);
if(!monospace_width)
monospace_width=image->SX();
}
}
}
if(int remainder=image->SY() % alphabet_length)
throw Exception(PARSER_RUNTIME,
0,
"font-file height(%d) not divisable by alphabet size(%d), remainder=%d",
image->SY(), alphabet_length, remainder);
GET_SELF(r, VImage).set_font(new Font(
r.charsets.source(),
alphabet,
image,
image->SY() / alphabet_length, monospace_width, spacebar_width, letter_spacing));
}
static void _text(Request& r, MethodParams& params) {
int x=params.as_int(0, "x must be int", r);
int y=params.as_int(1, "y must be int", r);
const String& s=params.as_string(2, "text must not be code");
VImage& vimage=GET_SELF(r, VImage);
vimage.font().string_display(vimage.image(), x, y, s);
}
static void _length(Request& r, MethodParams& params) {
const String& s=params.as_string(0, "text must not be code");
VImage& vimage=GET_SELF(r, VImage);
r.write_no_lang(*new VInt(vimage.font().string_width(s)));
}
static void _arc(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
image.Arc(
params.as_int(0, "center_x must be int", r),
params.as_int(1, "center_y must be int", r),
params.as_int(2, "width must be int", r),
params.as_int(3, "height must be int", r),
params.as_int(4, "start degrees must be int", r),
params.as_int(5, "end degrees must be int", r),
image.Color(params.as_int(6, "cx must be int", r)));
}
static void _sector(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
image.Sector(
params.as_int(0, "center_x must be int", r),
params.as_int(1, "center_y must be int", r),
params.as_int(2, "width must be int", r),
params.as_int(3, "height must be int", r),
params.as_int(4, "start degrees must be int", r),
params.as_int(5, "end degrees must be int", r),
image.Color(params.as_int(6, "color must be int", r)));
}
static void _circle(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
int size=params.as_int(2, "radius must be int", r)*2;
image.Arc(
params.as_int(0, "center_x must be int", r),
params.as_int(1, "center_y must be int", r),
size, //w
size, //h
0, //s
360, //e
image.Color(params.as_int(3, "color must be int", r)));
}
gdImage& as_image(MethodParams& params, int index, const char* msg) {
Value& value=params.as_no_junction(index, msg);
if(Value* vimage=value.as(VIMAGE_TYPE)) {
return static_cast(vimage)->image();
} else
throw Exception(PARSER_RUNTIME,
0,
msg);
}
static void _copy(Request& r, MethodParams& params) {
gdImage& dest=GET_SELF(r, VImage).image();
gdImage& src=as_image(params, 0, "src must be image");
int sx=params.as_int(1, "src_x must be int", r);
int sy=params.as_int(2, "src_y must be int", r);
int sw=params.as_int(3, "src_w must be int", r);
int sh=params.as_int(4, "src_h must be int", r);
int dx=params.as_int(5, "dest_x must be int", r);
int dy=params.as_int(6, "dest_y must be int", r);
if(params.count()>1+2+2+2) {
int dw=params.as_int(1+2+2+2, "dest_w must be int", r);
int dh=(int)(params.count()>1+2+2+2+1?
params.as_int(1+2+2+2+1, "dest_h must be int", r):sh*(((double)dw)/((double)sw)));
int tolerance=params.count()>1+2+2+2+2?
params.as_int(1+2+2+2+2, "tolerance must be int", r):150;
src.CopyResampled(dest, dx, dy, sx, sy, dw, dh, sw, sh, tolerance);
} else
src.Copy(dest, dx, dy, sx, sy, sw, sh);
}
static void _pixel(Request& r, MethodParams& params) {
gdImage& image=GET_SELF(r, VImage).image();
int x=params.as_int(0, "x must be int", r);
int y=params.as_int(1, "y must be int", r);
if(params.count()>2) {
image.SetPixel(x, y,
image.Color(params.as_int(2, "color must be int", r)));
} else
r.write_no_lang(*new VInt(image.DecodeColor(image.GetPixel(x, y))));
}
// constructor
MImage::MImage(): Methoded("image") {
// ^image:measure[DATA]
add_native_method("measure", Method::CT_DYNAMIC, _measure, 1, 1);
// ^image.html[]
// ^image.html[hash]
add_native_method("html", Method::CT_DYNAMIC, _html, 0, 1);
// ^image.load[background.gif]
add_native_method("load", Method::CT_DYNAMIC, _load, 1, 1);
// ^image.create[width;height] bgcolor=white
// ^image.create[width;height;bgcolor]
add_native_method("create", Method::CT_DYNAMIC, _create, 2, 3);
// ^image.gif[]
add_native_method("gif", Method::CT_DYNAMIC, _gif, 0, 1);
// ^image.line(x0;y0;x1;y1;color)
add_native_method("line", Method::CT_DYNAMIC, _line, 5, 5);
// ^image.fill(x;y;color)
add_native_method("fill", Method::CT_DYNAMIC, _fill, 3, 3);
// ^image.rectangle(x0;y0;x1;y1;color)
add_native_method("rectangle", Method::CT_DYNAMIC, _rectangle, 5, 5);
// ^image.bar(x0;y0;x1;y1;color)
add_native_method("bar", Method::CT_DYNAMIC, _bar, 5, 5);
// ^image.replace(color-source;color-dest)[table x:y]
// ^image.replace(color-source;color-dest)
add_native_method("replace", Method::CT_DYNAMIC, _replace, 2, 3);
// ^image.polyline(color)[table x:y]
add_native_method("polyline", Method::CT_DYNAMIC, _polyline, 2, 2);
// ^image.polygon(color)[table x:y]
add_native_method("polygon", Method::CT_DYNAMIC, _polygon, 2, 2);
// ^image.polybar(color)[table x:y]
add_native_method("polybar", Method::CT_DYNAMIC, _polybar, 2, 2);
// ^image.font[alPHAbet;font-file-name.gif]
// ^image.font[alPHAbet;font-file-name.gif](spacebar_width)
// ^image.font[alPHAbet;font-file-name.gif](spacebar_width;letter_width)
// ^image.font[alPHAbet;font-file-name.gif][$.space-width(.) $.letter-width(.) $.letter-space(.)]
add_native_method("font", Method::CT_DYNAMIC, _font, 2, 4);
// ^image.text(x;y)[text]
add_native_method("text", Method::CT_DYNAMIC, _text, 3, 3);
// ^image.length[text]
add_native_method("length", Method::CT_DYNAMIC, _length, 1, 1);
// ^image.arc(center x;center y;width;height;start in degrees;end in degrees;color)
add_native_method("arc", Method::CT_DYNAMIC, _arc, 7, 7);
// ^image.sector(center x;center y;width;height;start in degrees;end in degrees;color)
add_native_method("sector", Method::CT_DYNAMIC, _sector, 7, 7);
// ^image.circle(center x;center y;r;color)
add_native_method("circle", Method::CT_DYNAMIC, _circle, 4, 4);
// ^image.copy[source](src x;src y;src w;src h;dst x;dst y[;dest w[;dest h[;tolerance]]])
add_native_method("copy", Method::CT_DYNAMIC, _copy, 1+2+2+2, (1+2+2+2)+2+1);
// ^image.pixel(x;y)[(color)]
add_native_method("pixel", Method::CT_DYNAMIC, _pixel, 2, 3);
}
parser-3.4.3/src/classes/Makefile.am 000644 000000 000000 00000001563 11766067564 017423 0 ustar 00root wheel 000000 000000 INCLUDES = -I../types -I../sql -I../lib/gd -I../lib/gc/include -I../lib/cord/include -I../lib/sdbm/pa-include -Igd $(INCLTDL) @PCRE_INCLUDES@ @XML_INCLUDES@ -I../lib/md5 -I../lib/smtp -I../lib/json -I../lib/memcached -I../lib/curl
CLASSES_SOURCE_FILES = classes.awk bool.C curl.C date.C double.C file.C form.C hash.C hashfile.C image.C inet.C int.C json.C mail.C math.C memcached.C memory.C op.C reflection.C regex.C response.C string.C table.C void.C xnode.C xdoc.C
noinst_HEADERS = classes.h xnode.h
noinst_LTLIBRARIES = libclasses.la
libclasses_la_SOURCES = $(CLASSES_SOURCE_FILES) classes.C
classes.inc: $(CLASSES_SOURCE_FILES) Makefile.am
echo "/* do not edit. autogenerated by Makefile.am */" > classes.inc
echo >> classes.inc
ls $(CLASSES_SOURCE_FILES) | $(AWK) -f classes.awk >> classes.inc
CLEANFILES = classes.inc
classes.C: classes.inc
EXTRA_DIST = classes.vcproj
parser-3.4.3/src/classes/json.C 000644 000000 000000 00000033676 12233734064 016440 0 ustar 00root wheel 000000 000000 /** @file
Parser: @b json parser class.
Copyright (c) 2000-2012 Art. Lebedev Studio (http://www.artlebedev.com)
*/
#include "classes.h"
#include "pa_vmethod_frame.h"
#include "pa_request.h"
#include "pa_vbool.h"
#include "pa_charset.h"
#include "pa_charsets.h"
#include "pa_json.h"
#ifdef XML
#include "pa_vxdoc.h"
#endif
volatile const char * IDENT_JSON_C="$Id: json.C,v 1.29 2013/10/29 13:29:24 moko Exp $";
// class
class MJson: public Methoded {
public:
MJson();
};
// global variable
DECLARE_CLASS_VAR(json, new MJson, 0);
// methods
struct Json {
Stack stack;
Stack key_stack;
String* key;
Value* result;
Junction* hook_object;
Junction* hook_array;
Request* request;
Charset *charset;
String::Language taint;
bool handle_double;
enum Distinct { D_EXCEPTION, D_FIRST, D_LAST, D_ALL } distinct;
Json(Charset* acharset): stack(), key_stack(), key(NULL), result(NULL), hook_object(NULL), hook_array(NULL),
request(NULL), charset(acharset), taint(String::L_TAINTED), handle_double(true), distinct(D_EXCEPTION){}
bool set_distinct(const String &value){
if (value == "first") distinct = D_FIRST;
else if (value == "last") distinct = D_LAST;
else if (value == "all") distinct = D_ALL;
else return false;
return true;
}
};
static void set_json_value(Json *json, Value *value){
VHash *top = json->stack.top_value();
if(json->key == NULL){
top->hash().put(String(format(top->get_hash()->count(), 0)), value);
} else {
switch (json->distinct){
case Json::D_EXCEPTION:
if (top->hash().put_dont_replace(*json->key, value))
throw Exception(PARSER_RUNTIME, json->key, "duplicate key");
break;
case Json::D_FIRST:
top->hash().put_dont_replace(*json->key, value);
break;
case Json::D_LAST:
top->hash().put(*json->key, value);
break;
case Json::D_ALL:
if (top->hash().put_dont_replace(*json->key, value)){
for(int i=2;;i++){
String key;
key << *json->key << "_" << format(i, 0);
if (!top->hash().put_dont_replace(key, value)) break;
}
}
break;
}
json->key=NULL;
}
}
String* json_string(Json *json, const char *value, uint32_t length){
String::C result = json->charset !=NULL ?
Charset::transcode(String::C(value, length), UTF8_charset, *json->charset) :
String::C(pa_strdup(value, length), length);
return new String(result.str, json->taint, result.length);
}
static Value *json_hook(Request &r, Junction *hook, String* key, Value* value){
VMethodFrame frame(*hook->method, r.method_frame, hook->self);
Value *params[]={new VString(key ? *key : String::Empty), value};
frame.store_params(params, 2);
r.execute_method(frame);
return &frame.result().as_value();
}
static int json_callback(Json *json, int type, const char *value, uint32_t length)
{
switch(type) {
case JSON_OBJECT_BEGIN:{
VHash *v = new VHash();
if (json->hook_object){
json->key_stack.push(json->key);
json->key=NULL;
} else {
if (json->stack.count()) set_json_value(json, v);
}
json->stack.push(v);
break;
}
case JSON_OBJECT_END:{
if (json->hook_object){
String* key = json->key_stack.pop();
json->result = json_hook(*json->request, json->hook_object, key, json->stack.pop());
if (json->stack.count()){
json->key = key;
set_json_value(json, json->result);
}
} else {
json->result = json->stack.pop();
}
break;
}
case JSON_ARRAY_BEGIN:{
VHash *v = new VHash();
if (json->hook_array){
json->key_stack.push(json->key);
json->key=NULL;
} else {
if (json->stack.count()) set_json_value(json, v);
}
json->stack.push(v);
break;
}
case JSON_ARRAY_END:
// libjson supports array at top level, we too
if (json->hook_array){
String* key = json->key_stack.pop();
json->result = json_hook(*json->request, json->hook_array, key, json->stack.pop());
if (json->stack.count()){
json->key = key;
set_json_value(json, json->result);
}
} else {
json->result = json->stack.pop();
}
break;
case JSON_KEY:
json->key = json_string(json, value, length);
break;
case JSON_INT:
set_json_value(json, new VDouble( json_string(json, value, length)->as_double() ));
break;
case JSON_FLOAT:
if (json->handle_double){
set_json_value(json, new VDouble( json_string(json, value, length)->as_double() ));
break;
} // else is JSON_STRING
case JSON_STRING:
set_json_value(json, new VString(*json_string(json, value, length)));
break;
case JSON_NULL:
set_json_value(json, VVoid::get());
break;
case JSON_TRUE:
set_json_value(json, &VBool::get(true));
break;
case JSON_FALSE:
set_json_value(json, &VBool::get(false));
break;
}
return 0;
}
static const char* json_error_message(int error_code){
static const char* error_messages[] = {
NULL,
"out of memory",
"bad character",
"stack empty",
"pop unexpected mode",
"nesting limit",
"data limit",
"comment not allowed by config",
"unexpected char",
"missing unicode low surrogate",
"unexpected unicode low surrogate",
"error comma out of structure",
"error in a callback"
};
return error_messages[error_code];
}
extern String::Language get_untaint_lang(const String& lang_name);
static void _parse(Request& r, MethodParams& params) {
const String& json_string=params.as_string(0, "json must be string");
Json json(r.charsets.source().isUTF8() ? NULL : &(r.charsets.source()));
json_config config = {
0, // buffer_initial_size
128, // max_nesting
0, // max_data
1, // allow_c_comments
1, // allow_yaml_comments
pa_malloc,
pa_realloc,
pa_free
};
if(params.count() == 2)
if(HashStringValue* options=params.as_hash(1)) {
int valid_options=0;
if(Value* value=options->get("depth")) {
config.max_nesting=r.process_to_value(*value).as_int();
valid_options++;
}
if(Value* value=options->get("double")) {
json.handle_double=r.process_to_value(*value).as_bool();
valid_options++;
}
if(Value* value=options->get("distinct")) {
const String& sdistinct=value->as_string();
if (!json.set_distinct(sdistinct))
throw Exception(PARSER_RUNTIME, &sdistinct, "must be 'first', 'last' or 'all'");
valid_options++;
}
if(Value* value=options->get("taint")) {
json.taint=get_untaint_lang(value->as_string());
valid_options++;
}
if(Value* value=options->get("object")) {
json.hook_object=value->get_junction();
json.request=&r;
if (!json.hook_object || !json.hook_object->method || !json.hook_object->method->params_names || !(json.hook_object->method->params_names->count() == 2))
throw Exception(PARSER_RUNTIME, 0, "$.object must be parser method with 2 parameters");
valid_options++;
}
if(Value* value=options->get("array")) {
json.hook_array=value->get_junction();
json.request=&r;
if (!json.hook_array || !json.hook_array->method || !json.hook_array->method->params_names || !(json.hook_array->method->params_names->count() == 2))
throw Exception(PARSER_RUNTIME, 0, "$.array must be parser method with 2 parameters");
valid_options++;
}
if(valid_options!=options->count())
throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION);
}
const String::Body json_body = json_string.cstr_to_string_body_untaint(String::L_JSON, r.connection(false), &r.charsets);
const char *json_cstr = json.charset != NULL ? Charset::transcode(json_body, *json.charset, UTF8_charset).cstr() : json_body.cstr();
json_parser parser;
if(int result = json_parser_init(&parser, &config, (json_parser_callback)&json_callback, &json))
throw Exception("json.parse", 0, "%s", json_error_message(result));
uint32_t processed;
if(int result = json_parser_string(&parser, json_cstr, strlen(json_cstr), &processed))
throw Exception("json.parse", 0, "%s at byte %d", json_error_message(result), processed);
if (!json_parser_is_done(&parser))
throw Exception("json.parse", 0, "unexpected end of json data");
json_parser_free(&parser);
if (json.result) r.write_no_lang(*json.result);
}
const uint ANTI_ENDLESS_JSON_STRING_RECOURSION=128;
char *get_indent(uint level){
static char* cache[ANTI_ENDLESS_JSON_STRING_RECOURSION]={};
if (!cache[level]){
char *result = static_cast(pa_gc_malloc_atomic(level+1));
memset(result, '\t', level);
result[level]='\0';
return cache[level]=result;
}
return cache[level];
}
class Json_string_recoursion {
Json_options& foptions;
public:
Json_string_recoursion(Json_options& aoptions) : foptions(aoptions) {
if(++foptions.json_string_recoursion==ANTI_ENDLESS_JSON_STRING_RECOURSION)
throw Exception(PARSER_RUNTIME, 0, "call canceled - endless json recursion detected");
}
~Json_string_recoursion() {
if(foptions.json_string_recoursion)
foptions.json_string_recoursion--;
}
};
const String& value_json_string(String::Body key, Value& v, Json_options& options);
const String* Json_options::hash_json_string(HashStringValue &hash) {
if(!hash.count())
return new String("{}", String::L_AS_IS);
Json_string_recoursion go_down(*this);
String& result = *new String("{\n", String::L_AS_IS);
if (indent){
String *delim=NULL;
indent=get_indent(json_string_recoursion);
for(HashStringValue::Iterator i(hash); i; i.next() ){
if (delim){
result << *delim;
} else {
result << indent << "\"";
delim = new String(",\n", String::L_AS_IS); *delim << indent << "\"";
}
result << String(i.key(), String::L_JSON) << "\":" << value_json_string(i.key(), *i.value(), *this);
}
result << "\n" << (indent=get_indent(json_string_recoursion-1)) << "}";
} else {
bool need_delim=false;
for(HashStringValue::Iterator i(hash); i; i.next() ){
result << (need_delim ? ",\n\"" : "\"");
result << String(i.key(), String::L_JSON) << "\":" << value_json_string(i.key(), *i.value(), *this);
need_delim=true;
}
result << "\n}";
}
return &result;
}
static bool based_on(HashStringValue::key_type key, HashStringValue::value_type /*value*/, Value* v) {
return v->is(key.cstr());
}
const String& value_json_string(String::Body key, Value& v, Json_options& options) {
if(options.methods) {
Value* method=options.methods->get(v.type());
if(!method){
method=options.methods->first_that(based_on, &v);
options.methods->put(key, method ? method : VVoid::get());
}
if(method && !method->is_void()) {
Junction* junction=method->get_junction();
VMethodFrame frame(*junction->method, options.r->method_frame, junction->self);
HashStringValue* params_hash=options.params && options.indent ? options.params->get_hash() : NULL;
Temp_hash_value indent(params_hash, "indent", new VString(*new String(options.indent, String::L_AS_IS)));
Value *params[]={new VString(*new String(key, String::L_JSON)), &v, options.params ? options.params : VVoid::get()};
frame.store_params(params, 3);
options.r->execute_method(frame);
return frame.result().as_string();
}
}
options.key=key;
return *v.get_json_string(options);
}
static void _string(Request& r, MethodParams& params) {
Json_options json(&r);
if(params.count() == 2)
if(HashStringValue* options=params.as_hash(1)) {
json.params=params.get(1);
HashStringValue* methods=new HashStringValue();
int valid_options=0;
HashStringValue* vvalue;
for(HashStringValue::Iterator i(*options); i; i.next() ){
String::Body key=i.key();
Value* value=i.value();
if(key == "skip-unknown"){
json.skip_unknown=r.process_to_value(*value).as_bool();
valid_options++;
} else if(key == "date" && value->is_string()){
const String& svalue=value->as_string();
if(!json.set_date_format(svalue))
throw Exception(PARSER_RUNTIME, &svalue, "must be 'sql-string', 'gmt-string' or 'unix-timestamp'");
valid_options++;
} else if(key == "indent"){
if(value->is_string()){
json.indent=value->as_string().cstr();
json.json_string_recoursion=strlen(json.indent);
} else json.indent=r.process_to_value(*value).as_bool() ? "" : NULL;
valid_options++;
} else if(key == "table" && value->is_string()){
const String& svalue=value->as_string();
if(!json.set_table_format(svalue))
throw Exception(PARSER_RUNTIME, &svalue, "must be 'array', 'object' or 'compact'");
valid_options++;
} else if(key == "file" && value->is_string()){
const String& svalue=value->as_string();
if(!json.set_file_format(svalue))
throw Exception(PARSER_RUNTIME, &svalue, "must be 'base64', 'text' or 'stat'");
valid_options++;
#ifdef XML
} else if(key == "xdoc" && (vvalue = value->get_hash())){
json.xdoc_options=new XDocOutputOptions();
json.xdoc_options->append(r, vvalue);
valid_options++;
#endif
} else if(Junction* junction=value->get_junction()){
if(!junction->method || !junction->method->params_names || junction->method->params_names->count() != 3)
throw Exception(PARSER_RUNTIME, 0, "$.%s must be parser method with 3 parameters", key.cstr());
methods->put(key, value);
valid_options++;
}
}
if(valid_options!=options->count())
throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION);
// special handling for $._default
if(VHash* vhash=static_cast(params[1].as(VHASH_TYPE)))
if(Value* value=vhash->get_default()) {
Junction* junction=value->get_junction();
if(!junction || !junction->method || !junction->method->params_names || junction->method->params_names->count() != 3)
throw Exception(PARSER_RUNTIME, 0, "$.%s must be parser method with 3 parameters", HASH_DEFAULT_ELEMENT_NAME);
json.default_method=value;
}
if(methods->count())
json.methods=methods;
}
const String& result_string=value_json_string(String::Body(), params[0], json);
String::Body result_body=result_string.cstr_to_string_body_untaint(String::L_JSON, r.connection(false), &r.charsets);
r.write_pass_lang(*new String(result_body, String::L_AS_IS));
}
// constructor
MJson::MJson(): Methoded("json") {
add_native_method("parse", Method::CT_STATIC, _parse, 1, 2);
add_native_method("string", Method::CT_ANY, _string, 1, 2);
}
parser-3.4.3/src/classes/response.C 000644 000000 000000 00000001503 11730603270 017300 0 ustar 00root wheel 000000 000000 /** @file
Parser: @b response parser class.
Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com)
Author: Alexandr Petrosian (http://paf.design.ru)
*/
#include "classes.h"
#include "pa_vmethod_frame.h"
#include "pa_request.h"
#include "pa_vresponse.h"
volatile const char * IDENT_RESPONSE_C="$Id: response.C,v 1.28 2012/03/16 09:24:08 moko Exp $";
// class
class MResponse: public Methoded {
public:
MResponse();
public: // Methoded
bool used_directly() { return false; }
};
// global variable
DECLARE_CLASS_VAR(response, new MResponse, 0);
// methods
static void _clear(Request& r, MethodParams&) {
GET_SELF(r, VResponse).fields().clear();
}
// constructor
MResponse::MResponse(): Methoded("response") {
// ^clear[]
add_native_method("clear", Method::CT_DYNAMIC, _clear, 0, 0);
}
parser-3.4.3/src/classes/curl.C 000644 000000 000000 00000050020 12173310332 016401 0 ustar 00root wheel 000000 000000 /** @file
Parser: @b curl parser class.
Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com)
*/
#include "pa_config_includes.h"
#include "pa_vmethod_frame.h"
#include "pa_request.h"
#include "pa_vfile.h"
#include "pa_charsets.h"
#include "pa_vstring.h"
#include "pa_vtable.h"
#include "pa_common.h"
#include "pa_http.h"
#include "ltdl.h"
volatile const char * IDENT_CURL_C="$Id: curl.C,v 1.29 2013/07/22 20:06:50 moko Exp $";
class MCurl: public Methoded {
public:
MCurl();
};
// global variables
DECLARE_CLASS_VAR(curl, new MCurl, 0);
#include "curl.h"
typedef CURL *(*t_curl_easy_init)(); t_curl_easy_init f_curl_easy_init;
typedef CURLcode (*t_curl_easy_setopt)(CURL *, CURLoption option, ...); t_curl_easy_setopt f_curl_easy_setopt;
typedef CURLcode (*t_curl_easy_perform)(CURL *); t_curl_easy_perform f_curl_easy_perform;
typedef void (*t_curl_easy_cleanup)(CURL *); t_curl_easy_cleanup f_curl_easy_cleanup;
typedef const char *(*t_curl_easy_strerror)(CURLcode); t_curl_easy_strerror f_curl_easy_strerror;
typedef CURLcode (*t_curl_easy_getinfo)(CURL *curl, CURLINFO info, ...); t_curl_easy_getinfo f_curl_easy_getinfo;
typedef struct curl_slist *(*t_curl_slist_append)(struct curl_slist *,const char *); t_curl_slist_append f_curl_slist_append;
typedef const char *(*t_curl_version)(); t_curl_version f_curl_version;
typedef CURLFORMcode (*t_curl_formadd)(struct curl_httppost **httppost, struct curl_httppost **last_post, ...); t_curl_formadd f_curl_formadd;
typedef void (*t_curl_formfree)(struct curl_httppost *form); t_curl_formfree f_curl_formfree;
#define GLINK(name) f_##name=(t_##name)lt_dlsym(handle, #name);
#define DLINK(name) GLINK(name) if(!f_##name) return "function " #name " was not found";
static const char *dlink(const char *dlopen_file_spec) {
pa_dlinit();
lt_dlhandle handle=lt_dlopen(dlopen_file_spec);
if(!handle){
if(const char* result=lt_dlerror())
return result;
return "can not open the dynamic link module";
}
DLINK(curl_easy_init);
DLINK(curl_easy_cleanup);
DLINK(curl_version);
DLINK(curl_easy_setopt);
DLINK(curl_easy_perform);
DLINK(curl_easy_strerror);
DLINK(curl_easy_getinfo);
DLINK(curl_slist_append);
DLINK(curl_formadd);
DLINK(curl_formfree);
return 0;
}
class ParserOptions {
public:
const String *filename;
const String *content_type;
bool is_text;
Charset *charset, *response_charset;
struct curl_httppost *f_post;
FILE *f_stderr;
ParserOptions() : filename(0), content_type(0), is_text(true), charset(0), response_charset(0), f_post(0), f_stderr(0){}
~ParserOptions() {
f_curl_formfree(f_post);
if(f_stderr)
fclose(f_stderr);
}
};
// using TLS instead of keeping variables in request
THREAD_LOCAL CURL *fcurl = 0;
THREAD_LOCAL ParserOptions *foptions = 0;
static CURL *curl(){
if(!fcurl)
throw Exception("curl", 0, "outside of 'session' operator");
return fcurl;
}
static ParserOptions &options(){
if(!foptions)
throw Exception("curl", 0, "outside of 'session' operator");
return *foptions;
}
// using temporal object scheme to garanty cleanup call
class Temp_curl {
CURL *saved_curl;
ParserOptions *saved_options;
public:
Temp_curl() : saved_curl(fcurl), saved_options(foptions){
fcurl = f_curl_easy_init();
foptions = new ParserOptions();
f_curl_easy_setopt(fcurl, CURLOPT_POSTFIELDSIZE, 0); // fix libcurl bug
f_curl_easy_setopt(fcurl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); // avoid ipv6 by default
}
~Temp_curl() {
f_curl_easy_cleanup(fcurl);
fcurl = saved_curl;
delete foptions;
foptions = saved_options;
}
};
bool curl_linked = false;
const char *curl_library="libcurl" LT_MODULE_EXT;
const char *curl_status = 0;
static void temp_curl(void (*action)(Request&, MethodParams&), Request& r, MethodParams& params){
if(!curl_linked){
curl_linked=true;
curl_status=dlink(curl_library);
}
if(curl_status == 0){
Temp_curl temp_curl;
action(r,params);
} else {
throw Exception("curl", 0, "failed to load curl library %s: %s", curl_library, curl_status);
}
}
static void _curl_session_action(Request& r, MethodParams& params){
Value& body_code=params.as_junction(0, "body must be code");
r.process_write(body_code);
}
static void _curl_session(Request& r, MethodParams& params){
temp_curl(_curl_session_action, r, params);
}
static void _curl_version_action(Request& r, MethodParams& ){
r.write_no_lang(*new VString(*new String(f_curl_version(), String::L_TAINTED)));
}
static void _curl_version(Request& r, MethodParams& params){
fcurl ? _curl_version_action(r, params) : temp_curl(_curl_version_action, r, params);
}
static char *str_lower(const char *str){
char *result=pa_strdup(str);
for(char* c=result; *c; c++)
*c=(char)tolower((unsigned char)*c);
return result;
}
static char *str_upper(const char *str){
char *result=pa_strdup(str);
for(char* c=result; *c; c++)
*c=(char)toupper((unsigned char)*c);
return result;
}
class CurlOption {
public:
enum OptionType {
CURL_STRING,
CURL_URLENCODE, // url-encoded string
CURL_URL,
CURL_INT,
CURL_POST,
CURL_FORM,
CURL_HEADERS,
CURL_FILE,
CURL_STDERR,
PARSER_LIBRARY,
PARSER_NAME,
PARSER_CONTENT_TYPE,
PARSER_MODE,
PARSER_CHARSET,
PARSER_RESPONSE_CHARSET
};
CURLoption id;
OptionType type;
CurlOption(CURLoption aid, OptionType atype): id(aid), type(atype) {}
};
class CurlOptionHash: public HashString {
public:
CurlOptionHash() {
#define CURL_OPT(type, name) put(str_lower(#name),new CurlOption(CURLOPT_##name, CurlOption::type));
#define PARSER_OPT(type, name) put(name,new CurlOption((CURLoption)0, CurlOption::type));
CURL_OPT(CURL_URL, URL);
CURL_OPT(CURL_STRING, INTERFACE);
CURL_OPT(CURL_INT, LOCALPORT);
CURL_OPT(CURL_INT, PORT);
CURL_OPT(CURL_INT, VERBOSE);
CURL_OPT(CURL_STDERR, STDERR);
CURL_OPT(CURL_INT, MAXFILESIZE);
CURL_OPT(CURL_INT, HTTPAUTH);
CURL_OPT(CURL_STRING, USERPWD);
CURL_OPT(CURL_STRING, USERNAME);
CURL_OPT(CURL_STRING, PASSWORD);
CURL_OPT(CURL_URLENCODE, USERAGENT);
CURL_OPT(CURL_URLENCODE, REFERER);
CURL_OPT(CURL_INT, AUTOREFERER);
CURL_OPT(CURL_STRING, ENCODING); // gzip or deflate
CURL_OPT(CURL_STRING, ACCEPT_ENCODING); // gzip or deflate
CURL_OPT(CURL_INT, FOLLOWLOCATION);
CURL_OPT(CURL_INT, UNRESTRICTED_AUTH);
CURL_OPT(CURL_INT, IPRESOLVE);
CURL_OPT(CURL_INT, POST);
CURL_OPT(CURL_INT, HTTPGET);
CURL_OPT(CURL_INT, NOBODY);
CURL_OPT(CURL_STRING, CUSTOMREQUEST);
CURL_OPT(CURL_POST, POSTFIELDS); // hopefully is safe too
CURL_OPT(CURL_POST, COPYPOSTFIELDS);
CURL_OPT(CURL_FORM, HTTPPOST);
CURL_OPT(CURL_HEADERS, HTTPHEADER);
CURL_OPT(CURL_URLENCODE, COOKIE);
CURL_OPT(CURL_URLENCODE, COOKIELIST);
CURL_OPT(CURL_INT, COOKIESESSION);
CURL_OPT(CURL_INT, IGNORE_CONTENT_LENGTH);
CURL_OPT(CURL_INT, HTTP_CONTENT_DECODING);
CURL_OPT(CURL_INT, HTTP_TRANSFER_DECODING);
CURL_OPT(CURL_INT, MAXREDIRS);
CURL_OPT(CURL_INT, POSTREDIR);
CURL_OPT(CURL_STRING, RANGE);
CURL_OPT(CURL_INT, TIMEOUT);
CURL_OPT(CURL_INT, TIMEOUT_MS);
CURL_OPT(CURL_INT, LOW_SPEED_LIMIT);
CURL_OPT(CURL_INT, LOW_SPEED_TIME);
CURL_OPT(CURL_INT, MAXCONNECTS);
CURL_OPT(CURL_STRING, PROXY);
CURL_OPT(CURL_INT, PROXYPORT);
CURL_OPT(CURL_INT, PROXYTYPE);
CURL_OPT(CURL_INT, HTTPPROXYTUNNEL);
CURL_OPT(CURL_STRING, PROXYUSERPWD);
CURL_OPT(CURL_INT, PROXYAUTH);
CURL_OPT(CURL_INT, FRESH_CONNECT);
CURL_OPT(CURL_INT, FORBID_REUSE);
CURL_OPT(CURL_INT, CONNECTTIMEOUT);
CURL_OPT(CURL_INT, CONNECTTIMEOUT_MS);
CURL_OPT(CURL_INT, FAILONERROR);
CURL_OPT(CURL_FILE, SSLCERT);
CURL_OPT(CURL_STRING, SSLCERTTYPE);
CURL_OPT(CURL_FILE, SSLKEY);
CURL_OPT(CURL_STRING, SSLKEYTYPE);
CURL_OPT(CURL_STRING, KEYPASSWD);
CURL_OPT(CURL_STRING, SSLENGINE);
CURL_OPT(CURL_STRING, SSLENGINE_DEFAULT);
CURL_OPT(CURL_FILE, ISSUERCERT);
CURL_OPT(CURL_FILE, CRLFILE);
CURL_OPT(CURL_STRING, CAINFO);
CURL_OPT(CURL_FILE, CAPATH);
CURL_OPT(CURL_INT, SSL_VERIFYPEER);
CURL_OPT(CURL_INT, SSL_VERIFYHOST);
CURL_OPT(CURL_STRING, SSL_CIPHER_LIST);
CURL_OPT(CURL_INT, SSL_SESSIONID_CACHE);
PARSER_OPT(PARSER_LIBRARY, "library");
PARSER_OPT(PARSER_NAME, "name");
PARSER_OPT(PARSER_CONTENT_TYPE, "content-type");
PARSER_OPT(PARSER_MODE, "mode");
PARSER_OPT(PARSER_CHARSET, "charset");
PARSER_OPT(PARSER_RESPONSE_CHARSET, "response-charset");
}
} *curl_options=0;
static const char *curl_urlencode(const String &s, Request& r){
if(options().charset){
Temp_client_charset temp(r.charsets, *options().charset);
return s.untaint_and_transcode_cstr(String::L_URI, &r.charsets);
} else
return s.untaint_cstr(String::L_URI);
}
static struct curl_slist *curl_headers(HashStringValue *value_hash, Request& r) {
struct curl_slist *slist=NULL;
for(HashStringValue::Iterator i(*value_hash); i; i.next() ){
String header =
String(pa_http_safe_header_name(capitalize(i.key().cstr())), String::L_AS_IS)
<< ": "
<< String(i.value()->as_string(), String::L_HTTP_HEADER);
slist=f_curl_slist_append(slist, curl_urlencode(header, r));
}
return slist;
}
static const char* curl_transcode(const String &s, Request& r){
return options().charset ? Charset::transcode(s.cstr(), r.charsets.source(), *options().charset).cstr() : s.cstr();
}
static void curl_form(HashStringValue *value_hash, Request& r){
struct curl_httppost *f_last=0;
for(HashStringValue::Iterator i(*value_hash); i; i.next() ){
const char *key = curl_transcode(String(i.key().cstr()), r);
if(const String* svalue = i.value()->get_string()){
// string
f_curl_formadd(&options().f_post, &f_last,
CURLFORM_PTRNAME, key,
CURLFORM_PTRCONTENTS, curl_transcode(String(svalue->cstr()), r),
CURLFORM_END);
} else if(Table* tvalue = i.value()->get_table()){
// table
for(size_t t = 0; t < tvalue->count(); t++) {
f_curl_formadd(&options().f_post, &f_last,
CURLFORM_PTRNAME, key,
CURLFORM_PTRCONTENTS, curl_transcode(String(tvalue->get(t)->get(0)->cstr()), r),
CURLFORM_END);
}
} else if(VFile* fvalue=static_cast(i.value()->as("file"))){
// file
f_curl_formadd(&options().f_post, &f_last,
CURLFORM_PTRNAME, key,
CURLFORM_BUFFER, curl_transcode(String(fvalue->fields().get("name")->as_string(), String::L_FILE_SPEC), r),
CURLFORM_BUFFERLENGTH, (long)fvalue->value_size(),
CURLFORM_BUFFERPTR, fvalue->value_ptr(),
CURLFORM_CONTENTTYPE, fvalue->fields().get("content-type")->as_string().taint_cstr(String::L_URI),
CURLFORM_END);
} else {
throw Exception("curl", new String(i.key(), String::L_TAINTED), "is %s, form option value can be string, table or file only", i.value()->type());
}
}
}
static const char *curl_check_file(const String &file_spec){
const char *file_spec_cstr=file_spec.taint_cstr(String::L_FILE_SPEC);
struct stat finfo;
if(stat(file_spec_cstr, &finfo)==0)
check_safe_mode(finfo, file_spec, file_spec_cstr);
return file_spec_cstr;
}
static void curl_setopt(HashStringValue::key_type key, HashStringValue::value_type value, Request& r) {
CurlOption *opt=curl_options->get(key);
if(opt==0)
throw Exception("curl", 0, "called with invalid option '%s'", key.cstr());
CURLcode res = CURLE_OK;
Value &v=r.process_to_value(*value);
switch (opt->type){
case CurlOption::CURL_STRING:{
// string curl option
const char *value_str=v.as_string().cstr();
res=f_curl_easy_setopt(curl(), opt->id, value_str);
break;
}
case CurlOption::CURL_URLENCODE:{
// url-encoded string curl option
const char *value_str=curl_urlencode(v.as_string(), r);
res=f_curl_easy_setopt(curl(), opt->id, value_str);
break;
}
case CurlOption::CURL_URL:{
// url-encoded string curl_url option
const String url = v.as_string();
if(!url.starts_with("http://") && !url.starts_with("https://"))
throw Exception("curl", 0, "failed to set option '%s': invalid url scheme '%s'", key.cstr(), url.cstr());
const char *value_str=curl_urlencode(url, r);
res=f_curl_easy_setopt(curl(), opt->id, value_str);
break;
}
case CurlOption::CURL_INT:{
// integer curl option
long value_int=(long)v.as_double();
res=f_curl_easy_setopt(curl(), opt->id, value_int);
break;
}
case CurlOption::CURL_POST:{
// http post curl option
if(v.get_string()){
if( (res=f_curl_easy_setopt(curl(), CURLOPT_POSTFIELDSIZE, -1L)) == CURLE_OK )
res=f_curl_easy_setopt(curl(), opt->id, curl_urlencode(v.as_string(), r));
} else {
VFile *file=v.as_vfile(String::L_AS_IS);
if( (res=f_curl_easy_setopt(curl(), CURLOPT_POSTFIELDSIZE, (long)file->value_size())) == CURLE_OK )
res=f_curl_easy_setopt(curl(), opt->id, file->value_ptr());
}
break;
}
case CurlOption::CURL_FORM:{
HashStringValue *value_hash = v.get_hash();
if(value_hash){
curl_form(value_hash, r);
} else if(v.get_string()->is_empty()){
f_curl_formfree(options().f_post);
options().f_post = 0;
} else {
throw Exception("curl", 0, "failed to set option '%s': value must be a hash", key.cstr());
}
res=f_curl_easy_setopt(curl(), CURLOPT_HTTPPOST, foptions->f_post);
break;
}
case CurlOption::CURL_HEADERS:{
// http headers curl option
HashStringValue *value_hash=v.get_hash();
res=f_curl_easy_setopt(curl(), opt->id, value_hash ? curl_headers(value_hash, r) : 0);
break;
}
case CurlOption::CURL_FILE:{
// file-spec curl option
const char *file_spec_cstr=curl_check_file(r.absolute(v.as_string()));
res=f_curl_easy_setopt(curl(), opt->id, file_spec_cstr);
break;
}
case CurlOption::CURL_STDERR:{
// verbose output redirection from stderr to file curl option
const char *file_spec_cstr=curl_check_file(r.absolute(v.as_string()));
FILE *f_stderr=options().f_stderr=fopen(file_spec_cstr, "wt");
if (f_stderr){
res=f_curl_easy_setopt(curl(), opt->id, f_stderr);
} else {
throw Exception("curl", 0, "failed to set option '%s': unable to open file '%s'", key.cstr(), file_spec_cstr);
}
break;
}
case CurlOption::PARSER_LIBRARY:{
// 'library' parser option
if(fcurl==0){
curl_library=v.as_string().taint_cstr(String::L_FILE_SPEC);
} else
throw Exception("curl", 0, "failed to set option '%s': already loaded", key.cstr());
break;
}
case CurlOption::PARSER_NAME:{
// 'name' parser option
options().filename=&v.as_string();
break;
}
case CurlOption::PARSER_CONTENT_TYPE:{
// 'content-type' parser option
options().content_type=&v.as_string();
break;
}
case CurlOption::PARSER_MODE:{
// 'mode' parser option
options().is_text=VFile::is_text_mode(v.as_string());
break;
}
case CurlOption::PARSER_CHARSET:{
// 'charset' parser option
options().charset=&::charsets.get(v.as_string().change_case(r.charsets.source(), String::CC_UPPER));
break;
}
case CurlOption::PARSER_RESPONSE_CHARSET:{
// 'response-charset' parser option
options().response_charset=&::charsets.get(v.as_string().change_case(r.charsets.source(), String::CC_UPPER));
break;
}
}
if(res != CURLE_OK)
throw Exception("curl", 0, "failed to set option '%s': %s", key.cstr(), f_curl_easy_strerror(res));
}
static void _curl_options(Request& r, MethodParams& params){
if(curl_options==0)
curl_options=new CurlOptionHash();
if(HashStringValue* options=params.as_hash(0))
options->for_each(curl_setopt, r);
}
class Curl_buffer{
public:
char *buf;
size_t length;
size_t buf_size;
Curl_buffer() : buf((char *)pa_malloc(MAX_STRING+1)), length(0), buf_size(MAX_STRING){}
};
static int curl_writer(char *data, size_t size, size_t nmemb, Curl_buffer *result){
if(result == 0)
return 0;
size=size*nmemb;
if(size>0){
if(result->length + size >= result->buf_size){
result->buf_size = result->buf_size*2 + size;
result->buf = (char *)pa_realloc(result->buf, result->buf_size+1);
}
memcpy(result->buf+result->length, data, size);
result->length += size;
}
return size;
}
class Curl_response {
public:
HASH_STRING headers;
Array