Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

This commit was manufactured by cvs2svn to create tag

'BEFORE_PHP4_APACHE_MODULE_CHANGE'.
  • Loading branch information...
commit bce48107d369a7fb016e75af9ca7ce8358778154 1 parent 58a0ae7
SVN Migration authored

Showing 64 changed files with 0 additions and 18,505 deletions. Show diff stats Hide diff stats

  1. +0 4 TSRM/Makefile.am
  2. +0 392 TSRM/TSRM.c
  3. +0 100 TSRM/TSRM.dsp
  4. +0 97 TSRM/TSRM.h
  5. +0 7 TSRM/acconfig.h
  6. +0 24 TSRM/buildconf
  7. +0 24 TSRM/configure.in
  8. +0 186 Zend/FlexLexer.h
  9. +0 37 Zend/LICENSE
  10. +0 26 Zend/Makefile.am
  11. +0 111 Zend/ZEND_CHANGES
  12. +0 258 Zend/ZendCore.dep
  13. +0 50 Zend/acconfig.h
  14. +0 20 Zend/acinclude.m4
  15. +0 24 Zend/buildconf
  16. +0 39 Zend/config.unix.h
  17. +0 38 Zend/config.w32.h
  18. +0 146 Zend/configure.in
  19. +0 1,541 Zend/flex.skl
  20. +0 363 Zend/libzend.dsp
  21. +0 363 Zend/libzendts.dsp
  22. +0 655 Zend/zend-parser.y
  23. +0 48 Zend/zend-scanner.h
  24. +0 1,465 Zend/zend-scanner.l
  25. +0 360 Zend/zend.c
  26. +0 225 Zend/zend.h
  27. BIN  Zend/zend.ico
  28. +0 795 Zend/zend_API.c
  29. +0 104 Zend/zend_API.h
  30. +0 550 Zend/zend_alloc.c
  31. +0 123 Zend/zend_alloc.h
  32. +0 1,910 Zend/zend_compile.c
  33. +0 534 Zend/zend_compile.h
  34. +0 241 Zend/zend_constants.c
  35. +0 55 Zend/zend_constants.h
  36. +0 33 Zend/zend_errors.h
  37. +0 1,906 Zend/zend_execute.c
  38. +0 71 Zend/zend_execute.h
  39. +0 480 Zend/zend_execute_API.c
  40. +0 149 Zend/zend_extensions.c
  41. +0 98 Zend/zend_extensions.h
  42. +0 231 Zend/zend_globals.h
  43. +0 1,163 Zend/zend_hash.c
  44. +0 153 Zend/zend_hash.h
  45. +0 163 Zend/zend_highlight.c
  46. +0 45 Zend/zend_highlight.h
  47. +0 147 Zend/zend_indent.c
  48. +0 22 Zend/zend_indent.h
  49. +0 221 Zend/zend_list.c
  50. +0 62 Zend/zend_list.h
  51. +0 213 Zend/zend_llist.c
  52. +0 55 Zend/zend_llist.h
  53. +0 53 Zend/zend_modules.h
  54. +0 392 Zend/zend_opcode.c
  55. +0 1,342 Zend/zend_operators.c
  56. +0 68 Zend/zend_operators.h
  57. +0 74 Zend/zend_ptr_stack.c
  58. +0 37 Zend/zend_ptr_stack.h
  59. +0 36 Zend/zend_sprintf.c
  60. +0 114 Zend/zend_stack.c
  61. +0 39 Zend/zend_stack.h
  62. +0 167 Zend/zend_variables.c
  63. +0 38 Zend/zend_variables.h
  64. +0 18 ext/pcre/config0.m4
