Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

This commit was manufactured by cvs2svn to create tag 'RETURN_REF_BP'.

  • Loading branch information...
commit df7b4bc6c287b9d0425688bc2542e1001867bfed 1 parent f30278b
SVN Migration authored
Showing with 0 additions and 47,168 deletions.
  1. +0 −149 CODING_STANDARDS
  2. +0 −3  CREDITS
  3. +0 −11,008 ChangeLog
  4. +0 −538 FUNCTION_LIST.txt
  5. +0 −184 INSTALL
  6. +0 −70 LICENSE
  7. +0 −101 MAINTAINERS
  8. +0 −21 MODULES_STATUS
  9. +0 −41 Makefile.am
  10. +0 −356 NEWS
  11. +0 −17 README-BCMATH
  12. +0 −102 README.CVS-RULES
  13. +0 −57 README.QNX
  14. +0 −36 TODO
  15. +0 −75 TODO-LeftOver
  16. +0 −4 TSRM/Makefile.am
  17. +0 −453 TSRM/TSRM.c
  18. +0 −100 TSRM/TSRM.dsp
  19. +0 −110 TSRM/TSRM.h
  20. +0 −1  TSRM/acconfig.h
  21. +0 −5 TSRM/acinclude.m4
  22. +0 −43 TSRM/build.mk
  23. +0 −33 TSRM/buildconf
  24. +0 −33 TSRM/configure.in
  25. +0 −186 Zend/FlexLexer.h
  26. +0 −116 Zend/LICENSE
  27. +0 −39 Zend/Makefile.am
  28. +0 −111 Zend/ZEND_CHANGES
  29. +0 −258 Zend/ZendCore.dep
  30. +0 −89 Zend/acconfig.h
  31. +0 −25 Zend/acinclude.m4
  32. +0 −43 Zend/build.mk
  33. +0 −33 Zend/buildconf
  34. +0 −210 Zend/configure.in
  35. +0 −1,541 Zend/flex.skl
  36. +0 −373 Zend/libzend.dsp
  37. +0 −379 Zend/libzendts.dsp
  38. +0 −680 Zend/zend-parser.y
  39. +0 −58 Zend/zend-scanner.h
  40. +0 −1,611 Zend/zend-scanner.l
  41. +0 −444 Zend/zend.c
  42. +0 −301 Zend/zend.h
  43. BIN  Zend/zend.ico
  44. +0 −857 Zend/zend_API.c
  45. +0 −292 Zend/zend_API.h
  46. +0 −557 Zend/zend_alloc.c
  47. +0 −130 Zend/zend_alloc.h
  48. +0 −465 Zend/zend_builtin_functions.c
  49. +0 −26 Zend/zend_builtin_functions.h
  50. +0 −2,173 Zend/zend_compile.c
  51. +0 −612 Zend/zend_compile.h
  52. +0 −67 Zend/zend_config.w32.h
  53. +0 −268 Zend/zend_constants.c
  54. +0 −64 Zend/zend_constants.h
  55. +0 −37 Zend/zend_errors.h
  56. +0 −2,128 Zend/zend_execute.c
  57. +0 −78 Zend/zend_execute.h
  58. +0 −553 Zend/zend_execute_API.c
  59. +0 −157 Zend/zend_extensions.c
  60. +0 −96 Zend/zend_extensions.h
  61. +0 −186 Zend/zend_globals.h
  62. +0 −88 Zend/zend_globals_macros.h
  63. +0 −1,224 Zend/zend_hash.c
  64. +0 −175 Zend/zend_hash.h
  65. +0 −168 Zend/zend_highlight.c
  66. +0 −49 Zend/zend_highlight.h
  67. +0 −152 Zend/zend_indent.c
  68. +0 −26 Zend/zend_indent.h
  69. +0 −295 Zend/zend_list.c
  70. +0 −87 Zend/zend_list.h
  71. +0 −217 Zend/zend_llist.c
  72. +0 −61 Zend/zend_llist.h
  73. +0 −64 Zend/zend_modules.h
  74. +0 −414 Zend/zend_opcode.c
  75. +0 −1,395 Zend/zend_operators.c
  76. +0 −131 Zend/zend_operators.h
  77. +0 −114 Zend/zend_ptr_stack.c
  78. +0 −42 Zend/zend_ptr_stack.h
  79. +0 −40 Zend/zend_sprintf.c
  80. +0 −164 Zend/zend_stack.c
  81. +0 −47 Zend/zend_stack.h
  82. +0 −192 Zend/zend_variables.c
  83. +0 −61 Zend/zend_variables.h
  84. +0 −126 acconfig.h.in
  85. +0 −362 acinclude.m4
  86. +0 −276 apidoc-zend.txt
  87. +0 −492 apidoc.txt
  88. +0 −90 build-defs.h.in
  89. +0 −93 build.mk
  90. +0 −69 buildcheck.sh
  91. +0 −29 buildconf
  92. +0 −244 calendar.mak
  93. +0 −1,087 config.guess
  94. +0 −1,215 config.sub
  95. +0 −842 configure.in
  96. +0 −204 crypt.mak
  97. +0 −234 dbase.mak
  98. +0 −201 dbm.mak
  99. +0 −421 dlist.c
  100. +0 −137 dlist.h
  101. +0 −4 ext/Makefile.am
  102. +0 −5 ext/apache/Makefile.am
  103. +0 −449 ext/apache/apache.c
  104. +0 −2  ext/apache/config.m4
  105. +0 −5 ext/aspell/Makefile.am
  106. +0 −204 ext/aspell/aspell.c
  107. +0 −4 ext/aspell/config.h.stub
  108. +0 −28 ext/aspell/config.m4
  109. +0 −54 ext/aspell/php_aspell.h
  110. +0 −4 ext/bcmath/Makefile.am
  111. +0 −434 ext/bcmath/bcmath.c
  112. +0 −2  ext/bcmath/config.h.stub
  113. +0 −20 ext/bcmath/config.m4
  114. +0 −64 ext/bcmath/php_bcmath.h
  115. +0 −6 ext/bcmath/setup.stub
  116. +0 −24 ext/com/php_COM.h
  117. +0 −5 ext/cpdf/Makefile.am
  118. +0 −2  ext/cpdf/config.h.stub
  119. +0 −72 ext/cpdf/config.m4
  120. +0 −2,563 ext/cpdf/cpdf.c
  121. +0 −122 ext/cpdf/php_cpdf.h
  122. +0 −2  ext/cybercash/Makefile.am
  123. +0 −1  ext/cybercash/config.h.stub
  124. +0 −26 ext/cybercash/config.m4
  125. +0 −198 ext/cybercash/cybercash.c
  126. +0 −56 ext/cybercash/cybercash.h
  127. +0 −214 ext/cybercash/cyberlib.php
  128. +0 −26 ext/cybercash/test.php
  129. +0 −5 ext/dav/Makefile.am
  130. +0 −2  ext/dav/config.h.stub
  131. +0 −29 ext/dav/config.m4
  132. +0 −289 ext/dav/dav.c
  133. +0 −66 ext/dav/php_dav.h
  134. +0 −2  ext/dav/setup.stub
  135. +0 −5 ext/db/Makefile.am
  136. +0 −5 ext/db/config.h.stub
  137. +0 −55 ext/db/config.m4
  138. +0 −1,162 ext/db/db.c
  139. +0 −95 ext/db/php_db.h
  140. +0 −6 ext/dba/Makefile.am
  141. +0 −19 ext/dba/config.h.stub
  142. +0 −238 ext/dba/config.m4
  143. +0 −483 ext/dba/dba.c
