Oops. I did not know that the system only accepts text/plain
attachments. Here is the attachment for TSRM diff. This is in
text format. I will send the diff for the whole project soon.

Thanks,
Ananth.

>>> Derick Rethans <[EMAIL PROTECTED]> 1/29/2004 5:26:01 PM >>>
On Thu, 29 Jan 2004, Ananth Kesari wrote:

> Our changes are spread across many files, so I am not sure if we can
> checkin at this stage of the release of PHP 5.0. Anyway, I have
> attached the diff file for TSRM. Please review the same and give me
> your comments. There are similar changes in other files. If you
think
> I should send across the diffs for other files also, then I will do
> so. Let me know.

Just make *one* diff against latest CVS of all changes? And you didn't
add an attachment (we only accept text/plain attachments here).

> In the meantime, I have a question. I am interested in contributing
> to the Open source PHP. I was thinking that the good way to start
> could be to begin working on some simple defects and fix them.
> Can you let me know if I can do that and if yes, how? I mean,
> where to look for the defects filed and what is the procedure to
> start fixing them?

Have a look at bugs.php.net, there are plenty of open bugs.

regards,
Derick

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php 

Index: ./tsrm/TSRM.c
===================================================================
RCS file: /repository/TSRM/TSRM.c,v
retrieving revision 1.55
diff -r1.55 TSRM.c
108a109,120
> #ifdef NETWARE
>       /* Anantha Kesari
>        * For NetWare we have made it such a way that TSRM is started twice when
>        * Apache 2 is reloaded. When Apache2 is restarted, TSRM is started only once.
>        * Due to this, pthread_key_create is called twice. First time when TSRM
>        * is unloaded, the value associated with the key doesn't get cleared properly
>        * though the value itself is freed up. So for safety, the pthread_setspecific
>        * call below clears this value every time the key is created. Without this 
> call,
>        * Apache 2.0 would crash even when it is loading.
>        */
>       pthread_setspecific(tls_key, 0);
> #endif
297,305d308
< #ifdef NETWARE
<       /* The below if loop is added for NetWare to fix an abend while unloading PHP
<        * when an Apache unload command is issued on the system console.
<        * While exiting from PHP, at the end for some reason, this function is called
<        * with tsrm_tls_table = NULL. When this happened, the server abends when
<        * tsrm_tls_table is accessed since it is NULL.
<        */
<       if(tsrm_tls_table) {
< #endif
368,370d370
< #ifdef NETWARE
<       }       /* if(tsrm_tls_table) */
< #endif
437,443d436
< #elif defined(NETWARE)
<       /* There seems to be some problem with the LibC call: NXThreadGetId().
<        * Due to this, the PHPMyAdmin application is abending in PHP calls.
<        * Used the call, kCurrentThread instead and it works fine.
<        */
< /*    return NXThreadGetId(); */
<       return kCurrentThread();
453a447,460
> #elif defined(NETWARE)
> /* Anantha Kesari. 20 Aug 2003.
>  *
>  * Apache 1.3 is Clib based and it creats the threads using Clib calls.
>  * PHP is LibC based and so here also we should use the Clib calls to
>  * get the ID for these threads. If not, there will be a mismatch in the
>  * threads created and its usage. This will lead to abend when complex scripts
>  * are run and also when multiple scripts are run simulataneously.
>  */
> #ifdef APACHE_2_BUILD
>       return NXThreadGetId();
> #else
>       return kCurrentThread();
> #endif
464,471d470
< #ifdef NETWARE
< #ifndef USE_MPK
<       /* To use the Recursive Mutex Locking of LibC */
<       long flags = NX_MUTEX_RECURSIVE;
<       NXHierarchy_t order = 0;
<       NX_LOCK_INFO_ALLOC (lockInfo, "PHP-TSRM", 0);
< #endif
< #endif
476,481d474
< #elif defined(NETWARE)
< #ifdef USE_MPK
<       mutexp = kMutexAlloc((BYTE*)"PHP-TSRM");
< #else
<       mutexp = NXMutexAlloc(flags, order, &lockInfo);
< #endif
493a487,497
> #elif defined(NETWARE)
>       #ifdef USE_MPK
>               mutexp = kMutexAlloc((BYTE*)"PHP-TSRM");
>       #else
>               /* To use the Recursive Mutex Locking of LibC */
>               long flags = NX_MUTEX_RECURSIVE;
>               NXHierarchy_t order = 0;
>               NX_LOCK_INFO_ALLOC (lockInfo, "PHP-TSRM", 0);
> 
>               mutexp = NXMutexAlloc(flags, order, &lockInfo);
>       #endif
513,518d516
< #elif defined(NETWARE)
< #ifdef USE_MPK
<               kMutexFree(mutexp);
< #else
<               NXMutexFree(mutexp);
< #endif
529a528,533
> #elif defined(NETWARE)
>       #ifdef USE_MPK
>                       kMutexFree(mutexp);
>       #else
>                       NXMutexFree(mutexp);
>       #endif
548,553d551
< #elif defined(NETWARE)
< #ifdef USE_MPK
<       return kMutexLock(mutexp);
< #else
<       return NXLock(mutexp);
< #endif
563a562,567
> #elif defined(NETWARE)
>       #ifdef USE_MPK
>               return kMutexLock(mutexp);
>       #else
>               return NXLock(mutexp);
>       #endif
579,584d582
< #elif defined(NETWARE)
< #ifdef USE_MPK
<       return kMutexUnlock(mutexp);
< #else
<       return NXUnlock(mutexp);
< #endif
594a593,598
> #elif defined(NETWARE)
>       #ifdef USE_MPK
>               return kMutexUnlock(mutexp);
>       #else
>               return NXUnlock(mutexp);
>       #endif
Index: ./tsrm/TSRM.h
===================================================================
RCS file: /repository/TSRM/TSRM.h,v
retrieving revision 1.43
diff -r1.43 TSRM.h
44a45,50
> #elif defined(GNUPTH)
> # include <pth.h>
> #elif defined(PTHREADS)
> # include <pthread.h>
> #elif defined(TSRM_ST)
> # include <st.h>
52,57d57
< #elif defined(GNUPTH)
< # include <pth.h>
< #elif defined(PTHREADS)
< # include <pthread.h>
< #elif defined(TSRM_ST)
< # include <st.h>
69,75d68
< #elif defined(NETWARE)
< # define THREAD_T NXThreadId_t
< #ifdef USE_MPK
< # define MUTEX_T MUTEX
< #else
< # define MUTEX_T NXMutex_t *
< #endif
90a84,90
> #elif defined(NETWARE)
> # define THREAD_T NXThreadId_t
> #ifdef USE_MPK
> # define MUTEX_T MUTEX
> #else
> # define MUTEX_T NXMutex_t *
> #endif
Index: ./tsrm/acconfig.h
===================================================================
RCS file: /repository/TSRM/acconfig.h,v
retrieving revision 1.3
diff -r1.3 acconfig.h
0a1,22
> /* Anantha Kesari. 20 Aug 2003.
>  *
>  * Define PTHREADS only for Apache 2 and not for Apache 1.3.
>  * This is because the former is LibC based and everything works fine in that case.
>  * The latter is Clib based and so the thread calls will change if we use PTHREADS
>  * and the server abends if we use PTHREADS in PHP for Apache 1.3.
>  *
>  * Explanation:
>  *
>  * In the case of Apache 1.3, pthread_self always returns 0 due to mismatch in
>  * the function calls used to create the treads and getting the IDs for them.
>  * (Threads are created by Apache 1.3 using Clib calls whereas LibC's PTHREAD call
>  * is used to get the ID for these threads).
>  * Now, using this thread specific ID returned by pthread_self, we store some
>  * thread specific data into different hash tables. When we execute multiple scripts
>  * simultaneously, since the ID is always 0, one thread reads/writs data from/into
>  * another thread's data area.
>  * This causes the server to abend.
>  */
> #ifdef APACHE_2_BUILD
> #define PTHREADS
> #else
1a24
> #endif
Index: ./tsrm/tsrm_virtual_cwd.c
===================================================================
RCS file: /repository/TSRM/tsrm_virtual_cwd.c,v
retrieving revision 1.60
diff -r1.60 tsrm_virtual_cwd.c
45d44
< /*#include "pipe.h"*/
103,106c102,107
< /* NetWare has strtok() (in LibC) and allows both slashes in paths, like Windows --
<    but rest of the stuff is like Unix */
< /* strtok() call in LibC is abending when used in a different address space -- hence 
using
<    PHP's version itself for now */
---
> /* NetWare has strtok() (in LibC) and allows both slashes in paths, like Windows.
>  * But rest of the stuff is like Unix
>  */
> /* strtok() call in LibC is abending when used in a different address space.
>  * Hence using PHP's version itself for now
>  */
142,143c143,144
<       
< static int php_is_dir_ok(const cwd_state *state) 
---
> 
> static int php_is_dir_ok(const cwd_state *state)
145c146,148
< #if !(defined(NETWARE) && defined(CLIB_STAT_PATCH))
---
> #if (defined(NETWARE) && defined(CLIB_STAT_PATCH))
>       struct stat_libc buf;
> #else
146a150
> #endif
149,153d152
< #else
<     struct stat_libc buf;
< 
<     if (stat(state->cwd, (struct stat*)(&buf)) == 0 && S_ISDIR(buf.st_mode))
< #endif
161c160,162
< #if !(defined(NETWARE) && defined(CLIB_STAT_PATCH))
---
> #if (defined(NETWARE) && defined(CLIB_STAT_PATCH))
>       struct stat_libc buf;
> #else
162a164
> #endif
165,169d166
< #else
<     struct stat_libc buf;
< 
<     if (stat(state->cwd, (struct stat*)(&buf)) == 0 && S_ISREG(buf.st_mode))
< #endif
375a373,375
> #elif defined(NETWARE)
>       } else if (IS_SLASH(path_copy[0])) {
>               copy_amount = 4;        /* This is the size of the string "sys:" which 
> is 4 */
696c696,698
< #if !(defined(NETWARE) && defined(CLIB_STAT_PATCH))
---
> #if (defined(NETWARE) && defined(CLIB_STAT_PATCH))
> CWD_API int virtual_stat(const char *path, struct stat_libc *buf TSRMLS_DC)
> #else
697a700
> #endif
710,724d712
< #else
< CWD_API int virtual_stat(const char *path, struct stat_libc *buf TSRMLS_DC)
< {
<       cwd_state new_state;
<       int retval;
< 
<       CWD_STATE_COPY(&new_state, &CWDG(cwd));
<       virtual_file_ex(&new_state, path, NULL, 1);
< 
<       retval = stat(new_state.cwd, (struct stat*)buf);
< 
<       CWD_STATE_FREE(&new_state);
<       return retval;
< }
< #endif
814,815c802,803
< /* On NetWare, the trick of prepending "cd cwd; " doesn't work so we need to perform
<    a VCWD_CHDIR() and mutex it
---
> /* On NetWare, the trick of prepending "cd cwd;" doesn't work.
>  * So we need to perform a VCWD_CHDIR() and mutex it.
Index: ./tsrm/tsrm_virtual_cwd.h
===================================================================
RCS file: /repository/TSRM/tsrm_virtual_cwd.h,v
retrieving revision 1.42
diff -r1.42 tsrm_virtual_cwd.h
144,146c144
< #if !(defined(NETWARE) && defined(CLIB_STAT_PATCH))
< CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC);
< #else
---
> #if (defined(NETWARE) && defined(CLIB_STAT_PATCH))
147a146,147
> #else
> CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC);

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to