4 TSRM/Makefile.am
... ... @@ -1,4 +0,0 @@
1   -## process this file with automake to produce Makefile.am
2   -AUTOMAKE_OPTIONS=foreign
3   -lib_LIBRARIES=libtsrm.a
4   -libtsrm_a_SOURCES = TSRM.c
392 TSRM/TSRM.c
... ... @@ -1,392 +0,0 @@
1   -/*
2   - +----------------------------------------------------------------------+
3   - | Thread Safe Resource Manager |
4   - +----------------------------------------------------------------------+
5   - | Copyright (c) 1998, 1999 Zeev Suraski |
6   - +----------------------------------------------------------------------+
7   - | This source file is subject to the Zend license, that is bundled |
8   - | with this package in the file LICENSE. If you did not receive a |
9   - | copy of the Zend license, please mail us at zend@zend.com so we can |
10   - | send you a copy immediately. |
11   - +----------------------------------------------------------------------+
12   - | Author: Zeev Suraski <zeev@zend.com> |
13   - +----------------------------------------------------------------------+
14   -*/
15   -
16   -
17   -#include "TSRM.h"
18   -#include <stdio.h>
19   -#include <stdlib.h>
20   -
21   -#if HAVE_STDARG_H
22   -#include <stdarg.h>
23   -#endif
24   -
25   -typedef struct _tsrm_tls_entry tsrm_tls_entry;
26   -
27   -struct _tsrm_tls_entry {
28   - void **storage;
29   - int count;
30   - THREAD_T thread_id;
31   - tsrm_tls_entry *next;
32   -};
33   -
34   -
35   -typedef struct {
36   - size_t size;
37   - void (*ctor)(void *resource);
38   - void (*dtor)(void *resource);
39   -} tsrm_resource_type;
40   -
41   -
42   -/* The memory manager table */
43   -static tsrm_tls_entry **tsrm_tls_table;
44   -static int tsrm_tls_table_size;
45   -static ts_rsrc_id id_count;
46   -
47   -/* The resource sizes table */
48   -static tsrm_resource_type *resource_types_table;
49   -static int resource_types_table_size;
50   -
51   -
52   -static MUTEX_T tsmm_mutex; /* thread-safe memory manager mutex */
53   -
54   -/* Debug support */
55   -static int tsrm_debug(const char *format, ...);
56   -static int tsrm_debug_status;
57   -
58   -
59   -/* Startup TSRM (call once for the entire process) */
60   -TSRM_FUNC int tsrm_startup(int expected_threads, int expected_resources, int debug_status)
61   -{
62   - tsrm_tls_table_size = expected_threads;
63   - tsrm_tls_table = (tsrm_tls_entry **) calloc(tsrm_tls_table_size, sizeof(tsrm_tls_entry *));
64   - if (!tsrm_tls_table) {
65   - return 0;
66   - }
67   - id_count=0;
68   -
69   - resource_types_table_size = expected_resources;
70   - resource_types_table = (tsrm_resource_type *) calloc(resource_types_table_size, sizeof(tsrm_resource_type));
71   - if (!resource_types_table) {
72   - free(tsrm_tls_table);
73   - return 0;
74   - }
75   -
76   - tsmm_mutex = tsrm_mutex_alloc();
77   -
78   - tsrm_debug_status = debug_status;
79   -
80   - tsrm_debug("Started up TSRM, %d expected threads, %d expected resources\n", expected_threads, expected_resources);
81   - return 1;
82   -}
83   -
84   -
85   -/* Shutdown TSRM (call once for the entire process) */
86   -TSRM_FUNC void tsrm_shutdown()
87   -{
88   - int i;
89   -
90   - if (tsrm_tls_table) {
91   - for (i=0; i<tsrm_tls_table_size; i++) {
92   - tsrm_tls_entry *p = tsrm_tls_table[i], *next_p;
93   -
94   - while (p) {
95   - int j;
96   -
97   - next_p = p->next;
98   - for (j=0; j<id_count; j++) {
99   - free(p->storage[j]);
100   - }
101   - free(p->storage);
102   - free(p);
103   - p = next_p;
104   - }
105   - }
106   - free(tsrm_tls_table);
107   - }
108   - if (resource_types_table) {
109   - free(resource_types_table);
110   - }
111   - tsrm_mutex_free(tsmm_mutex);
112   - tsrm_debug("Shutdown TSRM\n");
113   -}
114   -
115   -
116   -/* allocates a new thread-safe-resource id */
117   -TSRM_FUNC ts_rsrc_id ts_allocate_id(size_t size, void (*ctor)(void *resource), void (*dtor)(void *resource))
118   -{
119   - ts_rsrc_id new_id;
120   - int i;
121   -
122   - tsrm_debug("Obtaining a new resource id, %d bytes\n", size);
123   -
124   - tsrm_mutex_lock(tsmm_mutex);
125   -
126   - /* obtain a resource id */
127   - new_id = id_count++;
128   - tsrm_debug("Obtained resource id %d\n", new_id);
129   -
130   - /* store the new resource type in the resource sizes table */
131   - if (resource_types_table_size < id_count) {
132   - resource_types_table = (tsrm_resource_type *) realloc(resource_types_table, sizeof(tsrm_resource_type)*id_count);
133   - if (!resource_types_table) {
134   - return -1;
135   - }
136   - resource_types_table_size = id_count;
137   - }
138   - resource_types_table[new_id].size = size;
139   - resource_types_table[new_id].ctor = ctor;
140   - resource_types_table[new_id].dtor = dtor;
141   -
142   - /* enlarge the arrays for the already active threads */
143   - for (i=0; i<tsrm_tls_table_size; i++) {
144   - tsrm_tls_entry *p = tsrm_tls_table[i];
145   -
146   - while (p) {
147   - if (p->count < id_count) {
148   - int j;
149   -
150   - p->storage = (void *) realloc(p->storage, sizeof(void *)*id_count);
151   - for (j=p->count; j<id_count; j++) {
152   - p->storage[j] = (void *) malloc(resource_types_table[j].size);
153   - if (resource_types_table[j].ctor) {
154   - resource_types_table[j].ctor(p->storage[j]);
155   - }
156   - }
157   - p->count = id_count;
158   - }
159   - p = p->next;
160   - }
161   - }
162   - tsrm_mutex_unlock(tsmm_mutex);
163   -
164   - tsrm_debug("Successfully allocated new resource id %d\n", new_id);
165   - return new_id;
166   -}
167   -
168   -
169   -static void allocate_new_resource(tsrm_tls_entry **thread_resources_ptr, THREAD_T thread_id)
170   -{
171   - int i;
172   -
173   - (*thread_resources_ptr) = (tsrm_tls_entry *) malloc(sizeof(tsrm_tls_entry));
174   - (*thread_resources_ptr)->storage = (void **) malloc(sizeof(void *)*id_count);
175   - (*thread_resources_ptr)->count = id_count;
176   - (*thread_resources_ptr)->thread_id = thread_id;
177   - (*thread_resources_ptr)->next = NULL;
178   - for (i=0; i<id_count; i++) {
179   - (*thread_resources_ptr)->storage[i] = (void *) malloc(resource_types_table[i].size);
180   - if (resource_types_table[i].ctor) {
181   - resource_types_table[i].ctor((*thread_resources_ptr)->storage[i]);
182   - }
183   - }
184   -}
185   -
186   -
187   -/* fetches the requested resource for the current thread */
188   -void *ts_resource(ts_rsrc_id id)
189   -{
190   - THREAD_T thread_id = tsrm_thread_id();
191   - int hash_value;
192   - tsrm_tls_entry *thread_resources;
193   - void *resource;
194   -
195   - tsrm_debug("Fetching resource id %d for thread %ld\n", id, (long) thread_id);
196   - tsrm_mutex_lock(tsmm_mutex);
197   -
198   - hash_value = THREAD_HASH_OF(thread_id, tsrm_tls_table_size);
199   - thread_resources = tsrm_tls_table[hash_value];
200   -
201   - if (!thread_resources) {
202   - allocate_new_resource(&tsrm_tls_table[hash_value], thread_id);
203   - thread_resources = tsrm_tls_table[hash_value];
204   - } else {
205   - do {
206   - if (thread_resources->thread_id == thread_id) {
207   - break;
208   - }
209   - if (thread_resources->next) {
210   - thread_resources = thread_resources->next;
211   - } else {
212   - allocate_new_resource(&thread_resources->next, thread_id);
213   - thread_resources = thread_resources->next;
214   - break;
215   - }
216   - } while (thread_resources);
217   - }
218   -
219   - resource = thread_resources->storage[id];
220   -
221   - tsrm_mutex_unlock(tsmm_mutex);
222   -
223   - tsrm_debug("Successfully fetched resource id %d for thread id %ld - %x\n", id, (long) thread_id, (long) resource);
224   - return resource;
225   -}
226   -
227   -
228   -/* frees all resources allocated for the current thread */
229   -void ts_free_thread()
230   -{
231   - THREAD_T thread_id = tsrm_thread_id();
232   - int hash_value;
233   - tsrm_tls_entry *thread_resources;
234   - tsrm_tls_entry *last=NULL;
235   -
236   - tsrm_mutex_lock(tsmm_mutex);
237   - hash_value = THREAD_HASH_OF(thread_id, tsrm_tls_table_size);
238   - thread_resources = tsrm_tls_table[hash_value];
239   -
240   - while (thread_resources) {
241   - if (thread_resources->thread_id == thread_id) {
242   - int i;
243   -
244   - for (i=0; i<thread_resources->count; i++) {
245   - if (resource_types_table[i].dtor) {
246   - resource_types_table[i].dtor(thread_resources->storage[i]);
247   - }
248   - free(thread_resources->storage[i]);
249   - }
250   - free(thread_resources->storage);
251   - if (last) {
252   - last->next = thread_resources->next;
253   - } else {
254   - tsrm_tls_table[hash_value]=NULL;
255   - }
256   - free(thread_resources);
257   - break;
258   - }
259   - if (thread_resources->next) {
260   - last = thread_resources;
261   - }
262   - thread_resources = thread_resources->next;
263   - }
264   - tsrm_mutex_unlock(tsmm_mutex);
265   -}
266   -
267   -
268   -/* deallocates all occurrences of a given id */
269   -void ts_free_id(ts_rsrc_id id)
270   -{
271   -}
272   -
273   -
274   -
275   -
276   -/*
277   - * Utility Functions
278   - */
279   -
280   -/* Obtain the current thread id */
281   -TSRM_FUNC THREAD_T tsrm_thread_id(void)
282   -{
283   -#ifdef WIN32
284   - return GetCurrentThreadId();
285   -#elif defined(PTHREADS)
286   - return pthread_self();
287   -#elif defined(NSAPI)
288   - return systhread_current();
289   -#elif defined(PI3WEB)
290   - return PIThread_getCurrent();
291   -#endif
292   -}
293   -
294   -
295   -/* Allocate a mutex */
296   -TSRM_FUNC MUTEX_T tsrm_mutex_alloc( void )
297   -{
298   - MUTEX_T mutexp;
299   -
300   -#ifdef WIN32
301   - mutexp = CreateMutex(NULL,FALSE,NULL);
302   -#elif defined(PTHREADS)
303   - mutexp = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t));
304   - pthread_mutex_init(mutexp,NULL);
305   -#elif defined(NSAPI)
306   - mutexp = crit_init();
307   -#elif defined(PI3WEB)
308   - mutexp = PIPlatform_allocLocalMutex();
309   -#endif
310   -#ifdef THR_DEBUG
311   - printf("Mutex created thread: %d\n",mythreadid());
312   -#endif
313   - return( mutexp );
314   -}
315   -
316   -
317   -/* Free a mutex */
318   -TSRM_FUNC void tsrm_mutex_free( MUTEX_T mutexp )
319   -{
320   - if (mutexp) {
321   -#ifdef WIN32
322   - CloseHandle(mutexp);
323   -#elif defined(PTHREADS)
324   - free(mutexp);
325   -#elif defined(NSAPI)
326   - crit_terminate(mutexp);
327   -#elif defined(PI3WEB)
328   - PISync_delete(mutexp)
329   -#endif
330   - }
331   -#ifdef THR_DEBUG
332   - printf("Mutex freed thread: %d\n",mythreadid());
333   -#endif
334   -}
335   -
336   -
337   -/* Lock a mutex */
338   -TSRM_FUNC int tsrm_mutex_lock( MUTEX_T mutexp )
339   -{
340   - //tsrm_debug("Mutex locked thread: %ld\n",tsrm_thread_id());
341   -#ifdef WIN32
342   - return WaitForSingleObject(mutexp,1000);
343   -#elif defined(PTHREADS)
344   - return pthread_mutex_lock(mutexp);
345   -#elif defined(NSAPI)
346   - return crit_enter(mutexp);
347   -#elif defined(PI3WEB)
348   - return PISync_lock(mutexp);
349   -#endif
350   -}
351   -
352   -
353   -/* Unlock a mutex */
354   -TSRM_FUNC int tsrm_mutex_unlock( MUTEX_T mutexp )
355   -{
356   - //tsrm_debug("Mutex unlocked thread: %ld\n",tsrm_thread_id());
357   -#ifdef WIN32
358   - return ReleaseMutex(mutexp);
359   -#elif defined(PTHREADS)
360   - return pthread_mutex_unlock(mutexp);
361   -#elif defined(NSAPI)
362   - return crit_exit(mutexp);
363   -#elif defined(PI3WEB)
364   - return PISync_unlock(mutexp);
365   -#endif
366   -}
367   -
368   -
369   -/*
370   - * Debug support
371   - */
372   -
373   -static int tsrm_debug(const char *format, ...)
374   -{
375   - if (tsrm_debug_status) {
376   - va_list args;
377   - int size;
378   -
379   - va_start(args, format);
380   - size = vprintf(format, args);
381   - va_end(args);
382   - return size;
383   - } else {
384   - return 0;
385   - }
386   -}
387   -
388   -
389   -void tsrm_debug_set(int status)
390   -{
391   - tsrm_debug_status = status;
392   -}
100 TSRM/TSRM.dsp
... ... @@ -1,100 +0,0 @@
1   -# Microsoft Developer Studio Project File - Name="TSRM" - Package Owner=<4>
2   -# Microsoft Developer Studio Generated Build File, Format Version 6.00
3   -# ** DO NOT EDIT **
4   -
5   -# TARGTYPE "Win32 (x86) Static Library" 0x0104
6   -
7   -CFG=TSRM - Win32 Debug_TS
8   -!MESSAGE This is not a valid makefile. To build this project using NMAKE,
9   -!MESSAGE use the Export Makefile command and run
10   -!MESSAGE
11   -!MESSAGE NMAKE /f "TSRM.mak".
12   -!MESSAGE
13   -!MESSAGE You can specify a configuration when running NMAKE
14   -!MESSAGE by defining the macro CFG on the command line. For example:
15   -!MESSAGE
16   -!MESSAGE NMAKE /f "TSRM.mak" CFG="TSRM - Win32 Debug_TS"
17   -!MESSAGE
18   -!MESSAGE Possible choices for configuration are:
19   -!MESSAGE
20   -!MESSAGE "TSRM - Win32 Debug_TS" (based on "Win32 (x86) Static Library")
21   -!MESSAGE "TSRM - Win32 Release_TS" (based on "Win32 (x86) Static Library")
22   -!MESSAGE
23   -
24   -# Begin Project
25   -# PROP AllowPerConfigDependencies 0
26   -# PROP Scc_ProjName ""
27   -# PROP Scc_LocalPath ""
28   -CPP=cl.exe
29   -RSC=rc.exe
30   -
31   -!IF "$(CFG)" == "TSRM - Win32 Debug_TS"
32   -
33   -# PROP BASE Use_MFC 0
34   -# PROP BASE Use_Debug_Libraries 1
35   -# PROP BASE Output_Dir "TSRM___Win32_Debug_TS"
36   -# PROP BASE Intermediate_Dir "TSRM___Win32_Debug_TS"
37   -# PROP BASE Target_Dir ""
38   -# PROP Use_MFC 0
39   -# PROP Use_Debug_Libraries 1
40   -# PROP Output_Dir "Debug_TS"
41   -# PROP Intermediate_Dir "Debug_TS"
42   -# PROP Target_Dir ""
43   -# 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
44   -# 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
45   -# ADD BASE RSC /l 0x40d /d "_DEBUG"
46   -# ADD RSC /l 0x40d /d "_DEBUG"
47   -BSC32=bscmake.exe
48   -# ADD BASE BSC32 /nologo
49   -# ADD BSC32 /nologo
50   -LIB32=link.exe -lib
51   -# ADD BASE LIB32 /nologo
52   -# ADD LIB32 /nologo
53   -
54   -!ELSEIF "$(CFG)" == "TSRM - Win32 Release_TS"
55   -
56   -# PROP BASE Use_MFC 0
57   -# PROP BASE Use_Debug_Libraries 0
58   -# PROP BASE Output_Dir "TSRM___Win32_Release_TS"
59   -# PROP BASE Intermediate_Dir "TSRM___Win32_Release_TS"
60   -# PROP BASE Target_Dir ""
61   -# PROP Use_MFC 0
62   -# PROP Use_Debug_Libraries 0
63   -# PROP Output_Dir "Release_TS"
64   -# PROP Intermediate_Dir "Release_TS"
65   -# PROP Target_Dir ""
66   -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
67   -# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "TSRM_EXPORTS" /YX /FD /c
68   -# ADD BASE RSC /l 0x40d /d "NDEBUG"
69   -# ADD RSC /l 0x40d /d "NDEBUG"
70   -BSC32=bscmake.exe
71   -# ADD BASE BSC32 /nologo
72   -# ADD BSC32 /nologo
73   -LIB32=link.exe -lib
74   -# ADD BASE LIB32 /nologo
75   -# ADD LIB32 /nologo
76   -
77   -!ENDIF
78   -
79   -# Begin Target
80   -
81   -# Name "TSRM - Win32 Debug_TS"
82   -# Name "TSRM - Win32 Release_TS"
83   -# Begin Group "Source Files"
84   -
85   -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
86   -# Begin Source File
87   -
88   -SOURCE=.\TSRM.c
89   -# End Source File
90   -# End Group
91   -# Begin Group "Header Files"
92   -
93   -# PROP Default_Filter "h;hpp;hxx;hm;inl"
94   -# Begin Source File
95   -
96   -SOURCE=.\TSRM.h
97   -# End Source File
98   -# End Group
99   -# End Target
100   -# End Project
97 TSRM/TSRM.h
... ... @@ -1,97 +0,0 @@
1   -/*
2   - +----------------------------------------------------------------------+
3   - | Thread Safe Resource Manager |
4   - +----------------------------------------------------------------------+
5   - | Copyright (c) 1998, 1999 Zeev Suraski |
6   - +----------------------------------------------------------------------+
7   - | This source file is subject to the Zend license, that is bundled |
8   - | with this package in the file LICENSE. If you did not receive a |
9   - | copy of the Zend license, please mail us at zend@zend.com so we can |
10   - | send you a copy immediately. |
11   - +----------------------------------------------------------------------+
12   - | Author: Zeev Suraski <zeev@zend.com> |
13   - +----------------------------------------------------------------------+
14   -*/
15   -
16   -
17   -#ifndef _TSRM_H
18   -#define _TSRM_H
19   -
20   -#ifdef HAVE_CONFIG_H
21   -# include "tsrm_config.h"
22   -#endif
23   -
24   -#if WIN32||WINNT
25   -# include <windows.h>
26   -#elif defined(PTHREADS)
27   -# include <pthread.h>
28   -#endif
29   -
30   -typedef int ts_rsrc_id;
31   -
32   -#if WIN32||WINNT
33   -# ifdef TSRM_EXPORTS
34   -# define TSRM_API __declspec(dllexport)
35   -# else
36   -# define TSRM_API __declspec(dllimport)
37   -# endif
38   -#else
39   -# define TSRM_API
40   -#endif
41   -
42   -
43   -/* Define TSRM_FUNC */
44   -#ifdef __cplusplus
45   -#define TSRM_FUNC extern "C" TSRM_API
46   -#else
47   -#define TSRM_FUNC TSRM_API
48   -#endif
49   -
50   -
51   -/* Define THREAD_T and MUTEX_T */
52   -#if defined(WIN32)
53   -# define THREAD_T DWORD
54   -# define MUTEX_T void *
55   -#elif defined(PTHREADS)
56   -# define THREAD_T pthread_t
57   -# define MUTEX_T pthread_mutex_t *
58   -#elif defined(NSAPI)
59   -# define THREAD_T SYS_THREAD
60   -# define MUTEX_T CRITICAL
61   -#elif defined(PI3WEB)
62   -# define THREAD_T PIThread *
63   -# define MUTEX_T PISync *
64   -#endif
65   -
66   -
67   -#define THREAD_HASH_OF(thr,ts) thr%ts
68   -
69   -
70   -/* startup/shutdown */
71   -TSRM_FUNC int tsrm_startup(int expected_threads, int expected_resources, int debug_status);
72   -TSRM_FUNC void tsrm_shutdown();
73   -
74   -/* allocates a new thread-safe-resource id */
75   -TSRM_FUNC ts_rsrc_id ts_allocate_id(size_t size, void (*ctor)(void *resource), void (*dtor)(void *resource));
76   -
77   -/* fetches the requested resource for the current thread */
78   -TSRM_FUNC void *ts_resource(ts_rsrc_id id);
79   -
80   -/* frees all resources allocated for the current thread */
81   -TSRM_FUNC void ts_free_thread();
82   -
83   -/* deallocates all occurrences of a given id */
84   -TSRM_FUNC void ts_free_id(ts_rsrc_id id);
85   -
86   -
87   -/* Debug support */
88   -TSRM_FUNC void tsrm_debug_set(int status);
89   -
90   -/* utility functions */
91   -TSRM_FUNC THREAD_T tsrm_thread_id(void);
92   -TSRM_FUNC MUTEX_T tsrm_mutex_alloc(void);
93   -TSRM_FUNC void tsrm_mutex_free(MUTEX_T mutexp);
94   -TSRM_FUNC int tsrm_mutex_lock(MUTEX_T mutexp);
95   -TSRM_FUNC int tsrm_mutex_unlock(MUTEX_T mutexp);
96   -
97   -#endif /* _TSRM_H */
7 TSRM/acconfig.h
... ... @@ -1,7 +0,0 @@
1   -#undef PTHREADS
2   -
3   -#ifdef DEFINE_TSRM_VERSION
4   -# undef PACKAGE
5   -# undef VERSION
6   -#endif
7   -
24 TSRM/buildconf
... ... @@ -1,24 +0,0 @@
1   -#!/bin/sh
2   -
3   -mv aclocal.m4 aclocal.m4.old 2>/dev/null
4   -aclocal
5   -if cmp aclocal.m4.old aclocal.m4 > /dev/null 2>&1; then
6   - echo keeping ${1}aclocal.m4
7   - mv aclocal.m4.old aclocal.m4
8   -else
9   - echo created or modified ${1}aclocal.m4
10   -fi
11   -
12   -autoheader
13   -
14   -automake --add-missing --include-deps
15   -
16   -mv configure configure.old 2>/dev/null
17   -autoconf
18   -if cmp configure.old configure > /dev/null 2>&1; then
19   - echo keeping ${1}configure
20   - mv configure.old configure
21   -else
22   - echo created or modified ${1}configure
23   -fi
24   -
24 TSRM/configure.in
... ... @@ -1,24 +0,0 @@
1   -dnl $Id$
2   -dnl
3   -dnl Minimalistic configure.in for TSRM.
4   -dnl
5   -
6   -AC_INIT(TSRM.c)
7   -AM_INIT_AUTOMAKE(TSRM, 1.0)
8   -AM_CONFIG_HEADER(tsrm_config.h)
9   -
10   -AC_PROG_CC
11   -AC_PROG_CC_C_O
12   -AC_PROG_RANLIB
13   -
14   -AC_CHECK_LIB(pthread, pthread_create, [
15   - AC_DEFINE(PTHREADS)
16   - LIBS="$LIBS -lpthread"
17   -],[
18   - AC_MSG_ERROR(You need pthreads to build TSRM.)
19   -])
20   -
21   -AC_CHECK_HEADERS(stdarg.h)
22   -
23   -AC_OUTPUT(Makefile)
24   -
186 Zend/FlexLexer.h
... ... @@ -1,186 +0,0 @@
1   -// $Header$
2   -
3   -// FlexLexer.h -- define interfaces for lexical analyzer classes generated
4   -// by flex
5   -
6   -// Copyright (c) 1993 The Regents of the University of California.
7   -// All rights reserved.
8   -//
9   -// This code is derived from software contributed to Berkeley by
10   -// Kent Williams and Tom Epperly.
11   -//
12   -// Redistribution and use in source and binary forms with or without
13   -// modification are permitted provided that: (1) source distributions retain
14   -// this entire copyright notice and comment, and (2) distributions including
15   -// binaries display the following acknowledgement: ``This product includes
16   -// software developed by the University of California, Berkeley and its
17   -// contributors'' in the documentation or other materials provided with the
18   -// distribution and in all advertising materials mentioning features or use
19   -// of this software. Neither the name of the University nor the names of
20   -// its contributors may be used to endorse or promote products derived from
21   -// this software without specific prior written permission.
22   -
23   -// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
24   -// WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
25   -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
26   -
27   -// This file defines FlexLexer, an abstract class which specifies the
28   -// external interface provided to flex C++ lexer objects, and yyFlexLexer,
29   -// which defines a particular lexer class.
30   -//
31   -// If you want to create multiple lexer classes, you use the -P flag
32   -// to rename each yyFlexLexer to some other xxFlexLexer. You then
33   -// include <FlexLexer.h> in your other sources once per lexer class:
34   -//
35   -// #undef yyFlexLexer
36   -// #define yyFlexLexer xxFlexLexer
37   -// #include <FlexLexer.h>
38   -//
39   -// #undef yyFlexLexer
40   -// #define yyFlexLexer zzFlexLexer
41   -// #include <FlexLexer.h>
42   -// ...
43   -
44   -#ifndef __FLEX_LEXER_H
45   -// Never included before - need to define base class.
46   -#define __FLEX_LEXER_H
47   -#include <iostream.h>
48   -
49   -extern "C++" {
50   -
51   -struct yy_buffer_state;
52   -typedef int yy_state_type;
53   -
54   -class FlexLexer {
55   -public:
56   - virtual ~FlexLexer() { }
57   -
58   - const char* YYText() { return yytext; }
59   - int YYLeng() { return yyleng; }
60   -
61   - virtual void
62   - yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0;
63   - virtual struct yy_buffer_state*
64   - yy_create_buffer( istream* s, int size ) = 0;
65   - virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0;
66   - virtual void yyrestart( istream* s ) = 0;
67   -
68   - virtual int yylex() = 0;
69   -
70   - // Call yylex with new input/output sources.
71   - int yylex( istream* new_in, ostream* new_out = 0 )
72   - {
73   - switch_streams( new_in, new_out );
74   - return yylex();
75   - }
76   -
77   - // Switch to new input/output streams. A nil stream pointer
78   - // indicates "keep the current one".
79   - virtual void switch_streams( istream* new_in = 0,
80   - ostream* new_out = 0 ) = 0;
81   -
82   - int lineno() const { return yylineno; }
83   -
84   - int debug() const { return yy_flex_debug; }
85   - void set_debug( int flag ) { yy_flex_debug = flag; }
86   -
87   -protected:
88   - char* yytext;
89   - int yyleng;
90   - int yylineno; // only maintained if you use %option yylineno
91   - int yy_flex_debug; // only has effect with -d or "%option debug"
92   -};
93   -
94   -}
95   -#endif
96   -
97   -#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce)
98   -// Either this is the first time through (yyFlexLexerOnce not defined),
99   -// or this is a repeated include to define a different flavor of
100   -// yyFlexLexer, as discussed in the flex man page.
101   -#define yyFlexLexerOnce
102   -
103   -class yyFlexLexer : public FlexLexer {
104   -public:
105   - // arg_yyin and arg_yyout default to the cin and cout, but we
106   - // only make that assignment when initializing in yylex().
107   - yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 );
108   -
109   - virtual ~yyFlexLexer();
110   -
111   - void yy_switch_to_buffer( struct yy_buffer_state* new_buffer );
112   - struct yy_buffer_state* yy_create_buffer( istream* s, int size );
113   - void yy_delete_buffer( struct yy_buffer_state* b );
114   - void yyrestart( istream* s );
115   -
116   - virtual int yylex();
117   - virtual void switch_streams( istream* new_in, ostream* new_out );
118   -
119   -protected:
120   - virtual int LexerInput( char* buf, int max_size );
121   - virtual void LexerOutput( const char* buf, int size );
122   - virtual void LexerError( const char* msg );
123   -
124   - void yyunput( int c, char* buf_ptr );
125   - int yyinput();
126   -
127   - void yy_load_buffer_state();
128   - void yy_init_buffer( struct yy_buffer_state* b, istream* s );
129   - void yy_flush_buffer( struct yy_buffer_state* b );
130   -
131   - int yy_start_stack_ptr;
132   - int yy_start_stack_depth;
133   - int* yy_start_stack;
134   -
135   - void yy_push_state( int new_state );
136   - void yy_pop_state();
137   - int yy_top_state();
138   -
139   - yy_state_type yy_get_previous_state();
140   - yy_state_type yy_try_NUL_trans( yy_state_type current_state );
141   - int yy_get_next_buffer();
142   -
143   - istream* yyin; // input source for default LexerInput
144   - ostream* yyout; // output sink for default LexerOutput
145   -
146   - struct yy_buffer_state* yy_current_buffer;
147   -
148   - // yy_hold_char holds the character lost when yytext is formed.
149   - char yy_hold_char;
150   -
151   - // Number of characters read into yy_ch_buf.
152   - int yy_n_chars;
153   -
154   - // Points to current character in buffer.
155   - char* yy_c_buf_p;
156   -
157   - int yy_init; // whether we need to initialize
158   - int yy_start; // start state number
159   -
160   - // Flag which is used to allow yywrap()'s to do buffer switches
161   - // instead of setting up a fresh yyin. A bit of a hack ...
162   - int yy_did_buffer_switch_on_eof;
163   -
164   - // The following are not always needed, but may be depending
165   - // on use of certain flex features (like REJECT or yymore()).
166   -
167   - yy_state_type yy_last_accepting_state;
168   - char* yy_last_accepting_cpos;
169   -
170   - yy_state_type* yy_state_buf;
171   - yy_state_type* yy_state_ptr;
172   -
173   - char* yy_full_match;
174   - int* yy_full_state;
175   - int yy_full_lp;
176   -
177   - int yy_lp;
178   - int yy_looking_for_trail_begin;
179   -
180   - int yy_more_flag;
181   - int yy_more_len;
182   - int yy_more_offset;
183   - int yy_prev_more_offset;
184   -};
185   -
186   -#endif
37 Zend/LICENSE
... ... @@ -1,37 +0,0 @@
1   -Zend Temporary License
2   -======================
3   -
4   -This is a temporary license, that is in effect until the final Zend license
5   -is available.
6   -
7   -* The final license will include the ability to distribute Zend freely,
8   - as a part of PHP (in both compiled and source code formats). It may
9   - (and probably will) allow to redistribute Zend under other circumstances
10   - as well, but at the very least, it'll be freely distributed as a part
11   - of PHP.
12   -
13   -* The source code in the Zend engine is the property of Andi Gutmans and
14   - Zeev Suraski. Parts of this code are based on source code taken from
15   - PHP 3.0, which may include several patches and enhancements that weren't
16   - made by us (Andi&Zeev). If you're the author of such a patch and you're
17   - not willing to give up ownership over your patch to us, please contact
18   - us as soon as possible, so we can remove it. We're doing this so that
19   - we'd be eligible to sell the Zend engine for uses other than PHP, most
20   - notably - as an embedded part of possible commercial products that we'd
21   - have.
22   -
23   -* Patches submitted to the Zend CVS automatically fall under this license,
24   - and by submitting them you're implicitly giving up your ownership over
25   - this patch to us.
26   -
27   -* Until further notice, Zend is in a status of a closed beta test. That means
28   - that only people that were explicitly given the right to access the Zend
29   - CVS repository are allowed to use it. If you're reading this file and you
30   - weren't explicitly given the right to access the Zend CVS repository from
31   - either Andi Gutmans or Zeev Suraski - you're not supposed to have it - please
32   - erase the Zend files from your system. When the closed beta period finishes,
33   - the Zend CVS tree will be open for the public (in read-only mode, of course).
34   -
35   -
36   -Any questions regarding Zend or this license should be addressed via Email to
37   -zend@zend.com.
26 Zend/Makefile.am
... ... @@ -1,26 +0,0 @@
1   -## Process this file with automake to produce Makefile.in -*- makefile -*-
2   -AUTOMAKE_OPTIONS=foreign
3   -noinst_LIBRARIES=libzend.a
4   -libzend_a_SOURCES=\
5   - zend-parser.y zend-scanner.l \
6   - zend_alloc.c zend_compile.c zend_constants.c \
7   - zend_execute.c zend_execute_API.c zend_highlight.c zend_llist.c \
8   - zend_opcode.c zend_operators.c zend_ptr_stack.c zend_stack.c \
9   - zend_variables.c zend.c zend_API.c zend_extensions.c zend_hash.c \
10   - zend_list.c zend_indent.c
11   -
12   -# automake isn't too clever about "non-standard" use of lex and yacc
13   -
14   -zend-scanner.c: zend-scanner.l
15   - $(LEX) -Pzend -ozend-scanner.c -i zend-scanner.l
16   -
17   -zend-scanner.cc: zend-scanner.l
18   - $(LEX) -+ -Sflex.skl -Pzend -ozend-scanner.cc -i zend-scanner.l
19   -
20   -zend-parser.h: zend-parser.c
21   -zend-parser.c: zend-parser.y
22   - $(YACC) -p zend -v -d zend-parser.y -o zend-parser.c
23   -
24   -clean:
25   - -rm -f zend-parser.c zend-parser.h zend-scanner.c zend-parser.output
26   -
111 Zend/ZEND_CHANGES
... ... @@ -1,111 +0,0 @@
1   -Improvements
2   -------------
3   -
4   -Zend was designed from the ground up for increased speed,
5   -reduced memory consumption and more reliable execution. We dare
6   -say it meets all of these goals and does so pretty well. Beyond
7   -that, there are several improvements in the language engine
8   -features:
9   -
10   -* References support. $foo = &$a; would make $foo and $a be two
11   - names to the same variable. This works with arrays as well,
12   - on either side; e.g., $foo = &$a[7]; would make $foo and $a[7]
13   - be two names to the same variable. Changing one would change
14   - the other and vice versa.
15   -* Object overloading support. This feature allows various OO
16   - libraries to use the OO notation of PHP to access their
17   - functionality. Right now, no use is made of that feature,
18   - but we'd have a COM module ready by the time PHP 4.0 is released.
19   - A CORBA module would probably follow.
20   -* include() and eval() are now functions, and not statements.
21   - That means they return a value. The default return value from
22   - include() and eval() is 1, so that you can do if (include())
23   - without further coding. The return value may be changed by
24   - returning a value from the global scope of the included file
25   - or the evaluated string. For example, if 'return 7;' is executed
26   - in the global scope of foo.inc, include("foo.inc") would evaluate
27   - to 7.
28   -* Automatic resource deallocation. Several people have been bitten
29   - by the fact that PHP 3.0 had no concept of reference counting.
30   - Zend adds full reference counting for every value in the system,
31   - including resources. As soon as a resource is no longer referenced
32   - from any variable, it is automatically destroyed to save memory
33   - and resources. The most obvious example for the advantage in this
34   - is a loop that has an SQL query inside it, something like
35   - '$result = sql_query(...);'. In PHP 3.0, every iteration resulted
36   - in another SQL result-set allocated in the memory, and all of the
37   - result sets weren't destroyed until the end of the script's execution.
38   - In Zend, as soon as we overwrite an old result set with a new one,
39   - the old result set which is no longer referenced, is destroyed.
40   -* Full support for nesting arrays and objects within each other, in
41   - as many levels as you want.
42   -* Boolean type. true and false are now constants of type boolean.
43   - Comparing any other value to them would convert that value to a
44   - boolean first, and conduct the comparison later. That means, for
45   - example, that 5==true would evaluate to true (in PHP 3.0, true
46   - was nothing but a constant for the integer value of 1, so 5==true
47   - was identical to 5==1, which was false).
48   -* Runtime binding of function names. This complex name has a simple
49   - explanation - you can now call functions before they're declared!
50   -* Added here-docs support.
51   -* Added foreach. Two syntaxes supported:
52   - foreach(array_expr as $val) statement
53   - foreach(array_expr as $key => $val) statement
54   -* A true unset() implementation. A variable or element that is unset(), is now
55   - sent to oblivion in its entirely, no trace remains from it.
56   -* Output buffering support! Use ob_start() to begin output buffering, ob_end_flush()
57   - to end buffering and send out the buffered contents, ob_end_clean() to end buffering
58   - without sending the buffered contents, and ob_get_contents() to retreive the current
59   - contents of the output buffer.
60   - Header information (header(), content type, cookies) are not buffered. By turning
61   - on output buffering, you can effectively send header information all throughout your
62   - file, regardless of whether you've emitted body output or not.
63   -* Full variable reference within quoted strings:
64   - ${expr} - full indirect reference support for scalar variables
65   - {variable} - full variable support
66   - For example:
67   - $foo[5]["bar"] = "foobar";
68   - print "{$foo[5]["bar"]}"; // would print "foobar"
69   -* Ability to call member functions of other classes from within member functions or from
70   - the global scope. You can now, for example, override a parent function with a child function,
71   - and call the parent function from it.
72   -* Runtime information for classes (class name, parent, available functions, etc.).
73   -* Much more efficient syntax highlighter - runs much quicker, performs more reliably, and
74   - generates much tighter HTML.
75   -* A full-featured debugger has been integrated with the language (supports breakpoints,
76   - expression evaluation, step-in/over, function call backtrace, and more).
77   -
78   -
79   -Incompatabilities
80   ------------------
81   -
82   -Zend claims 100% compatability with the engine of PHP 3.0, and is
83   -shamelessly lying about it. Here's why:
84   -
85   -* static variable initializers only accept scalar values
86   - (in PHP 3.0 they accepted any valid expression). The impact
87   - should be somewhere in between void and non existant, since
88   - initializing a static variable with anything but a simple
89   - static value makes no sense at all.
90   -
91   -* The scope of break and continue is local to that of an
92   - include()'d file or an eval()'d string. The impact should
93   - be somewhat smaller of the one above.
94   -
95   -* return statement from a require()'d file no longer works. It
96   - hardly worked in PHP 3.0, so the impact should be fairly small.
97   - If you want this functionality - use include() instead.
98   -
99   -* unset() is no longer a function, but a statement. It was never
100   - documented as a function so the impact should be no bigger than
101   - nada.
102   -
103   -* The following letter combination is not supported within encapsulated
104   - strings: "{$". If you have a string that includes this letter
105   - combination, for example, print "{$somevar"; (which printed the
106   - letter { and the contents of the variable $somevar in PHP 3.0),
107   - it will result in a parse error under Zend. In this case, you
108   - would have to change the code to print "\{$somevar";
109   - This incompatability is due to the full variable reference
110   - within quoted strings feature added in Zend.
111   -
258 Zend/ZendCore.dep
... ... @@ -1,258 +0,0 @@
1   -# Microsoft Developer Studio Generated Dependency File, included by ZendCore.mak
2   -
3   -.\zend_alloc.c : \
4   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
5   - ".\zend_alloc.h"\
6   - ".\zend_compile.h"\
7   - ".\config.w32.h"\
8   - ".\zend_execute.h"\
9   - ".\zend_llist.h"\
10   - ".\zend_ptr_stack.h"\
11   - ".\zend_stack.h"\
12   - ".\zend.h"\
13   - ".\zend_errors.h"\
14   - ".\zend_globals.h"\
15   - ".\zend_hash.h"\
16   -
17   -
18   -.\alloca.c : \
19   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
20   - ".\config.w32.h"\
21   - ".\zend.h"\
22   - ".\zend_errors.h"\
23   - ".\zend_hash.h"\
24   -
25   -
26   -.\zend_compile.c : \
27   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
28   - ".\zend_alloc.h"\
29   - ".\zend_compile.h"\
30   - ".\config.w32.h"\
31   - ".\zend_execute.h"\
32   - ".\zend_llist.h"\
33   - ".\modules.h"\
34   - ".\zend_operators.h"\
35   - ".\zend_ptr_stack.h"\
36   - ".\zend_stack.h"\
37   - ".\zend_variables.h"\
38   - ".\zend.h"\
39   - ".\zend_API.h"\
40   - ".\zend_errors.h"\
41   - ".\zend_globals.h"\
42   - ".\zend_hash.h"\
43   - ".\zend_ini.h"\
44   -
45   -
46   -.\zend_constants.c : \
47   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
48   - ".\zend_alloc.h"\
49   - ".\config.w32.h"\
50   - ".\zend_constants.h"\
51   - ".\zend_operators.h"\
52   - ".\zend_variables.h"\
53   - ".\zend.h"\
54   - ".\zend_errors.h"\
55   - ".\zend_hash.h"\
56   -
57   -
58   -.\zend_execute.c : \
59   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
60   - ".\zend_alloc.h"\
61   - ".\zend_compile.h"\
62   - ".\config.w32.h"\
63   - ".\zend_constants.h"\
64   - ".\zend_execute.h"\
65   - ".\zend_llist.h"\
66   - ".\modules.h"\
67   - ".\zend_operators.h"\
68   - ".\zend_ptr_stack.h"\
69   - ".\zend_stack.h"\
70   - ".\zend_variables.h"\
71   - ".\zend.h"\
72   - ".\zend_API.h"\
73   - ".\zend_errors.h"\
74   - ".\zend_globals.h"\
75   - ".\zend_hash.h"\
76   - ".\zend_ini.h"\
77   -
78   -
79   -.\zend_highlight.c : \
80   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
81   - ".\zend_alloc.h"\
82   - ".\zend_compile.h"\
83   - ".\config.w32.h"\
84   - ".\zend_execute.h"\
85   - ".\zend_highlight.h"\
86   - ".\zend_llist.h"\
87   - ".\zend_ptr_stack.h"\
88   - ".\zend_stack.h"\
89   - ".\zend-parser.tab.h"\
90   - ".\zend.h"\
91   - ".\zend_errors.h"\
92   - ".\zend_globals.h"\
93   - ".\zend_hash.h"\
94   -
95   -
96   -.\zend_llist.c : \
97   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
98   - ".\zend_alloc.h"\
99   - ".\config.w32.h"\
100   - ".\zend_llist.h"\
101   - ".\zend.h"\
102   - ".\zend_errors.h"\
103   - ".\zend_hash.h"\
104   -
105   -
106   -.\zend_opcode.c : \
107   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
108   - ".\zend_alloc.h"\
109   - ".\zend_compile.h"\
110   - ".\config.w32.h"\
111   - ".\zend_execute.h"\
112   - ".\zend_llist.h"\
113   - ".\modules.h"\
114   - ".\zend_operators.h"\
115   - ".\zend_ptr_stack.h"\
116   - ".\zend_stack.h"\
117   - ".\zend_variables.h"\
118   - ".\zend.h"\
119   - ".\zend_API.h"\
120   - ".\zend_errors.h"\
121   - ".\zend_globals.h"\
122   - ".\zend_hash.h"\
123   - ".\zend_ini.h"\
124   -
125   -
126   -.\zend_operators.c : \
127   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
128   - ".\zend_alloc.h"\
129   - ".\zend_compile.h"\
130   - ".\config.w32.h"\
131   - ".\zend_execute.h"\
132   - ".\zend_llist.h"\
133   - ".\zend_operators.h"\
134   - ".\zend_ptr_stack.h"\
135   - ".\zend_stack.h"\
136   - ".\zend_variables.h"\
137   - ".\zend.h"\
138   - ".\zend_errors.h"\
139   - ".\zend_globals.h"\
140   - ".\zend_hash.h"\
141   -
142   -
143   -.\zend_ptr_stack.c : \
144   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
145   - ".\zend_alloc.h"\
146   - ".\config.w32.h"\
147   - ".\zend_ptr_stack.h"\
148   - ".\zend.h"\
149   - ".\zend_errors.h"\
150   - ".\zend_hash.h"\
151   -
152   -
153   -.\zend_stack.c : \
154   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
155   - ".\zend_alloc.h"\
156   - ".\config.w32.h"\
157   - ".\zend_stack.h"\
158   - ".\zend.h"\
159   - ".\zend_errors.h"\
160   - ".\zend_hash.h"\
161   -
162   -
163   -.\zend_variables.c : \
164   - "..\..\..\program files\microsoft visual studio\vc98\include\basetsd.h"\
165   - ".\zend_alloc.h"\
166   - ".\zend_compile.h"\
167   - ".\config.w32.h"\
168   - ".\zend_constants.h"\
169   - ".\zend_execute.h"\
170   - ".\zend_llist.h"\
171   - ".\modules.h"\
172   - ".\zend_ptr_stack.h"\
173   - ".\zend_stack.h"\
174   - ".\zend_variables.h"\
175   - ".\zend.h"\
176   - ".\zend_API.h"\
177   - ".\zend_errors.h"\
178   - ".\zend_globals.h"\
179   - ".\zend_hash.h"\
180   - ".\zend_ini.h"\