Sorry, we could not display the entire diff because too many files (811) changed.
View
149 CODING_STANDARDS
@@ -1,149 +0,0 @@
-PHP Coding Standards
-====================
-
-
-This file lists several standards that any programmer, adding or changing
-code in PHP, should follow. Since this file was added at a very late
-stage of the development of PHP v3.0, the code base does not (yet) fully
-follow it, but it's going in that general direction.
-This is an initial version - it'll most probably grow as time passes.
-
-
-Code Implementation
--------------------
-
-[1] Functions that are given pointers to resources should not free them
-
-For instance, function int mail(char *to, char *from) should NOT free
-to and/or from.
-Exceptions:
-
- - The function's designated behavior is freeing that resource. E.g. efree()
- - The function is given a boolean argument, that controls whether or not
- the function may free its arguments (if true - the function must free its
- arguments, if false - it must not)
- - Low-level parser routines, that are tightly integrated with the token
- cache and the bison code for minimum memory copying overhead.
-
-[2] Functions that are tightly integrated with other functions within the
- same module, and rely on each other non-trivial behavior, should be
- documented as such and declared 'static'. They should be avoided if
- possible.
-
-[3] Use definitions and macros whenever possible, so that constants have
- meaningful names and can be easily manipulated. The only exceptions
- to this rule are 0 and 1, when used as false and true (respectively).
- Any other use of a numeric constant to specify different behavior
- or actions should be done through a #define.
-
-[4] When writing functions that deal with strings, be sure to remember
- that PHP holds the length property of each string, and that it
- shouldn't be calculated with strlen(). Write your functions in a such
- a way so that they'll take advantage of the length property, both
- for efficiency and in order for them to be binary-safe.
- Functions that change strings and obtain their new lengths while
- doing so, should return that new length, so it doesn't have to be
- recalculated with strlen() (e.g. _php3_addslashes())
-
-[5] Use php3_error() to report any errors/warnings during code execution.
- Use descriptive error messages, and try to avoid using identical
- error strings for different stages of an error. For example,
- if in order to obtain a URL you have to parse the URL, connect,
- and retreive the text, assuming something can go wrong at each
- of these stages, don't report an error "Unable to get URL"
- on all of them, but instead, write something like "Unable
- to parse URL", "Unable to connect to URL server" and "Unable
- to fetch URL text", respectively.
-
-[6] NEVER USE strncat(). If you're absolutely sure you know what you're doing,
- check its man page again, and only then, consider using it, and even then,
- try avoiding it.
-
-
-Naming Conventions
-------------------
-
-[1] Function names for user functions implementation should be prefixed with
- "php3_", and followed by a word or an underscore-delimited list of words,
- in lowercase letters, that describes the function.
-
-[2] Function names used by user functions implementations should be prefixed
- with "_php3_", and followed by a word or an underscore-delimited list of
- words, in lowercase letters, that describes the function. If applicable,
- they should be declared 'static'.
-
-[3] Variable names must be meaningful. One letter variable names must be
- avoided, except for places where the variable has no real meaning or
- a trivial meaning (e.g. for (i=0; i<100; i++) ...).
-
-[4] Variable names should be in lowercase; Use underscores to seperate
- between words.
-
-
-
-Syntax and indentation
-----------------------
-
-[1] Never use C++ style comments (i.e. // comment). Always use C-style
- comments instead. PHP is written in C, and is aimed at compiling
- under any ANSI-C compliant compiler. Even though many compilers
- accept C++-style comments in C code, you have to ensure that your
- code would compile with other compilers as well.
- The only exception to this rule is code that is Win32-specific,
- because the Win32 port is MS-Visual C++ specific, and this compiler
- is known to accept C++-style comments in C code.
-
-[2] Use K&R-style. Of course, we can't and don't want to
- force anybody to use a style she's not used to, but
- at the very least, when you write code that goes into the core
- of PHP or one of its standard modules, please maintain the K&R
- style. This applies to just about everything, starting with
- indentation and comment styles and up to function decleration
- syntax.
-
-[3] Be generous with whitespace and braces. Always prefer
- if (foo) {
- bar;
- }
- to
- if(foo)bar;
-
- Keep one empty line between the variable decleration section and
- the statements in a block, as well as between logical statement
- groups in a block. Maintain at least one empty line between
- two functions, preferably two.
-
-Documentation and Folding Hooks
--------------------------------
-
-In order to make sure that the online documentation stays in line with
-the code, each user-level function should have its user-level function
-prototype before it along with a brief one-line description of what the
-function does. It would look like this:
-
-/* {{{ proto int abs(int number)
- Return the absolute value of the number */
-void php3_abs(INTERNAL_FUNCTION_PARAMETERS) {
- ...
-}
-/* }}} */
-
-The {{{ symbols are the default folding symbols for the folding mode in
-Emacs. vim will soon have support for folding as well. Folding is very
-useful when dealing with large files because you can scroll through the
-file quickly and just unfold the function you wish to work on. The }}}
-at the end of each function marks the end of the fold, and should be on
-a separate line.
-
-The "proto" keyword there is just a helper for the doc/genfuncsummary script
-which generates a full function summary. Having this keyword in front of the
-function prototypes allows us to put folds elsewhere in the code without
-messing up the function summary.
-
-Optional arguments are written like this:
-
-/* {{{ proto object imap_header(int stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])
-
-And yes, please keep everything on a single line, even if that line is massive.
-
-
View
3  CREDITS
@@ -1,3 +0,0 @@
-For the list of people who've put work into PHP 4.0, please see
-http://www.php.net/version4/credits.php
-
View
11,008 ChangeLog
0 additions, 11,008 deletions not shown
View
538 FUNCTION_LIST.txt
@@ -1,538 +0,0 @@
-Functions:
-
-Functions marked with 'u' do not work, or may not work correctly under windows.
-
-basic_functions
- include
- _include
- isset
-
- intval
- doubleval
- strval
- short_tags
- sleep
-u usleep
- ksort
- asort
- sort
- count
- chr
- ord
- flush
- end
- prev
- next
- reset
- current
- key
- gettype
- settype
- min
- max
-
- addslashes
- chop
- pos
-
- fsockopen
- getimagesize
- htmlspecialchars
- md5
-
- parse_url
-
- parse_str
- phpinfo
- phpversion
- strlen
- strtok
- strtoupper
- strtolower
- strchr
- basename
- dirname
- stripslashes
- strstr
- strrchr
- substr
- quotemeta
- urlencode
- urldecode
- ucfirst
- strtr
- sprintf
- printf
-
- exec
- system
- escapeshellcmd
- passthru
-
- soundex
-
- rand
- srand
- getrandmax
- gethostbyaddr
- gethostbyname
- explode
- implode
- error_reporting
- clearstatcache
-
- get_current_user
- getmyuid
- getmypid
-u getmyinode
- getlastmod
-
- base64_decode
- base64_encode
-
- abs
- ceil
- floor
- sin
- cos
- tan
- asin
- acos
- atan
- pi
- pow
- exp
- log
- log10
- sqrt
- bindec
- hexdec
- octdec
- decbin
- decoct
- dechex
-
- getenv
- putenv
-
- time
- mktime
- date
- gmdate
- getdate
- checkdate
- microtime
- uniqid
-
-u linkinfo
-u readlink
-u symlink
-u link
-u unlink
-
-
-bcmath_functions
- bcadd
- bcsub
- bcmul
- bcdiv
- bcmod
- bcpow
- bcsqrt
- bcscale
- bccomp
-
-dir_functions
- opendir
- closedir
- chdir
- rewinddir
- readdir
- dir
-
-dl_functions
- dl(string module_name); dynamicly load a module
-
-dns_functions
- gethostbyaddr
- gethostbyname
-
-file_functions
- pclose
- popen
- readfile
- rewind
- rmdir
- umask
- fclose
- feof
- fgets
- fgetss
- fopen
- fpassthru
- fseek
- ftell
- fputs
- mkdir
- rename
- copy
- tempnam
- file
-
-filestat_functions
- fileatime
- filectime
-u filegroup
-u fileinode
- filemtime
-u fileowner
- fileperms
- filesize
- filetype
- stat
-u chown
-u chgrp
-u chmod
- touch
- file_exists
- is_executable
- is_dir
- is_readable
- is_writeable
-u is_link
-
-header_functions
- setcookie
- header
-
-mail_functions
- mail
-
-reg_functions
- ereg
- ereg_replace
- eregi
- eregi_replace
- split
- sql_regcase
-
-syslog_functions (writes to event log on win NT)
- openlog
- syslog
- closelog
-
-The following are optional modules and may or may not be compiled into php, or may be compiled as a loadable module.
-
-odbc_functions (obsolete, use uodbc below)
- sqlconnect
- sqldisconnect
- sqlfetch
- sqlexecdirect
- sqlgetdata
- sqlfree
- sqlrowcount
-
-uodbc_functions
- (int) odbc_autocommit($connection_id, $OnOff)
- (void) odbc_close($connection_id)
- (void) odbc_close_all(void)
- (int) odbc_commit($connection_id)
- (int) odbc_connect($dsn, $user, $password)
- (int) odbc_pconnect($dsn, $user, $password)
- (string) odbc_cursor($result_id)
- (int) odbc_do($connection_id, $query_string)
- (int) odbc_exec($connection_id, $query_string)
- (int) odbc_prepare($connection_id, $query_string)
- (int) odbc_execute($result_id, $array)
- (int) odbc_fetch_row($result_id, $row_number)
- (int) odbc_fetch_into($result_id, $row_number, $array_ptr)
- (int) odbc_field_len($result_id, $field_number)
- (string) odbc_field_name($result_id, $field_number)
- (string) odbc_field_type($result_id, $field)
- (int) odbc_free_result($result_id)
- (int) odbc_num_fields($result_id)
- (int) odbc_num_rows($result_id)
- (string) odbc_result($result_id, $field)
- (int) odbc_result_all($result_id, $format)
- (int) odbc_rollback($connection_id)
-
-msql_functions
- msql_connect
- msql_pconnect
- msql_close
- msql_select_db
- msql_create_db
- msql_drop_db
- msql_query
- msql
- msql_list_dbs
- msql_list_tables
- msql_list_fields
- msql_result
- msql_num_rows
- msql_num_fields
- msql_fetch_row
- msql_fetch_array
- msql_fetch_object
- msql_data_seek
- msql_fetch_field
- msql_field_seek
- msql_free_result
- msql_fieldname
- msql_fieldtable
- msql_fieldlen
- msql_fieldtype
- msql_fieldflags
- msql_regcase
- /* for downwards compatability */
- msql_selectdb
- msql_createdb
- msql_dropdb
- msql_freeresult
- msql_numfields
- msql_numrows
- msql_listdbs
- msql_listtables
- msql_listfields
- msql_dbname
- msql_tablename
-
-ldap_functions
- ldap_connect
- ldap_bind
- ldap_unbind
- ldap_read
- ldap_list
- ldap_search
- ldap_free_result
- ldap_count_entries
- ldap_first_entry
- ldap_next_entry
- ldap_get_entries
- ldap_free_entry
- ldap_first_attribute
- ldap_next_attribute
- ldap_get_attributes
- ldap_get_values
- ldap_get_dn
- ldap_dn2ufn
- ldap_add
- ldap_delete
- ldap_modify
-
-gd_functions
- imagearc
- imagechar
- imagecharup
- imagecolorallocate
- imagecolorclosest
- imagecolorexact
- imagecolortransparent
- imagecopyresized
- imagecreate
- imagecreatefromgif
- imagedestroy
- imagefill
- imagefilledpolygon
- imagefilledrectangle
- imagefilltoborder
- imagegif
- imageinterlace
- imageline
- imagepolygon
- imagerectangle
- imagesetpixel
- imagestring
- imagestringup
- imagesx
- imagesy
-
-filepro_functions
- filepro
- filepro_rowcount
- filepro_fieldname
- filepro_fieldtype
- filepro_fieldwidth
- filepro_fieldcount
- filepro_retrieve
-
-dbm_functions
- dblist
- dbmopen
- dbmclose
- dbminsert
- dbmfetch
- dbmreplace
- dbmexists
- dbmdelete
- dbmfirstkey
- dbmnextkey
-
-dbase_functions
- dbase_open
- dbase_create
- dbase_close
- dbase_numrecords
- dbase_numfields
- dbase_add_record
- dbase_get_record
- dbase_delete_record
- dbase_pack
-
-calendar_functions
- jdtogregorian
- gregoriantojd
- jdtojulian
- juliantojd
- jdtojewish
- jewishtojd
- jdtofrench
- frenchtojd
- jddayofweek
- jdmonthname
-
-adabas_functions
-(int) ada_afetch($result_id, $rownumber, $result array)
-(int) ada_autocommit($connection_id, $OnOff)
-(void) ada_close($connection_id)
- ada_closeall
-(int) ada_commit($connection_id)
-(int) ada_connect($dsn, $user, $password)
-(int) ada_exec($connection_id, $query_string)
-(int) ada_fetchrow($result_id, $row?number)
- ada_fieldlen
-(string) ada_fieldname($result_id, $field_number)
-(string) ada_fieldtype($result_id, $field)
-(int) ada_freeresult($result_id)
-(int) ada_numfields($result_id)
-(int) ada_numrows($result_id)
-(string) ada_result($result_id, $field)
-(int) ada_resultall($result_id, $format)
-(int) ada_rollback($connection_id)
-***(int) ada_fieldnum($result_id, $field_name) (this function is not in adabase.c
-
-crypt_functions
- crypt
-
-mysql_functions
- mysql_connect
- mysql_pconnect
- mysql_close
- mysql_select_db
- mysql_create_db
- mysql_drop_db
- mysql_query
- mysql
- mysql_list_dbs
- mysql_list_tables
- mysql_list_fields
- mysql_affected_rows
- mysql_insert_id
- mysql_result
- mysql_num_rows
- mysql_num_fields
- mysql_fetch_row
- mysql_fetch_array
- mysql_fetch_object
- mysql_data_seek
- mysql_fetch_lengths
- mysql_fetch_field
- mysql_field_seek
- mysql_free_result
- mysql_fieldname
- mysql_fieldtable
- mysql_fieldlen
- mysql_fieldtype
- mysql_fieldflags
- /* for downwards compatability */
- mysql_selectdb
- mysql_createdb
- mysql_dropdb
- mysql_freeresult
- mysql_numfields
- mysql_numrows
- mysql_listdbs
- mysql_listtables
- mysql_listfields
- mysql_dbname
- mysql_tablename
-
-oracle_functions
- ora_close
- ora_commit
- ora_commitoff
- ora_commiton
- ora_error
- ora_errorcode
- ora_exec
- ora_fetch
- ora_getcolumn
- ora_logoff
- ora_logon
- ora_open
- ora_parse
- ora_rollback
-
-pgsql_functions
- pg_connect
- pg_pconnect
- pg_close
- pg_dbname
- pg_errormessage
- pg_options
- pg_port
- pg_tty
- pg_host
- pg_exec
- pg_numrows
- pg_numfields
- pg_fieldname
- pg_fieldsize
- pg_fieldtype
- pg_fieldnum
- pg_result
- pg_fieldprtlen
- pg_getlastoid
- pg_freeresult
- pg_locreate
- pg_lounlink
- pg_loopen
- pg_loclose
- pg_loread
- pg_lowrite
- pg_loreadall
-
-sybase_functions
- sybase_connect
- sybase_pconnect
- sybase_close
- sybase_select_db
- sybase_query
- sybase_free_result
- sybase_get_last_message
- sybase_num_rows
- sybase_num_fields
- sybase_fetch_row
- sybase_fetch_array
- sybase_fetch_object
- sybase_data_seek
- sybase_fetch_field
- sybase_field_seek
- sybase_result
-
-sybase_old_functions
- sybsql_seek
- sybsql_exit
- sybsql_dbuse
- sybsql_query
- sybsql_isrow
- sybsql_result
- sybsql_connect
- sybsql_nextrow
- sybsql_numrows
- sybsql_getfield
- sybsql_numfields
- sybsql_fieldname
- sybsql_result_all
- sybsql_checkconnect
-
View
184 INSTALL
@@ -1,184 +0,0 @@
-Installation Instructions for PHP 4.0
--------------------------------------
-
-Note! As of 4.0b3, PHP will require GNU make.
-
-For the impatient here is a quick set of steps that will build PHP as
-an Apache module for Apache 1.3.x with MySQL support. A more verbose
-explanation follows.
-
-
-QUICK INSTALL
-
-$ gunzip -c apache_1.3.x.tar.gz | tar xf -
-$ cd apache_1.3.x
-$ ./configure
-$ cd ..
-
-$ gunzip -c php-4.0.x.tar.gz | tar xf -
-$ cd php-4.0.x
-$ ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
-$ make
-$ make install
-
-$ cd ../apache_1.3.x
-$ ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a
- (The above line is correct! Yes, we know libphp4.a does not exist at this
- stage. It isn't supposed to. It will be created.)
-make
- (you should now have an httpd binary which you can copy to your Apache bin dir)
-cd ../php-4.0.x
-cp php.ini-dist /usr/local/lib/php.ini
-You can edit /usr/local/lib/php.ini file to set PHP options.
-Edit your httpd.conf or srm.conf file and add:
- AddType application/x-httpd-php .php
-
-
-VERBOSE INSTALL
-
-Installing PHP can be done in four simple steps:
-
-1. Unpack your distribution file.
-
- You will have downloaded a file named something like php4xn.tar.gz.
- Unzip this file with a command like: gunzip php4xn.tar.gz
-
- Next you have to untar it with: tar -xvf php4xn.tar
-
- This will create a php-4.0.x directory. cd into this new directory.
-
-2. Configure PHP.
-
- You now have to choose the options you would like. There are quite
- a few of them. To see a list, type: ./configure --help
-
- The only options that you are likely to want to use are the ones in
- the last section entitled, "--enable and --with options recognized:"
-
- A popular choice is to build the Apache module version. You need
- to know where the source code directory for your Apache server is
- located. Then use an option like: --with-apache=/usr/local/src/apache
- if that is your Apache source code directory. If you only specify
- --with-apache, then it will default to look for your Apache source
- in /usr/local/etc/httpd.
-
- NOTE: The directory you specify should be the top-level of the
- unpacked Apache (or Stronghold) distribution. The configure program
- will automatically look for httpd.h in different directories under that
- location depending on which version of Apache, including Stronghold,
- you are running.
-
- For MySQL support, since newer versions of MySQL installs its various
- components under /usr/local, this is the default. If you have
- changed the location you can specify it with: --with-mysql=/opt/local
- for example. Otherwise just use: --with-mysql
-
- *NOTE* If you are using Apache 1.3b6 or later, you should run the
- Apache Configure script at least once before compiling PHP. It
- doesn't matter how you have Apache configured at this point.
-
-3. Compile and install the files. Simply type: make install
-
- For the Apache module version this will copy the appropriate files
- to the src/modules/php4 directory in your Apache distribution if
- you are using Apache 1.3.x. If you are still running Apache 1.2.x
- these files will be copied directly to the main src directory.
-
- For Apache 1.3b6 and later, you can use the new APACI configuration
- mechanism. To automatically build Apache with PHP support, use:
-
- cd apache_1.3.x
- ./configure --prefix=/<path>/apache \
- --activate-module=src/modules/php4/libphp4.a
- make
- make install
-
- If you do not wish to use this new configuration tool, the old
- install procedure (src/Configure) will work fine.
-
- If you are using the old Apache ./Configure script, you will have to
- edit the Apache src/Configuration file manually. If you do not have
- this file, copy Configuration.tmpl to Configuration.
-
- For Apache 1.3.x add:
-
- AddModule modules/php4/libphp4.a
-
- For Apache 1.3.x don't do anything else. Just add this line and then
- run "./Configure" followed by "make".
-
- For Apache 1.2.x add:
-
- Module php4_module mod_php4.o
-
- For Apache 1.2.x you will also have to look in the libphp4.module file,
- which was copied to the src directory. The EXTRA_LIBS line in the Apache
- Configuration file needs to be set to use the same libs as specified on
- the LIBS line in libphp4.module. You also need to make sure to add
- "-L." to the beginning of the EXTRA_LIBS line.
-
- So, as an example, your EXTRA_LIBS line might look like:
-
- EXTRA_LIBS=-L. -lphp4 -lgdbm -ldb -L/usr/local/mysql/lib -lmysqlclient
-
- NOTE: You should not enclose the EXTRA_LIBS line in double-quotes, as it
- is in the libphp4.module file.
-
- Also, look at the RULE_WANTHSREGEX setting in the libphp4.module file
- and set the WANTHSREGEX directive accordingly in your Configuration file.
- This last step applies to versions of Apache prior to 1.3b3.
-
- This is a bit of a hassle, but should serve as incentive to move to
- Apache 1.3.x where this step has been eliminated.
-
- Once you are satisfied with your Configuration settings, type: ./Configure
- If you get errors, chances are that you forgot a library or made a typo
- somewhere. Re-edit Configuration and try again. If it goes well,
- type: make
-
-4. Setting up the server.
-
- You should now have a new httpd binary. Shut down your existing server,
- if you have one, and copy this new binary overtop of it. Perhaps make
- a backup of your previous one first. Then edit your conf/srm.conf file
- and add the line:
-
- AddType application/x-httpd-php .php
-
- There is also an interesting feature which can be quite instructive and
- helpful while debugging. That is the option of having colour syntax
- highlighting. To enable this, add the following line:
-
- AddType application/x-httpd-php-source .phps
-
- Any file ending in .phps will now be displayed with full colour syntax
- highlighting instead of being executed.
-
- When you are finished making changes to your srm.conf file, you can
- start up your server.
-
-USING PHP3 AND PHP4 AS CONCURRENT APACHE MODULES
-
- Recent operating systems provide the ability to perform versioning and
- scoping. This features make it possible to let PHP3 and PHP4 run as
- concurrent modules in one Apache server.
-
- This feature is known to work on the following platforms:
-
- - Linux with recent binutils (binutils 2.9.1.0.25 tested)
- - Solaris 2.5 or better
- - FreeBSD (3.2, 4.0 tested)
-
- To enable it, configure PHP3 and PHP4 to use APXS (--with-apxs) and the
- necessary link extensions (--enable-versioning). Otherwise, all standard
- installations instructions apply. For example:
-
- $ ./configure \
- --with-apxs=/apache/bin/apxs \
- --enable-versioning \
- --with-mysql \
- --enable-track-vars
-
- If this also works on your platform or if you know a way to do it, please
- report it to our bug database at http://bugs.php.net
-
View
70 LICENSE
@@ -1,70 +0,0 @@
---------------------------------------------------------------------
- The PHP License, version 2.01
-Copyright (c) 1999 The PHP Group. All rights reserved.
---------------------------------------------------------------------
-
-Redistribution and use in source and binary forms, with or without
-modification, is permitted provided that the following conditions
-are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-
- 3. The name "PHP" must not be used to endorse or promote products
- derived from this software without prior permission from the
- PHP Group. This does not apply to add-on libraries or tools
- that work in conjunction with PHP. In such a case the PHP
- name may be used to indicate that the product supports PHP.
-
- 4. The PHP Group may publish revised and/or new versions of the
- license from time to time. Each version will be given a
- distinguishing version number.
- Once covered code has been published under a particular version
- of the license, you may always continue to use it under the
- terms of that version. You may also choose to use such covered
- code under the terms of any subsequent version of the license
- published by the PHP Group. No one other than the PHP Group has
- the right to modify the terms applicable to covered code created
- under this License.
-
- 5. Redistributions of any form whatsoever must retain the following
- acknowledgment:
- "This product includes PHP, freely available from
- http://www.php.net/".
-
- 6. Permission to freely distribute and use Zend as an integrated
- part of PHP is granted, under the conditions of version 0.91
- of the Zend License.
- The license is bundled with the Zend engine, and is available
- at http://www.zend.com/license/0_91.txt, or by contacting
- license@zend.com.
-
-
-
-THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
-ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
-DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------
-
-This software consists of voluntary contributions made by many
-individuals on behalf of the PHP Group.
-
-The PHP Group can be contacted via Email at group@php.net.
-
-For more information on the PHP Group and the PHP project,
-please see <http://www.php.net>.
View
101 MAINTAINERS
@@ -1,101 +0,0 @@
- List of PHP maintainers
- =======================
-
-Status legend
--------------
- Supported: Someone is actually paid to look after this.
- Maintained: Someone actually looks after it.
- Odd Fixes: It has a maintainer but they don't have time to do
- much other than throw the odd patch in. See below..
- Orphan: No current maintainer [but maybe you could take the
- role as you write your new code].
- Obsolete: Old code. Something tagged obsolete generally means
- it has been replaced by a better system and you
- should be using that.
-
---------------------------------------------------------------------------------
-EXTENSION: apache
-PRIMARY MAINTAINER: Rasmus Lerdorf <rasmus@php.net>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: cybercash
-PRIMARY MAINTAINER: Evan Klinger <evan715@sirius.com>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: dba
-PRIMARY MAINTAINER: Sascha Schumann <sascha@schumann.cx>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: fdf
-PRIMARY MAINTAINER: Uwe Steinmann <steinm@php.net>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: gd
-PRIMARY MAINTAINER: Rasmus Lerdorf <rasmus@php.net>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: hyperwave
-PRIMARY MAINTAINER: Uwe Steinmann <steinm@php.net>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: informix
-PRIMARY MAINTAINER: Danny Heijl <Danny.Heijl@cevi.be>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: java
-PRIMARY MAINTAINER: Sam Ruby <rubys@us.ibm.com>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: ldap
-PRIMARY MAINTAINER: Rasmus Lerdorf <rasmus@php.net>
-STATUS: Odd Fixes
---------------------------------------------------------------------------------
-EXTENSION: mcrypt
-PRIMARY MAINTAINER: Sascha Schumann <sascha@schumann.cx>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: mhash
-PRIMARY MAINTAINER: Sascha Schumann <sascha@schumann.cx>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: mssql
-PRIMARY MAINTAINER: Frank M. Kromann <fmk@swwwing.com>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: oci8
-PRIMARY MAINTAINER: Thies C. Arntzen <thies@digicol.de>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: oracle
-PRIMARY MAINTAINER: Thies C. Arntzen <thies@digicol.de>
-STATUS: Maintained
-COMMENT: Using the new OCI8 driver is encouraged where possible.
---------------------------------------------------------------------------------
-EXTENSION: pcre
-PRIMARY MAINTAINER: Andrei Zmievski <andrei@ispi.net>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: pdf
-PRIMARY MAINTAINER: Uwe Steinmann <steinm@php.net>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: session
-PRIMARY MAINTAINER: Sascha Schumann <sascha@schumann.cx>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: snmp
-PRIMARY MAINTAINER: Rasmus Lerdorf <rasmus@php.net>
-STATUS: Odd Fixes
---------------------------------------------------------------------------------
-EXTENSION: wddx
-PRIMARY MAINTAINER: Andrei Zmievski <andrei@ispi.net>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: xml
-PRIMARY MAINTAINER: Thies C. Arntzen <thies@digicol.de>
-STATUS: Maintained
---------------------------------------------------------------------------------
-EXTENSION: zlib
-PRIMARY MAINTAINER: Stefan Roehrich <sr@linux.de>
-STATUS: Maintained
---------------------------------------------------------------------------------
View
21 MODULES_STATUS
@@ -1,21 +0,0 @@
-Module Status
------- ------
-MySQL Working
-COM Working
-WDDX Working
-PCRE Working
-DBA Working
-mcrypt Working
-mhash Working
-dbase Working
-aspell Working
-imap Working
-ldap Working
-oci8 Working (but no blob-support yet)
-oracle Working
-iptc Working
-informix Working
-zlib Working
-sysvshm Working
-odbc Working (except for persistent connections)
-MS SQL Working (tested on phpts and isapi versions)
View
41 Makefile.am
@@ -1,41 +0,0 @@
-AUTOMAKE_OPTIONS = foreign
-
-ZEND_DIR = $(srcdir)/libzend
-SUBDIRS = libzend ext sapi $(TSRM_DIR) $(REGEX_DIR) . pear
-
-BUILDLDFLAGS = $(EXTRA_LDFLAGS) $(LDFLAGS)
-
-phptemp_LTLIBRARIES = libphp4.la
-libphp4_la_SOURCES = \
- main.c internal_functions.c snprintf.c php3_sprintf.c \
- configuration-parser.y configuration-scanner.l request_info.c \
- safe_mode.c fopen-wrappers.c php3_realpath.c alloca.c \
- php_ini.c SAPI.c rfc1867.c dlist.c php_content_types.c strlcpy.c \
- strlcat.c mergesort.c reentrancy.c
-
-libphp4_la_DEPENDENCIES = \
- libzend/libzend.la \
- sapi/$(PHP_SAPI)/libphpsapi_$(PHP_SAPI).la \
- $(REGEX_LIB) \
- $(EXT_LTLIBS) \
- $(TSRM_LIB)
-
-libphp4_la_LIBADD = $(libphp4_la_DEPENDENCIES) $(EXTRA_LIBS)
-
-libphp4_la_LDFLAGS = $(BUILDLDFLAGS) $(PHP_RPATHS)
-
-configuration-parser.h configuration-parser.c: configuration-parser.y
- $(YACC) -p cfg -v -d $< -o configuration-parser.c
-
-configuration-scanner.c: configuration-scanner.l
- $(LEX) -Pcfg -o$@ -i $<
-
-EXTRA_PROGRAMS = php
-
-noinst_PROGRAMS = $(PHP_PROGRAM)
-php_SOURCES = stub.c
-php_LDADD = libphp4.la
-php_LDFLAGS = -export-dynamic
-
-install-data-local:
- $(INSTALL_IT)
View
356 NEWS
@@ -1,356 +0,0 @@
-PHP 4.0 NEWS
-|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-
-?? ?? ????, Version 4.0 Beta 4
-- Made implode() binary-safe (Andrei)
-- Made strstr(), stristr(), and ucwords() binary-safe() (Andrei)
-- Made strtoupper(), strtolower(), substr_replace() binary-safe. (Andrei)
-- Fix a crash in the Apache syntax highlighting mode (Zeev)
-- Report all ODBC error's not just the one on the top of the stack (lurcher)
-- OCI8 now returns NULL values in LONG columns correct. (Thies)
-- Added support for a C-like assert() function. (Thies)
-- Added CyberCash support. (Evan)
-- explode() is now binary-safe. (Thies)
-- strpos() is now binary-safe. (Thies)
-- added XML_Set_Object() function, now you can use the XML-Parser from
- within an object. (Thies)
-- Session vars are now decoded into $HTTP_STATE_VARS[] array and the
- globals, depending on track_vars and gpc_globals settings (Andrei)
-- Added get_used_files() function - returns a hash mapping the use()'d files
- to their full path (Zeev)
-- PHP 4 scripts will now obey the max_execution_time setting and actually
- time out (Rasmus)
-- Add configure command to phpinfo() output (Stig)
-- Add optional socket path to the mysql_?connect() functions (Rasmus)
-- Made mysql and gd work as shared extensions again (Stig)
-- Make the global GET/POST/Cookie variables and their $HTTP_*_VARS[] counterparts
- be references to each other (Zeev)
-- Added support for the 'use' keyword - behaves like 'require', but will not
- use the same file more than once (Andi & Zeev, Zend library)
-- Added check to see if a persistent connection is still valid with the
- ODBC interface before reusing (nick@easysoft.com)
-- Added DBMaker support (patch by Pax Tsai <paxtsai@lion.syscom.com.tw>)
-- Renamed "PECL" to "PEAR" (PHP Extension and Add-on Repository) (Stig)
-- buildconf now uses build.mk (Stig)
-- Disable symlinks to urls (Rasmus)
-- Informix driver now reflects version of ESQL/C used (Danny)
-- Modified session_register() to take variable number of arguments (Andrei)
-- Fixed file descriptor leak in thread safe mode (Zeev, Zend library)
-- Added select(), fd_set() and fd_isset() (Evan)
-- cpdf support has been ported from php3, needs ClibPDF 2.x (Uwe)
-- Fixed a leak when using automatic output buffering (Zeev)
-- Introduced PECL - PHP Extension and Code Library
- (prounounced "pickle") (Stig)
-- Fixed inconsistencies in the implementation of here-docs (Andi & Zeev, Zend
- library)
-- Fixed a problem with constant class-member initializations (Andi & Zeev,
- Zend library)
-- Fixed float-compare in min(),max(),a[r]sort(),[r]sort() (Thies)
-- Implemented get_html_translation_table() function (Thies)
-- Implemented array_flip() function. Returns input-array with key, value
- flipped (Thies)
-- Added Berkeley DB3 support in DBA (Sascha)
-- Implemented 2-Arg version of strtr($str,$translation_array). This can be used
- to revert what htmlspecialchars() did (Thies)
-- Fixed mem-overwrite in XML_Parse_Into_Struct (Thies)
-- Added substr_replace() function (Andrei)
-
-November 16 1999, Version 4.0 Beta 3
-- ucfirst()/ucwords() no longer modify arg1 (Thies)
-- Fixed strtr() not to modify arg1 (Thies)
-- Added Win32 build files for Informix driver and make it
- compile with ZTS (danny)
-- Added tmpfile() function (Stig)
-- Upgraded regex library to alpha3.8 (Sascha)
-- Fixed selecting nested-tables in OCI8. (Thies)
-- RFC-854 fix for internal FTP-Code. Commands have to end in "\r\n" (Thies)
-- Fix OpenLink ODBC support (Stig)
-- min(),max(),a[r]sort(),[r]sort(),k[r]sort() now work consistent with the
- language-core. (Thies)
-- tempnam() now uses mkstemp() if available (Stig)
-- serialize() and var_dump() now honor the precision as set in php.ini
- for doubles. (Thies)
-- Improved the Win32 COM module to support [out] parameters (Boris Wedl)
-- Fixed garbage returned at the end of certain Sybase-Columns (Thies)
- Patch submitted by: neal@wanlink.com
-- Added Microsoft SQL Server module for Win32 (Frank)
-- Added support for forcing a variable number of internal function arguments
- by reference. (Andi & Zeev, Zend library)
-- Implemented getprotoby{name,number} (Evan)
-- Added array_pad() function. (Andrei)
-- Added new getservby{name,port} functions. (Evan)
-- Added session.cookie_path and session.cookie_domain (Sascha)
-- Continue processing PHP_INI_SYSTEM knownDirectives after extension=
- (Sam Ruby)
-- Enable IBM DB2 support - Tested against DB2 6.1 UDB on Linux (Rasmus)
-- Added new str_repeat() function. (Andrei)
-- Output-Buffering system is now Thread-Safe. (Thies)
-- implemented OCI8 $lob->WriteToFile() function - very useful for streaming
- large amounts of LOB-Data without to need of a huge buffer. (Thies)
-- Added session.use_cookies option (Sascha)
-- Added getcwd() function. (Thies)
-- XML_Parse_Into_Struct no longer eats data. (Thies)
-- Fixed parse_url('-') crash. (Thies)
-- added === operator support. (Andi & Thies, Zend library)
-- unserialize() now gives a notice when passed invalid data. (Thies)
-- Fixed shuffle() so that it no longer breaks on Solaris. (Andrei)
-- Added is_resource(), is_bool() functions. (Thies)
-- Cleaned up File-Module (Thies)
-- Upgraded math-funtions to use new Zend function API (Thies)
-- Fixed zombie problem in shell_exec() and $a = `some_command`
- constructs. (Thies)
-- Thies introduced ZEND_FETCH_RESOURCE2 (Danny).
-- Added Informix driver to list of maintained extensions. (Danny).
-- Informix driver : Changed ifx.ec to use the new high-performance
- ZEND API. (Danny)
-- IXF_LIBDIR environment variable specifies alternate Informix library
- path for configure (Danny).
-- Fixed gmmktime() so that the following should always be true:
- gmmktime([args]) == mktime([args]) + date('Z', mktime([args])) (Jouni)
-- setlocale doesn't anymore screw up things if you forgot to change it back
- to the original settings. (Jouni)
-- Switched to new system where ChangeLog is automagically updated from commit
- messages. NEWS file is now the place for public announcements. (Andrei)
-- Fixed refcount problem in XML module. (Thies)
-- Fixed crash in HTTP_RAW_POST_DATA handling (Thies)
-- You can use resources as array-indices again (Thies, Zend library)
-- Fixed pg_fetch_array() with three arguments (Sascha)
- Patch submitted by: brian@soda.berkeley.edu
-- Upgraded a lot internal functions to use new Zend function API (Thies)
-- fdf support ported; not completely tested with latest version 4.0 for
- glibc (Uwe)
-- OCI8 connections are now kept open as long as they are referenced (Thies)
-- Cleaned up Directory-Module (Thies)
-- Small fix in Ora_Close (Thies)
-- Ported range() and shuffle() from PHP3 to PHP4 (Andrei)
-- Fixed header("HTTP/..."); behaviour (Sascha)
-- Improved UNIX build system. Now utilizes libtool (Sascha)
-- Upgrade some more internal functions to use new Zend function API. (Thies,
- Zend library)
-- Fixed backwards incompatibility with ereg() (Thies)
-- Updated Zend garbage collection with a much more thorough method.
- (Andi, Zend library)
-- Added the ability to use variable references in the array() construct.
- For example, array("foo" => &$foo). (Andi, Zend library)
-- Added array_reverse() function (Andrei)
-- Some more XML fixes/cleanups (Thies)
-- Updated preg_replace() so that if any argument passed in is an array
- it will make a copy of each entry before converting it to string so that
- the original is intact. If the subject is an array then it will preserve
- the keys in the output as well (Andrei)
-- Updated OCI8 to use the new high-performance Zend function API. (Thies)
-- Configure speedup (Stig)
-- Fixed LOB/Persistent-Connection related OCI8-Crash (Thies)
-- Generalized server-API build procedure on UNIX (Stig)
-- Added '--disable-rpath' option (Sascha)
-- Added AOLserver SAPI module (Sascha)
-- Fixed XML Callbacks. (Thies)
-- Updated ODBC to use the new high-performance Zend function API (kara)
-- Updated zlib to use the new high-performance Zend function API. (Stefan)
-- Updated preg_split() to allow returning only non-empty pieces (Andrei)
-- Updated PCRE to use the new high-performance Zend function API (Andrei)
-- Updated session, dba, mhash, mcrypt, sysvshm, sysvsem, gettext modules to use
- the new high-performance Zend function API (Sascha)
-- Extended var_dump to handle resource type somewhat (Andrei)
-- Updated WDDX to use the new high-performance Zend function API (Andrei)
-- Updated XML to use the new high-performance Zend function API. (Thies)
-- Updated Oracle to use the new high-performance Zend function API. (Thies)
-- Improved the performance of the MySQL module significantly by using the new
- high-performance Zend function API. (Zeev)
-- Add support for the Easysoft ODBC-ODCB Bridge (martin@easysoft.com)
-- Fix bug in odbc_setoption, getParameter call incorrect (martin@easysoft.com)
-- Ora_Fetch_Into now resets the returned array in all cases (Thies)
-- Fixed NULL-Column problem in Oracle-Driver (Thies)
-- Added extra metadata functions to ODBC, SQLTables etc (nick@easysoft.com)
-- Fixed SEGV in mcal make_event_object() and
- typo in mcal_list_alarms() (Andrew Skalski)
-- Fixed Ora_PLogon (Thies)
-- Resourcified Oracle (Thies)
-- Implemented object serialization/deserialization in WDDX (Andrei)
-- Added krsort() function (Thies)
-- Added func_num_args(), func_get_arg() and func_get_args() for standard
- access to variable number of arguments functions (Zeev)
-- Added FTP support (Andrew Skalski)
-- Added optional allowable_tags arguments to strip_tags(), gzgetss() and
- fgetss() to allow you to specify a string of tags that are not to be
- stripped (Rasmus)
-- Upgraded var_dump() to take multiple arguments (Andrei)
-- Resourcified XML (Thies)
-- Fixed a memory leak in the Apache per-directory directives handler (Zeev)
-- Added array_count_values() function. (Thies)
-- snmp, pgsql, mysql and gd modules can be built as dynamically loaded
- modules (Greg)
-- OCI8 fix for fetching empty LOBs (Thies)
-- Added user-level callbacks for session module (Sascha)
-- Added support for unknown POST content types (Zeev)
-- Added "wddx" serialization handler for session module (Sascha)
- (automatically enabled, if you compile with --with-wddx)
-- Fixed unserializing objects (Thies)
-- PHP 4.0 now serializes Objects as 'O' (not understood by PHP 3.0), but
- unserializes PHP 3.0 serialized objects as expected. (Thies)
-- Made serialize/unserialize work on classes. If the class is known at
- unserialize() time, you'll get back a fully working object! (Thies)
-- Reworked preg_* functions according to the new PCRE API, which also made
- them behave much more like Perl ones (Andrei)
-- Made it possible to specify external location of PCRE library (Andrei)
-- Updated bundled PCRE library to version 2.08 (Andrei)
-- count()/is_array/is_object... speedups. (Thies)
-- OCI8 supports appending and positioning when saving LOBs (Thies)
-- Added metaphone support (Thies)
-- OCI8 doesn't use define callbacks any longer. (Thies)
-- OCI8 Driver now supports LOBs like PHP 3.0. (Thies)
-- var_dump now dumps the properties of an object (Thies)
-- Rewrote the GET/POST/Cookie data reader to support multi-dimensional
- arrays! (Zeev)
-- Renamed allow_builtin_links to expose_php (defaults to On). This directive
- tells PHP whether it may expose its existence to the outside world, e.g.
- by adding itself to the Web server header (Zeev)
-- Added support for transparent session id propagation (Sascha)
-- Made WDDX serialize object properties properly (Andrei)
-- Fixed WDDX mem leak when undefined variable is passed in
- for serialization (Andrei)
-- Added session_unset() function (Andrei)
-- Fixed double session globals shutdown crash (Andrei)
-- Fixed crash related to ignore_user_abort ini entry (Andrei)
-- Added support for external entropy sources for session id creation
- (on Unices /dev/random and /dev/urandom) (Sascha)
-- Added gpc_globals variable directive to php.ini. By default it is On, but
- if it is set to Off, GET, POST and Cookie variables will not be inserted
- to the global scope. Mostly makes sense when coupled with track_vars (Zeev)
-- Added versioning support for shared library (Sascha)
- This allows concurrent use of PHP 3.0 and PHP 4.0 as Apache modules. See
- the end of the INSTALL file for more information.
-- Added second parameter to array_keys which specifies search value
- for which the key should be returned (Andrei)
-- Resourcified Informix driver (Danny)
-- New resource handling for odbc, renamed to php_odbc.[ch]
-- Make set_time_limit() work on Unix (Rasmus)
-- Added connection handling support (Rasmus)
-- Improved the Sybase-CT module to make use of resources (Zeev)
-- Improved the mSQL module to make use of resources (Zeev)
-- Changed mysql_query() and mysql_db_query() to return false in case of saving
- the result set data fails (Zeev)
-- Improved the resource mechanism - resources were not getting freed as soon
- as they could (Zeev)
-- Added shared memory module for session data storage (Sascha)
-- Fixed session.auto_start (Sascha)
-- Fixed several problems with output buffering and HEAD requests (Zeev)
-- Fixed HTTP Status code issue with ISAPI module (Zeev)
-- Fixed a problem that prevented $GLOBALS from working properly (Zeev, Zend
- library)
-- Ported newest GetImageSize (Thies)
-- Added session compile support in Win32 (Andi)
-- Added -d switch to the CGI binary that allows overriding php.ini values
- from the command line (Zeev)
-- Fixed a crash that would occur if wddx_deserialize did not receive
- a valid packet (Andrei)
-- Fixed a bugglet when redefining a class at run-time (Andi, Zend library)
-- Fixed sem_get() on AIX (Sascha)
-- Fixed fopen() to work with URL's in Win32 (Andi & Zeev)
-- Fixed include_path for Win32 (Andi, Zend library)
-- Fixed bug in ISAPI header sending function (Charles)
-- Fixed memory leak when using undefined values (Andi & Zeev, Zend library)
-- Added output_buffering directive to php.ini, to enable output buffering
- for all PHP scripts - default is off (Zeev).
-- Fixed some more class inheritance issues (Zeev, Zend library)
-- Fixed Apache build wrt to shared modules on FreeBSD/Linux (Sascha)
-- Added session.extern_referer_chk which checks whether session ids were
- referred to by an external site and eliminates them (Sascha)
-- Improved session id generation (Sascha)
-- Improved speed of uniqid() by using the combined LCG and removing
- the extra usleep() (Sascha)
-- Introduced general combined linear congruential generator (Sascha)
-- Made ldap_close back into an alias for ldap_unbind (Andrei)
-- OciFetchInto now resets the returned array in all cases (Thies)
-- Fixed mysql_errno() to work with recent versions of MySQL (Zeev)
-- Fixed a problem with define() and boolean values (Zeev)
-- Fixed inclusion of gd/freetype functions (Sascha)
-- Fixed persistency of MHASH_* constants (Sascha)
-- Oracle is now ZTS-Safe (Thies)
-- Fixed flushing of cached information to disk in DBA's DB2 module (Sascha)
-- OCI8 is now ZTS-Safe (Thies)
-- Fixed is_writeable/is_writable problem; they are both defined now (Andrei)
-- Imported PHP 3.0 diskfreespace() function (Thies)
-- Fixed thread-safety issues in the MySQL module (Zeev)
-- Fixed thread-safe support for dynamic modules (Zeev)
-- Fixed Sybase CT build process (Zeev)
-
-August 9 1999, Version 4.0 Beta 2
-- Fixed a problem when sending HTTP/1.x header lines using header() (Zeev)
-- Win32 builds now include the ODBC module built-in (Zeev)
-- Fixed SYSV-SHM interface (Thies).
-- Updated hyperwave module, made it thread safe
-- Updated pdflib module, version 0.6 of pdflib no longer supported
-- Updated fdf module
-- Built-in phpinfo() links are now turned off by default. They can be turned
- on using the allow_builtin_links INI directive (Zeev)
-- Changed phpinfo() to list modules that have no info function (Zeev)
-- Modified array_walk() function so that the userland callback is passed
- a key and possible user data in addition to the value (Andrei)
-- Fixed ldap_search(), ldap_read() and ldap_list() (Zeev)
-- Fixed Apache information in phpinfo() (sam@breakfree.com)
-- Improved register_shutdown_function() - you may now supply arguments that
- will be passed to the shutdown function (Zeev)
-- Improved call_user_func() and call_user_method() - they now support passing
- arguments by reference (Zeev)
-- Fixed usort() and uksort() (Zeev)
-- Fixed md5() in the Apache module (Thies)
-- Introduced build process for dynamic modules (Stig)
-- Improved ISAPI module to supprt large server variables (Zeev)
-- Imported PHP 3.0 fixes for problem with PHP as a dynamic module and Redhat
- libc2.1 in zlib module (Stefan)
-- Fixed sybase_fetch_object() (Zeev)
-- Made the IMAP module work with PHP 4.0 (Zeev)
-- Fixed a problem with include()/require() of URLs (Sascha, Zeev)
-- Fixed a bug in implode() that caused it to corrupt its arguments (Zeev)
-- Added get_class($obj), get_parent_class($obj) and method_exists($obj,"name")
- (Andi & Zeev)
-- Fixed various inheritance problems (Andi & Zeev, Zend library)
-- Children now inherit their parent's constructor, if they do not supply a
- constructor of their own.
-- Fixed runtime inheritance of classes (parent methods/properties were
- overriding their children) (Zeev, Zend library)
-- Fixed backwards incompatibility with the "new" operator (Andi, Zend library)
-- Fixed bugs in uksort() and ksort() sort ordering (Andrei)
-- Fixed a memory leak when using assignment-op operators with lvalue of type
- string (Zeev, Zend library)
-- Fixed a problem in inheritance from classes that are defined in include()d
- files (Zeev, Zend library)
-- Fixed a problem with the PHP error handler that could result in a crash
- on certain operating systems (Zeev)
-- Apache php_flag values only recognized 'On' (case sensitive) - changed
- to case insensitive (Zeev)
-- Fixed a memory leak with switch statement containing return statements
- (Andi & Zeev, Zend library)
-- Fixed a crash problem in switch statements that had a string offset
- as a conditional (Andi & Zeev, Zend library)
-- Imported PHP 3.0 fixes for rand() and mt_rand() (Rasmus)
-- Added function entries for strip_tags() and similar_text() (Andrei)
-- Fixed a bug in WDDX that would cause a crash if a number was passed in
- instead of a variable name (Andrei)
-- Ported strtotime() function from PHP 3.0 (Andrei)
-- Merged in gdttf stuff from PHP 3.0 (Sascha)
-- buildconf now checks your installation (Stig)
-- XML module now built dynamically with --with-xml=shared (Stig)
-- Added a check for freetype.h - fixed build on RedHat 6.0 (Zeev)
-- Fixed array_walk() to work in PHP 4.0 (Andrei)
-- Ported all remaining date() format options from PHP 3.0 (Andrei)
-- $php_errormsg now works (Andrei)
-- Added locale support for Perl Compatible Regexp functions (Andrei)
-- Informix module ported (Danny)
-- Removed --with-shared-apache (Sascha)
-- Added patch for reverse lookup table in base64_decode (Sascha)
- Submitted by bfranklin@dct.com
-- Merged in PHP 3.0 version of str_replace (Sascha)
-- Added DBA module (Sascha)
-- Added session id detection within REQUEST_URI (Sascha)
-- Merged in HP-UX/ANSI compatibility switch from PHP 3.0 (Sascha)
-- Fixed rpath handling for utilitites built during Apache build (Sascha)
-- Added missing E_ error level constants (Zeev, Zend library)
-- Fixed a bug in sending multiple HTTP Cookies under Apache (Zeev)
-- Fixed implicit connect on the MySQL, mSQL, PostgreSQL and Sybase
- modules (Zeev)
-- Gave PHP 4.0's SNMP extension all the functionality of PHP 3.0.12 (SteveL)
-
-July 19 1999, Version 4.0 Beta 1
-- First public beta of PHP 4.0
View
17 README-BCMATH
@@ -1,17 +0,0 @@
-How to install PHP with the BCMath arbitrary precision math library?
---------------------------------------------------------------------
-
-Due to license restrictions, the BC math library can no longer be distributed
-along with PHP. The BC math library is distributed under the restrictive
-GNU Public License, and PHP is no longer distributed under that license, but
-under a less restrictive license, the PHP License.
-
-If you want to enable BC math support (recommended), all you have to do is
-simply download http://www.php.net/extra/number4.tar.gz, and untar it on the
-top level php4 directory.
-
-A typical way of doing this would be (assuming that you have lynx):
-cd ~/php4
-lynx -dump -source http://www.php.net/extra/number4.tar.gz | gzip -d | tar xvf -
-
-The PHP Group
View
102 README.CVS-RULES
@@ -1,102 +0,0 @@
-This is the first file you should be reading after you get your CVS account.
-We'll assume you're basically familiar with CVS, but feel free to post
-your questions on the mailing list.
-
-PHP is developed through the efforts of a large number of people.
-Collaboration is a Good Thing(tm), and CVS lets us do this. Thus, following
-some basic rules with regards to CVS usage will:
-
- a. Make everybody happier, especially those responsible for maintaining
- the CVS itself.
- b. Keep the changes consistently well documented and easily trackable.
- c. Prevent some of those 'Oops' moments.
- d. Increase the general level of good will on planet Earth.
-
-
-Having said that, here are the organizational rules:
-
- 1. Respect other people working on the project.
-
- 2. Discuss any significant changes on the list before committing.
-
- 3. Look at MAINTANERS file to see who is the primary maintainer of
- the code you want to contribute to.
-
- 4. If you "strongly disagree" about something another person did, don't
- start fighting publicly - take it up in private email.
-
- 5. If you don't know how to do something, ask first!
-
- 6. Test your changes before committing them. We mean it. Really.
-
-
-The next few rules are more of a technical nature.
-
- 1. DO NOT TOUCH ChangeLog! It is automagically updated from the commit
- messages every day. Woe be to those who attempt to mess with it.
-
- 2. All news updates intended for public viewing, such as new features,
- bug fixes, improvements, etc., should go into the NEWS file. Also see
- the note below about automatically updating NEWS in your commit message.
-
- 3. Do not commit multiple file and dump all messages in one commit. If you
- modified several unrelated files, commit each group separately and
- provide a nice commit message for each one. See example below.
-
- 4. Do write your commit message in such a way that it makes sense even
- without the corresponding diff. One should be able to look at it, and
- immediately know what was modified. Definitely include the function name
- in the message as shown below.
-
- 5. In your commit messages, keep each line shorter than 80 characters. And
- try to align your lines vertically, if they wrap. It looks bad otherwise.
-
- 6. If you modified a function that is callable from PHP, prepend PHP to
- the function name as shown below.
-
-
-The format of the commit messages is pretty simple.
-
-If a line begins with #, it is taken to be a comment and will not appear
-in the ChangeLog. If the line begins with @, it will be redirected to the
-NEWS file. Everything else goes into the ChangeLog.
-
-It is important to note that if your comment or news logline spans multiple
-lines, you have to put # or @ at the beginning of _every_ such line.
-
-Example. Say you modified two files, datetime.c and string.c. In datetime.c
-you added a new format option for date() function, and in string.c you fixed
-a memory leak in php_trim(). Don't commit both of these at once. Commit them
-separately and try to make sure your commit messages look something like the
-following.
-
-For datetime.c:
-
-(PHP date) Added new 'K' format modifier for printing out number of
- days until New Year's Eve.
-@- Added new 'K' format modifier that will output the number of days
-@ until New Year's Eve. (Bob)
-
-For string.c:
-(php_trim) Fixed a memory leak resulting from improper use of zval_dtor().
-# Man, that thing was leaking all over the place!
-@- Memory leak in trim() function has finally been fixed. (Bob)
-
-The lines above marked with @ will go into NEWS file automagically, and the
-# lines will be omitted from the ChangeLog. Alternatively, you might want
-to modify NEWS file directly and not use the @ lines.
-
-If you don't see your messages in ChangeLog and NEWS right away, don't worry!
-These files are updated once a day, so your stuff will not show up until
-somewhat later. Don't go adding stuff to NEWS by hand if you already put @
-lines in the commit message.
-
-You can use LXR (http://lxr.php.net/) and Bonsai (http://bonsai.php.net/)
-to look at PHP CVS repository in various ways.
-
-To receive daily updates to ChangeLog and NEWS, send an empty message to
-php-cvs-daily-subscribe@lists.php.net.
-
-Happy hacking,
-
-PHP Team
View
57 README.QNX
@@ -1,57 +0,0 @@
-QNX4 Installation Notes
------------------------
-
-NOTE: General installation instructions are in the INSTALL file
-
-
-1. To compile and test PHP3 you have to grab, compile and install:
- - GNU dbm library or another db library;
- - GNU bison (1.25 or later; 1.25 tested);
- - GNU flex (any version supporting -o and -P options; 2.5.4 tested);
- - GNU diffutils (any version supporting -w option; 2.7 tested);
-
-2. To use CVS version you may need also:
- - GNU CVS (1.9 tested);
- - GNU autoconf (2.12 tested);
- - GNU m4 (1.3 or later preferable; 1.4 tested);
-
-3. To run configure define -lunix in command line:
- LDFLAGS=-lunix ./configure
-
-4. To use Sybase SQL Anywhere define ODBC_QNX and CUSTOM_ODBC_LIBS in
- command line and run configure with --with-custom-odbc:
- CFLAGS=-DODBC_QNX LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc" ./configure --with-custom-odbc=/usr/lib/sqlany50
- If you have SQL Anywhere version 5.5.00, then you have to add
- CFLAGS=-DSQLANY_BUG
- to workaround its SQLFreeEnv() bug. Other versions has not been tested,
- so try without this flag first.
-
-5. To build the Apache module, you may have to hardcode an include path for
- alloc.h in your Apache base directory:
- - APACHE_DIRECTORY/src/httpd.h:
- change #include "alloc.h"
- to #include "APACHE_DIRECTORY/src/alloc.h"
- Unless you want to use system regex library, you have to hardcode also
- a path to regex.h:
- - APACHE_DIRECTORY/src/conf.h:
- change #include <regex.h>
- to #include "APACHE_DIRECTORY/src/regex/regex.h"
- I don't know so far why this required for QNX, may be it is Watcom
- compiler problem.
-
- If you building Apache module with SQL Anywhere support, you'll get
- symbol conflict with BOOL. It is defined in Apache (httpd.h) and in
- SQL Anywhere (odbc.h). This has nothing to do with PHP, so you have to
- fix it yourself someway.
-
-6. With above precautions, it should compile as is and pass regression
- tests completely:
- make
- make check
- make install
-
- Don't bother me unless you really sure you made that all but it
- still doesn't work.
-
-June 28, 1998
-Igor Kovalenko -- owl@infomarket.ru
View
36 TODO
@@ -1,36 +0,0 @@
-Things to do or at least think about doing in the future. Name in
-parenthesis means that person has taken on this project.
-
-global
-------
- * replace standard functions which work on static data with
- reentrant-save functions
- * there is only one current directory per process; to make
- chdir() etc. thread-safe, we must introduce a per-thread
- current directory
- * on some platforms unimplemented function will just do nothing (eg symlink)
- they should print a warning or be not even defined!
-
-documentation
--------------
- * add remarks in the documentation which functions are not implemented on win32.
- * add remarks in the documentation which functions are not binary-safe.
-
-ext/oci8
---------
- * map boolean value false to oracle NULL.
- * all OCIFetch*() functions should return 0 for no more data and false on error.
-
-ext/standard
-------------
- * strpad() (Andrei)
- * advanced sort (Andrei)
- * NOT binary safe:
- strcspn()
- strtok()
- basename()
- dirname()
- strrpos()
- strrchr()
- quotemeta()
- strip_tags()
View
75 TODO-LeftOver
@@ -1,75 +0,0 @@
-
-
-This is the ChangeLog from PHP3 as of Apr 12 1999.
-
-Entries should be removed from this file, if you transfer changes
-over to PHP4.
-
-============================================================================
-
-?? 1999, Version 3.0.8
-- added Oracle-OCI8 persistent connections
-- fixed OCIDefineByName crash.
-- fixed some NULL-column related problems in OCI8-module.
-- Some Informix driver improvements.
-- PUT method support (mlemos@acm.org)
-- Fix parameter count problem in odbc_setoption()
-- Really fix implode() this time. The fix in 3.0.7 was bogus
-- Make fgetss() slightly smarter
-- Add strip_tags() which uses the fgetss state-machine but acts on a string
-
-March 1 1999, Version 3.0.7
-- Added pdf_put_image and pdf_execute_image
-- Initial work on an ImageMagick module - doesn't do anything yet
-- Make configure script detect Netscape's LDAP SDK automagically
-- Fixed Oracle-OCI8 module for windows.
-- Add OCIRowCount function. (Number of affected rows for update-statements)
-- Add OCIDefineByName function.
-- Change the behaviour of open_basedir. It's now possible to supply more
- than one directory. open_basedir paths from parent directories are now
- automatically inherited.
-- fix rand() and mt_rand() to make the ranges work correctly
-- htmlspecialchars() and htmlentities() are now binary safe.
-- Add extract() function.
-- Oracle-OCI8 driver now supports BLOBS/CLOBS and IN/OUT binding of local php
- variables.
-- Clean up apxs build
-- Add INSTALL.REDHAT file to walk RedHat users through the install
-- Add function_exists() function.
-- Add another version of WDDX module
- (we need to pick a single implementation here)
-- Fixed includes for iODBC to support both the old and the new LGPL version
-- Fix implode() bug - When imploding an array that contained unset() elements
- it wasn't correctly skipping past these
-- Add connection_status() function. This returns the raw bitfield which
- indicates whether the script terminated due to a user abort, a timeout
- or normally. Note that if ignore_user_abort is enabled, then both the
- timeout state and the user abort state can be active
-- Add connection_timeout() function. This one can be called in a shutdown
- function to tell you if you got there because of a timeout
-- Add ignore_user_abort() function and .ini/.conf directive of same name
-- Fix connection abort detection code - It should now work reliably with
- Apache. Also added a user-level connection_aborted() function designed to
- let people check whether the user aborted the connection in a user-level
- shutdown function.
-- Add pfsockopen() function
-- Improvements in FreeType support: Macintosh fonts work, and non-antialiased
- output is considerably cleaner <mka@satama.com>
-- Fixed checkdate() function, range of valid years is now 0 to 32767
-- hw_insertdocument() returns object id now
-- Add pdf_open() warning in configure and documentation
-- Add diskfreespace() function
-- Added aspell support
-- Iptcparse would sometimes find a wrong tag.
-- Force var_dump() to output headers
-- Add optional 3th parameter to ora_fetchinto.
-- Serialize and var_dump no longer show array elements that
- have been unset.
-- Add IptcEmbed() function (can replace an APP13-Marker in a JPEG file)
-- Add OCI8 module for Windows
-- Fix bug in pdf_close() function
-- Add WDDX support (see http://www.wddx.org for more info)
-- Add similar_text() function
-- Introduce simple regex compilation cache
-
-
View
4 TSRM/Makefile.am
@@ -1,4 +0,0 @@
-## process this file with automake to produce Makefile.am
-AUTOMAKE_OPTIONS=foreign
-noinst_LTLIBRARIES=libtsrm.la
-libtsrm_la_SOURCES = TSRM.c
View
453 TSRM/TSRM.c
@@ -1,453 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | Thread Safe Resource Manager |
- +----------------------------------------------------------------------+
- | Copyright (c) 1998, 1999 Zeev Suraski |
- +----------------------------------------------------------------------+
- | This source file is subject to the Zend license, that is bundled |
- | with this package in the file LICENSE. If you did not receive a |
- | copy of the Zend license, please mail us at zend@zend.com so we can |
- | send you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Zeev Suraski <zeev@zend.com> |
- +----------------------------------------------------------------------+
-*/
-
-
-#include "TSRM.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-#if HAVE_STDARG_H
-#include <stdarg.h>
-#endif
-
-typedef struct _tsrm_tls_entry tsrm_tls_entry;
-
-struct _tsrm_tls_entry {
- void **storage;
- int count;
- THREAD_T thread_id;
- tsrm_tls_entry *next;
-};
-
-
-typedef struct {
- size_t size;
- ts_allocate_ctor ctor;
- ts_allocate_dtor dtor;
-} tsrm_resource_type;
-
-
-/* The memory manager table */
-static tsrm_tls_entry **tsrm_tls_table;
-static int tsrm_tls_table_size;
-static ts_rsrc_id id_count;
-
-/* The resource sizes table */
-static tsrm_resource_type *resource_types_table;
-static int resource_types_table_size;
-
-
-static MUTEX_T tsmm_mutex; /* thread-safe memory manager mutex */
-
-/* New thread handlers */
-static void (*tsrm_new_thread_begin_handler)();
-static void (*tsrm_new_thread_end_handler)();
-
-/* Debug support */
-static int tsrm_debug(const char *format, ...);
-static int tsrm_debug_status;
-
-
-/* Startup TSRM (call once for the entire process) */
-TSRM_API int tsrm_startup(int expected_threads, int expected_resources, int debug_status)
-{
-#if defined(GNUPTH)
- pth_init();
-#endif
-
- tsrm_tls_table_size = expected_threads;
- tsrm_tls_table = (tsrm_tls_entry **) calloc(tsrm_tls_table_size, sizeof(tsrm_tls_entry *));
- if (!tsrm_tls_table) {
- return 0;
- }
- id_count=0;
-
- resource_types_table_size = expected_resources;
- resource_types_table = (tsrm_resource_type *) calloc(resource_types_table_size, sizeof(tsrm_resource_type));
- if (!resource_types_table) {
- free(tsrm_tls_table);
- return 0;
- }
-
- tsmm_mutex = tsrm_mutex_alloc();
-
- tsrm_new_thread_begin_handler = tsrm_new_thread_end_handler = NULL;
-
- tsrm_debug_status = debug_status;
-
- tsrm_debug("Started up TSRM, %d expected threads, %d expected resources\n", expected_threads, expected_resources);
- return 1;
-}
-
-
-/* Shutdown TSRM (call once for the entire process) */
-TSRM_API void tsrm_shutdown(void)
-{
- int i;
-
- if (tsrm_tls_table) {
- for (i=0; i<tsrm_tls_table_size; i++) {
- tsrm_tls_entry *p = tsrm_tls_table[i], *next_p;
-
- while (p) {
- int j;
-
- next_p = p->next;
- for (j=0; j<id_count; j++) {
- free(p->storage[j]);
- }
- free(p->storage);
- free(p);
- p = next_p;
- }
- }
- free(tsrm_tls_table);
- }
- if (resource_types_table) {
- free(resource_types_table);
- }
- tsrm_mutex_free(tsmm_mutex);
- tsrm_debug("Shutdown TSRM\n");
-#if defined(GNUPTH)
- pth_kill();
-#endif
-}
-
-
-/* allocates a new thread-safe-resource id */
-TSRM_API ts_rsrc_id ts_allocate_id(size_t size, ts_allocate_ctor ctor, ts_allocate_dtor dtor)
-{
- ts_rsrc_id new_id;
- int i;
-
- tsrm_debug("Obtaining a new resource id, %d bytes\n", size);
-
- tsrm_mutex_lock(tsmm_mutex);
-
- /* obtain a resource id */
- new_id = id_count++;
- tsrm_debug("Obtained resource id %d\n", new_id);
-
- /* store the new resource type in the resource sizes table */
- if (resource_types_table_size < id_count) {
- resource_types_table = (tsrm_resource_type *) realloc(resource_types_table, sizeof(tsrm_resource_type)*id_count);
- if (!resource_types_table) {
- return -1;
- }
- resource_types_table_size = id_count;
- }
- resource_types_table[new_id].size = size;
- resource_types_table[new_id].ctor = ctor;
- resource_types_table[new_id].dtor = dtor;
-
- /* enlarge the arrays for the already active threads */
- for (i=0; i<tsrm_tls_table_size; i++) {
- tsrm_tls_entry *p = tsrm_tls_table[i];
-
- while (p) {
- if (p->count < id_count) {
- int j;
-
- p->storage = (void *) realloc(p->storage, sizeof(void *)*id_count);
- for (j=p->count; j<id_count; j++) {
- p->storage[j] = (void *) malloc(resource_types_table[j].size);
- if (resource_types_table[j].ctor) {
- resource_types_table[j].ctor(p->storage[j]);
- }
- }
- p->count = id_count;
- }
- p = p->next;
- }
- }
- tsrm_mutex_unlock(tsmm_mutex);
-
- tsrm_debug("Successfully allocated new resource id %d\n", new_id);
- return new_id;
-}
-
-
-static void allocate_new_resource(tsrm_tls_entry **thread_resources_ptr, THREAD_T thread_id)
-{
- int i;
-
- (*thread_resources_ptr) = (tsrm_tls_entry *) malloc(sizeof(tsrm_tls_entry));
- (*thread_resources_ptr)->storage = (void **) malloc(sizeof(void *)*id_count);
- (*thread_resources_ptr)->count = id_count;
- (*thread_resources_ptr)->thread_id = thread_id;
- (*thread_resources_ptr)->next = NULL;
-
- tsrm_mutex_unlock(tsmm_mutex);
-
- if (tsrm_new_thread_begin_handler) {
- tsrm_new_thread_begin_handler(thread_id);
- }
- for (i=0; i<id_count; i++) {
- (*thread_resources_ptr)->storage[i] = (void *) malloc(resource_types_table[i].size);
- if (resource_types_table[i].ctor) {
- resource_types_table[i].ctor((*thread_resources_ptr)->storage[i]);
- }
- }
- if (tsrm_new_thread_end_handler) {
- tsrm_new_thread_end_handler(thread_id);
- }
-}
-
-
-/* fetches the requested resource for the current thread */
-void *ts_resource(ts_rsrc_id id)
-{
- THREAD_T thread_id = tsrm_thread_id();
- int hash_value;
- tsrm_tls_entry *thread_resources;
- void *resource;
-
- tsrm_debug("Fetching resource id %d for thread %ld\n", id, (long) thread_id);
- tsrm_mutex_lock(tsmm_mutex);
-
- hash_value = THREAD_HASH_OF(thread_id, tsrm_tls_table_size);
- thread_resources = tsrm_tls_table[hash_value];
-
- if (!thread_resources) {
- allocate_new_resource(&tsrm_tls_table[hash_value], thread_id);
- return ts_resource(id);
- /* thread_resources = tsrm_tls_table[hash_value]; */
- } else {
- do {
- if (thread_resources->thread_id == thread_id) {
- break;
- }
- if (thread_resources->next) {
- thread_resources = thread_resources->next;
- } else {
- allocate_new_resource(&thread_resources->next, thread_id);
- return ts_resource(id);
- /*
- * thread_resources = thread_resources->next;
- * break;
- */
- }
- } while (thread_resources);
- }
-
- resource = thread_resources->storage[id];
-
- tsrm_mutex_unlock(tsmm_mutex);
-
- tsrm_debug("Successfully fetched resource id %d for thread id %ld - %x\n", id, (long) thread_id, (long) resource);
- return resource;
-}
-
-
-/* frees all resources allocated for the current thread */
-void ts_free_thread(void)
-{
- THREAD_T thread_id = tsrm_thread_id();
- int hash_value;
- tsrm_tls_entry *thread_resources;
- tsrm_tls_entry *last=NULL;
-
- tsrm_mutex_lock(tsmm_mutex);
- hash_value = THREAD_HASH_OF(thread_id, tsrm_tls_table_size);
- thread_resources = tsrm_tls_table[hash_value];
-
- while (thread_resources) {
- if (thread_resources->thread_id == thread_id) {
- int i;
-
- for (i=0; i<thread_resources->count; i++) {
- if (resource_types_table[i].dtor) {
- resource_types_table[i].dtor(thread_resources->storage[i]);
- }
- free(thread_resources->storage[i]);
- }
- free(thread_resources->storage);
- if (last) {
- last->next = thread_resources->next;
- } else {
- tsrm_tls_table[hash_value]=NULL;
- }
- free(thread_resources);
- break;
- }
- if (thread_resources->next) {
- last = thread_resources;
- }
- thread_resources = thread_resources->next;
- }
- tsrm_mutex_unlock(tsmm_mutex);
-}
-
-
-/* deallocates all occurrences of a given id */
-void ts_free_id(ts_rsrc_id id)
-{
-}
-
-
-
-
-/*
- * Utility Functions
- */
-
-/* Obtain the current thread id */
-TSRM_API THREAD_T tsrm_thread_id(void)
-{
-#ifdef WIN32
- return GetCurrentThreadId();
-#elif defined(GNUPTH)
- return pth_self();
-#elif defined(PTHREADS)
- return pthread_self();
-#elif defined(NSAPI)
- return systhread_current();
-#elif defined(PI3WEB)
- return PIThread_getCurrent();
-#endif
-}
-
-
-/* Allocate a mutex */
-TSRM_API MUTEX_T tsrm_mutex_alloc( void )
-{
- MUTEX_T mutexp;
-
-#ifdef WIN32
- mutexp = CreateMutex(NULL,FALSE,NULL);
-#elif defined(GNUPTH)
- mutexp = (MUTEX_T) malloc(sizeof(*mutexp));
- pth_mutex_init(mutexp);
-#elif defined(PTHREADS)
- mutexp = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t));
- pthread_mutex_init(mutexp,NULL);
-#elif defined(NSAPI)
- mutexp = crit_init();
-#elif defined(PI3WEB)
- mutexp = PIPlatform_allocLocalMutex();
-#endif
-#ifdef THR_DEBUG
- printf("Mutex created thread: %d\n",mythreadid());
-#endif
- return( mutexp );
-}
-
-
-/* Free a mutex */
-TSRM_API void tsrm_mutex_free( MUTEX_T mutexp )
-{
- if (mutexp) {
-#ifdef WIN32
- CloseHandle(mutexp);
-#elif defined(GNUPTH)
- free(mutexp);
-#elif defined(PTHREADS)
- pthread_mutex_destroy(mutexp);
- free(mutexp);
-#elif defined(NSAPI)
- crit_terminate(mutexp);
-#elif defined(PI3WEB)
- PISync_delete(mutexp)
-#endif
- }
-#ifdef THR_DEBUG
- printf("Mutex freed thread: %d\n",mythreadid());
-#endif
-}
-
-
-/* Lock a mutex */
-TSRM_API int tsrm_mutex_lock( MUTEX_T mutexp )
-{
-#if 0
- tsrm_debug("Mutex locked thread: %ld\n",tsrm_thread_id());
-#endif
-#ifdef WIN32
- return WaitForSingleObject(mutexp,1000);
-#elif defined(GNUPTH)
- return pth_mutex_acquire(mutexp, 0, NULL);
-#elif defined(PTHREADS)
- return pthread_mutex_lock(mutexp);
-#elif defined(NSAPI)
- return crit_enter(mutexp);
-#elif defined(PI3WEB)
- return PISync_lock(mutexp);
-#endif
-}
-
-
-/* Unlock a mutex */
-TSRM_API int tsrm_mutex_unlock( MUTEX_T mutexp )
-{
-#if 0
- tsrm_debug("Mutex unlocked thread: %ld\n",tsrm_thread_id());
-#endif
-#ifdef WIN32
- return ReleaseMutex(mutexp);
-#elif defined(GNUPTH)
- return pth_mutex_release(mutexp);
-#elif defined(PTHREADS)
- return pthread_mutex_unlock(mutexp);
-#elif defined(NSAPI)
- return crit_exit(mutexp);
-#elif defined(PI3WEB)
- return PISync_unlock(mutexp);
-#endif
-}
-
-
-TSRM_API void *tsrm_set_new_thread_begin_handler(void (*new_thread_begin_handler)(THREAD_T thread_id))
-{
- void *retval = (void *) tsrm_new_thread_begin_handler;
-
- tsrm_new_thread_begin_handler = new_thread_begin_handler;
- return retval;
-}
-
-
-TSRM_API void *tsrm_set_new_thread_end_handler(void (*new_thread_end_handler)(THREAD_T thread_id))
-{
- void *retval = (void *) tsrm_new_thread_end_handler;
-
- tsrm_new_thread_end_handler = new_thread_end_handler;
- return retval;
-}
-
-
-
-/*
- * Debug support
- */
-
-static int tsrm_debug(const char *format, ...)
-{
- if (tsrm_debug_status) {
- va_list args;
- int size;
-
- va_start(args, format);
- size = vprintf(format, args);
- va_end(args);
- return size;
- } else {
- return 0;
- }
-}
-
-
-void tsrm_debug_set(int status)
-{
- tsrm_debug_status = status;
-}
View
100 TSRM/TSRM.dsp
@@ -1,100 +0,0 @@
-# Microsoft Developer Studio Project File - Name="TSRM" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=TSRM - Win32 Debug_TS
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "TSRM.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "TSRM.mak" CFG="TSRM - Win32 Debug_TS"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "TSRM - Win32 Debug_TS" (based on "Win32 (x86) Static Library")
-!MESSAGE "TSRM - Win32 Release_TS" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "TSRM - Win32 Debug_TS"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "TSRM___Win32_Debug_TS"
-# PROP BASE Intermediate_Dir "TSRM___Win32_Debug_TS"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_TS"
-# PROP Intermediate_Dir "Debug_TS"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "C:\Projects\TSRM" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /D "_DEBUG" /D "TSRM_EXPORTS" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x40d /d "_DEBUG"
-# ADD RSC /l 0x40d /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "TSRM - Win32 Release_TS"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "TSRM___Win32_Release_TS"
-# PROP BASE Intermediate_Dir "TSRM___Win32_Release_TS"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_TS"
-# PROP Intermediate_Dir "Release_TS"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "TSRM_EXPORTS" /YX /FD /c
-# ADD BASE RSC /l 0x40d /d "NDEBUG"
-# ADD RSC /l 0x40d /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "TSRM - Win32 Debug_TS"
-# Name "TSRM - Win32 Release_TS"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\TSRM.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\TSRM.h
-# End Source File
-# End Group
-# End Target
-# End Project
View
110 TSRM/TSRM.h
@@ -1,110 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | Thread Safe Resource Manager |
- +----------------------------------------------------------------------+
- | Copyright (c) 1998, 1999 Zeev Suraski |
- +----------------------------------------------------------------------+
- | This source file is subject to the Zend license, that is bundled |
- | with this package in the file LICENSE. If you did not receive a |
- | copy of the Zend license, please mail us at zend@zend.com so we can |
- | send you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Zeev Suraski <zeev@zend.com> |
- +----------------------------------------------------------------------+
-*/
-
-
-#ifndef _TSRM_H
-#define _TSRM_H
-
-#ifdef HAVE_CONFIG_H
-# undef PACKAGE
-# undef VERSION
-# include "tsrm_config.h"
-# undef PACKAGE
-# undef VERSION
-#endif
-
-#if WIN32||WINNT
-# include <windows.h>
-#elif defined(GNUPTH)
-# include <pth.h>
-#elif defined(PTHREADS)
-# include <pthread.h>
-#endif
-
-typedef int ts_rsrc_id;
-
-#if WIN32||WINNT
-# ifdef TSRM_EXPORTS
-# define TSRM_API __declspec(dllexport)
-# else
-# define TSRM_API __declspec(dllimport)
-# endif
-#else
-# define TSRM_API
-#endif
-
-
-/* Define THREAD_T and MUTEX_T */
-#if defined(WIN32)
-# define THREAD_T DWORD
-# define MUTEX_T void *
-#elif defined(GNUPTH)
-# define THREAD_T pth_attr_t
-# define MUTEX_T pth_mutex_t *
-#elif defined(PTHREADS)
-# define THREAD_T pthread_t
-# define MUTEX_T pthread_mutex_t *
-#elif defined(NSAPI)
-# define THREAD_T SYS_THREAD
-# define MUTEX_T CRITICAL
-#elif defined(PI3WEB)
-# define THREAD_T PIThread *
-# define MUTEX_T PISync *
-#endif
-
-typedef void (*ts_allocate_ctor)(void *);
-typedef void (*ts_allocate_dtor)(void *);
-
-#define THREAD_HASH_OF(thr,ts) (unsigned long)thr%(unsigned long)ts
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* startup/shutdown */
-TSRM_API int tsrm_startup(int expected_threads, int expected_resources, int debug_status);
-TSRM_API void tsrm_shutdown(void);
-
-/* allocates a new thread-safe-resource id */
-TSRM_API ts_rsrc_id ts_allocate_id(size_t size, ts_allocate_ctor ctor, ts_allocate_dtor dtor);
-
-/* fetches the requested resource for the current thr