mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-12 03:30:50 +00:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5bfa70242f | ||
|
|
b1617d8ac3 |
No files matched your search
@@ -2,6 +2,28 @@ PHP 4.0 CHANGE LOG ChangeLog
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
|
||||
??? ?? 1999, Version 4.0 Beta 2
|
||||
- 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, libzend)
|
||||
- Fixed a crash problem in switch statements that had a string offset
|
||||
as a conditional (Andi & Zeev, libzend)
|
||||
- Imported PHP3 fixes for rand() and mt_rand() (Rasmus)
|
||||
- Added function entries for strip_tags() and similar_text() (Andrey)
|
||||
- Fixed a bug in WDDX that would cause a crash if a number was passed in
|
||||
instead of a variable name (Andrey)
|
||||
- Ported strtotime() function from PHP3 (Andrey)
|
||||
- Merged in gdttf stuff from php3 (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 PHP4 (Andrey)
|
||||
- Ported all remaining date() format options from PHP3 (Andrey)
|
||||
- $php_errormsg now works (Andrey)
|
||||
- Added locale support for Perl Compatible Regexp functions (Andrey)
|
||||
- Informix module ported (Danny)
|
||||
- Removed --with-shared-apache (Sascha)
|
||||
- Added patch for reverse lookup table in base64_decode (Sascha)
|
||||
Submitted by bfranklin@dct.com
|
||||
|
||||
+1
-1
@@ -135,7 +135,7 @@ distclean: clean distclean-recursive
|
||||
-rm -f *-parser.[ch] *-scanner.c *.output
|
||||
-rm -f config.status config.cache config.log
|
||||
-rm -f Makefile Makefile.depend php_config.h build-defs.h
|
||||
-rm -f libphp4.module stamp-h
|
||||
-rm -f libphp4.module stamp-h buildconf.stamp
|
||||
-rm -f regex/*.o regex/*.a regex/*.ih
|
||||
-rm -f doc/checkdoc doc/funcparse doc/version.ent
|
||||
-rm -f do-conf test/test.log
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
## process this file with automake to produce Makefile.am
|
||||
AUTOMAKE_OPTIONS=foreign
|
||||
lib_LIBRARIES=libtsrm.a
|
||||
libtsrm_a_SOURCES = TSRM.c
|
||||
-392
@@ -1,392 +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;
|
||||
void (*ctor)(void *resource);
|
||||
void (*dtor)(void *resource);
|
||||
} 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 */
|
||||
|
||||
/* Debug support */
|
||||
static int tsrm_debug(const char *format, ...);
|
||||
static int tsrm_debug_status;
|
||||
|
||||
|
||||
/* Startup TSRM (call once for the entire process) */
|
||||
TSRM_FUNC int tsrm_startup(int expected_threads, int expected_resources, int debug_status)
|
||||
{
|
||||
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_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_FUNC void tsrm_shutdown()
|
||||
{
|
||||
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");
|
||||
}
|
||||
|
||||
|
||||
/* allocates a new thread-safe-resource id */
|
||||
TSRM_FUNC ts_rsrc_id ts_allocate_id(size_t size, void (*ctor)(void *resource), void (*dtor)(void *resource))
|
||||
{
|
||||
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;
|
||||
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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 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);
|
||||
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);
|
||||
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()
|
||||
{
|
||||
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_FUNC THREAD_T tsrm_thread_id(void)
|
||||
{
|
||||
#ifdef WIN32
|
||||
return GetCurrentThreadId();
|
||||
#elif defined(PTHREADS)
|
||||
return pthread_self();
|
||||
#elif defined(NSAPI)
|
||||
return systhread_current();
|
||||
#elif defined(PI3WEB)
|
||||
return PIThread_getCurrent();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* Allocate a mutex */
|
||||
TSRM_FUNC MUTEX_T tsrm_mutex_alloc( void )
|
||||
{
|
||||
MUTEX_T mutexp;
|
||||
|
||||
#ifdef WIN32
|
||||
mutexp = CreateMutex(NULL,FALSE,NULL);
|
||||
#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_FUNC void tsrm_mutex_free( MUTEX_T mutexp )
|
||||
{
|
||||
if (mutexp) {
|
||||
#ifdef WIN32
|
||||
CloseHandle(mutexp);
|
||||
#elif defined(PTHREADS)
|
||||
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_FUNC int tsrm_mutex_lock( MUTEX_T mutexp )
|
||||
{
|
||||
//tsrm_debug("Mutex locked thread: %ld\n",tsrm_thread_id());
|
||||
#ifdef WIN32
|
||||
return WaitForSingleObject(mutexp,1000);
|
||||
#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_FUNC int tsrm_mutex_unlock( MUTEX_T mutexp )
|
||||
{
|
||||
//tsrm_debug("Mutex unlocked thread: %ld\n",tsrm_thread_id());
|
||||
#ifdef WIN32
|
||||
return ReleaseMutex(mutexp);
|
||||
#elif defined(PTHREADS)
|
||||
return pthread_mutex_unlock(mutexp);
|
||||
#elif defined(NSAPI)
|
||||
return crit_exit(mutexp);
|
||||
#elif defined(PI3WEB)
|
||||
return PISync_unlock(mutexp);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
-100
@@ -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
|
||||
-97
@@ -1,97 +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
|
||||
# include "tsrm_config.h"
|
||||
#endif
|
||||
|
||||
#if WIN32||WINNT
|
||||
# include <windows.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 TSRM_FUNC */
|
||||
#ifdef __cplusplus
|
||||
#define TSRM_FUNC extern "C" TSRM_API
|
||||
#else
|
||||
#define TSRM_FUNC TSRM_API
|
||||
#endif
|
||||
|
||||
|
||||
/* Define THREAD_T and MUTEX_T */
|
||||
#if defined(WIN32)
|
||||
# define THREAD_T DWORD
|
||||
# define MUTEX_T void *
|
||||
#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
|
||||
|
||||
|
||||
#define THREAD_HASH_OF(thr,ts) thr%ts
|
||||
|
||||
|
||||
/* startup/shutdown */
|
||||
TSRM_FUNC int tsrm_startup(int expected_threads, int expected_resources, int debug_status);
|
||||
TSRM_FUNC void tsrm_shutdown();
|
||||
|
||||
/* allocates a new thread-safe-resource id */
|
||||
TSRM_FUNC ts_rsrc_id ts_allocate_id(size_t size, void (*ctor)(void *resource), void (*dtor)(void *resource));
|
||||
|
||||
/* fetches the requested resource for the current thread */
|
||||
TSRM_FUNC void *ts_resource(ts_rsrc_id id);
|
||||
|
||||
/* frees all resources allocated for the current thread */
|
||||
TSRM_FUNC void ts_free_thread();
|
||||
|
||||
/* deallocates all occurrences of a given id */
|
||||
TSRM_FUNC void ts_free_id(ts_rsrc_id id);
|
||||
|
||||
|
||||
/* Debug support */
|
||||
TSRM_FUNC void tsrm_debug_set(int status);
|
||||
|
||||
/* utility functions */
|
||||
TSRM_FUNC THREAD_T tsrm_thread_id(void);
|
||||
TSRM_FUNC MUTEX_T tsrm_mutex_alloc(void);
|
||||
TSRM_FUNC void tsrm_mutex_free(MUTEX_T mutexp);
|
||||
TSRM_FUNC int tsrm_mutex_lock(MUTEX_T mutexp);
|
||||
TSRM_FUNC int tsrm_mutex_unlock(MUTEX_T mutexp);
|
||||
|
||||
#endif /* _TSRM_H */
|
||||
@@ -1,7 +0,0 @@
|
||||
#undef PTHREADS
|
||||
|
||||
#ifdef DEFINE_TSRM_VERSION
|
||||
# undef PACKAGE
|
||||
# undef VERSION
|
||||
#endif
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
mv aclocal.m4 aclocal.m4.old 2>/dev/null
|
||||
aclocal
|
||||
if cmp aclocal.m4.old aclocal.m4 > /dev/null 2>&1; then
|
||||
echo "buildconf: keeping ${1}aclocal.m4"
|
||||
mv aclocal.m4.old aclocal.m4
|
||||
else
|
||||
echo "buildconf: created or modified ${1}aclocal.m4"
|
||||
fi
|
||||
|
||||
autoheader
|
||||
|
||||
automake --add-missing --include-deps
|
||||
|
||||
mv configure configure.old 2>/dev/null
|
||||
autoconf
|
||||
if cmp configure.old configure > /dev/null 2>&1; then
|
||||
echo "buildconf: keeping ${1}configure"
|
||||
mv configure.old configure
|
||||
else
|
||||
echo "buildconf: created or modified ${1}configure"
|
||||
fi
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
dnl $Id$
|
||||
dnl
|
||||
dnl Minimalistic configure.in for TSRM.
|
||||
dnl
|
||||
|
||||
AC_INIT(TSRM.c)
|
||||
AM_INIT_AUTOMAKE(TSRM, 1.0)
|
||||
AM_CONFIG_HEADER(tsrm_config.h)
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_CC_C_O
|
||||
AC_PROG_RANLIB
|
||||
|
||||
AC_CHECK_LIB(pthread, pthread_create, [
|
||||
AC_DEFINE(PTHREADS)
|
||||
LIBS="$LIBS -lpthread"
|
||||
],[
|
||||
AC_MSG_ERROR(You need pthreads to build TSRM.)
|
||||
])
|
||||
|
||||
AC_CHECK_HEADERS(stdarg.h)
|
||||
|
||||
AC_OUTPUT(Makefile)
|
||||
|
||||
+16
-1
@@ -241,8 +241,23 @@ extern zend_utility_values zend_uv;
|
||||
(z)->EA.is_ref = 0; \
|
||||
(z)->EA.locks = 0;
|
||||
|
||||
#define MAKE_STD_ZVAL(zv) \
|
||||
#define MAKE_STD_ZVAL(zv) \
|
||||
zv = (zval *) emalloc(sizeof(zval)); \
|
||||
INIT_PZVAL(zv);
|
||||
|
||||
#define SEPARATE_ZVAL(ppzv) \
|
||||
{ \
|
||||
zval *orig_ptr = *(ppzv); \
|
||||
\
|
||||
if (orig_ptr->refcount>1) { \
|
||||
orig_ptr->refcount--; \
|
||||
*(ppzv) = (zval *) emalloc(sizeof(zval)); \
|
||||
**(ppzv) = *orig_ptr; \
|
||||
zval_copy_ctor(*(ppzv)); \
|
||||
(*(ppzv))->refcount=1; \
|
||||
(*(ppzv))->EA.is_ref = 0; \
|
||||
(*(ppzv))->EA.locks = 0; \
|
||||
} \
|
||||
}
|
||||
|
||||
#endif /* _ZEND_H */
|
||||
+23
-3
@@ -588,7 +588,6 @@ void do_free(znode *op1 CLS_DC)
|
||||
&& opline->result.u.var == op1->u.var) {
|
||||
opline->result.u.EA.type |= EXT_TYPE_UNUSED;
|
||||
} else {
|
||||
|
||||
/* This should be an object instanciation
|
||||
* Find JMP_NO_CTOR, mark the preceding ASSIGN and the
|
||||
* proceeding INIT_FCALL_BY_NAME as unused
|
||||
@@ -833,10 +832,28 @@ void do_pass_param(znode *param, int op, int offset CLS_DC)
|
||||
}
|
||||
|
||||
|
||||
void do_return(znode *expr CLS_DC)
|
||||
static void generate_free_switch_expr(zend_switch_entry *switch_entry CLS_DC)
|
||||
{
|
||||
zend_op *opline = get_next_op(CG(active_op_array) CLS_CC);
|
||||
|
||||
opline->opcode = ZEND_SWITCH_FREE;
|
||||
opline->op1 = switch_entry->cond;
|
||||
SET_UNUSED(opline->op2);
|
||||
}
|
||||
|
||||
|
||||
void do_return(znode *expr CLS_DC)
|
||||
{
|
||||
zend_op *opline;
|
||||
|
||||
#ifdef ZTS
|
||||
zend_stack_apply_with_argument(&CG(switch_cond_stack), (void (*)(void *element, void *)) generate_free_switch_expr, ZEND_STACK_APPLY_TOPDOWN CLS_CC);
|
||||
#else
|
||||
zend_stack_apply(&CG(switch_cond_stack), (void (*)(void *element)) generate_free_switch_expr, ZEND_STACK_APPLY_TOPDOWN);
|
||||
#endif
|
||||
|
||||
opline = get_next_op(CG(active_op_array) CLS_CC);
|
||||
|
||||
opline->opcode = ZEND_RETURN;
|
||||
if (expr) {
|
||||
opline->op1 = *expr;
|
||||
@@ -1096,7 +1113,10 @@ void do_switch_end(znode *case_list CLS_DC)
|
||||
CG(active_op_array)->current_brk_cont = CG(active_op_array)->brk_cont_array[CG(active_op_array)->current_brk_cont].parent;
|
||||
|
||||
/* emit free for the switch condition*/
|
||||
do_free(&switch_entry_ptr->cond CLS_CC);
|
||||
opline = get_next_op(CG(active_op_array) CLS_CC);
|
||||
opline->opcode = ZEND_SWITCH_FREE;
|
||||
opline->op1 = switch_entry_ptr->cond;
|
||||
SET_UNUSED(opline->op2);
|
||||
if (switch_entry_ptr->cond.op_type == IS_CONST) {
|
||||
zval_dtor(&switch_entry_ptr->cond.u.constant);
|
||||
}
|
||||
|
||||
+52
-51
@@ -418,8 +418,8 @@ int zendlex(znode *zendlval CLS_DC);
|
||||
#define ZEND_ASSIGN 36
|
||||
#define ZEND_ASSIGN_REF 37
|
||||
|
||||
#define ZEND_ECHO 38
|
||||
#define ZEND_PRINT 39
|
||||
#define ZEND_ECHO 38
|
||||
#define ZEND_PRINT 39
|
||||
|
||||
#define ZEND_JMP 40
|
||||
#define ZEND_JMPZ 41
|
||||
@@ -428,74 +428,75 @@ int zendlex(znode *zendlval CLS_DC);
|
||||
#define ZEND_JMPZ_EX 44
|
||||
#define ZEND_JMPNZ_EX 45
|
||||
#define ZEND_CASE 46
|
||||
#define ZEND_BRK 47
|
||||
#define ZEND_CONT 48
|
||||
#define ZEND_BOOL 49
|
||||
#define ZEND_SWITCH_FREE 47
|
||||
#define ZEND_BRK 48
|
||||
#define ZEND_CONT 49
|
||||
#define ZEND_BOOL 50
|
||||
|
||||
#define ZEND_INIT_STRING 50
|
||||
#define ZEND_ADD_CHAR 51
|
||||
#define ZEND_ADD_STRING 52
|
||||
#define ZEND_ADD_VAR 53
|
||||
#define ZEND_INIT_STRING 51
|
||||
#define ZEND_ADD_CHAR 52
|
||||
#define ZEND_ADD_STRING 53
|
||||
#define ZEND_ADD_VAR 54
|
||||
|
||||
#define ZEND_BEGIN_SILENCE 54
|
||||
#define ZEND_END_SILENCE 55
|
||||
#define ZEND_BEGIN_SILENCE 55
|
||||
#define ZEND_END_SILENCE 56
|
||||
|
||||
#define ZEND_INIT_FCALL_BY_NAME 56
|
||||
#define ZEND_DO_FCALL 57
|
||||
#define ZEND_DO_FCALL_BY_NAME 58
|
||||
#define ZEND_RETURN 59
|
||||
#define ZEND_INIT_FCALL_BY_NAME 57
|
||||
#define ZEND_DO_FCALL 58
|
||||
#define ZEND_DO_FCALL_BY_NAME 59
|
||||
#define ZEND_RETURN 60
|
||||
|
||||
#define ZEND_RECV 60
|
||||
#define ZEND_RECV_INIT 61
|
||||
#define ZEND_RECV 61
|
||||
#define ZEND_RECV_INIT 62
|
||||
|
||||
#define ZEND_SEND_VAL 62
|
||||
#define ZEND_SEND_VAR 63
|
||||
#define ZEND_SEND_REF 64
|
||||
#define ZEND_SEND_VAL 63
|
||||
#define ZEND_SEND_VAR 64
|
||||
#define ZEND_SEND_REF 65
|
||||
|
||||
#define ZEND_NEW 65
|
||||
#define ZEND_JMP_NO_CTOR 66
|
||||
#define ZEND_FREE 67
|
||||
#define ZEND_NEW 66
|
||||
#define ZEND_JMP_NO_CTOR 67
|
||||
#define ZEND_FREE 68
|
||||
|
||||
#define ZEND_INIT_ARRAY 68
|
||||
#define ZEND_ADD_ARRAY_ELEMENT 69
|
||||
#define ZEND_INIT_ARRAY 69
|
||||
#define ZEND_ADD_ARRAY_ELEMENT 70
|
||||
|
||||
#define ZEND_INCLUDE_OR_EVAL 70
|
||||
#define ZEND_INCLUDE_OR_EVAL 71
|
||||
|
||||
#define ZEND_UNSET_VAR 71
|
||||
#define ZEND_UNSET_DIM_OBJ 72
|
||||
#define ZEND_ISSET_ISEMPTY 73
|
||||
#define ZEND_UNSET_VAR 72
|
||||
#define ZEND_UNSET_DIM_OBJ 73
|
||||
#define ZEND_ISSET_ISEMPTY 74
|
||||
|
||||
#define ZEND_FE_RESET 74
|
||||
#define ZEND_FE_FETCH 75
|
||||
#define ZEND_FE_RESET 75
|
||||
#define ZEND_FE_FETCH 76
|
||||
|
||||
#define ZEND_EXIT 76
|
||||
#define ZEND_EXIT 77
|
||||
|
||||
|
||||
/* the following 12 opcodes are 4 groups of 3 opcodes each, and must
|
||||
* remain in that order!
|
||||
*/
|
||||
#define ZEND_FETCH_R 77
|
||||
#define ZEND_FETCH_DIM_R 78
|
||||
#define ZEND_FETCH_OBJ_R 79
|
||||
#define ZEND_FETCH_W 80
|
||||
#define ZEND_FETCH_DIM_W 81
|
||||
#define ZEND_FETCH_OBJ_W 82
|
||||
#define ZEND_FETCH_RW 83
|
||||
#define ZEND_FETCH_DIM_RW 84
|
||||
#define ZEND_FETCH_OBJ_RW 85
|
||||
#define ZEND_FETCH_IS 86
|
||||
#define ZEND_FETCH_DIM_IS 87
|
||||
#define ZEND_FETCH_OBJ_IS 88
|
||||
#define ZEND_FETCH_R 78
|
||||
#define ZEND_FETCH_DIM_R 79
|
||||
#define ZEND_FETCH_OBJ_R 80
|
||||
#define ZEND_FETCH_W 81
|
||||
#define ZEND_FETCH_DIM_W 82
|
||||
#define ZEND_FETCH_OBJ_W 83
|
||||
#define ZEND_FETCH_RW 84
|
||||
#define ZEND_FETCH_DIM_RW 85
|
||||
#define ZEND_FETCH_OBJ_RW 86
|
||||
#define ZEND_FETCH_IS 87
|
||||
#define ZEND_FETCH_DIM_IS 88
|
||||
#define ZEND_FETCH_OBJ_IS 89
|
||||
|
||||
#define ZEND_FETCH_DIM_TMP_VAR 89
|
||||
#define ZEND_FETCH_CONSTANT 90
|
||||
#define ZEND_FETCH_DIM_TMP_VAR 90
|
||||
#define ZEND_FETCH_CONSTANT 91
|
||||
|
||||
#define ZEND_DECLARE_FUNCTION_OR_CLASS 91
|
||||
#define ZEND_DECLARE_FUNCTION_OR_CLASS 92
|
||||
|
||||
#define ZEND_EXT_STMT 92
|
||||
#define ZEND_EXT_FCALL_BEGIN 93
|
||||
#define ZEND_EXT_FCALL_END 94
|
||||
#define ZEND_EXT_NOP 95
|
||||
#define ZEND_EXT_STMT 93
|
||||
#define ZEND_EXT_FCALL_BEGIN 94
|
||||
#define ZEND_EXT_FCALL_END 95
|
||||
#define ZEND_EXT_NOP 96
|
||||
|
||||
/* end of block */
|
||||
|
||||
|
||||
+38
-7
@@ -1592,14 +1592,45 @@ send_by_ref:
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case ZEND_CASE:
|
||||
if (opline->op1.op_type == IS_VAR) {
|
||||
PZVAL_LOCK(*Ts[opline->op1.u.var].var);
|
||||
case ZEND_CASE: {
|
||||
int switch_expr_is_overloaded=0;
|
||||
|
||||
if (opline->op1.op_type==IS_VAR) {
|
||||
if (Ts[opline->op1.u.var].var) {
|
||||
PZVAL_LOCK(*Ts[opline->op1.u.var].var);
|
||||
} else {
|
||||
switch_expr_is_overloaded = 1;
|
||||
if (Ts[opline->op1.u.var].EA.type==IS_STRING_OFFSET) {
|
||||
Ts[opline->op1.u.var].EA.str->refcount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
is_equal_function(&Ts[opline->result.u.var].tmp_var,
|
||||
get_zval_ptr(&opline->op1, Ts, &free_op1, BP_VAR_R),
|
||||
get_zval_ptr(&opline->op2, Ts, &free_op2, BP_VAR_R));
|
||||
|
||||
FREE_OP(&opline->op2, free_op2);
|
||||
if (switch_expr_is_overloaded) {
|
||||
/* We only free op1 if this is a string offset,
|
||||
* Since if it is a TMP_VAR, it'll be reused by
|
||||
* other CASE opcodes (whereas string offsets
|
||||
* are allocated at each get_zval_ptr())
|
||||
*/
|
||||
FREE_OP(&opline->op1, free_op1);
|
||||
Ts[opline->op1.u.var].var = NULL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ZEND_SWITCH_FREE:
|
||||
switch (opline->op1.op_type) {
|
||||
case IS_VAR:
|
||||
get_zval_ptr(&opline->op1, Ts, &free_op1, BP_VAR_R);
|
||||
FREE_OP(&opline->op1, free_op1);
|
||||
break;
|
||||
case IS_TMP_VAR:
|
||||
zendi_zval_dtor(Ts[opline->op1.u.var].tmp_var);
|
||||
break;
|
||||
}
|
||||
is_equal_function(&Ts[opline->result.u.var].tmp_var,
|
||||
get_zval_ptr(&opline->op1, Ts, &free_op1, BP_VAR_R),
|
||||
get_zval_ptr(&opline->op2, Ts, &free_op2, BP_VAR_R) );
|
||||
FREE_OP(&opline->op2, free_op2);
|
||||
break;
|
||||
case ZEND_NEW: {
|
||||
zval *tmp = get_zval_ptr(&opline->op1, Ts, &free_op1, BP_VAR_R);
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ typedef union _temp_variable {
|
||||
zval tmp_var;
|
||||
zval **var;
|
||||
struct {
|
||||
zval **var_dummy; /* a dummy */
|
||||
zval tmp_var; /* a dummy */
|
||||
|
||||
zval *str;
|
||||
int offset;
|
||||
|
||||
@@ -162,34 +162,29 @@ ZEND_API void convert_to_long_base(zval *op, int base)
|
||||
case IS_BOOL:
|
||||
case IS_RESOURCE:
|
||||
case IS_LONG:
|
||||
return;
|
||||
break;
|
||||
case IS_DOUBLE:
|
||||
op->value.lval = (long) op->value.dval;
|
||||
op->type = IS_LONG;
|
||||
break;
|
||||
case IS_STRING:
|
||||
strval = op->value.str.val;
|
||||
op->value.lval = strtol(strval, NULL, base);
|
||||
op->type = IS_LONG;
|
||||
STR_FREE(strval);
|
||||
break;
|
||||
case IS_ARRAY:
|
||||
tmp = (zend_hash_num_elements(op->value.ht)?1:0);
|
||||
zval_dtor(op);
|
||||
op->value.lval = tmp;
|
||||
op->type = IS_LONG;
|
||||
break;
|
||||
case IS_OBJECT:
|
||||
tmp = (zend_hash_num_elements(op->value.obj.properties)?1:0);
|
||||
zval_dtor(op);
|
||||
op->value.lval = tmp;
|
||||
op->type = IS_LONG;
|
||||
break;
|
||||
default:
|
||||
zend_error(E_WARNING, "Cannot convert to ordinal value");
|
||||
zval_dtor(op);
|
||||
op->value.lval = 0;
|
||||
op->type = IS_LONG;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -116,3 +116,41 @@ ZEND_API int zend_stack_count(zend_stack *stack)
|
||||
{
|
||||
return stack->top;
|
||||
}
|
||||
|
||||
|
||||
ZEND_API void zend_stack_apply(zend_stack *stack, void (*apply_function)(void *element), int type)
|
||||
{
|
||||
int i;
|
||||
|
||||
switch (type) {
|
||||
case ZEND_STACK_APPLY_TOPDOWN:
|
||||
for (i=stack->top-1; i>=0; i--) {
|
||||
apply_function(stack->elements[i]);
|
||||
}
|
||||
break;
|
||||
case ZEND_STACK_APPLY_BOTTOMUP:
|
||||
for (i=0; i<stack->top; i++) {
|
||||
apply_function(stack->elements[i]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ZEND_API void zend_stack_apply_with_argument(zend_stack *stack, void (*apply_function)(void *element, void *arg), int type, void *arg)
|
||||
{
|
||||
int i;
|
||||
|
||||
switch (type) {
|
||||
case ZEND_STACK_APPLY_TOPDOWN:
|
||||
for (i=stack->top-1; i>=0; i--) {
|
||||
apply_function(stack->elements[i], arg);
|
||||
}
|
||||
break;
|
||||
case ZEND_STACK_APPLY_BOTTOMUP:
|
||||
for (i=0; i<stack->top; i++) {
|
||||
apply_function(stack->elements[i], arg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,10 @@ ZEND_API int zend_stack_is_empty(zend_stack *stack);
|
||||
ZEND_API int zend_stack_destroy(zend_stack *stack);
|
||||
ZEND_API void **zend_stack_base(zend_stack *stack);
|
||||
ZEND_API int zend_stack_count(zend_stack *stack);
|
||||
ZEND_API void zend_stack_apply(zend_stack *stack, void (*apply_function)(void *element), int type);
|
||||
ZEND_API void zend_stack_apply_with_argument(zend_stack *stack, void (*apply_function)(void *element, void *arg), int type, void *arg);
|
||||
|
||||
#define ZEND_STACK_APPLY_TOPDOWN 1
|
||||
#define ZEND_STACK_APPLY_BOTTOMUP 2
|
||||
|
||||
#endif /* _ZEND_STACK_H */
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
#undef HAVE_STRUCT_FLOCK
|
||||
#undef HAVE_TM_GMTOFF
|
||||
|
||||
#define CONFIGURATION_FILE_PATH "php3.ini"
|
||||
#define CONFIGURATION_FILE_PATH "php.ini"
|
||||
#define USE_CONFIG_FILE 1
|
||||
|
||||
#undef HAVE_DMALLOC
|
||||
|
||||
@@ -158,3 +158,27 @@ AC_SUBST(EXT_LIBS)
|
||||
AC_SUBST(EXTINFO_DEPS)
|
||||
dnl AC_SUBST(EXT_INCLUDE_CODE)
|
||||
dnl AC_SUBST(EXT_MODULES_PTRS)
|
||||
|
||||
dnl
|
||||
dnl Solaris requires main code to be position independent in order
|
||||
dnl to let shared objects find symbols. Weird. Ugly.
|
||||
dnl
|
||||
dnl Must be run after all --with-NN options that let the user
|
||||
dnl choose dynamic extensions, and after the gcc test.
|
||||
dnl
|
||||
AC_DEFUN(PHP_SOLARIS_PIC_WEIRDNESS,[
|
||||
AC_MSG_CHECKING(whether -fPIC is required)
|
||||
if test "$EXT_SHARED" != ""; then
|
||||
os=`uname -sr 2>/dev/null`
|
||||
case "$os" in
|
||||
"SunOS 5.6"|"SunOS 5.7")
|
||||
case "$CC" in
|
||||
gcc*|egcs*) CFLAGS="$CFLAGS -fPIC";;
|
||||
*) CFLAGS="$CFLAGS -fpic";;
|
||||
esac
|
||||
AC_MSG_RESULT(yes);;
|
||||
*)
|
||||
AC_MSG_RESULT(no);;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
@@ -3,6 +3,8 @@
|
||||
# do some version checking for the tools we use
|
||||
if test "$1" = "--force"; then
|
||||
shift
|
||||
elif test -r buildconf.stamp ; then
|
||||
:
|
||||
else
|
||||
echo "buildconf: checking installation..."
|
||||
|
||||
@@ -42,15 +44,34 @@ else
|
||||
echo "buildconf: automake version $am_version (ok)"
|
||||
fi
|
||||
|
||||
# The stuff from libtool we need is in CVS right now, so it is
|
||||
# not required to run buildconf.
|
||||
# libtool 1.2f or newer
|
||||
lt_pversion=`libtool --version 2>/dev/null|sed -e 's/^[^0-9]*//' -e 's/ .*//'`
|
||||
if test "$lt_pversion" = ""; then
|
||||
echo "buildconf: libtool not found."
|
||||
echo " You need libtool version 1.3 or newer installed"
|
||||
echo " to build PHP from CVS."
|
||||
exit 1
|
||||
fi
|
||||
lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'`
|
||||
IFS=.; set $lt_version; IFS=' '
|
||||
if test "$1" -gt "1" || test "$2" -ge "3" || test "$2" = "2" -a "$3" = "f"
|
||||
then
|
||||
echo "buildconf: libtool version $lt_pversion (ok)"
|
||||
else
|
||||
echo "buildconf: libtool version $lt_pversion found."
|
||||
echo " You need libtool version 1.2f or newer installed"
|
||||
echo " to build PHP from CVS."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
touch buildconf.stamp
|
||||
fi
|
||||
|
||||
if test "$1" = "--copy"; then
|
||||
automake_flags=--copy
|
||||
fi
|
||||
|
||||
if ! test -d libzend; then
|
||||
if test ! -d libzend; then
|
||||
if test -d ../libzend; then
|
||||
echo "buildconf: linking ../libzend to ./libzend"
|
||||
ln -s ../libzend .
|
||||
@@ -60,7 +81,7 @@ if ! test -d libzend; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if ! test -d TSRM; then
|
||||
if test ! -d TSRM; then
|
||||
if test -d ../TSRM; then
|
||||
echo "buildconf: linking ../TSRM to ./TSRM"
|
||||
ln -s ../TSRM .
|
||||
@@ -73,6 +94,8 @@ fi
|
||||
|
||||
./scripts/preconfig
|
||||
|
||||
libtoolize --automake $automake_flags --force
|
||||
|
||||
mv aclocal.m4 aclocal.m4.old 2>/dev/null
|
||||
aclocal
|
||||
if cmp aclocal.m4.old aclocal.m4 > /dev/null 2>&1; then
|
||||
|
||||
Vendored
-997
@@ -1,997 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Written by Per Bothner <bothner@cygnus.com>.
|
||||
# The master version of this file is at the FSF in /home/gd/gnu/lib.
|
||||
# Please send patches to the Autoconf mailing list <autoconf@gnu.org>.
|
||||
#
|
||||
# This script attempts to guess a canonical system name similar to
|
||||
# config.sub. If it succeeds, it prints the system name on stdout, and
|
||||
# exits with 0. Otherwise, it exits with 1.
|
||||
#
|
||||
# The plan is that this can be called by configure scripts if you
|
||||
# don't specify an explicit system type (host/target name).
|
||||
#
|
||||
# Only a few systems have been added to this list; please add others
|
||||
# (but try to keep the structure clean).
|
||||
#
|
||||
|
||||
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
|
||||
# (ghazi@noc.rutgers.edu 8/24/94.)
|
||||
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
|
||||
PATH=$PATH:/.attbin ; export PATH
|
||||
fi
|
||||
|
||||
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
|
||||
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
|
||||
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
||||
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||
|
||||
dummy=dummy-$$
|
||||
trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
|
||||
|
||||
# Note: order is significant - the case branches are not exclusive.
|
||||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
alpha:OSF1:*:*)
|
||||
if test $UNAME_RELEASE = "V4.0"; then
|
||||
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
|
||||
fi
|
||||
# A Vn.n version is a released version.
|
||||
# A Tn.n version is a released field test version.
|
||||
# A Xn.n version is an unreleased experimental baselevel.
|
||||
# 1.2 uses "1.2" for uname -r.
|
||||
cat <<EOF >$dummy.s
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
.frame \$30,0,\$26,0
|
||||
.prologue 0
|
||||
.long 0x47e03d80 # implver $0
|
||||
lda \$2,259
|
||||
.long 0x47e20c21 # amask $2,$1
|
||||
srl \$1,8,\$2
|
||||
sll \$2,2,\$2
|
||||
sll \$0,3,\$0
|
||||
addl \$1,\$0,\$0
|
||||
addl \$2,\$0,\$0
|
||||
ret \$31,(\$26),1
|
||||
.end main
|
||||
EOF
|
||||
${CC-cc} $dummy.s -o $dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
./$dummy
|
||||
case "$?" in
|
||||
7)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
15)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
14)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
10)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
16)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
rm -f $dummy.s $dummy
|
||||
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
|
||||
exit 0 ;;
|
||||
21064:Windows_NT:50:3)
|
||||
echo alpha-dec-winnt3.5
|
||||
exit 0 ;;
|
||||
Amiga*:UNIX_System_V:4.0:*)
|
||||
echo m68k-cbm-sysv4
|
||||
exit 0;;
|
||||
amiga:NetBSD:*:*)
|
||||
echo m68k-cbm-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
amiga:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:[Aa]miga[Oo][Ss]:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-amigaos
|
||||
exit 0 ;;
|
||||
arc64:OpenBSD:*:*)
|
||||
echo mips64el-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
arc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
hkmips:OpenBSD:*:*)
|
||||
echo mips-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
pmax:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sgi:OpenBSD:*:*)
|
||||
echo mips-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
wgrisc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit 0;;
|
||||
arm32:NetBSD:*:*)
|
||||
echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
SR2?01:HI-UX/MPP:*:*)
|
||||
echo hppa1.1-hitachi-hiuxmpp
|
||||
exit 0;;
|
||||
Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*)
|
||||
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
|
||||
if test "`(/bin/universe) 2>/dev/null`" = att ; then
|
||||
echo pyramid-pyramid-sysv3
|
||||
else
|
||||
echo pyramid-pyramid-bsd
|
||||
fi
|
||||
exit 0 ;;
|
||||
NILE*:*:*:dcosx)
|
||||
echo pyramid-pyramid-svr4
|
||||
exit 0 ;;
|
||||
sun4H:SunOS:5.*:*)
|
||||
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
|
||||
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
i86pc:SunOS:5.*:*)
|
||||
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
sun4*:SunOS:6*:*)
|
||||
# According to config.sub, this is the proper way to canonicalize
|
||||
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
|
||||
# it's likely to be more like Solaris than SunOS4.
|
||||
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
sun4*:SunOS:*:*)
|
||||
case "`/usr/bin/arch -k`" in
|
||||
Series*|S4*)
|
||||
UNAME_RELEASE=`uname -v`
|
||||
;;
|
||||
esac
|
||||
# Japanese Language versions have a version number like `4.1.3-JL'.
|
||||
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
|
||||
exit 0 ;;
|
||||
sun3*:SunOS:*:*)
|
||||
echo m68k-sun-sunos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun*:*:4.2BSD:*)
|
||||
UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
|
||||
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
|
||||
case "`/bin/arch`" in
|
||||
sun3)
|
||||
echo m68k-sun-sunos${UNAME_RELEASE}
|
||||
;;
|
||||
sun4)
|
||||
echo sparc-sun-sunos${UNAME_RELEASE}
|
||||
;;
|
||||
esac
|
||||
exit 0 ;;
|
||||
aushp:SunOS:*:*)
|
||||
echo sparc-auspex-sunos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
atari*:NetBSD:*:*)
|
||||
echo m68k-atari-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
atari*:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun3*:NetBSD:*:*)
|
||||
echo m68k-sun-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun3*:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mac68k:NetBSD:*:*)
|
||||
echo m68k-apple-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mac68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme88k:OpenBSD:*:*)
|
||||
echo m88k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
powerpc:machten:*:*)
|
||||
echo powerpc-apple-machten${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
macppc:NetBSD:*:*)
|
||||
echo powerpc-apple-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
RISC*:Mach:*:*)
|
||||
echo mips-dec-mach_bsd4.3
|
||||
exit 0 ;;
|
||||
RISC*:ULTRIX:*:*)
|
||||
echo mips-dec-ultrix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
VAX*:ULTRIX*:*:*)
|
||||
echo vax-dec-ultrix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
2020:CLIX:*:*)
|
||||
echo clipper-intergraph-clix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mips:*:*:UMIPS | mips:*:*:RISCos)
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#ifdef __cplusplus
|
||||
int main (int argc, char *argv[]) {
|
||||
#else
|
||||
int main (argc, argv) int argc; char *argv[]; {
|
||||
#endif
|
||||
#if defined (host_mips) && defined (MIPSEB)
|
||||
#if defined (SYSTYPE_SYSV)
|
||||
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
|
||||
#endif
|
||||
#if defined (SYSTYPE_SVR4)
|
||||
printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
|
||||
#endif
|
||||
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
|
||||
printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
exit (-1);
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy \
|
||||
&& ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
|
||||
&& rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo mips-mips-riscos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
Night_Hawk:Power_UNIX:*:*)
|
||||
echo powerpc-harris-powerunix
|
||||
exit 0 ;;
|
||||
m88k:CX/UX:7*:*)
|
||||
echo m88k-harris-cxux7
|
||||
exit 0 ;;
|
||||
m88k:*:4*:R4*)
|
||||
echo m88k-motorola-sysv4
|
||||
exit 0 ;;
|
||||
m88k:*:3*:R3*)
|
||||
echo m88k-motorola-sysv3
|
||||
exit 0 ;;
|
||||
AViiON:dgux:*:*)
|
||||
# DG/UX returns AViiON for all architectures
|
||||
UNAME_PROCESSOR=`/usr/bin/uname -p`
|
||||
if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
|
||||
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
|
||||
-o ${TARGET_BINARY_INTERFACE}x = x ] ; then
|
||||
echo m88k-dg-dgux${UNAME_RELEASE}
|
||||
else
|
||||
echo m88k-dg-dguxbcs${UNAME_RELEASE}
|
||||
fi
|
||||
else echo i586-dg-dgux${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
|
||||
echo m88k-dolphin-sysv3
|
||||
exit 0 ;;
|
||||
M88*:*:R3*:*)
|
||||
# Delta 88k system running SVR3
|
||||
echo m88k-motorola-sysv3
|
||||
exit 0 ;;
|
||||
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
|
||||
echo m88k-tektronix-sysv3
|
||||
exit 0 ;;
|
||||
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
|
||||
echo m68k-tektronix-bsd
|
||||
exit 0 ;;
|
||||
*:IRIX*:*:*)
|
||||
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
|
||||
exit 0 ;;
|
||||
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
|
||||
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
|
||||
exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
|
||||
i?86:AIX:*:*)
|
||||
echo i386-ibm-aix
|
||||
exit 0 ;;
|
||||
*:AIX:2:3)
|
||||
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#include <sys/systemcfg.h>
|
||||
|
||||
main()
|
||||
{
|
||||
if (!__power_pc())
|
||||
exit(1);
|
||||
puts("powerpc-ibm-aix3.2.5");
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo rs6000-ibm-aix3.2.5
|
||||
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
echo rs6000-ibm-aix3.2.4
|
||||
else
|
||||
echo rs6000-ibm-aix3.2
|
||||
fi
|
||||
exit 0 ;;
|
||||
*:AIX:*:4)
|
||||
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
|
||||
if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
|
||||
IBM_ARCH=rs6000
|
||||
else
|
||||
IBM_ARCH=powerpc
|
||||
fi
|
||||
if [ -x /usr/bin/oslevel ] ; then
|
||||
IBM_REV=`/usr/bin/oslevel`
|
||||
else
|
||||
IBM_REV=4.${UNAME_RELEASE}
|
||||
fi
|
||||
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
|
||||
exit 0 ;;
|
||||
*:AIX:*:*)
|
||||
echo rs6000-ibm-aix
|
||||
exit 0 ;;
|
||||
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
|
||||
echo romp-ibm-bsd4.4
|
||||
exit 0 ;;
|
||||
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
|
||||
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
|
||||
exit 0 ;; # report: romp-ibm BSD 4.3
|
||||
*:BOSX:*:*)
|
||||
echo rs6000-bull-bosx
|
||||
exit 0 ;;
|
||||
DPX/2?00:B.O.S.:*:*)
|
||||
echo m68k-bull-sysv3
|
||||
exit 0 ;;
|
||||
9000/[34]??:4.3bsd:1.*:*)
|
||||
echo m68k-hp-bsd
|
||||
exit 0 ;;
|
||||
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
|
||||
echo m68k-hp-bsd4.4
|
||||
exit 0 ;;
|
||||
9000/[34678]??:HP-UX:*:*)
|
||||
case "${UNAME_MACHINE}" in
|
||||
9000/31? ) HP_ARCH=m68000 ;;
|
||||
9000/[34]?? ) HP_ARCH=m68k ;;
|
||||
9000/6?? | 9000/7?? | 9000/80[024] | 9000/8?[136790] | 9000/892 )
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int main ()
|
||||
{
|
||||
#if defined(_SC_KERNEL_BITS)
|
||||
long bits = sysconf(_SC_KERNEL_BITS);
|
||||
#endif
|
||||
long cpu = sysconf (_SC_CPU_VERSION);
|
||||
|
||||
switch (cpu)
|
||||
{
|
||||
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
|
||||
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
|
||||
case CPU_PA_RISC2_0:
|
||||
#if defined(_SC_KERNEL_BITS)
|
||||
switch (bits)
|
||||
{
|
||||
case 64: puts ("hppa2.0w"); break;
|
||||
case 32: puts ("hppa2.0n"); break;
|
||||
default: puts ("hppa2.0"); break;
|
||||
} break;
|
||||
#else /* !defined(_SC_KERNEL_BITS) */
|
||||
puts ("hppa2.0"); break;
|
||||
#endif
|
||||
default: puts ("hppa1.0"); break;
|
||||
}
|
||||
exit (0);
|
||||
}
|
||||
EOF
|
||||
(${CC-cc} $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
|
||||
rm -f $dummy.c $dummy
|
||||
esac
|
||||
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
|
||||
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
|
||||
exit 0 ;;
|
||||
3050*:HI-UX:*:*)
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#include <unistd.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
long cpu = sysconf (_SC_CPU_VERSION);
|
||||
/* The order matters, because CPU_IS_HP_MC68K erroneously returns
|
||||
true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
|
||||
results, however. */
|
||||
if (CPU_IS_PA_RISC (cpu))
|
||||
{
|
||||
switch (cpu)
|
||||
{
|
||||
case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
|
||||
case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
|
||||
case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
|
||||
default: puts ("hppa-hitachi-hiuxwe2"); break;
|
||||
}
|
||||
}
|
||||
else if (CPU_IS_HP_MC68K (cpu))
|
||||
puts ("m68k-hitachi-hiuxwe2");
|
||||
else puts ("unknown-hitachi-hiuxwe2");
|
||||
exit (0);
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo unknown-hitachi-hiuxwe2
|
||||
exit 0 ;;
|
||||
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
|
||||
echo hppa1.1-hp-bsd
|
||||
exit 0 ;;
|
||||
9000/8??:4.3bsd:*:*)
|
||||
echo hppa1.0-hp-bsd
|
||||
exit 0 ;;
|
||||
*9??*:MPE*:*:*)
|
||||
echo hppa1.0-hp-mpeix
|
||||
exit 0 ;;
|
||||
*9??*:MPE*:*:*)
|
||||
echo hppa1.0-hp-mpeix
|
||||
exit 0 ;;
|
||||
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
|
||||
echo hppa1.1-hp-osf
|
||||
exit 0 ;;
|
||||
hp8??:OSF1:*:*)
|
||||
echo hppa1.0-hp-osf
|
||||
exit 0 ;;
|
||||
i?86:OSF1:*:*)
|
||||
if [ -x /usr/sbin/sysversion ] ; then
|
||||
echo ${UNAME_MACHINE}-unknown-osf1mk
|
||||
else
|
||||
echo ${UNAME_MACHINE}-unknown-osf1
|
||||
fi
|
||||
exit 0 ;;
|
||||
parisc*:Lites*:*:*)
|
||||
echo hppa1.1-hp-lites
|
||||
exit 0 ;;
|
||||
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
|
||||
echo c1-convex-bsd
|
||||
exit 0 ;;
|
||||
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
|
||||
if getsysinfo -f scalar_acc
|
||||
then echo c32-convex-bsd
|
||||
else echo c2-convex-bsd
|
||||
fi
|
||||
exit 0 ;;
|
||||
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
|
||||
echo c34-convex-bsd
|
||||
exit 0 ;;
|
||||
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
|
||||
echo c38-convex-bsd
|
||||
exit 0 ;;
|
||||
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
|
||||
echo c4-convex-bsd
|
||||
exit 0 ;;
|
||||
CRAY*X-MP:*:*:*)
|
||||
echo xmp-cray-unicos
|
||||
exit 0 ;;
|
||||
CRAY*Y-MP:*:*:*)
|
||||
echo ymp-cray-unicos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
CRAY*[A-Z]90:*:*:*)
|
||||
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
|
||||
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
|
||||
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
|
||||
exit 0 ;;
|
||||
CRAY*TS:*:*:*)
|
||||
echo t90-cray-unicos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
CRAY*T3E:*:*:*)
|
||||
echo t3e-cray-unicosmk${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
CRAY-2:*:*:*)
|
||||
echo cray2-cray-unicos
|
||||
exit 0 ;;
|
||||
F300:UNIX_System_V:*:*)
|
||||
FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
|
||||
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
|
||||
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
|
||||
exit 0 ;;
|
||||
F301:UNIX_System_V:*:*)
|
||||
echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
|
||||
exit 0 ;;
|
||||
hp3[0-9][05]:NetBSD:*:*)
|
||||
echo m68k-hp-netbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
hp300:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sparc*:BSD/OS:*:*)
|
||||
echo sparc-unknown-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
i?86:BSD/386:*:* | i?86:BSD/OS:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:BSD/OS:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:FreeBSD:*:*)
|
||||
if test -x /usr/bin/objformat; then
|
||||
if test "elf" = "`/usr/bin/objformat`"; then
|
||||
echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
|
||||
exit 0 ;;
|
||||
*:NetBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
*:OpenBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
i*:CYGWIN*:*)
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
exit 0 ;;
|
||||
i*:MINGW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit 0 ;;
|
||||
p*:CYGWIN*:*)
|
||||
echo powerpcle-unknown-cygwin
|
||||
exit 0 ;;
|
||||
prep*:SunOS:5.*:*)
|
||||
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit 0 ;;
|
||||
*:GNU:*:*)
|
||||
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
exit 0 ;;
|
||||
*:Linux:*:*)
|
||||
# # uname on the ARM produces all sorts of strangeness, and we need to
|
||||
# # filter it out.
|
||||
# case "$UNAME_MACHINE" in
|
||||
# armv*) UNAME_MACHINE=$UNAME_MACHINE ;;
|
||||
# arm* | sa110*) UNAME_MACHINE="arm" ;;
|
||||
# esac
|
||||
|
||||
# The BFD linker knows what the default object file format is, so
|
||||
# first see if it will tell us.
|
||||
ld_help_string=`ld --help 2>&1`
|
||||
ld_supported_emulations=`echo $ld_help_string \
|
||||
| sed -ne '/supported emulations:/!d
|
||||
s/[ ][ ]*/ /g
|
||||
s/.*supported emulations: *//
|
||||
s/ .*//
|
||||
p'`
|
||||
case "$ld_supported_emulations" in
|
||||
i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;;
|
||||
i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
|
||||
sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
elf32arm) echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0 ;;
|
||||
elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
|
||||
esac
|
||||
|
||||
if test "${UNAME_MACHINE}" = "alpha" ; then
|
||||
sed 's/^ //' <<EOF >$dummy.s
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
.frame \$30,0,\$26,0
|
||||
.prologue 0
|
||||
.long 0x47e03d80 # implver $0
|
||||
lda \$2,259
|
||||
.long 0x47e20c21 # amask $2,$1
|
||||
srl \$1,8,\$2
|
||||
sll \$2,2,\$2
|
||||
sll \$0,3,\$0
|
||||
addl \$1,\$0,\$0
|
||||
addl \$2,\$0,\$0
|
||||
ret \$31,(\$26),1
|
||||
.end main
|
||||
EOF
|
||||
LIBC=""
|
||||
${CC-cc} $dummy.s -o $dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
./$dummy
|
||||
case "$?" in
|
||||
7)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
15)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
14)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
10)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
16)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
esac
|
||||
|
||||
objdump --private-headers $dummy | \
|
||||
grep ld.so.1 > /dev/null
|
||||
if test "$?" = 0 ; then
|
||||
LIBC="libc1"
|
||||
fi
|
||||
fi
|
||||
rm -f $dummy.s $dummy
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
|
||||
elif test "${UNAME_MACHINE}" = "mips" ; then
|
||||
cat >$dummy.c <<EOF
|
||||
#ifdef __cplusplus
|
||||
int main (int argc, char *argv[]) {
|
||||
#else
|
||||
int main (argc, argv) int argc; char *argv[]; {
|
||||
#endif
|
||||
#ifdef __MIPSEB__
|
||||
printf ("%s-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
#ifdef __MIPSEL__
|
||||
printf ("%sel-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
else
|
||||
# Either a pre-BFD a.out linker (linux-gnuoldld)
|
||||
# or one that does not give us useful --help.
|
||||
# GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
|
||||
# If ld does not provide *any* "supported emulations:"
|
||||
# that means it is gnuoldld.
|
||||
echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
|
||||
test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
|
||||
|
||||
case "${UNAME_MACHINE}" in
|
||||
i?86)
|
||||
VENDOR=pc;
|
||||
;;
|
||||
*)
|
||||
VENDOR=unknown;
|
||||
;;
|
||||
esac
|
||||
# Determine whether the default compiler is a.out or elf
|
||||
cat >$dummy.c <<EOF
|
||||
#include <features.h>
|
||||
#ifdef __cplusplus
|
||||
int main (int argc, char *argv[]) {
|
||||
#else
|
||||
int main (argc, argv) int argc; char *argv[]; {
|
||||
#endif
|
||||
#ifdef __ELF__
|
||||
# ifdef __GLIBC__
|
||||
# if __GLIBC__ >= 2
|
||||
printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
|
||||
# else
|
||||
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
|
||||
# endif
|
||||
# else
|
||||
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
|
||||
# endif
|
||||
#else
|
||||
printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
fi ;;
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
|
||||
# are messed up and put the nodename in both sysname and nodename.
|
||||
i?86:DYNIX/ptx:4*:*)
|
||||
echo i386-sequent-sysv4
|
||||
exit 0 ;;
|
||||
i?86:UNIX_SV:4.2MP:2.*)
|
||||
# Unixware is an offshoot of SVR4, but it has its own version
|
||||
# number series starting with 2...
|
||||
# I am not positive that other SVR4 systems won't match this,
|
||||
# I just have to hope. -- rms.
|
||||
# Use sysv4.2uw... so that sysv4* matches it.
|
||||
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
|
||||
exit 0 ;;
|
||||
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
|
||||
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
|
||||
echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
|
||||
else
|
||||
echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
i?86:*:3.2:*)
|
||||
if test -f /usr/options/cb.name; then
|
||||
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
|
||||
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
|
||||
elif /bin/uname -X 2>/dev/null >/dev/null ; then
|
||||
UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
|
||||
(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
|
||||
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
|
||||
&& UNAME_MACHINE=i586
|
||||
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
|
||||
else
|
||||
echo ${UNAME_MACHINE}-pc-sysv32
|
||||
fi
|
||||
exit 0 ;;
|
||||
i?86:UnixWare:*:*)
|
||||
if /bin/uname -X 2>/dev/null >/dev/null ; then
|
||||
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
|
||||
&& UNAME_MACHINE=i586
|
||||
fi
|
||||
echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION}
|
||||
exit 0 ;;
|
||||
pc:*:*:*)
|
||||
# uname -m prints for DJGPP always 'pc', but it prints nothing about
|
||||
# the processor, so we play safe by assuming i386.
|
||||
echo i386-pc-msdosdjgpp
|
||||
exit 0 ;;
|
||||
Intel:Mach:3*:*)
|
||||
echo i386-pc-mach3
|
||||
exit 0 ;;
|
||||
paragon:*:*:*)
|
||||
echo i860-intel-osf1
|
||||
exit 0 ;;
|
||||
i860:*:4.*:*) # i860-SVR4
|
||||
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
|
||||
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
|
||||
else # Add other i860-SVR4 vendors below as they are discovered.
|
||||
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
|
||||
fi
|
||||
exit 0 ;;
|
||||
mini*:CTIX:SYS*5:*)
|
||||
# "miniframe"
|
||||
echo m68010-convergent-sysv
|
||||
exit 0 ;;
|
||||
M68*:*:R3V[567]*:*)
|
||||
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
|
||||
3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
|
||||
OS_REL=''
|
||||
test -r /etc/.relid \
|
||||
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
|
||||
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
|
||||
&& echo i486-ncr-sysv4.3${OS_REL} && exit 0
|
||||
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
|
||||
&& echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
|
||||
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
|
||||
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
|
||||
&& echo i486-ncr-sysv4 && exit 0 ;;
|
||||
m68*:LynxOS:2.*:*)
|
||||
echo m68k-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mc68030:UNIX_System_V:4.*:*)
|
||||
echo m68k-atari-sysv4
|
||||
exit 0 ;;
|
||||
i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
|
||||
echo i386-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
TSUNAMI:LynxOS:2.*:*)
|
||||
echo sparc-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
|
||||
echo rs6000-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
SM[BE]S:UNIX_SV:*:*)
|
||||
echo mips-dde-sysv${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
RM*:ReliantUNIX-*:*:*)
|
||||
echo mips-sni-sysv4
|
||||
exit 0 ;;
|
||||
RM*:SINIX-*:*:*)
|
||||
echo mips-sni-sysv4
|
||||
exit 0 ;;
|
||||
*:SINIX-*:*:*)
|
||||
if uname -p 2>/dev/null >/dev/null ; then
|
||||
UNAME_MACHINE=`(uname -p) 2>/dev/null`
|
||||
echo ${UNAME_MACHINE}-sni-sysv4
|
||||
else
|
||||
echo ns32k-sni-sysv
|
||||
fi
|
||||
exit 0 ;;
|
||||
PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
|
||||
# says <Richard.M.Bartel@ccMail.Census.GOV>
|
||||
echo i586-unisys-sysv4
|
||||
exit 0 ;;
|
||||
*:UNIX_System_V:4*:FTX*)
|
||||
# From Gerald Hewes <hewes@openmarket.com>.
|
||||
# How about differentiating between stratus architectures? -djm
|
||||
echo hppa1.1-stratus-sysv4
|
||||
exit 0 ;;
|
||||
*:*:*:FTX*)
|
||||
# From seanf@swdc.stratus.com.
|
||||
echo i860-stratus-sysv4
|
||||
exit 0 ;;
|
||||
mc68*:A/UX:*:*)
|
||||
echo m68k-apple-aux${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
news*:NEWS-OS:*:6*)
|
||||
echo mips-sony-newsos6
|
||||
exit 0 ;;
|
||||
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
|
||||
if [ -d /usr/nec ]; then
|
||||
echo mips-nec-sysv${UNAME_RELEASE}
|
||||
else
|
||||
echo mips-unknown-sysv${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
|
||||
echo powerpc-be-beos
|
||||
exit 0 ;;
|
||||
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
|
||||
echo powerpc-apple-beos
|
||||
exit 0 ;;
|
||||
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
|
||||
echo i586-pc-beos
|
||||
exit 0 ;;
|
||||
SX-4:SUPER-UX:*:*)
|
||||
echo sx4-nec-superux${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
SX-5:SUPER-UX:*:*)
|
||||
echo sx5-nec-superux${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
Power*:Rhapsody:*:*)
|
||||
echo powerpc-apple-rhapsody${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:Rhapsody:*:*)
|
||||
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
esac
|
||||
|
||||
#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
|
||||
|
||||
cat >$dummy.c <<EOF
|
||||
#ifdef _SEQUENT_
|
||||
# include <sys/types.h>
|
||||
# include <sys/utsname.h>
|
||||
#endif
|
||||
main ()
|
||||
{
|
||||
#if defined (sony)
|
||||
#if defined (MIPSEB)
|
||||
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
|
||||
I don't know.... */
|
||||
printf ("mips-sony-bsd\n"); exit (0);
|
||||
#else
|
||||
#include <sys/param.h>
|
||||
printf ("m68k-sony-newsos%s\n",
|
||||
#ifdef NEWSOS4
|
||||
"4"
|
||||
#else
|
||||
""
|
||||
#endif
|
||||
); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__arm) && defined (__acorn) && defined (__unix)
|
||||
printf ("arm-acorn-riscix"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (hp300) && !defined (hpux)
|
||||
printf ("m68k-hp-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (NeXT)
|
||||
#if !defined (__ARCHITECTURE__)
|
||||
#define __ARCHITECTURE__ "m68k"
|
||||
#endif
|
||||
int version;
|
||||
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
|
||||
if (version < 4)
|
||||
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
|
||||
else
|
||||
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
|
||||
exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (MULTIMAX) || defined (n16)
|
||||
#if defined (UMAXV)
|
||||
printf ("ns32k-encore-sysv\n"); exit (0);
|
||||
#else
|
||||
#if defined (CMU)
|
||||
printf ("ns32k-encore-mach\n"); exit (0);
|
||||
#else
|
||||
printf ("ns32k-encore-bsd\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__386BSD__)
|
||||
printf ("i386-pc-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (sequent)
|
||||
#if defined (i386)
|
||||
printf ("i386-sequent-dynix\n"); exit (0);
|
||||
#endif
|
||||
#if defined (ns32000)
|
||||
printf ("ns32k-sequent-dynix\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (_SEQUENT_)
|
||||
struct utsname un;
|
||||
|
||||
uname(&un);
|
||||
|
||||
if (strncmp(un.version, "V2", 2) == 0) {
|
||||
printf ("i386-sequent-ptx2\n"); exit (0);
|
||||
}
|
||||
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
|
||||
printf ("i386-sequent-ptx1\n"); exit (0);
|
||||
}
|
||||
printf ("i386-sequent-ptx\n"); exit (0);
|
||||
|
||||
#endif
|
||||
|
||||
#if defined (vax)
|
||||
#if !defined (ultrix)
|
||||
printf ("vax-dec-bsd\n"); exit (0);
|
||||
#else
|
||||
printf ("vax-dec-ultrix\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (alliant) && defined (i860)
|
||||
printf ("i860-alliant-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
exit (1);
|
||||
}
|
||||
EOF
|
||||
|
||||
${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
|
||||
# Apollos put the system type in the environment.
|
||||
|
||||
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
|
||||
|
||||
# Convex versions that predate uname can use getsysinfo(1)
|
||||
|
||||
if [ -x /usr/convex/getsysinfo ]
|
||||
then
|
||||
case `getsysinfo -f cpu_type` in
|
||||
c1*)
|
||||
echo c1-convex-bsd
|
||||
exit 0 ;;
|
||||
c2*)
|
||||
if getsysinfo -f scalar_acc
|
||||
then echo c32-convex-bsd
|
||||
else echo c2-convex-bsd
|
||||
fi
|
||||
exit 0 ;;
|
||||
c34*)
|
||||
echo c34-convex-bsd
|
||||
exit 0 ;;
|
||||
c38*)
|
||||
echo c38-convex-bsd
|
||||
exit 0 ;;
|
||||
c4*)
|
||||
echo c4-convex-bsd
|
||||
exit 0 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
#echo '(Unable to guess system type)' 1>&2
|
||||
|
||||
exit 1
|
||||
Vendored
-979
@@ -1,979 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script, version 1.1.
|
||||
# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
# can handle that machine. It does not imply ALL GNU software can.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||
# Supply the specified configuration type as an argument.
|
||||
# If it is invalid, we print an error message on stderr and exit with code 1.
|
||||
# Otherwise, we print the canonical config type on stdout and succeed.
|
||||
|
||||
# This file is supposed to be the same for all GNU packages
|
||||
# and recognize all the CPU types, system types and aliases
|
||||
# that are meaningful with *any* GNU software.
|
||||
# Each package is responsible for reporting which valid configurations
|
||||
# it does not support. The user should be able to distinguish
|
||||
# a failure to support a valid configuration from a meaningless
|
||||
# configuration.
|
||||
|
||||
# The goal of this file is to map all the various variations of a given
|
||||
# machine specification into a single specification in the form:
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||
# or in some cases, the newer four-part form:
|
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# It is wrong to echo any other type of specification.
|
||||
|
||||
if [ x$1 = x ]
|
||||
then
|
||||
echo Configuration name missing. 1>&2
|
||||
echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
|
||||
echo "or $0 ALIAS" 1>&2
|
||||
echo where ALIAS is a recognized configuration type. 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# First pass through any local machine types.
|
||||
case $1 in
|
||||
*local*)
|
||||
echo $1
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
|
||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
case $maybe_os in
|
||||
linux-gnu*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
;;
|
||||
*)
|
||||
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
|
||||
if [ $basic_machine != $1 ]
|
||||
then os=`echo $1 | sed 's/.*-/-/'`
|
||||
else os=; fi
|
||||
;;
|
||||
esac
|
||||
|
||||
### Let's recognize common machines as not being operating systems so
|
||||
### that things like config.sub decstation-3100 work. We also
|
||||
### recognize some manufacturers as not being operating systems, so we
|
||||
### can provide default operating systems below.
|
||||
case $os in
|
||||
-sun*os*)
|
||||
# Prevent following clause from handling this invalid input.
|
||||
;;
|
||||
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
|
||||
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
|
||||
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
-apple)
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
-hiux*)
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
-sco5)
|
||||
os=sco3.2v5
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco4)
|
||||
os=-sco3.2v4
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco3.2.[4-9]*)
|
||||
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco3.2v[4-9]*)
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco*)
|
||||
os=-sco3.2v2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-isc)
|
||||
os=-isc2.2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-clix*)
|
||||
basic_machine=clipper-intergraph
|
||||
;;
|
||||
-isc*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-lynx*)
|
||||
os=-lynxos
|
||||
;;
|
||||
-ptx*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
|
||||
;;
|
||||
-windowsnt*)
|
||||
os=`echo $os | sed -e 's/windowsnt/winnt/'`
|
||||
;;
|
||||
-psos*)
|
||||
os=-psos
|
||||
;;
|
||||
esac
|
||||
|
||||
# Decode aliases for certain CPU-COMPANY combinations.
|
||||
case $basic_machine in
|
||||
# Recognize the basic CPU types without company name.
|
||||
# Some are omitted here because they have special meanings below.
|
||||
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
|
||||
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
|
||||
| 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \
|
||||
| hppa2.0w \
|
||||
| alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
|
||||
| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
|
||||
| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
|
||||
| mipstx39 | mipstx39el | armv[34][lb] \
|
||||
| sparc | sparclet | sparclite | sparc64 | v850)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
# We use `pc' rather than `unknown'
|
||||
# because (1) that's what they normally are, and
|
||||
# (2) the word "unknown" tends to confuse beginning users.
|
||||
i[34567]86)
|
||||
basic_machine=$basic_machine-pc
|
||||
;;
|
||||
# Object if more than one company name word.
|
||||
*-*-*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
# Recognize the basic CPU types with company name.
|
||||
vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
|
||||
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
|
||||
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
|
||||
| power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
|
||||
| xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
|
||||
| hppa2.0w-* \
|
||||
| alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
|
||||
| ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
|
||||
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
|
||||
| sparc64-* | mips64-* | mipsel-* | armv[34][lb]-*\
|
||||
| mips64el-* | mips64orion-* | mips64orionel-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| f301-* | armv*-*)
|
||||
;;
|
||||
# Recognize the various machine names and aliases which stand
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
|
||||
basic_machine=m68000-att
|
||||
;;
|
||||
3b*)
|
||||
basic_machine=we32k-att
|
||||
;;
|
||||
alliant | fx80)
|
||||
basic_machine=fx80-alliant
|
||||
;;
|
||||
altos | altos3068)
|
||||
basic_machine=m68k-altos
|
||||
;;
|
||||
am29k)
|
||||
basic_machine=a29k-none
|
||||
os=-bsd
|
||||
;;
|
||||
amdahl)
|
||||
basic_machine=580-amdahl
|
||||
os=-sysv
|
||||
;;
|
||||
amiga | amiga-*)
|
||||
basic_machine=m68k-cbm
|
||||
;;
|
||||
amigaos | amigados)
|
||||
basic_machine=m68k-cbm
|
||||
os=-amigaos
|
||||
;;
|
||||
amigaunix | amix)
|
||||
basic_machine=m68k-cbm
|
||||
os=-sysv4
|
||||
;;
|
||||
apollo68)
|
||||
basic_machine=m68k-apollo
|
||||
os=-sysv
|
||||
;;
|
||||
aux)
|
||||
basic_machine=m68k-apple
|
||||
os=-aux
|
||||
;;
|
||||
balance)
|
||||
basic_machine=ns32k-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
convex-c1)
|
||||
basic_machine=c1-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c2)
|
||||
basic_machine=c2-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c32)
|
||||
basic_machine=c32-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c34)
|
||||
basic_machine=c34-convex
|
||||
os=-bsd
|
||||
;;
|
||||
convex-c38)
|
||||
basic_machine=c38-convex
|
||||
os=-bsd
|
||||
;;
|
||||
cray | ymp)
|
||||
basic_machine=ymp-cray
|
||||
os=-unicos
|
||||
;;
|
||||
cray2)
|
||||
basic_machine=cray2-cray
|
||||
os=-unicos
|
||||
;;
|
||||
[ctj]90-cray)
|
||||
basic_machine=c90-cray
|
||||
os=-unicos
|
||||
;;
|
||||
crds | unos)
|
||||
basic_machine=m68k-crds
|
||||
;;
|
||||
da30 | da30-*)
|
||||
basic_machine=m68k-da30
|
||||
;;
|
||||
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
|
||||
basic_machine=mips-dec
|
||||
;;
|
||||
delta | 3300 | motorola-3300 | motorola-delta \
|
||||
| 3300-motorola | delta-motorola)
|
||||
basic_machine=m68k-motorola
|
||||
;;
|
||||
delta88)
|
||||
basic_machine=m88k-motorola
|
||||
os=-sysv3
|
||||
;;
|
||||
dpx20 | dpx20-*)
|
||||
basic_machine=rs6000-bull
|
||||
os=-bosx
|
||||
;;
|
||||
dpx2* | dpx2*-bull)
|
||||
basic_machine=m68k-bull
|
||||
os=-sysv3
|
||||
;;
|
||||
ebmon29k)
|
||||
basic_machine=a29k-amd
|
||||
os=-ebmon
|
||||
;;
|
||||
elxsi)
|
||||
basic_machine=elxsi-elxsi
|
||||
os=-bsd
|
||||
;;
|
||||
encore | umax | mmax)
|
||||
basic_machine=ns32k-encore
|
||||
;;
|
||||
fx2800)
|
||||
basic_machine=i860-alliant
|
||||
;;
|
||||
genix)
|
||||
basic_machine=ns32k-ns
|
||||
;;
|
||||
gmicro)
|
||||
basic_machine=tron-gmicro
|
||||
os=-sysv
|
||||
;;
|
||||
h3050r* | hiux*)
|
||||
basic_machine=hppa1.1-hitachi
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
h8300hms)
|
||||
basic_machine=h8300-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
harris)
|
||||
basic_machine=m88k-harris
|
||||
os=-sysv3
|
||||
;;
|
||||
hp300-*)
|
||||
basic_machine=m68k-hp
|
||||
;;
|
||||
hp300bsd)
|
||||
basic_machine=m68k-hp
|
||||
os=-bsd
|
||||
;;
|
||||
hp300hpux)
|
||||
basic_machine=m68k-hp
|
||||
os=-hpux
|
||||
;;
|
||||
hp9k2[0-9][0-9] | hp9k31[0-9])
|
||||
basic_machine=m68000-hp
|
||||
;;
|
||||
hp9k3[2-9][0-9])
|
||||
basic_machine=m68k-hp
|
||||
;;
|
||||
hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
|
||||
basic_machine=hppa1.1-hp
|
||||
;;
|
||||
hp9k8[0-9][0-9] | hp8[0-9][0-9])
|
||||
basic_machine=hppa1.0-hp
|
||||
;;
|
||||
hppa-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
hp3k9[0-9][0-9] | hp9[0-9][0-9])
|
||||
basic_machine=hppa1.0-hp
|
||||
os=-mpeix
|
||||
;;
|
||||
hp3k9[0-9][0-9] | hp9[0-9][0-9])
|
||||
basic_machine=hppa1.0-hp
|
||||
os=-mpeix
|
||||
;;
|
||||
i370-ibm* | ibm*)
|
||||
basic_machine=i370-ibm
|
||||
os=-mvs
|
||||
;;
|
||||
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
|
||||
i[34567]86v32)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv32
|
||||
;;
|
||||
i[34567]86v4*)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv4
|
||||
;;
|
||||
i[34567]86v)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv
|
||||
;;
|
||||
i[34567]86sol2)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-solaris2
|
||||
;;
|
||||
iris | iris4d)
|
||||
basic_machine=mips-sgi
|
||||
case $os in
|
||||
-irix*)
|
||||
;;
|
||||
*)
|
||||
os=-irix4
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
isi68 | isi)
|
||||
basic_machine=m68k-isi
|
||||
os=-sysv
|
||||
;;
|
||||
m88k-omron*)
|
||||
basic_machine=m88k-omron
|
||||
;;
|
||||
magnum | m3230)
|
||||
basic_machine=mips-mips
|
||||
os=-sysv
|
||||
;;
|
||||
merlin)
|
||||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
miniframe)
|
||||
basic_machine=m68000-convergent
|
||||
;;
|
||||
mipsel*-linux*)
|
||||
basic_machine=mipsel-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
mips*-linux*)
|
||||
basic_machine=mips-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
mips3*-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
|
||||
;;
|
||||
mips3*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
||||
;;
|
||||
ncr3000)
|
||||
basic_machine=i486-ncr
|
||||
os=-sysv4
|
||||
;;
|
||||
netwinder)
|
||||
basic_machine=armv4l-corel
|
||||
os=-linux
|
||||
;;
|
||||
news | news700 | news800 | news900)
|
||||
basic_machine=m68k-sony
|
||||
os=-newsos
|
||||
;;
|
||||
news1000)
|
||||
basic_machine=m68030-sony
|
||||
os=-newsos
|
||||
;;
|
||||
news-3600 | risc-news)
|
||||
basic_machine=mips-sony
|
||||
os=-newsos
|
||||
;;
|
||||
next | m*-next )
|
||||
basic_machine=m68k-next
|
||||
case $os in
|
||||
-nextstep* )
|
||||
;;
|
||||
-ns2*)
|
||||
os=-nextstep2
|
||||
;;
|
||||
*)
|
||||
os=-nextstep3
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
nh3000)
|
||||
basic_machine=m68k-harris
|
||||
os=-cxux
|
||||
;;
|
||||
nh[45]000)
|
||||
basic_machine=m88k-harris
|
||||
os=-cxux
|
||||
;;
|
||||
nindy960)
|
||||
basic_machine=i960-intel
|
||||
os=-nindy
|
||||
;;
|
||||
np1)
|
||||
basic_machine=np1-gould
|
||||
;;
|
||||
pa-hitachi)
|
||||
basic_machine=hppa1.1-hitachi
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
paragon)
|
||||
basic_machine=i860-intel
|
||||
os=-osf
|
||||
;;
|
||||
pbd)
|
||||
basic_machine=sparc-tti
|
||||
;;
|
||||
pbb)
|
||||
basic_machine=m68k-tti
|
||||
;;
|
||||
pc532 | pc532-*)
|
||||
basic_machine=ns32k-pc532
|
||||
;;
|
||||
pentium | p5 | k5 | nexen)
|
||||
basic_machine=i586-pc
|
||||
;;
|
||||
pentiumpro | p6 | k6 | 6x86)
|
||||
basic_machine=i686-pc
|
||||
;;
|
||||
pentiumii | pentium2)
|
||||
basic_machine=i786-pc
|
||||
;;
|
||||
pentium-* | p5-* | k5-* | nexen-*)
|
||||
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumpro-* | p6-* | k6-* | 6x86-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumii-* | pentium2-*)
|
||||
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pn)
|
||||
basic_machine=pn-gould
|
||||
;;
|
||||
power) basic_machine=rs6000-ibm
|
||||
;;
|
||||
ppc) basic_machine=powerpc-unknown
|
||||
;;
|
||||
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppcle | powerpclittle | ppc-le | powerpc-little)
|
||||
basic_machine=powerpcle-unknown
|
||||
;;
|
||||
ppcle-* | powerpclittle-*)
|
||||
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ps2)
|
||||
basic_machine=i386-ibm
|
||||
;;
|
||||
rm[46]00)
|
||||
basic_machine=mips-siemens
|
||||
;;
|
||||
rtpc | rtpc-*)
|
||||
basic_machine=romp-ibm
|
||||
;;
|
||||
sequent)
|
||||
basic_machine=i386-sequent
|
||||
;;
|
||||
sh)
|
||||
basic_machine=sh-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
sps7)
|
||||
basic_machine=m68k-bull
|
||||
os=-sysv2
|
||||
;;
|
||||
spur)
|
||||
basic_machine=spur-unknown
|
||||
;;
|
||||
sun2)
|
||||
basic_machine=m68000-sun
|
||||
;;
|
||||
sun2os3)
|
||||
basic_machine=m68000-sun
|
||||
os=-sunos3
|
||||
;;
|
||||
sun2os4)
|
||||
basic_machine=m68000-sun
|
||||
os=-sunos4
|
||||
;;
|
||||
sun3os3)
|
||||
basic_machine=m68k-sun
|
||||
os=-sunos3
|
||||
;;
|
||||
sun3os4)
|
||||
basic_machine=m68k-sun
|
||||
os=-sunos4
|
||||
;;
|
||||
sun4os3)
|
||||
basic_machine=sparc-sun
|
||||
os=-sunos3
|
||||
;;
|
||||
sun4os4)
|
||||
basic_machine=sparc-sun
|
||||
os=-sunos4
|
||||
;;
|
||||
sun4sol2)
|
||||
basic_machine=sparc-sun
|
||||
os=-solaris2
|
||||
;;
|
||||
sun3 | sun3-*)
|
||||
basic_machine=m68k-sun
|
||||
;;
|
||||
sun4)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
sun386 | sun386i | roadrunner)
|
||||
basic_machine=i386-sun
|
||||
;;
|
||||
symmetry)
|
||||
basic_machine=i386-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
tx39)
|
||||
basic_machine=mipstx39-unknown
|
||||
;;
|
||||
tx39el)
|
||||
basic_machine=mipstx39el-unknown
|
||||
;;
|
||||
tower | tower-32)
|
||||
basic_machine=m68k-ncr
|
||||
;;
|
||||
udi29k)
|
||||
basic_machine=a29k-amd
|
||||
os=-udi
|
||||
;;
|
||||
ultra3)
|
||||
basic_machine=a29k-nyu
|
||||
os=-sym1
|
||||
;;
|
||||
vaxv)
|
||||
basic_machine=vax-dec
|
||||
os=-sysv
|
||||
;;
|
||||
vms)
|
||||
basic_machine=vax-dec
|
||||
os=-vms
|
||||
;;
|
||||
vpp*|vx|vx-*)
|
||||
basic_machine=f301-fujitsu
|
||||
;;
|
||||
vxworks960)
|
||||
basic_machine=i960-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
vxworks68)
|
||||
basic_machine=m68k-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
vxworks29k)
|
||||
basic_machine=a29k-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
xmp)
|
||||
basic_machine=xmp-cray
|
||||
os=-unicos
|
||||
;;
|
||||
xps | xps100)
|
||||
basic_machine=xps100-honeywell
|
||||
;;
|
||||
none)
|
||||
basic_machine=none-none
|
||||
os=-none
|
||||
;;
|
||||
|
||||
# Here we handle the default manufacturer of certain CPU types. It is in
|
||||
# some cases the only manufacturer, in others, it is the most popular.
|
||||
mips)
|
||||
if [ x$os = x-linux-gnu ]; then
|
||||
basic_machine=mips-unknown
|
||||
else
|
||||
basic_machine=mips-mips
|
||||
fi
|
||||
;;
|
||||
romp)
|
||||
basic_machine=romp-ibm
|
||||
;;
|
||||
rs6000)
|
||||
basic_machine=rs6000-ibm
|
||||
;;
|
||||
vax)
|
||||
basic_machine=vax-dec
|
||||
;;
|
||||
pdp11)
|
||||
basic_machine=pdp11-dec
|
||||
;;
|
||||
we32k)
|
||||
basic_machine=we32k-att
|
||||
;;
|
||||
sparc)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
cydra)
|
||||
basic_machine=cydra-cydrome
|
||||
;;
|
||||
orion)
|
||||
basic_machine=orion-highlevel
|
||||
;;
|
||||
orion105)
|
||||
basic_machine=clipper-highlevel
|
||||
;;
|
||||
*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Here we canonicalize certain aliases for manufacturers.
|
||||
case $basic_machine in
|
||||
*-digital*)
|
||||
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
|
||||
;;
|
||||
*-commodore*)
|
||||
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Decode manufacturer-specific aliases for certain operating systems.
|
||||
|
||||
if [ x"$os" != x"" ]
|
||||
then
|
||||
case $os in
|
||||
# First match some system type aliases
|
||||
# that might get confused with valid system types.
|
||||
# -solaris* is a basic system type, with this one exception.
|
||||
-solaris1 | -solaris1.*)
|
||||
os=`echo $os | sed -e 's|solaris1|sunos4|'`
|
||||
;;
|
||||
-solaris)
|
||||
os=-solaris2
|
||||
;;
|
||||
-svr4*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-unixware*)
|
||||
os=-sysv4.2uw
|
||||
;;
|
||||
-gnu/linux*)
|
||||
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
|
||||
;;
|
||||
# First accept the basic system types.
|
||||
# The portable systems comes first.
|
||||
# Each alternative MUST END IN A *, to match a version number.
|
||||
# -sysv* is not here because it comes later, after sysvr4.
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
|
||||
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -rhapsody* \
|
||||
| -openstep* | -mpeix* | -oskit*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-linux*)
|
||||
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
||||
;;
|
||||
-sunos5*)
|
||||
os=`echo $os | sed -e 's|sunos5|solaris2|'`
|
||||
;;
|
||||
-sunos6*)
|
||||
os=`echo $os | sed -e 's|sunos6|solaris3|'`
|
||||
;;
|
||||
-osfrose*)
|
||||
os=-osfrose
|
||||
;;
|
||||
-osf*)
|
||||
os=-osf
|
||||
;;
|
||||
-utek*)
|
||||
os=-bsd
|
||||
;;
|
||||
-dynix*)
|
||||
os=-bsd
|
||||
;;
|
||||
-acis*)
|
||||
os=-aos
|
||||
;;
|
||||
-ctix* | -uts*)
|
||||
os=-sysv
|
||||
;;
|
||||
-ns2 )
|
||||
os=-nextstep2
|
||||
;;
|
||||
# Preserve the version number of sinix5.
|
||||
-sinix5.*)
|
||||
os=`echo $os | sed -e 's|sinix|sysv|'`
|
||||
;;
|
||||
-sinix*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-triton*)
|
||||
os=-sysv3
|
||||
;;
|
||||
-oss*)
|
||||
os=-sysv3
|
||||
;;
|
||||
-svr4)
|
||||
os=-sysv4
|
||||
;;
|
||||
-svr3)
|
||||
os=-sysv3
|
||||
;;
|
||||
-sysvr4)
|
||||
os=-sysv4
|
||||
;;
|
||||
# This must come after -sysvr4.
|
||||
-sysv*)
|
||||
;;
|
||||
-xenix)
|
||||
os=-xenix
|
||||
;;
|
||||
-none)
|
||||
;;
|
||||
*)
|
||||
# Get rid of the `-' at the beginning of $os.
|
||||
os=`echo $os | sed 's/[^-]*-//'`
|
||||
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
|
||||
# Here we handle the default operating systems that come with various machines.
|
||||
# The value should be what the vendor currently ships out the door with their
|
||||
# machine or put another way, the most popular os provided with the machine.
|
||||
|
||||
# Note that if you're going to try to match "-MANUFACTURER" here (say,
|
||||
# "-sun"), then you have to tell the case statement up towards the top
|
||||
# that MANUFACTURER isn't an operating system. Otherwise, code above
|
||||
# will signal an error saying that MANUFACTURER isn't an operating
|
||||
# system, and we'll never get to this point.
|
||||
|
||||
case $basic_machine in
|
||||
*-acorn)
|
||||
os=-riscix1.2
|
||||
;;
|
||||
arm*-corel)
|
||||
os=-linux
|
||||
;;
|
||||
arm*-semi)
|
||||
os=-aout
|
||||
;;
|
||||
pdp11-*)
|
||||
os=-none
|
||||
;;
|
||||
*-dec | vax-*)
|
||||
os=-ultrix4.2
|
||||
;;
|
||||
m68*-apollo)
|
||||
os=-domain
|
||||
;;
|
||||
i386-sun)
|
||||
os=-sunos4.0.2
|
||||
;;
|
||||
m68000-sun)
|
||||
os=-sunos3
|
||||
# This also exists in the configure program, but was not the
|
||||
# default.
|
||||
# os=-sunos4
|
||||
;;
|
||||
*-tti) # must be before sparc entry or we get the wrong os.
|
||||
os=-sysv3
|
||||
;;
|
||||
sparc-* | *-sun)
|
||||
os=-sunos4.1.1
|
||||
;;
|
||||
*-be)
|
||||
os=-beos
|
||||
;;
|
||||
*-ibm)
|
||||
os=-aix
|
||||
;;
|
||||
*-hp)
|
||||
os=-hpux
|
||||
;;
|
||||
*-hitachi)
|
||||
os=-hiux
|
||||
;;
|
||||
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
|
||||
os=-sysv
|
||||
;;
|
||||
*-cbm)
|
||||
os=-amigaos
|
||||
;;
|
||||
*-dg)
|
||||
os=-dgux
|
||||
;;
|
||||
*-dolphin)
|
||||
os=-sysv3
|
||||
;;
|
||||
m68k-ccur)
|
||||
os=-rtu
|
||||
;;
|
||||
m88k-omron*)
|
||||
os=-luna
|
||||
;;
|
||||
*-next )
|
||||
os=-nextstep
|
||||
;;
|
||||
*-sequent)
|
||||
os=-ptx
|
||||
;;
|
||||
*-crds)
|
||||
os=-unos
|
||||
;;
|
||||
*-ns)
|
||||
os=-genix
|
||||
;;
|
||||
i370-*)
|
||||
os=-mvs
|
||||
;;
|
||||
*-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
*-gould)
|
||||
os=-sysv
|
||||
;;
|
||||
*-highlevel)
|
||||
os=-bsd
|
||||
;;
|
||||
*-encore)
|
||||
os=-bsd
|
||||
;;
|
||||
*-sgi)
|
||||
os=-irix
|
||||
;;
|
||||
*-siemens)
|
||||
os=-sysv4
|
||||
;;
|
||||
*-masscomp)
|
||||
os=-rtu
|
||||
;;
|
||||
f301-fujitsu)
|
||||
os=-uxpv
|
||||
;;
|
||||
*)
|
||||
os=-none
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Here we handle the case where we know the os, and the CPU type, but not the
|
||||
# manufacturer. We pick the logical manufacturer.
|
||||
vendor=unknown
|
||||
case $basic_machine in
|
||||
*-unknown)
|
||||
case $os in
|
||||
-riscix*)
|
||||
vendor=acorn
|
||||
;;
|
||||
-sunos*)
|
||||
vendor=sun
|
||||
;;
|
||||
-aix*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-hpux*)
|
||||
vendor=hp
|
||||
;;
|
||||
-mpeix*)
|
||||
vendor=hp
|
||||
;;
|
||||
-mpeix*)
|
||||
vendor=hp
|
||||
;;
|
||||
-hiux*)
|
||||
vendor=hitachi
|
||||
;;
|
||||
-unos*)
|
||||
vendor=crds
|
||||
;;
|
||||
-dgux*)
|
||||
vendor=dg
|
||||
;;
|
||||
-luna*)
|
||||
vendor=omron
|
||||
;;
|
||||
-genix*)
|
||||
vendor=ns
|
||||
;;
|
||||
-mvs*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-ptx*)
|
||||
vendor=sequent
|
||||
;;
|
||||
-vxsim* | -vxworks*)
|
||||
vendor=wrs
|
||||
;;
|
||||
-aux*)
|
||||
vendor=apple
|
||||
;;
|
||||
esac
|
||||
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
|
||||
;;
|
||||
esac
|
||||
|
||||
echo $basic_machine$os
|
||||
+11
-9
@@ -29,17 +29,16 @@ if test "$recurse" = "yes"; then
|
||||
if test "$threadsafe" = "yes"; then
|
||||
(set -x; test -d TSRM || mkdir TSRM; cd TSRM; $cwd/$srcdir/TSRM/configure --cache-file=$cachefile $@)
|
||||
fi
|
||||
(set -x; cd $srcdir; sh ltconfig --disable-static --enable-dlopen --cache-file=$cachefile ltmain.sh)
|
||||
fi
|
||||
|
||||
(set -x; cd $srcdir; ./ltconfig --disable-static --enable-dlopen --cache-file=$cachefile ltmain.sh)
|
||||
|
||||
dnl ## Diversion 1 is the initial checking of OS features, programs,
|
||||
dnl ## libraries and so on.
|
||||
|
||||
dnl ## In diversion 2 we check for compile-time options to the PHP
|
||||
dnl ## core and how to deal with different system dependencies. This
|
||||
dnl ## includes what regex library is used and whether debugging or short
|
||||
dnl ## tags are enabled, and the default behaviour of php3.ini options.
|
||||
dnl ## tags are enabled, and the default behaviour of php.ini options.
|
||||
dnl ## This is also where an SAPI interface is selected (choosing between
|
||||
dnl ## Apache module, CGI etc.)
|
||||
|
||||
@@ -53,8 +52,6 @@ divert(1)
|
||||
dnl ## This is where the version number is changed from now on!
|
||||
AM_INIT_AUTOMAKE(php, 4.0b2-dev)
|
||||
|
||||
|
||||
|
||||
PHP_VERSION=$VERSION
|
||||
echo "/* automatically generated by configure */" > php_version.h.new
|
||||
echo "/* edit configure.in.in to change version number */" >> php_version.h.new
|
||||
@@ -86,9 +83,11 @@ if test "$YACC" != "bison -y"; then
|
||||
AC_MSG_WARN(You will need bison if you want to regenerate the PHP parsers.)
|
||||
else
|
||||
AC_MSG_CHECKING(bison version)
|
||||
set `$YACC --version| sed -e 's/^GNU Bison version //' -e 's/\./ /'`
|
||||
oldIFS=$IFS; IFS=.
|
||||
set `bison -V | sed -e 's/^GNU Bison version //'`
|
||||
IFS=$oldIFS
|
||||
if test "$1" = "1" -a "$2" -lt "25"; then
|
||||
AC_MSG_WARN(You will need bison 1.25 if you want to regenerate the PHP parsers (found $1.$2).)
|
||||
AC_MSG_WARN(Bison 1.25 or newer needed to regenerate parsers (found $1.$2).)
|
||||
fi
|
||||
AC_MSG_RESULT($1.$2 (ok))
|
||||
fi
|
||||
@@ -599,7 +598,7 @@ AC_SUBST(FHTTPD_TARGET)
|
||||
|
||||
AC_MSG_CHECKING(whether to use a configuration file)
|
||||
AC_ARG_WITH(config-file-path,
|
||||
[ --with-config-file-path=PATH Sets the path in which to look for php3.ini
|
||||
[ --with-config-file-path=PATH Sets the path in which to look for php.ini
|
||||
defaults to /usr/local/lib],
|
||||
[
|
||||
if test "$withval" = "yes"; then
|
||||
@@ -871,6 +870,9 @@ dnl *** to supply it only when absolutely necessary
|
||||
dnl If we are using gcc add -fpic to make dl() work on some platforms
|
||||
dnl test -n "$GCC" && CFLAGS="$CFLAGS -fpic"
|
||||
|
||||
dnl add -fPIC option on Solaris if we are building dynamic extensions
|
||||
PHP_SOLARIS_PIC_WEIRDNESS
|
||||
|
||||
AC_SUBST(CFLAGS)
|
||||
AC_SUBST(PROG_SENDMAIL)
|
||||
AC_SUBST(CFLAGS_SHLIB)
|
||||
@@ -887,7 +889,7 @@ AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME")
|
||||
PHP_OS=`uname`
|
||||
AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS")
|
||||
|
||||
AC_OUTPUT(Makefile libphp4.module
|
||||
AC_OUTPUT(Makefile libphp4.module php4.spec
|
||||
scripts/mkextlib regex/Makefile
|
||||
@@EXT_MAKEFILES@@ build-defs.h, [
|
||||
], [
|
||||
|
||||
+9
-9
@@ -28,13 +28,13 @@
|
||||
unsigned char third_argument_force_ref[] = { 3, BYREF_NONE, BYREF_NONE, BYREF_FORCE };
|
||||
|
||||
function_entry reg_functions[] = {
|
||||
{"ereg", php3_ereg, third_argument_force_ref },
|
||||
{"ereg_replace", php3_eregreplace, NULL },
|
||||
{"eregi", php3_eregi, third_argument_force_ref },
|
||||
{"eregi_replace", php3_eregireplace, NULL },
|
||||
{"split", php3_split, NULL},
|
||||
{"join", php3_implode, NULL},
|
||||
{"sql_regcase", php3_sql_regcase, NULL},
|
||||
PHP_FE(ereg, third_argument_force_ref)
|
||||
PHP_FE(ereg_replace, NULL)
|
||||
PHP_FE(eregi, third_argument_force_ref)
|
||||
PHP_FE(eregi_replace, NULL)
|
||||
PHP_FE(split, NULL)
|
||||
PHP_FALIAS(join, implode, NULL)
|
||||
PHP_FE(sql_regcase, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
@@ -491,7 +491,7 @@ static void _php3_eregreplace(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
|
||||
/* {{{ proto string ereg_replace(string pattern, string string [, array registers])
|
||||
Replace regular expression */
|
||||
PHP_FUNCTION(eregreplace)
|
||||
PHP_FUNCTION(ereg_replace)
|
||||
{
|
||||
_php3_eregreplace(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
|
||||
}
|
||||
@@ -499,7 +499,7 @@ PHP_FUNCTION(eregreplace)
|
||||
|
||||
/* {{{ proto string eregi_replace(string pattern, string string [, array registers])
|
||||
Case insensitive replace regular expression */
|
||||
PHP_FUNCTION(eregireplace)
|
||||
PHP_FUNCTION(eregi_replace)
|
||||
{
|
||||
_php3_eregreplace(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
|
||||
}
|
||||
|
||||
+2
-2
@@ -40,8 +40,8 @@ char *_php3_regreplace(const char *pattern, const char *replace, const char *str
|
||||
|
||||
PHP_FUNCTION(ereg);
|
||||
PHP_FUNCTION(eregi);
|
||||
PHP_FUNCTION(eregireplace);
|
||||
PHP_FUNCTION(eregreplace);
|
||||
PHP_FUNCTION(eregi_replace);
|
||||
PHP_FUNCTION(ereg_replace);
|
||||
PHP_FUNCTION(split);
|
||||
PHPAPI PHP_FUNCTION(sql_regcase);
|
||||
|
||||
|
||||
@@ -4,3 +4,6 @@
|
||||
/* Define if you have the gd version 1.3 library (-lgd). */
|
||||
#define HAVE_LIBGD13 0
|
||||
|
||||
#undef FREETYPE_4BIT_ANTIALIAS_HACK
|
||||
#undef HAVE_LIBFREETYPE
|
||||
#undef HAVE_LIBTTF
|
||||
+72
-14
@@ -7,7 +7,7 @@ AC_ARG_WITH(gd,
|
||||
no)
|
||||
AC_MSG_RESULT(no) ;;
|
||||
yes)
|
||||
GD_LIBS="-lgd"
|
||||
AC_ADD_LIBRARY(gd)
|
||||
AC_DEFINE(HAVE_LIBGD)
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_CHECK_LIB(gd, gdImageString16, [ AC_DEFINE(HAVE_LIBGD13) ])
|
||||
@@ -15,12 +15,19 @@ AC_ARG_WITH(gd,
|
||||
;;
|
||||
*)
|
||||
dnl A whole whack of possible places where this might be
|
||||
test -f $withval/include/gd1.3/gd.h && GD_INCLUDE="-I$withval/include/gd1.3"
|
||||
test -f $withval/include/gd/gd.h && GD_INCLUDE="-I$withval/include/gd"
|
||||
test -f $withval/include/gd.h && GD_INCLUDE="-I$withval/include"
|
||||
test -f $withval/gd1.3/gd.h && GD_INCLUDE="-I$withval/gd1.3"
|
||||
test -f $withval/gd/gd.h && GD_INCLUDE="-I$withval/gd"
|
||||
test -f $withval/gd.h && GD_INCLUDE="-I$withval"
|
||||
test -f $withval/include/gd1.3/gd.h && GD_INCLUDE="$withval/include/gd1.3"
|
||||
test -f $withval/include/gd/gd.h && GD_INCLUDE="$withval/include/gd"
|
||||
test -f $withval/include/gd.h && GD_INCLUDE="$withval/include"
|
||||
test -f $withval/gd1.3/gd.h && GD_INCLUDE="$withval/gd1.3"
|
||||
test -f $withval/gd/gd.h && GD_INCLUDE="$withval/gd"
|
||||
test -f $withval/gd.h && GD_INCLUDE="$withval"
|
||||
|
||||
test -f $withval/lib/libgd.so && GD_LIB="$withval/lib"
|
||||
test -f $withval/lib/gd/libgd.so && GD_LIB="$withval/lib/gd"
|
||||
test -f $withval/lib/gd1.3/libgd.so && GD_LIB="$withval/lib/gd1.3"
|
||||
test -f $withval/libgd.so && GD_LIB="$withval"
|
||||
test -f $withval/gd/libgd.so && GD_LIB="$withval/gd"
|
||||
test -f $withval/gd1.3/libgd.so && GD_LIB="$withval/gd1.3"
|
||||
|
||||
test -f $withval/lib/libgd.a && GD_LIB="$withval/lib"
|
||||
test -f $withval/lib/gd/libgd.a && GD_LIB="$withval/lib/gd"
|
||||
@@ -30,13 +37,13 @@ dnl A whole whack of possible places where this might be
|
||||
test -f $withval/gd1.3/libgd.a && GD_LIB="$withval/gd1.3"
|
||||
|
||||
if test -n "$GD_INCLUDE" && test -n "$GD_LIB" ; then
|
||||
GD_LIBS="-L$GD_LIB -lgd"
|
||||
AC_ADD_LIBRARY_WITH_PATH(gd, $GD_LIB)
|
||||
AC_DEFINE(HAVE_LIBGD)
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_CHECK_LIB(gd, gdImageString16, [ AC_DEFINE(HAVE_LIBGD13) ])
|
||||
ac_cv_lib_gd_gdImageLine=yes
|
||||
else
|
||||
AC_MSG_ERROR(Unable to find libgd.a anywhere under $withval)
|
||||
AC_MSG_ERROR([Unable to find libgd.(a|so) anywhere under $withval])
|
||||
fi ;;
|
||||
esac
|
||||
],[
|
||||
@@ -44,11 +51,62 @@ dnl A whole whack of possible places where this might be
|
||||
AC_CHECK_LIB(gd, gdImageString16, [ AC_DEFINE(HAVE_LIBGD13) ])
|
||||
])
|
||||
if test "$ac_cv_lib_gd_gdImageLine" = "yes"; then
|
||||
if test -f /usr/pkg/include/gd/gd.h -a -z "$GD_INCLUDE" ; then
|
||||
GD_INCLUDE="-I/usr/pkg/include/gd"
|
||||
CHECK_TTF="yes"
|
||||
AC_ARG_WITH(ttf,
|
||||
[ --with-ttf[=DIR] Include Freetype support],[
|
||||
if test $withval = "no" ; then
|
||||
CHECK_TTF=""
|
||||
else
|
||||
CHECK_TTF="$withval"
|
||||
fi
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING(whether to include ttf support)
|
||||
if test -n "$CHECK_TTF" ; then
|
||||
for i in /usr /usr/local "$CHECK_TTF" ; do
|
||||
if test -f "$i/include/truetype.h" ; then
|
||||
FREETYPE_DIR="$i"
|
||||
fi
|
||||
if test -f "$i/include/freetype.h" ; then
|
||||
TTF_DIR="$i"
|
||||
fi
|
||||
done
|
||||
if test -n "$FREETYPE_DIR" ; then
|
||||
AC_DEFINE(HAVE_LIBFREETYPE)
|
||||
AC_ADD_LIBRARY_WITH_PATH(freetype, $FREETYPE_DIR/lib)
|
||||
AC_ADD_INCLUDE($FREETYPE_DIR/include)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
if test -n "$TTF_DIR" ; then
|
||||
AC_DEFINE(HAVE_LIBTTF)
|
||||
AC_ADD_LIBRARY_WITH_PATH(ttf, $TTF_DIR/lib)
|
||||
AC_ADD_INCLUDE($TTF_DIR/include)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_CHECK_LIB(ttf, TT_Open_Face)
|
||||
|
||||
if test -f /usr/pkg/include/gd/gd.h -a -z "$GD_INCLUDE" ; then
|
||||
GD_INCLUDE="/usr/pkg/include/gd"
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(whether to enable 4bit antialias hack with FreeType2)
|
||||
AC_ARG_ENABLE(freetype-4bit-antialias-hack,
|
||||
[ --enable-freetype-4bit-antialias-hack For the crazy with FreeType2.],[
|
||||
if test "$enableval" = "yes" ; then
|
||||
AC_DEFINE(FREETYPE_4BIT_ANTIALIAS_HACK, 1)
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
|
||||
PHP_EXTENSION(gd)
|
||||
EXTRA_LIBS="$EXTRA_LIBS $GD_LIBS"
|
||||
INCLUDES="$INCLUDES $GD_INCLUDE"
|
||||
AC_ADD_INCLUDE($GD_INCLUDE)
|
||||
fi
|
||||
+58
-33
@@ -49,7 +49,7 @@
|
||||
#include <gdfontmb.h> /* 3 Medium bold font */
|
||||
#include <gdfontl.h> /* 4 Large font */
|
||||
#include <gdfontg.h> /* 5 Giant font */
|
||||
#if HAVE_LIBTTF
|
||||
#ifdef ENABLE_GD_TTF
|
||||
# include "gdttf.h"
|
||||
#endif
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
#define M_PI 3.14159265358979323846
|
||||
#endif
|
||||
|
||||
#if HAVE_LIBTTF
|
||||
#ifdef ENABLE_GD_TTF
|
||||
static void php3_imagettftext_common(INTERNAL_FUNCTION_PARAMETERS, int);
|
||||
#endif
|
||||
|
||||
@@ -118,7 +118,7 @@ function_entry gd_functions[] = {
|
||||
{"imagesx", php3_imagesxfn, NULL},
|
||||
{"imagesy", php3_imagesyfn, NULL},
|
||||
{"imagedashedline", php3_imagedashedline, NULL},
|
||||
#if HAVE_LIBTTF
|
||||
#ifdef ENABLE_GD_TTF
|
||||
{"imagettfbbox", php3_imagettfbbox, NULL},
|
||||
{"imagettftext", php3_imagettftext, NULL},
|
||||
#endif
|
||||
@@ -175,7 +175,7 @@ void php3_info_gd(ZEND_MODULE_INFO_FUNC_ARGS)
|
||||
#else
|
||||
php3_printf("Version 1.2");
|
||||
#endif
|
||||
#if HAVE_LIBTTF
|
||||
#ifdef ENABLE_GD_TTF
|
||||
php3_printf(" with FreeType support");
|
||||
#endif
|
||||
}
|
||||
@@ -340,7 +340,8 @@ PHP_FUNCTION(imageloadfont) {
|
||||
|
||||
/* {{{ proto int imagecreate(int x_size, int y_size)
|
||||
Create a new image */
|
||||
PHP_FUNCTION(imagecreate) {
|
||||
PHP_FUNCTION(imagecreate)
|
||||
{
|
||||
pval *x_size, *y_size;
|
||||
int ind;
|
||||
gdImagePtr im;
|
||||
@@ -362,7 +363,8 @@ PHP_FUNCTION(imagecreate) {
|
||||
|
||||
/* {{{ proto int imagecreatefromgif(string filename)
|
||||
Create a new image from file or URL */
|
||||
PHP_FUNCTION(imagecreatefromgif ) {
|
||||
PHP_FUNCTION(imagecreatefromgif )
|
||||
{
|
||||
pval *file;
|
||||
int ind;
|
||||
gdImagePtr im;
|
||||
@@ -404,7 +406,8 @@ PHP_FUNCTION(imagecreatefromgif ) {
|
||||
|
||||
/* {{{ proto int imagedestroy(int im)
|
||||
Destroy an image */
|
||||
PHP_FUNCTION(imagedestroy) {
|
||||
PHP_FUNCTION(imagedestroy)
|
||||
{
|
||||
pval *imgind;
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &imgind) == FAILURE) {
|
||||
@@ -421,7 +424,8 @@ PHP_FUNCTION(imagedestroy) {
|
||||
|
||||
/* {{{ proto int imagecolorallocate(int im, int red, int green, int blue)
|
||||
Allocate a color for an image */
|
||||
PHP_FUNCTION(imagecolorallocate) {
|
||||
PHP_FUNCTION(imagecolorallocate)
|
||||
{
|
||||
pval *imgind, *red, *green, *blue;
|
||||
int ind, ind_type;
|
||||
int col;
|
||||
@@ -457,7 +461,8 @@ PHP_FUNCTION(imagecolorallocate) {
|
||||
/* im, x, y */
|
||||
/* {{{ proto int imagecolorat(int im, int x, int y)
|
||||
Get the index of the color of a pixel */
|
||||
PHP_FUNCTION(imagecolorat) {
|
||||
PHP_FUNCTION(imagecolorat)
|
||||
{
|
||||
pval *imgind, *x, *y;
|
||||
int ind, ind_type;
|
||||
gdImagePtr im;
|
||||
@@ -493,7 +498,8 @@ PHP_FUNCTION(imagecolorat) {
|
||||
|
||||
/* {{{ proto int imagecolorclosest(int im, int red, int green, int blue)
|
||||
Get the index of the closest color to the specified color */
|
||||
PHP_FUNCTION(imagecolorclosest) {
|
||||
PHP_FUNCTION(imagecolorclosest)
|
||||
{
|
||||
pval *imgind, *red, *green, *blue;
|
||||
int ind, ind_type;
|
||||
int col;
|
||||
@@ -528,7 +534,8 @@ PHP_FUNCTION(imagecolorclosest) {
|
||||
|
||||
/* {{{ proto int imagecolordeallocate(int im, int index)
|
||||
De-allocate a color for an image */
|
||||
PHP_FUNCTION(imagecolordeallocate) {
|
||||
PHP_FUNCTION(imagecolordeallocate)
|
||||
{
|
||||
pval *imgind, *index;
|
||||
int ind, ind_type, col;
|
||||
gdImagePtr im;
|
||||
@@ -562,7 +569,8 @@ PHP_FUNCTION(imagecolordeallocate) {
|
||||
|
||||
/* {{{ proto int imagecolorresolve(int im, int red, int green, int blue)
|
||||
Get the index of the specified color or its closest possible alternative */
|
||||
PHP_FUNCTION(imagecolorresolve) {
|
||||
PHP_FUNCTION(imagecolorresolve)
|
||||
{
|
||||
pval *imgind, *red, *green, *blue;
|
||||
int ind, ind_type;
|
||||
int col;
|
||||
@@ -597,7 +605,8 @@ PHP_FUNCTION(imagecolorresolve) {
|
||||
|
||||
/* {{{ proto int imagecolorexact(int im, int red, int green, int blue)
|
||||
Get the index of the specified color */
|
||||
PHP_FUNCTION(imagecolorexact) {
|
||||
PHP_FUNCTION(imagecolorexact)
|
||||
{
|
||||
pval *imgind, *red, *green, *blue;
|
||||
int ind, ind_type;
|
||||
int col;
|
||||
@@ -632,7 +641,8 @@ PHP_FUNCTION(imagecolorexact) {
|
||||
|
||||
/* {{{ proto int imagecolorset(int im, int col, int red, int green, int blue)
|
||||
Set the color for the specified palette index */
|
||||
PHP_FUNCTION(imagecolorset) {
|
||||
PHP_FUNCTION(imagecolorset)
|
||||
{
|
||||
pval *imgind, *color, *red, *green, *blue;
|
||||
int ind, ind_type;
|
||||
int col;
|
||||
@@ -674,7 +684,8 @@ PHP_FUNCTION(imagecolorset) {
|
||||
|
||||
/* {{{ proto array imagecolorsforindex(int im, int col)
|
||||
Get the colors for an index */
|
||||
PHP_FUNCTION(imagecolorsforindex) {
|
||||
PHP_FUNCTION(imagecolorsforindex)
|
||||
{
|
||||
pval *imgind, *index;
|
||||
int col, ind, ind_type;
|
||||
gdImagePtr im;
|
||||
@@ -712,7 +723,8 @@ PHP_FUNCTION(imagecolorsforindex) {
|
||||
|
||||
/* {{{ proto int imagegif(int im, string filename)
|
||||
Output image to browser or file */
|
||||
PHP_FUNCTION(imagegif ) {
|
||||
PHP_FUNCTION(imagegif )
|
||||
{
|
||||
pval *imgind, *file;
|
||||
gdImagePtr im;
|
||||
char *fn=NULL;
|
||||
@@ -791,7 +803,8 @@ PHP_FUNCTION(imagegif ) {
|
||||
|
||||
/* {{{ proto int imagesetpixel(int im, int x, int y, int col)
|
||||
Set a single pixel */
|
||||
PHP_FUNCTION(imagesetpixel) {
|
||||
PHP_FUNCTION(imagesetpixel)
|
||||
{
|
||||
pval *imarg, *xarg, *yarg, *colarg;
|
||||
gdImagePtr im;
|
||||
int col, y, x;
|
||||
@@ -828,7 +841,8 @@ PHP_FUNCTION(imagesetpixel) {
|
||||
/* im, x1, y1, x2, y2, col */
|
||||
/* {{{ proto int imageline(int im, int x1, int y1, int x2, int y2, int col)
|
||||
Draw a line */
|
||||
PHP_FUNCTION(imageline) {
|
||||
PHP_FUNCTION(imageline)
|
||||
{
|
||||
pval *IM, *COL, *X1, *Y1, *X2, *Y2;
|
||||
gdImagePtr im;
|
||||
int col, y2, x2, y1, x1;
|
||||
@@ -867,7 +881,8 @@ PHP_FUNCTION(imageline) {
|
||||
|
||||
/* {{{ proto int imagedashedline(int im, int x1, int y1, int x2, int y2, int col)
|
||||
Draw a dashed line */
|
||||
PHP_FUNCTION(imagedashedline) {
|
||||
PHP_FUNCTION(imagedashedline)
|
||||
{
|
||||
pval *IM, *COL, *X1, *Y1, *X2, *Y2;
|
||||
gdImagePtr im;
|
||||
int col, y2, x2, y1, x1;
|
||||
@@ -906,7 +921,8 @@ PHP_FUNCTION(imagedashedline) {
|
||||
/* im, x1, y1, x2, y2, col */
|
||||
/* {{{ proto int imagerectangle(int im, int x1, int y1, int x2, int y2, int col)
|
||||
Draw a rectangle */
|
||||
PHP_FUNCTION(imagerectangle) {
|
||||
PHP_FUNCTION(imagerectangle)
|
||||
{
|
||||
pval *IM, *COL, *X1, *Y1, *X2, *Y2;
|
||||
gdImagePtr im;
|
||||
int col, y2, x2, y1, x1;
|
||||
@@ -946,7 +962,8 @@ PHP_FUNCTION(imagerectangle) {
|
||||
/* im, x1, y1, x2, y2, col */
|
||||
/* {{{ proto int imagefilledrectangle(int im, int x1, int y1, int x2, int y2, int col)
|
||||
Draw a filled rectangle */
|
||||
PHP_FUNCTION(imagefilledrectangle) {
|
||||
PHP_FUNCTION(imagefilledrectangle)
|
||||
{
|
||||
pval *IM, *COL, *X1, *Y1, *X2, *Y2;
|
||||
gdImagePtr im;
|
||||
int col, y2, x2, y1, x1;
|
||||
@@ -985,7 +1002,8 @@ PHP_FUNCTION(imagefilledrectangle) {
|
||||
|
||||
/* {{{ proto int imagearc(int im, int cx, int cy, int w, int h, int s, int e, int col)
|
||||
Draw a partial ellipse */
|
||||
PHP_FUNCTION(imagearc) {
|
||||
PHP_FUNCTION(imagearc)
|
||||
{
|
||||
pval *COL, *E, *ST, *H, *W, *CY, *CX, *IM;
|
||||
gdImagePtr im;
|
||||
int col, e, st, h, w, cy, cx;
|
||||
@@ -1036,7 +1054,8 @@ PHP_FUNCTION(imagearc) {
|
||||
/* im, x, y, border, col */
|
||||
/* {{{ proto int imagefilltoborder(int im, int x, int y, int border, int col)
|
||||
Flood fill to specific color */
|
||||
PHP_FUNCTION(imagefilltoborder) {
|
||||
PHP_FUNCTION(imagefilltoborder)
|
||||
{
|
||||
pval *IM, *X, *Y, *BORDER, *COL;
|
||||
gdImagePtr im;
|
||||
int col, border, y, x;
|
||||
@@ -1074,7 +1093,8 @@ PHP_FUNCTION(imagefilltoborder) {
|
||||
/* im, x, y, col */
|
||||
/* {{{ proto int imagefill(int im, int x, int y, int col)
|
||||
Flood fill */
|
||||
PHP_FUNCTION(imagefill) {
|
||||
PHP_FUNCTION(imagefill)
|
||||
{
|
||||
pval *IM, *X, *Y, *COL;
|
||||
gdImagePtr im;
|
||||
int col, y, x;
|
||||
@@ -1109,7 +1129,8 @@ PHP_FUNCTION(imagefill) {
|
||||
|
||||
/* {{{ proto int imagecolorstotal(int im)
|
||||
Find out the number of colors in an image's palette */
|
||||
PHP_FUNCTION(imagecolorstotal) {
|
||||
PHP_FUNCTION(imagecolorstotal)
|
||||
{
|
||||
pval *IM;
|
||||
gdImagePtr im;
|
||||
int ind_type;
|
||||
@@ -1133,7 +1154,8 @@ PHP_FUNCTION(imagecolorstotal) {
|
||||
/* im, col */
|
||||
/* {{{ proto int imagecolortransparent(int im [, int col])
|
||||
Define a color as transparent */
|
||||
PHP_FUNCTION(imagecolortransparent) {
|
||||
PHP_FUNCTION(imagecolortransparent)
|
||||
{
|
||||
pval *IM, *COL = NULL;
|
||||
gdImagePtr im;
|
||||
int col;
|
||||
@@ -1175,7 +1197,8 @@ PHP_FUNCTION(imagecolortransparent) {
|
||||
/* im, interlace */
|
||||
/* {{{ proto int imageinterlace(int im [, int interlace])
|
||||
Enable or disable interlace */
|
||||
PHP_FUNCTION(imageinterlace) {
|
||||
PHP_FUNCTION(imageinterlace)
|
||||
{
|
||||
pval *IM, *INT = NULL;
|
||||
gdImagePtr im;
|
||||
int interlace;
|
||||
@@ -1218,7 +1241,7 @@ PHP_FUNCTION(imageinterlace) {
|
||||
arg = 1 filled polygon */
|
||||
/* im, points, num_points, col */
|
||||
static void _php3_imagepolygon(INTERNAL_FUNCTION_PARAMETERS, int filled) {
|
||||
pval *IM, *POINTS, *NPOINTS, *COL, *var;
|
||||
pval *IM, *POINTS, *NPOINTS, *COL, **var;
|
||||
gdImagePtr im;
|
||||
gdPoint points[PolyMaxPoints];
|
||||
int npoints, col, nelem, i;
|
||||
@@ -1279,12 +1302,14 @@ static void _php3_imagepolygon(INTERNAL_FUNCTION_PARAMETERS, int filled) {
|
||||
|
||||
for (i = 0; i < npoints; i++) {
|
||||
if (_php3_hash_index_find(POINTS->value.ht, (i * 2), (void **)&var) == SUCCESS) {
|
||||
convert_to_long(var);
|
||||
points[i].x = var->value.lval;
|
||||
SEPARATE_ZVAL(var);
|
||||
convert_to_long(*var);
|
||||
points[i].x = (*var)->value.lval;
|
||||
}
|
||||
if (_php3_hash_index_find(POINTS->value.ht, (i * 2) + 1, (void **)&var) == SUCCESS) {
|
||||
convert_to_long(var);
|
||||
points[i].y = var->value.lval;
|
||||
SEPARATE_ZVAL(var);
|
||||
convert_to_long(*var);
|
||||
points[i].y = (*var)->value.lval;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1671,7 +1696,7 @@ PHP_FUNCTION(imagesyfn)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
#if HAVE_LIBTTF
|
||||
#ifdef ENABLE_GD_TTF
|
||||
|
||||
#define TTFTEXT_DRAW 0
|
||||
#define TTFTEXT_BBOX 1
|
||||
|
||||
+3
-3
@@ -38,11 +38,11 @@
|
||||
|
||||
/* This just seems unessacary */
|
||||
#if (WIN32|WINNT)
|
||||
#define HAVE_LIBTTF 1
|
||||
#define ENABLE_GD_TTF
|
||||
#else
|
||||
#include "php_config.h"
|
||||
#endif
|
||||
#if HAVE_LIBTTF
|
||||
#ifdef ENABLE_GD_TTF
|
||||
|
||||
#include "gdcache.h"
|
||||
|
||||
@@ -198,4 +198,4 @@ main(char *argv[], int argc)
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* HAVE_LIBTTF */
|
||||
#endif /* ENABLE_GD_TTF */
|
||||
+18
-2
@@ -9,7 +9,7 @@
|
||||
#else
|
||||
#include "php_config.h"
|
||||
#endif
|
||||
#if HAVE_LIBTTF
|
||||
#if HAVE_LIBTTF|HAVE_LIBFREETYPE
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -17,7 +17,11 @@
|
||||
#include <gd.h>
|
||||
#include "gdttf.h"
|
||||
#include "gdcache.h"
|
||||
#if HAVE_LIBFREETYPE
|
||||
#include <truetype.h>
|
||||
#else
|
||||
#include <freetype.h>
|
||||
#endif
|
||||
|
||||
/* number of fonts cached before least recently used is replaced */
|
||||
#define FONTCACHESIZE 6
|
||||
@@ -31,7 +35,11 @@
|
||||
#define BITMAPCACHESIZE 8
|
||||
|
||||
/* number of antialias color lookups cached */
|
||||
#if FREETYPE_4BIT_ANTIALIAS_HACK
|
||||
#define TWEENCOLORCACHESIZE 128
|
||||
#else
|
||||
#define TWEENCOLORCACHESIZE 32
|
||||
#endif
|
||||
|
||||
/* ptsize below which anti-aliasing is ineffective */
|
||||
#define MINANTIALIASPTSIZE 0
|
||||
@@ -40,7 +48,11 @@
|
||||
#define RESOLUTION 72
|
||||
|
||||
/* Number of colors used for anti-aliasing */
|
||||
#if FREETYPE_4BIT_ANTIALIAS_HACK
|
||||
#define NUMCOLORS 16
|
||||
#else
|
||||
#define NUMCOLORS 4
|
||||
#endif
|
||||
|
||||
/* Line separation as a factor of font height.
|
||||
No space between if LINESPACE = 1.00
|
||||
@@ -379,7 +391,11 @@ fontFetch ( char **error, void *key )
|
||||
a->cos_a = cos(a->angle);
|
||||
a->engine = b->engine;
|
||||
if ((err = TT_Open_Face(*b->engine, a->fontname, &a->face))) {
|
||||
#if HAVE_LIBFREETYPE
|
||||
if (err == 0x008) { /* The FT2 oldapi is missing this code */
|
||||
#else
|
||||
if (err == TT_Err_Could_Not_Open_File) {
|
||||
#endif
|
||||
*error = "Could not find/open font";
|
||||
}
|
||||
else {
|
||||
@@ -852,7 +868,7 @@ gdttf(gdImage *im, int *brect, int fg, char *fontname,
|
||||
return (char *)NULL;
|
||||
}
|
||||
|
||||
#endif /* HAVE_LIBTTF */
|
||||
#endif /* HAVE_LIBTTF|HAVE_LIBFREETYPE */
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
|
||||
+6
-1
@@ -34,6 +34,11 @@
|
||||
#ifndef _PHP3_GD_H
|
||||
#define _PHP3_GD_H
|
||||
|
||||
|
||||
#if defined(HAVE_LIBTTF) && defined(HAVE_FREETYPE_H)
|
||||
#define ENABLE_GD_TTF
|
||||
#endif
|
||||
|
||||
#if COMPILE_DL
|
||||
#undef HAVE_LIBGD
|
||||
#define HAVE_LIBGD 1
|
||||
@@ -89,7 +94,7 @@ PHP_FUNCTION(imagesyfn);
|
||||
void php3_free_gd_font(gdFontPtr);
|
||||
void _php3_gdimagecharup(gdImagePtr, gdFontPtr, int, int, int, int);
|
||||
PHP_FUNCTION(imagedashedline);
|
||||
#ifdef HAVE_LIBTTF
|
||||
#ifdef ENABLE_GD_TTF
|
||||
PHP_FUNCTION(imagettfbbox);
|
||||
PHP_FUNCTION(imagettftext);
|
||||
#endif
|
||||
|
||||
+17
-22
@@ -1159,7 +1159,7 @@ $ifdef HAVE_IFX_IUS;
|
||||
$endif;
|
||||
) {
|
||||
|
||||
int bid;
|
||||
int bid = 0;
|
||||
if(fieldtype==SQLTEXT) {
|
||||
bid=php3_intifx_create_blob(TYPE_BLTEXT,BLMODE_INMEM,"",-1,list);
|
||||
locator=php3_intifx_get_blobloc(bid,list);
|
||||
@@ -1243,9 +1243,6 @@ EXEC SQL BEGIN DECLARE SECTION;
|
||||
long sqlerrd[6];
|
||||
int e;
|
||||
|
||||
$ifdef HAVE_IFX_IUS;
|
||||
fixed binary 'blob' ifx_lo_t *slocator;
|
||||
$endif;
|
||||
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
|
||||
@@ -1643,7 +1640,7 @@ $ifdef HAVE_IFX_IUS;
|
||||
$endif;
|
||||
) {
|
||||
|
||||
int bid;
|
||||
int bid = 0;
|
||||
if(fieldtype==SQLTEXT) {
|
||||
bid=php3_intifx_create_blob(TYPE_BLTEXT,BLMODE_INMEM,"",-1,list);
|
||||
locator=php3_intifx_get_blobloc(bid,list);
|
||||
@@ -3143,7 +3140,7 @@ EXEC SQL END DECLARE SECTION;
|
||||
|
||||
int type;
|
||||
|
||||
int i, locind;
|
||||
int i;
|
||||
|
||||
IFXLS_FETCH();
|
||||
|
||||
@@ -3777,7 +3774,7 @@ static char* php3_intifx_create_tmpfile(long bid) {
|
||||
if ((blobdir = getenv("php3_blobdir")) == NULL)
|
||||
blobdir=".";
|
||||
|
||||
sprintf(filename,"blb%d",bid);
|
||||
sprintf(filename,"blb%d",(int)bid);
|
||||
blobfile=tempnam(blobdir,filename);
|
||||
free(blobdir);
|
||||
retval=emalloc(strlen(blobfile)+1);
|
||||
@@ -4257,17 +4254,17 @@ PHP_FUNCTION(ifxus_create_slob) {
|
||||
mode=pmode->value.lval;
|
||||
|
||||
create_mode=0;
|
||||
if(mode&1!=0)
|
||||
if((mode&1) !=0)
|
||||
create_mode|=LO_RDONLY;
|
||||
if(mode&2!=0)
|
||||
if((mode&2) !=0)
|
||||
create_mode|=LO_WRONLY;
|
||||
if(mode&4!=0)
|
||||
if((mode&4) !=0)
|
||||
create_mode|=LO_APPEND;
|
||||
if(mode&8!=0)
|
||||
if((mode&8) !=0)
|
||||
create_mode|=LO_RDWR;
|
||||
if(mode&16!=0)
|
||||
if((mode&16) !=0)
|
||||
create_mode|=LO_BUFFER;
|
||||
if(mode&32!=0)
|
||||
if((mode&32) !=0)
|
||||
create_mode|=LO_NOBUFFER;
|
||||
|
||||
|
||||
@@ -4467,7 +4464,6 @@ static long php3_intifxus_close_slob(long bid, HashTable *list) {
|
||||
opens an slob-object */
|
||||
PHP_FUNCTION(ifxus_open_slob) {
|
||||
pval *pbid,*pmode;
|
||||
long id;
|
||||
long mode,create_mode;
|
||||
|
||||
if (ARG_COUNT(ht)!=2 || getParameters(ht, 1, &pbid,&pmode)==FAILURE) {
|
||||
@@ -4478,17 +4474,17 @@ PHP_FUNCTION(ifxus_open_slob) {
|
||||
mode=pmode->value.lval;
|
||||
|
||||
create_mode=0;
|
||||
if(mode&1!=0)
|
||||
if((mode&1) !=0)
|
||||
create_mode|=LO_RDONLY;
|
||||
if(mode&2!=0)
|
||||
if((mode&2) !=0)
|
||||
create_mode|=LO_WRONLY;
|
||||
if(mode&4!=0)
|
||||
if((mode&4) !=0)
|
||||
create_mode|=LO_APPEND;
|
||||
if(mode&8!=0)
|
||||
if((mode&8) !=0)
|
||||
create_mode|=LO_RDWR;
|
||||
if(mode&16!=0)
|
||||
if((mode&16) !=0)
|
||||
create_mode|=LO_BUFFER;
|
||||
if(mode&32!=0)
|
||||
if((mode&32) !=0)
|
||||
create_mode|=LO_NOBUFFER;
|
||||
|
||||
RETURN_LONG(php3_intifxus_open_slob(pbid->value.lval,create_mode,list));
|
||||
@@ -4550,7 +4546,6 @@ static long php3_intifxus_open_slob(long bid, long create_mode, HashTable *list)
|
||||
*/
|
||||
static long php3_intifxus_new_slob(HashTable *list) {
|
||||
IFX_IDRES *Ifx_slob;
|
||||
int errcode;
|
||||
|
||||
|
||||
Ifx_slob=emalloc(sizeof(IFX_IDRES));
|
||||
@@ -4578,7 +4573,7 @@ static long php3_intifxus_new_slob(HashTable *list) {
|
||||
*/
|
||||
static ifx_lo_t *php3_intifxus_get_slobloc(long bid, HashTable *list) {
|
||||
IFX_IDRES *Ifx_slob;
|
||||
int errcode, type;
|
||||
int type;
|
||||
|
||||
Ifx_slob = (IFX_IDRES *) php3_list_find(bid,&type);
|
||||
if (type!=IFXG(le_idresult) || Ifx_slob->type!=TYPE_SLOB) {
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
dnl $Id$
|
||||
dnl config.m4 for extension pcre
|
||||
|
||||
dnl By default we'll compile and link against the bundled PCRE library
|
||||
dnl if DIR is supplied, we'll use that for linking
|
||||
|
||||
AC_MSG_CHECKING(whether to include PCRE support)
|
||||
AC_ARG_WITH(pcre-regex,
|
||||
[ --without-pcre-regex Don't include Perl Compatible Regular Expressions support],[
|
||||
if test "$withval" = "yes"; then
|
||||
EXTRA_LIBS="-L$abs_builddir/ext/pcre/pcrelib -lpcre $EXTRA_LIBS"
|
||||
PCRE_SUBDIR="pcrelib"
|
||||
AC_DEFINE(HAVE_PCRE, 1)
|
||||
AC_MSG_RESULT(yes)
|
||||
PHP_EXTENSION(pcre)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
],[
|
||||
EXTRA_LIBS="-L$abs_builddir/ext/pcre/pcrelib -lpcre $EXTRA_LIBS"
|
||||
PCRE_SUBDIR="pcrelib"
|
||||
AC_DEFINE(HAVE_PCRE, 1)
|
||||
AC_MSG_RESULT(yes)
|
||||
PHP_EXTENSION(pcre)
|
||||
])
|
||||
AC_SUBST(PCRE_SUBDIR)
|
||||
@@ -7,7 +7,8 @@ libphpext_standard_a_SOURCES=\
|
||||
html.c image.c info.c link.c mail.c math.c md5.c microtime.c \
|
||||
pack.c pageinfo.c rand.c reg.c soundex.c string.c \
|
||||
syslog.c type.c uniqid.c url.c iptc.c var.c quot_print.c \
|
||||
cyr_convert.c flock_compat.c crypt.c dl.c head.c post.c
|
||||
cyr_convert.c flock_compat.c crypt.c dl.c head.c post.c \
|
||||
parsedate.y
|
||||
|
||||
#number.o: number.c
|
||||
# $(CC) $(CFLAGS) -w@WARNING_LEVEL@ -c $< -o $@
|
||||
+217
-205
@@ -58,213 +58,223 @@ int user_shutdown_function_executor(pval *user_shutdown_function_name);
|
||||
void php3_call_shutdown_functions(void);
|
||||
|
||||
function_entry basic_functions[] = {
|
||||
{"intval", int_value, NULL},
|
||||
{"doubleval", double_value, NULL},
|
||||
{"strval", string_value, NULL},
|
||||
PHP_FE(define, NULL)
|
||||
PHP_FE(defined, NULL)
|
||||
PHP_FE(bin2hex, NULL)
|
||||
{"short_tags", php3_toggle_short_open_tag, NULL},
|
||||
{"sleep", php3_sleep, NULL},
|
||||
{"usleep", php3_usleep, NULL},
|
||||
{"ksort", php3_key_sort, first_arg_force_ref},
|
||||
{"asort", php3_asort, first_arg_force_ref},
|
||||
{"arsort", php3_arsort, first_arg_force_ref},
|
||||
{"sort", php3_sort, first_arg_force_ref},
|
||||
{"rsort", php3_rsort, first_arg_force_ref},
|
||||
{"usort", php3_user_sort, first_arg_force_ref},
|
||||
{"uasort", php3_auser_sort, first_arg_force_ref},
|
||||
{"uksort", php3_user_key_sort, first_arg_force_ref},
|
||||
{"array_walk", php3_array_walk, first_arg_force_ref},
|
||||
{"sizeof", php3_count, first_arg_allow_ref},
|
||||
{"count", php3_count, first_arg_allow_ref},
|
||||
{"time", php3_time, NULL},
|
||||
{"mktime", php3_mktime, NULL},
|
||||
{"gmmktime", php3_gmmktime, NULL},
|
||||
PHP_FE(intval, NULL)
|
||||
PHP_FE(doubleval, NULL)
|
||||
PHP_FE(strval, NULL)
|
||||
PHP_FE(define, NULL)
|
||||
PHP_FE(defined, NULL)
|
||||
PHP_FE(bin2hex, NULL)
|
||||
PHP_FE(toggle_short_open_tag, NULL)
|
||||
PHP_FE(sleep, NULL)
|
||||
PHP_FE(usleep, NULL)
|
||||
|
||||
PHP_FE(ksort, first_arg_force_ref)
|
||||
PHP_FE(asort, first_arg_force_ref)
|
||||
PHP_FE(arsort, first_arg_force_ref)
|
||||
PHP_FE(sort, first_arg_force_ref)
|
||||
PHP_FE(rsort, first_arg_force_ref)
|
||||
PHP_FE(usort, first_arg_force_ref)
|
||||
PHP_FE(uasort, first_arg_force_ref)
|
||||
PHP_FE(uksort, first_arg_force_ref)
|
||||
PHP_FE(array_walk, first_arg_force_ref)
|
||||
PHP_FALIAS(sizeof, count, first_arg_force_ref)
|
||||
PHP_FE(count, first_arg_force_ref)
|
||||
PHP_FE(end, first_arg_force_ref)
|
||||
PHP_FE(prev, first_arg_force_ref)
|
||||
PHP_FE(next, first_arg_force_ref)
|
||||
PHP_FE(reset, first_arg_force_ref)
|
||||
PHP_FE(current, first_arg_force_ref)
|
||||
PHP_FE(key, first_arg_force_ref)
|
||||
PHP_FE(each, first_arg_force_ref)
|
||||
PHP_FALIAS(pos, current, first_arg_force_ref)
|
||||
|
||||
PHP_FE(time, NULL)
|
||||
PHP_FE(mktime, NULL)
|
||||
PHP_FE(gmmktime, NULL)
|
||||
#if HAVE_STRFTIME
|
||||
{"strftime", php3_strftime, NULL},
|
||||
PHP_FE(strftime, NULL)
|
||||
#endif
|
||||
{"date", php3_date, NULL},
|
||||
{"gmdate", php3_gmdate, NULL},
|
||||
{"getdate", php3_getdate, NULL},
|
||||
{"checkdate", php3_checkdate, NULL},
|
||||
{"chr", php3_chr, NULL},
|
||||
{"ord", php3_ord, NULL},
|
||||
{"flush", php3_flush, NULL},
|
||||
{"end", array_end, first_arg_force_ref},
|
||||
{"prev", array_prev, first_arg_force_ref},
|
||||
{"next", array_next, first_arg_force_ref},
|
||||
{"reset", array_reset, first_arg_force_ref},
|
||||
{"current", array_current, first_arg_force_ref},
|
||||
{"key", array_current_key, first_arg_force_ref},
|
||||
{"each", array_each, first_arg_force_ref},
|
||||
{"gettype", php3_gettype, NULL},
|
||||
{"settype", php3_settype, first_arg_force_ref},
|
||||
{"min", php3_min, NULL},
|
||||
{"max", php3_max, NULL},
|
||||
PHP_FE(strtotime, NULL)
|
||||
PHP_FE(date, NULL)
|
||||
PHP_FE(gmdate, NULL)
|
||||
PHP_FE(getdate, NULL)
|
||||
PHP_FE(checkdate, NULL)
|
||||
|
||||
{"addslashes", php3_addslashes, NULL},
|
||||
{"chop", php3_chop, NULL},
|
||||
{"str_replace", php3_str_replace, NULL},
|
||||
{"chunk_split", php3_chunk_split, NULL},
|
||||
{"trim", php3_trim, NULL},
|
||||
{"ltrim", php3_ltrim, NULL},
|
||||
{"rtrim", php3_chop, NULL},
|
||||
{"pos", array_current, first_arg_force_ref},
|
||||
PHP_FE(flush, NULL)
|
||||
|
||||
PHP_FE(gettype, NULL)
|
||||
PHP_FE(settype, first_arg_force_ref)
|
||||
|
||||
PHP_FE(min, NULL)
|
||||
PHP_FE(max, NULL)
|
||||
|
||||
{"getimagesize", php3_getimagesize, NULL},
|
||||
{"htmlspecialchars", php3_htmlspecialchars, NULL},
|
||||
{"htmlentities", php3_htmlentities, NULL},
|
||||
{"md5", php3_md5, NULL},
|
||||
PHP_FE(getimagesize, NULL)
|
||||
|
||||
PHP_FE(htmlspecialchars, NULL)
|
||||
PHP_FE(htmlentities, NULL)
|
||||
|
||||
PHP_FE(md5, NULL)
|
||||
|
||||
{"iptcparse", php3_iptcparse, NULL},
|
||||
{"iptcembed", php3_iptcembed, NULL},
|
||||
{"parse_url", php3_parse_url, NULL},
|
||||
PHP_FE(iptcparse, NULL)
|
||||
PHP_FE(iptcembed, NULL)
|
||||
|
||||
PHP_FE(phpinfo, NULL)
|
||||
PHP_FE(phpversion, NULL)
|
||||
PHP_FE(phpcredits, NULL)
|
||||
|
||||
PHP_FE(strlen, NULL)
|
||||
PHP_FE(strcmp, NULL)
|
||||
PHP_FE(strspn, NULL)
|
||||
PHP_FE(strcspn, NULL)
|
||||
PHP_FE(strcasecmp, NULL)
|
||||
PHP_FE(strtok, NULL)
|
||||
PHP_FE(strtoupper, NULL)
|
||||
PHP_FE(strtolower, NULL)
|
||||
PHP_FE(strpos, NULL)
|
||||
PHP_FE(strrpos, NULL)
|
||||
PHP_FE(strrev, NULL)
|
||||
PHP_FE(hebrev, NULL)
|
||||
PHP_FE(hebrevc, NULL)
|
||||
PHP_FE(nl2br, NULL)
|
||||
PHP_FE(basename, NULL)
|
||||
PHP_FE(dirname, NULL)
|
||||
PHP_FE(stripslashes, NULL)
|
||||
PHP_FE(strstr, NULL)
|
||||
PHP_FE(stristr, NULL)
|
||||
PHP_FE(strrchr, NULL)
|
||||
PHP_FE(substr, NULL)
|
||||
PHP_FE(quotemeta, NULL)
|
||||
PHP_FE(ucfirst, NULL)
|
||||
PHP_FE(ucwords, NULL)
|
||||
PHP_FE(strtr, NULL)
|
||||
PHP_FE(addslashes, NULL)
|
||||
PHP_FE(chop, NULL)
|
||||
PHP_FE(str_replace, NULL)
|
||||
PHP_FE(chunk_split, NULL)
|
||||
PHP_FE(trim, NULL)
|
||||
PHP_FE(ltrim, NULL)
|
||||
PHP_FE(strip_tags, NULL)
|
||||
PHP_FE(similar_text, NULL)
|
||||
PHP_FE(explode, NULL)
|
||||
PHP_FE(implode, NULL)
|
||||
PHP_FE(setlocale, NULL)
|
||||
PHP_FE(soundex, NULL)
|
||||
PHP_FE(chr, NULL)
|
||||
PHP_FE(ord, NULL)
|
||||
PHP_FE(parse_str, NULL)
|
||||
PHP_FALIAS(rtrim, chop, NULL)
|
||||
PHP_FALIAS(strchr, strstr, NULL)
|
||||
PHP_NAMED_FE(sprintf, php3_user_sprintf, NULL)
|
||||
PHP_NAMED_FE(printf, php3_user_printf, NULL)
|
||||
|
||||
PHP_FE(parse_url, NULL)
|
||||
PHP_FE(urlencode, NULL)
|
||||
PHP_FE(urldecode, NULL)
|
||||
PHP_FE(rawurlencode, NULL)
|
||||
PHP_FE(rawurldecode, NULL)
|
||||
|
||||
PHP_FE(exec, second_and_third_args_force_ref)
|
||||
PHP_FE(system, second_arg_force_ref)
|
||||
PHP_FE(escapeshellcmd, NULL)
|
||||
PHP_FE(passthru, second_arg_force_ref)
|
||||
PHP_FE(shell_exec, NULL)
|
||||
|
||||
{"parse_str", php3_parsestr, NULL},
|
||||
PHP_FE(phpinfo, NULL)
|
||||
PHP_FE(phpversion, NULL)
|
||||
PHP_FE(phpcredits, NULL)
|
||||
{"strlen", php3_strlen, NULL},
|
||||
{"strcmp", php3_strcmp, NULL},
|
||||
{"strspn", php3_strspn, NULL},
|
||||
{"strcspn", php3_strcspn, NULL},
|
||||
{"strcasecmp", php3_strcasecmp, NULL},
|
||||
{"strtok", php3_strtok, NULL},
|
||||
{"strtoupper", php3_strtoupper, NULL},
|
||||
{"strtolower", php3_strtolower, NULL},
|
||||
{"strchr", php3_strstr, NULL},
|
||||
{"strpos", php3_strpos, NULL},
|
||||
{"strrpos", php3_strrpos, NULL},
|
||||
{"strrev", php3_strrev, NULL},
|
||||
{"hebrev", php3_hebrev, NULL},
|
||||
PHP_FE(hebrevc, NULL)
|
||||
PHP_FE(nl2br, NULL)
|
||||
{"basename", php3_basename, NULL},
|
||||
{"dirname", php3_dirname, NULL},
|
||||
{"stripslashes", php3_stripslashes, NULL},
|
||||
{"strstr", php3_strstr, NULL},
|
||||
{"stristr", php3_stristr, NULL},
|
||||
{"strrchr", php3_strrchr, NULL},
|
||||
{"substr", php3_substr, NULL},
|
||||
{"quotemeta", php3_quotemeta, NULL},
|
||||
{"urlencode", php3_urlencode, NULL},
|
||||
{"urldecode", php3_urldecode, NULL},
|
||||
{"rawurlencode", php3_rawurlencode, NULL},
|
||||
{"rawurldecode", php3_rawurldecode, NULL},
|
||||
{"ucfirst", php3_ucfirst, NULL},
|
||||
{"ucwords", php3_ucwords, NULL},
|
||||
{"strtr", php3_strtr, NULL},
|
||||
{"sprintf", php3_user_sprintf, NULL},
|
||||
{"printf", php3_user_printf, NULL},
|
||||
{"setlocale", php3_setlocale, NULL},
|
||||
|
||||
{"exec", php3_exec, second_and_third_args_force_ref},
|
||||
{"system", php3_system, second_arg_force_ref},
|
||||
{"escapeshellcmd", php3_escapeshellcmd, NULL},
|
||||
{"passthru", php3_passthru, second_arg_force_ref},
|
||||
PHP_FE(shell_exec, NULL)
|
||||
|
||||
{"soundex", soundex, NULL},
|
||||
|
||||
{"rand", php3_rand, NULL},
|
||||
{"srand", php3_srand, NULL},
|
||||
{"getrandmax", php3_getrandmax, NULL},
|
||||
{"mt_rand", php3_mt_rand, NULL},
|
||||
{"mt_srand", php3_mt_srand, NULL},
|
||||
{"mt_getrandmax", php3_mt_getrandmax, NULL},
|
||||
{"gethostbyaddr", php3_gethostbyaddr, NULL},
|
||||
{"gethostbyname", php3_gethostbyname, NULL},
|
||||
{"gethostbynamel", php3_gethostbynamel, NULL},
|
||||
PHP_FE(rand, NULL)
|
||||
PHP_FE(srand, NULL)
|
||||
PHP_FE(getrandmax, NULL)
|
||||
PHP_FE(mt_rand, NULL)
|
||||
PHP_FE(mt_srand, NULL)
|
||||
PHP_FE(mt_getrandmax, NULL)
|
||||
|
||||
PHP_FE(gethostbyaddr, NULL)
|
||||
PHP_FE(gethostbyname, NULL)
|
||||
PHP_FE(gethostbynamel, NULL)
|
||||
#if !(WIN32|WINNT)||HAVE_BINDLIB
|
||||
{"checkdnsrr", php3_checkdnsrr, NULL},
|
||||
{"getmxrr", php3_getmxrr, second_and_third_args_force_ref},
|
||||
PHP_FE(checkdnsrr, NULL)
|
||||
PHP_FE(getmxrr, second_and_third_args_force_ref)
|
||||
#endif
|
||||
{"explode", php3_explode, NULL},
|
||||
{"implode", php3_implode, NULL},
|
||||
{"getenv", php3_getenv, NULL},
|
||||
{"error_reporting", php3_error_reporting, NULL},
|
||||
{"clearstatcache", php3_clearstatcache, NULL},
|
||||
|
||||
{"unlink", php3_unlink, NULL},
|
||||
PHP_FE(error_reporting, NULL)
|
||||
|
||||
{"getmyuid", php3_getmyuid, NULL},
|
||||
{"getmypid", php3_getmypid, NULL},
|
||||
PHP_FE(getmyuid, NULL)
|
||||
PHP_FE(getmypid, NULL)
|
||||
PHP_FE(getmyinode, NULL)
|
||||
PHP_FE(getlastmod, NULL)
|
||||
/*getmyiid is here for forward compatibility with 3.1
|
||||
See pageinfo.c in 3.1 for more information*/
|
||||
{"getmyiid", php3_getmypid, NULL},
|
||||
{"getmyinode", php3_getmyinode, NULL},
|
||||
{"getlastmod", php3_getlastmod, NULL},
|
||||
/* {"getmyiid", php3_getmypid, NULL}, */
|
||||
|
||||
{"base64_decode", php3_base64_decode, NULL},
|
||||
{"base64_encode", php3_base64_encode, NULL},
|
||||
PHP_FE(base64_decode, NULL)
|
||||
PHP_FE(base64_encode, NULL)
|
||||
|
||||
{"abs", php3_abs, NULL},
|
||||
{"ceil", php3_ceil, NULL},
|
||||
{"floor", php3_floor, NULL},
|
||||
{"round", php3_round, NULL},
|
||||
{"sin", php3_sin, NULL},
|
||||
{"cos", php3_cos, NULL},
|
||||
{"tan", php3_tan, NULL},
|
||||
{"asin", php3_asin, NULL},
|
||||
{"acos", php3_acos, NULL},
|
||||
{"atan", php3_atan, NULL},
|
||||
{"atan2", php3_atan2, NULL},
|
||||
{"pi", php3_pi, NULL},
|
||||
{"pow", php3_pow, NULL},
|
||||
{"exp", php3_exp, NULL},
|
||||
{"log", php3_log, NULL},
|
||||
{"log10", php3_log10, NULL},
|
||||
{"sqrt", php3_sqrt, NULL},
|
||||
{"deg2rad", php3_deg2rad, NULL},
|
||||
{"rad2deg", php3_rad2deg, NULL},
|
||||
{"bindec", php3_bindec, NULL},
|
||||
{"hexdec", php3_hexdec, NULL},
|
||||
{"octdec", php3_octdec, NULL},
|
||||
{"decbin", php3_decbin, NULL},
|
||||
{"decoct", php3_decoct, NULL},
|
||||
{"dechex", php3_dechex, NULL},
|
||||
{"base_convert",php3_base_convert, NULL},
|
||||
{"number_format", php3_number_format, NULL},
|
||||
PHP_FE(abs, NULL)
|
||||
PHP_FE(ceil, NULL)
|
||||
PHP_FE(floor, NULL)
|
||||
PHP_FE(round, NULL)
|
||||
PHP_FE(sin, NULL)
|
||||
PHP_FE(cos, NULL)
|
||||
PHP_FE(tan, NULL)
|
||||
PHP_FE(asin, NULL)
|
||||
PHP_FE(acos, NULL)
|
||||
PHP_FE(atan, NULL)
|
||||
PHP_FE(atan2, NULL)
|
||||
PHP_FE(pi, NULL)
|
||||
PHP_FE(pow, NULL)
|
||||
PHP_FE(exp, NULL)
|
||||
PHP_FE(log, NULL)
|
||||
PHP_FE(log10, NULL)
|
||||
PHP_FE(sqrt, NULL)
|
||||
PHP_FE(deg2rad, NULL)
|
||||
PHP_FE(rad2deg, NULL)
|
||||
PHP_FE(bindec, NULL)
|
||||
PHP_FE(hexdec, NULL)
|
||||
PHP_FE(octdec, NULL)
|
||||
PHP_FE(decbin, NULL)
|
||||
PHP_FE(decoct, NULL)
|
||||
PHP_FE(dechex, NULL)
|
||||
PHP_FE(base_convert, NULL)
|
||||
PHP_FE(number_format, NULL)
|
||||
|
||||
PHP_FE(getenv, NULL)
|
||||
#ifdef HAVE_PUTENV
|
||||
{"putenv", php3_putenv, NULL},
|
||||
PHP_FE(putenv, NULL)
|
||||
#endif
|
||||
{"microtime", php3_microtime, NULL},
|
||||
{"uniqid", php3_uniqid, NULL},
|
||||
{"linkinfo", php3_linkinfo, NULL},
|
||||
{"readlink", php3_readlink, NULL},
|
||||
{"symlink", php3_symlink, NULL},
|
||||
{"link", php3_link, NULL},
|
||||
{"quoted_printable_decode", php3_quoted_printable_decode, NULL},
|
||||
{"convert_cyr_string", php3_convert_cyr_string, NULL},
|
||||
{"get_current_user", php3_get_current_user, NULL},
|
||||
{"set_time_limit", php3_set_time_limit, NULL},
|
||||
|
||||
{"get_cfg_var", php3_get_cfg_var, NULL},
|
||||
{"magic_quotes_runtime", php3_set_magic_quotes_runtime, NULL},
|
||||
{"set_magic_quotes_runtime", php3_set_magic_quotes_runtime, NULL},
|
||||
{"get_magic_quotes_gpc", php3_get_magic_quotes_gpc, NULL},
|
||||
{"get_magic_quotes_runtime", php3_get_magic_quotes_runtime, NULL},
|
||||
|
||||
{"is_long", php3_is_long, first_arg_allow_ref},
|
||||
{"is_int", php3_is_long, first_arg_allow_ref},
|
||||
{"is_integer", php3_is_long, first_arg_allow_ref},
|
||||
{"is_float", php3_is_double, first_arg_allow_ref},
|
||||
{"is_double", php3_is_double, first_arg_allow_ref},
|
||||
{"is_real", php3_is_double, first_arg_allow_ref},
|
||||
{"is_string", php3_is_string, first_arg_allow_ref},
|
||||
{"is_array", php3_is_array, first_arg_allow_ref},
|
||||
{"is_object", php3_is_object, first_arg_allow_ref},
|
||||
|
||||
{"leak", php3_leak, NULL},
|
||||
{"error_log", php3_error_log, NULL},
|
||||
{"call_user_func", php3_call_user_func, NULL},
|
||||
{"call_user_method", php3_call_user_method, NULL},
|
||||
PHP_FE(microtime, NULL)
|
||||
PHP_FE(getrusage, NULL)
|
||||
|
||||
PHP_FE(uniqid, NULL)
|
||||
|
||||
PHP_FE(quoted_printable_decode, NULL)
|
||||
|
||||
PHP_FE(convert_cyr_string, NULL)
|
||||
PHP_FE(get_current_user, NULL)
|
||||
PHP_FE(set_time_limit, NULL)
|
||||
|
||||
PHP_FE(get_cfg_var, NULL)
|
||||
PHP_FALIAS(magic_quotes_runtime, set_magic_quotes_runtime, NULL)
|
||||
PHP_FE(set_magic_quotes_runtime, NULL)
|
||||
PHP_FE(get_magic_quotes_gpc, NULL)
|
||||
PHP_FE(get_magic_quotes_runtime, NULL)
|
||||
|
||||
PHP_FE(is_long, first_arg_allow_ref)
|
||||
PHP_FALIAS(is_int, is_long, first_arg_allow_ref)
|
||||
PHP_FALIAS(is_integer, is_long, first_arg_allow_ref)
|
||||
PHP_FALIAS(is_float, is_double, first_arg_allow_ref)
|
||||
PHP_FE(is_double, first_arg_allow_ref)
|
||||
PHP_FALIAS(is_real, is_double, first_arg_allow_ref)
|
||||
PHP_FE(is_string, first_arg_allow_ref)
|
||||
PHP_FE(is_array, first_arg_allow_ref)
|
||||
PHP_FE(is_object, first_arg_allow_ref)
|
||||
|
||||
PHP_FE(var_dump, NULL)
|
||||
PHP_FE(serialize, first_arg_allow_ref)
|
||||
PHP_FE(unserialize, first_arg_allow_ref)
|
||||
PHP_FE(leak, NULL)
|
||||
PHP_FE(error_log, NULL)
|
||||
PHP_FE(call_user_func, NULL)
|
||||
PHP_FE(call_user_method, NULL)
|
||||
|
||||
PHP_FE(var_dump, NULL)
|
||||
PHP_FE(serialize, first_arg_allow_ref)
|
||||
PHP_FE(unserialize, first_arg_allow_ref)
|
||||
|
||||
PHP_FE(register_shutdown_function, NULL)
|
||||
|
||||
@@ -282,9 +292,11 @@ function_entry basic_functions[] = {
|
||||
PHP_FE(ini_restore, NULL)
|
||||
|
||||
PHP_FE(print_r, NULL)
|
||||
{"setcookie", php3_SetCookie, NULL},
|
||||
{"header", php3_Header, NULL},
|
||||
PHP_FE(headers_sent, NULL)
|
||||
|
||||
PHP_FE(setcookie, NULL)
|
||||
PHP_FE(Header, NULL)
|
||||
PHP_FE(headers_sent, NULL)
|
||||
|
||||
PHP_FE(function_exists, NULL)
|
||||
PHP_FE(in_array, NULL)
|
||||
PHP_FE(extract, NULL)
|
||||
@@ -559,7 +571,7 @@ PHP_FUNCTION(toggle_short_open_tag)
|
||||
* Basic Functions *
|
||||
*******************/
|
||||
|
||||
void int_value(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(intval)
|
||||
{
|
||||
pval *num, *arg_base;
|
||||
int base;
|
||||
@@ -587,7 +599,7 @@ void int_value(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
|
||||
|
||||
void double_value(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(doubleval)
|
||||
{
|
||||
pval *num;
|
||||
|
||||
@@ -599,7 +611,7 @@ void double_value(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
|
||||
|
||||
void string_value(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(strval)
|
||||
{
|
||||
pval *num;
|
||||
|
||||
@@ -636,7 +648,7 @@ static int array_key_compare(const void *a, const void *b)
|
||||
}
|
||||
|
||||
|
||||
PHP_FUNCTION(key_sort)
|
||||
PHP_FUNCTION(ksort)
|
||||
{
|
||||
pval *array;
|
||||
HashTable *target_hash;
|
||||
@@ -853,7 +865,7 @@ static int array_user_compare(const void *a, const void *b)
|
||||
}
|
||||
|
||||
|
||||
PHP_FUNCTION(user_sort)
|
||||
PHP_FUNCTION(usort)
|
||||
{
|
||||
pval *array;
|
||||
pval *old_compare_func;
|
||||
@@ -879,7 +891,7 @@ PHP_FUNCTION(user_sort)
|
||||
RETURN_TRUE;
|
||||
}
|
||||
|
||||
PHP_FUNCTION(auser_sort)
|
||||
PHP_FUNCTION(uasort)
|
||||
{
|
||||
pval *array;
|
||||
pval *old_compare_func;
|
||||
@@ -953,7 +965,7 @@ static int array_user_key_compare(const void *a, const void *b)
|
||||
}
|
||||
|
||||
|
||||
PHP_FUNCTION(user_key_sort)
|
||||
PHP_FUNCTION(uksort)
|
||||
{
|
||||
pval *array;
|
||||
pval *old_compare_func;
|
||||
@@ -980,7 +992,7 @@ PHP_FUNCTION(user_key_sort)
|
||||
}
|
||||
|
||||
|
||||
void array_end(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(end)
|
||||
{
|
||||
pval *array, **entry;
|
||||
HashTable *target_hash;
|
||||
@@ -1005,7 +1017,7 @@ void array_end(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
|
||||
|
||||
void array_prev(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(prev)
|
||||
{
|
||||
pval *array, **entry;
|
||||
HashTable *target_hash;
|
||||
@@ -1028,7 +1040,7 @@ void array_prev(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
|
||||
|
||||
void array_next(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(next)
|
||||
{
|
||||
pval *array, **entry;
|
||||
HashTable *target_hash;
|
||||
@@ -1051,7 +1063,7 @@ void array_next(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
|
||||
|
||||
void array_each(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(each)
|
||||
{
|
||||
pval *array,*entry,**entry_ptr, *tmp;
|
||||
char *string_key;
|
||||
@@ -1103,7 +1115,7 @@ void array_each(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
|
||||
|
||||
void array_reset(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(reset)
|
||||
{
|
||||
pval *array, **entry;
|
||||
HashTable *target_hash;
|
||||
@@ -1126,7 +1138,7 @@ void array_reset(INTERNAL_FUNCTION_PARAMETERS)
|
||||
INIT_PZVAL(return_value);
|
||||
}
|
||||
|
||||
void array_current(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(current)
|
||||
{
|
||||
pval *array, **entry;
|
||||
HashTable *target_hash;
|
||||
@@ -1147,7 +1159,7 @@ void array_current(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
|
||||
|
||||
void array_current_key(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(key)
|
||||
{
|
||||
pval *array;
|
||||
char *string_key;
|
||||
|
||||
@@ -43,30 +43,30 @@ extern int php3_minit_basic(INIT_FUNC_ARGS);
|
||||
extern int php3_mshutdown_basic(SHUTDOWN_FUNC_ARGS);
|
||||
extern int php3_rinit_basic(INIT_FUNC_ARGS);
|
||||
extern int php3_rshutdown_basic(SHUTDOWN_FUNC_ARGS);
|
||||
void int_value(INTERNAL_FUNCTION_PARAMETERS);
|
||||
void double_value(INTERNAL_FUNCTION_PARAMETERS);
|
||||
void string_value(INTERNAL_FUNCTION_PARAMETERS);
|
||||
PHP_FUNCTION(intval);
|
||||
PHP_FUNCTION(doubleval);
|
||||
PHP_FUNCTION(strval);
|
||||
PHP_FUNCTION(toggle_short_open_tag);
|
||||
PHP_FUNCTION(sleep);
|
||||
PHP_FUNCTION(usleep);
|
||||
PHP_FUNCTION(key_sort);
|
||||
PHP_FUNCTION(ksort);
|
||||
PHP_FUNCTION(asort);
|
||||
PHP_FUNCTION(arsort);
|
||||
PHP_FUNCTION(sort);
|
||||
PHP_FUNCTION(rsort);
|
||||
PHP_FUNCTION(user_sort);
|
||||
PHP_FUNCTION(auser_sort);
|
||||
PHP_FUNCTION(user_key_sort);
|
||||
PHP_FUNCTION(usort);
|
||||
PHP_FUNCTION(uasort);
|
||||
PHP_FUNCTION(uksort);
|
||||
PHP_FUNCTION(array_walk);
|
||||
PHP_FUNCTION(count);
|
||||
PHP_FUNCTION(flush);
|
||||
void array_end(INTERNAL_FUNCTION_PARAMETERS);
|
||||
void array_prev(INTERNAL_FUNCTION_PARAMETERS);
|
||||
void array_next(INTERNAL_FUNCTION_PARAMETERS);
|
||||
void array_each(INTERNAL_FUNCTION_PARAMETERS);
|
||||
void array_reset(INTERNAL_FUNCTION_PARAMETERS);
|
||||
void array_current(INTERNAL_FUNCTION_PARAMETERS);
|
||||
void array_current_key(INTERNAL_FUNCTION_PARAMETERS);
|
||||
PHP_FUNCTION(end);
|
||||
PHP_FUNCTION(prev);
|
||||
PHP_FUNCTION(next);
|
||||
PHP_FUNCTION(each);
|
||||
PHP_FUNCTION(reset);
|
||||
PHP_FUNCTION(current);
|
||||
PHP_FUNCTION(key);
|
||||
PHP_FUNCTION(gettype);
|
||||
PHP_FUNCTION(settype);
|
||||
PHP_FUNCTION(min);
|
||||
|
||||
@@ -30,7 +30,7 @@ static pval *found_browser_entry;
|
||||
#endif
|
||||
|
||||
function_entry browscap_functions[] = {
|
||||
{"get_browser", php3_get_browser, NULL},
|
||||
PHP_FE(get_browser, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ extern char *crypt(char *__key,char *__salt);
|
||||
#include "php3_crypt.h"
|
||||
|
||||
function_entry crypt_functions[] = {
|
||||
{"crypt", php3_crypt, NULL},
|
||||
PHP_FE(crypt, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
#include "php_globals.h"
|
||||
|
||||
#include <time.h>
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
|
||||
char *mon_full_names[] =
|
||||
@@ -62,6 +65,8 @@ static int phpday_tab[2][12] =
|
||||
|
||||
#define isleap(year) (((year%4) == 0 && (year%100)!=0) || (year%400)==0)
|
||||
|
||||
extern PHPAPI time_t parsedate(char *p, struct timeval *now);
|
||||
|
||||
PHP_FUNCTION(time)
|
||||
{
|
||||
return_value->value.lval = (long) time(NULL);
|
||||
@@ -550,6 +555,32 @@ PHP_FUNCTION(strftime)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* {{{ proto int strtotime(string time, int now) */
|
||||
PHP_FUNCTION(strtotime)
|
||||
{
|
||||
pval *timep, *nowp;
|
||||
int ac;
|
||||
struct timeval tv;
|
||||
|
||||
ac = ARG_COUNT(ht);
|
||||
|
||||
if (ac < 1 || ac > 2 || getParameters(ht, ac, &timep, &nowp)==FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
convert_to_string(timep);
|
||||
if (ac == 2) {
|
||||
convert_to_long(nowp);
|
||||
tv.tv_sec = nowp->value.lval;
|
||||
tv.tv_usec = 0;
|
||||
RETURN_LONG(parsedate(timep->value.str.val, &tv));
|
||||
} else {
|
||||
RETURN_LONG(parsedate(timep->value.str.val, NULL));
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* tab-width: 4
|
||||
|
||||
@@ -44,6 +44,7 @@ PHP_FUNCTION(checkdate);
|
||||
#if HAVE_STRFTIME
|
||||
PHP_FUNCTION(strftime);
|
||||
#endif
|
||||
PHP_FUNCTION(strtotime);
|
||||
|
||||
extern char *php3_std_date(time_t t);
|
||||
void _php3_mktime(INTERNAL_FUNCTION_PARAMETERS, int gm);
|
||||
|
||||
+5
-5
@@ -45,11 +45,11 @@ static int le_dirp;
|
||||
static zend_class_entry *dir_class_entry_ptr;
|
||||
|
||||
static zend_function_entry php_dir_functions[] = {
|
||||
PHP_FE(opendir, NULL)
|
||||
PHP_FE(closedir, NULL)
|
||||
PHP_FE(chdir, NULL)
|
||||
PHP_FE(rewinddir, NULL)
|
||||
PHP_FE(readdir, NULL)
|
||||
PHP_FE(opendir, NULL)
|
||||
PHP_FE(closedir, NULL)
|
||||
PHP_FE(chdir, NULL)
|
||||
PHP_FE(rewinddir, NULL)
|
||||
PHP_FE(readdir, NULL)
|
||||
PHP_FALIAS(dir, getdir, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
@@ -105,6 +105,7 @@ void php3_dl(pval *file,int type,pval *return_value)
|
||||
#if MSVC5
|
||||
php3_error(E_ERROR,"Unable to load dynamic library '%s'<br>\n%s",libpath,php3_win_err());
|
||||
#else
|
||||
printf("dlerror = %s\n", dlerror());
|
||||
php3_error(E_ERROR,"Unable to load dynamic library '%s' - %s",libpath,dlerror());
|
||||
#endif
|
||||
RETURN_FALSE;
|
||||
|
||||
+2
-2
@@ -196,7 +196,7 @@ function_entry php3_file_functions[] = {
|
||||
PHP_FE(fseek, NULL)
|
||||
PHP_FE(ftell, NULL)
|
||||
PHP_FE(fwrite, NULL)
|
||||
{"fputs", php3_fwrite, NULL},
|
||||
PHP_FALIAS(fputs, fwrite, NULL)
|
||||
PHP_FE(mkdir, NULL)
|
||||
PHP_FE(rename, NULL)
|
||||
PHP_FE(copy, NULL)
|
||||
@@ -1027,7 +1027,7 @@ PHP_FUNCTION(fwrite)
|
||||
/*
|
||||
wrapper for setvbuf()
|
||||
*/
|
||||
void php3_set_file_buffer(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(set_file_buffer)
|
||||
{
|
||||
pval *arg1, *arg2;
|
||||
FILE *fp;
|
||||
|
||||
+30
-29
@@ -442,39 +442,40 @@ FileFunction(php3_fileatime,5)
|
||||
FileFunction(php3_filemtime,6)
|
||||
FileFunction(php3_filectime,7)
|
||||
FileFunction(php3_filetype, 8)
|
||||
FileFunction(php3_iswritable, 9)
|
||||
FileFunction(php3_isreadable,10)
|
||||
FileFunction(php3_isexec,11)
|
||||
FileFunction(php3_isfile,12)
|
||||
FileFunction(php3_isdir,13)
|
||||
FileFunction(php3_islink,14)
|
||||
FileFunction(php3_fileexists,15)
|
||||
FileFunction(php3_is_writable, 9)
|
||||
FileFunction(php3_is_readable,10)
|
||||
FileFunction(php3_is_executable,11)
|
||||
FileFunction(php3_is_file,12)
|
||||
FileFunction(php3_is_dir,13)
|
||||
FileFunction(php3_is_link,14)
|
||||
FileFunction(php3_file_exists,15)
|
||||
FileFunction(php3_lstat,16)
|
||||
FileFunction(php3_stat,17)
|
||||
|
||||
function_entry php3_filestat_functions[] = {
|
||||
{"fileatime", php3_fileatime, NULL},
|
||||
{"filectime", php3_filectime, NULL},
|
||||
{"filegroup", php3_filegroup, NULL},
|
||||
{"fileinode", php3_fileinode, NULL},
|
||||
{"filemtime", php3_filemtime, NULL},
|
||||
{"fileowner", php3_fileowner, NULL},
|
||||
{"fileperms", php3_fileperms, NULL},
|
||||
{"filesize", php3_filesize, NULL},
|
||||
{"filetype", php3_filetype, NULL},
|
||||
{"file_exists", php3_fileexists, NULL},
|
||||
{"is_writeable",php3_iswritable, NULL},
|
||||
{"is_readable", php3_isreadable, NULL},
|
||||
{"is_executable",php3_isexec, NULL},
|
||||
{"is_file", php3_isfile, NULL},
|
||||
{"is_dir", php3_isdir, NULL},
|
||||
{"is_link", php3_islink, NULL},
|
||||
{"stat", php3_stat, NULL},
|
||||
{"lstat", php3_lstat, NULL},
|
||||
{"chown", php3_chown, NULL},
|
||||
{"chgrp", php3_chgrp, NULL},
|
||||
{"chmod", php3_chmod, NULL},
|
||||
{"touch", php3_touch, NULL},
|
||||
PHP_FE(fileatime, NULL)
|
||||
PHP_FE(filectime, NULL)
|
||||
PHP_FE(filegroup, NULL)
|
||||
PHP_FE(fileinode, NULL)
|
||||
PHP_FE(filemtime, NULL)
|
||||
PHP_FE(fileowner, NULL)
|
||||
PHP_FE(fileperms, NULL)
|
||||
PHP_FE(filesize, NULL)
|
||||
PHP_FE(filetype, NULL)
|
||||
PHP_FE(file_exists, NULL)
|
||||
PHP_FE(is_writable, NULL)
|
||||
PHP_FE(is_readable, NULL)
|
||||
PHP_FE(is_executable, NULL)
|
||||
PHP_FE(is_file, NULL)
|
||||
PHP_FE(is_dir, NULL)
|
||||
PHP_FE(is_link, NULL)
|
||||
PHP_FE(stat, NULL)
|
||||
PHP_FE(lstat, NULL)
|
||||
PHP_FE(chown, NULL)
|
||||
PHP_FE(chgrp, NULL)
|
||||
PHP_FE(chmod, NULL)
|
||||
PHP_FE(touch, NULL)
|
||||
PHP_FE(clearstatcache, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
@@ -83,8 +83,8 @@ extern int le_fp;
|
||||
static unsigned char third_and_fourth_args_force_ref[] = { 4, BYREF_NONE, BYREF_NONE, BYREF_FORCE, BYREF_FORCE };
|
||||
|
||||
function_entry fsock_functions[] = {
|
||||
PHP_FE(fsockopen, third_and_fourth_args_force_ref)
|
||||
PHP_FE(pfsockopen, third_and_fourth_args_force_ref)
|
||||
PHP_FE(fsockopen, third_and_fourth_args_force_ref)
|
||||
PHP_FE(pfsockopen, third_and_fourth_args_force_ref)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
@@ -248,7 +248,7 @@ static void _php3_fsockopen(INTERNAL_FUNCTION_PARAMETERS, int persistent) {
|
||||
switch(arg_count) {
|
||||
case 5:
|
||||
convert_to_double(args[4]);
|
||||
conv = args[4]->value.dval * 1000000.0;
|
||||
conv = (unsigned long) (args[4]->value.dval * 1000000.0);
|
||||
timeout.tv_sec = conv / 1000000;
|
||||
timeout.tv_usec = conv % 1000000;
|
||||
/* fall-through */
|
||||
|
||||
+2
-2
@@ -418,8 +418,8 @@ CookieList *php3_PopCookieList(void)
|
||||
return (ret);
|
||||
}
|
||||
|
||||
/* php3_SetCookie(name,value,expires,path,domain,secure) */
|
||||
PHP_FUNCTION(SetCookie)
|
||||
/* php3_setcookie(name,value,expires,path,domain,secure) */
|
||||
PHP_FUNCTION(setcookie)
|
||||
{
|
||||
char *cookie;
|
||||
int len=sizeof("Set-Cookie: ");
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ extern php3_module_entry php3_header_module_entry;
|
||||
|
||||
extern int php3_init_head(INIT_FUNC_ARGS);
|
||||
PHP_FUNCTION(Header);
|
||||
PHP_FUNCTION(SetCookie);
|
||||
PHP_FUNCTION(setcookie);
|
||||
PHP_FUNCTION(headers_sent);
|
||||
|
||||
void php4i_add_header_information(char *header_information, uint header_length);
|
||||
|
||||
+5
-5
@@ -183,11 +183,11 @@ PHP_FUNCTION(unlink)
|
||||
/* }}} */
|
||||
|
||||
function_entry link_functions[] = {
|
||||
{"readlink", php3_readlink, NULL},
|
||||
{"linkinfo", php3_linkinfo, NULL},
|
||||
{"symlink", php3_symlink, NULL},
|
||||
{"link", php3_link, NULL},
|
||||
{"unlink", php3_unlink, NULL},
|
||||
PHP_FE(readlink, NULL)
|
||||
PHP_FE(linkinfo, NULL)
|
||||
PHP_FE(symlink, NULL)
|
||||
PHP_FE(link, NULL)
|
||||
PHP_FE(unlink, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@
|
||||
#endif
|
||||
|
||||
function_entry mail_functions[] = {
|
||||
{"mail", php3_mail, NULL},
|
||||
PHP_FE(mail, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
@@ -33,5 +33,6 @@
|
||||
#define _MICROTIME_H
|
||||
|
||||
PHP_FUNCTION(microtime);
|
||||
PHP_FUNCTION(getrusage);
|
||||
|
||||
#endif /* _MICROTIME_H */
|
||||
+2
-2
@@ -51,8 +51,8 @@
|
||||
#endif
|
||||
|
||||
function_entry pack_functions[] = {
|
||||
{"pack", php3_pack, NULL},
|
||||
{"unpack", php3_unpack, NULL},
|
||||
PHP_FE(pack, NULL)
|
||||
PHP_FE(unpack, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,919 @@
|
||||
%{
|
||||
/* $Revision$
|
||||
**
|
||||
** Originally written by Steven M. Bellovin <smb@research.att.com> while
|
||||
** at the University of North Carolina at Chapel Hill. Later tweaked by
|
||||
** a couple of people on Usenet. Completely overhauled by Rich $alz
|
||||
** <rsalz@osf.org> and Jim Berets <jberets@bbn.com> in August, 1990.
|
||||
** Further revised (removed obsolete constructs and cleaned up timezone
|
||||
** names) in August, 1991, by Rich. Paul Eggert <eggert@twinsun.com>
|
||||
** helped in September, 1992.
|
||||
**
|
||||
** This grammar has six shift/reduce conflicts.
|
||||
**
|
||||
** This code is in the public domain and has no copyright.
|
||||
*/
|
||||
/* SUPPRESS 530 *//* Empty body for statement */
|
||||
/* SUPPRESS 593 on yyerrlab *//* Label was not used */
|
||||
/* SUPPRESS 593 on yynewstate *//* Label was not used */
|
||||
/* SUPPRESS 595 on yypvt *//* Automatic variable may be used before set */
|
||||
|
||||
#ifdef WIN32
|
||||
# include "config.w32.h"
|
||||
#else
|
||||
# include "php_config.h"
|
||||
#endif
|
||||
|
||||
#if WIN32||WINNT
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
#ifdef WIN32
|
||||
# include "win32/time.h"
|
||||
#endif
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
#if defined(_HPUX_SOURCE)
|
||||
#include <alloca.h>
|
||||
#endif
|
||||
|
||||
#if WIN32||WINNT
|
||||
#include <time.h>
|
||||
#else
|
||||
# if !defined(HAVE_TM_ZONE) && !defined(_TIMEZONE)
|
||||
extern time_t timezone;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define yylhs date_yylhs
|
||||
#define yylen date_yylen
|
||||
#define yydefred date_yydefred
|
||||
#define yydgoto date_yydgoto
|
||||
#define yysindex date_yysindex
|
||||
#define yyrindex date_yyrindex
|
||||
#define yygindex date_yygindex
|
||||
#define yytable date_yytable
|
||||
#define yycheck date_yycheck
|
||||
#define yyparse date_parse
|
||||
#define yylex date_lex
|
||||
#define yyerror date_error
|
||||
|
||||
static int date_lex(void);
|
||||
|
||||
/* See the LeapYears table in Convert. */
|
||||
#define EPOCH 1970
|
||||
#define END_OF_TIME 2038
|
||||
/* Constants for general time calculations. */
|
||||
#define DST_OFFSET 1
|
||||
#define SECSPERDAY (24L * 60L * 60L)
|
||||
/* Readability for TABLE stuff. */
|
||||
#define HOUR(x) (x * 60)
|
||||
|
||||
#define LPAREN '('
|
||||
#define RPAREN ')'
|
||||
#define IS7BIT(x) ((unsigned int)(x) < 0200)
|
||||
|
||||
/*
|
||||
** Get the number of elements in a fixed-size array, or a pointer just
|
||||
** past the end of it.
|
||||
*/
|
||||
#define SIZEOF(array) ((int)(sizeof array / sizeof array[0]))
|
||||
#define ENDOF(array) (&array[SIZEOF(array)])
|
||||
#define CTYPE(isXXXXX, c) ((isascii((c)) && isXXXXX((c))))
|
||||
|
||||
typedef struct _TIMEINFO {
|
||||
time_t time;
|
||||
long usec;
|
||||
long tzone;
|
||||
} TIMEINFO;
|
||||
|
||||
typedef char const *STRING;
|
||||
typedef char * const CSTRING;
|
||||
|
||||
/*
|
||||
** An entry in the lexical lookup table.
|
||||
*/
|
||||
typedef struct _TABLE {
|
||||
STRING name;
|
||||
int type;
|
||||
time_t value;
|
||||
} TABLE;
|
||||
|
||||
/*
|
||||
** Daylight-savings mode: on, off, or not yet known.
|
||||
*/
|
||||
typedef enum _DSTMODE {
|
||||
DSTon, DSToff, DSTmaybe
|
||||
} DSTMODE;
|
||||
|
||||
/*
|
||||
** Meridian: am, pm, or 24-hour style.
|
||||
*/
|
||||
typedef enum _MERIDIAN {
|
||||
MERam, MERpm, MER24
|
||||
} MERIDIAN;
|
||||
|
||||
|
||||
/*
|
||||
** Global variables. We could get rid of most of them by using a yacc
|
||||
** union, but this is more efficient. (This routine predates the
|
||||
** yacc %union construct.)
|
||||
*/
|
||||
static char *yyInput;
|
||||
static DSTMODE yyDSTmode;
|
||||
static int yyHaveDate;
|
||||
static int yyHaveRel;
|
||||
static int yyHaveTime;
|
||||
static time_t yyTimezone;
|
||||
static time_t yyDay;
|
||||
static time_t yyHour;
|
||||
static time_t yyMinutes;
|
||||
static time_t yyMonth;
|
||||
static time_t yySeconds;
|
||||
static time_t yyYear;
|
||||
static MERIDIAN yyMeridian;
|
||||
static time_t yyRelMonth;
|
||||
static time_t yyRelSeconds;
|
||||
|
||||
|
||||
extern struct tm *localtime();
|
||||
|
||||
static void date_error();
|
||||
%}
|
||||
|
||||
%expect 6
|
||||
|
||||
%union {
|
||||
time_t Number;
|
||||
enum _MERIDIAN Meridian;
|
||||
}
|
||||
|
||||
%token tDAY tDAYZONE tMERIDIAN tMONTH tMONTH_UNIT tSEC_UNIT tSNUMBER
|
||||
%token tUNUMBER tZONE
|
||||
|
||||
%type <Number> tDAYZONE tMONTH tMONTH_UNIT tSEC_UNIT
|
||||
%type <Number> tSNUMBER tUNUMBER tZONE numzone zone
|
||||
%type <Meridian> tMERIDIAN o_merid
|
||||
|
||||
%%
|
||||
|
||||
spec : /* NULL */
|
||||
| spec item
|
||||
;
|
||||
|
||||
item : time {
|
||||
yyHaveTime++;
|
||||
#if defined(lint)
|
||||
/* I am compulsive about lint natterings... */
|
||||
if (yyHaveTime == -1) {
|
||||
YYERROR;
|
||||
}
|
||||
#endif /* defined(lint) */
|
||||
}
|
||||
| time zone {
|
||||
yyHaveTime++;
|
||||
yyTimezone = $2;
|
||||
}
|
||||
| date {
|
||||
yyHaveDate++;
|
||||
}
|
||||
| rel {
|
||||
yyHaveRel = 1;
|
||||
}
|
||||
;
|
||||
|
||||
time : tUNUMBER o_merid {
|
||||
if ($1 < 100) {
|
||||
yyHour = $1;
|
||||
yyMinutes = 0;
|
||||
}
|
||||
else {
|
||||
yyHour = $1 / 100;
|
||||
yyMinutes = $1 % 100;
|
||||
}
|
||||
yySeconds = 0;
|
||||
yyMeridian = $2;
|
||||
}
|
||||
| tUNUMBER ':' tUNUMBER o_merid {
|
||||
yyHour = $1;
|
||||
yyMinutes = $3;
|
||||
yySeconds = 0;
|
||||
yyMeridian = $4;
|
||||
}
|
||||
| tUNUMBER ':' tUNUMBER numzone {
|
||||
yyHour = $1;
|
||||
yyMinutes = $3;
|
||||
yyTimezone = $4;
|
||||
yyMeridian = MER24;
|
||||
yyDSTmode = DSToff;
|
||||
}
|
||||
| tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid {
|
||||
yyHour = $1;
|
||||
yyMinutes = $3;
|
||||
yySeconds = $5;
|
||||
yyMeridian = $6;
|
||||
}
|
||||
| tUNUMBER ':' tUNUMBER ':' tUNUMBER numzone {
|
||||
yyHour = $1;
|
||||
yyMinutes = $3;
|
||||
yySeconds = $5;
|
||||
yyTimezone = $6;
|
||||
yyMeridian = MER24;
|
||||
yyDSTmode = DSToff;
|
||||
}
|
||||
;
|
||||
|
||||
zone : tZONE {
|
||||
$$ = $1;
|
||||
yyDSTmode = DSToff;
|
||||
}
|
||||
| tDAYZONE {
|
||||
$$ = $1;
|
||||
yyDSTmode = DSTon;
|
||||
}
|
||||
| tZONE numzone {
|
||||
/* Only allow "GMT+300" and "GMT-0800" */
|
||||
if ($1 != 0) {
|
||||
YYABORT;
|
||||
}
|
||||
$$ = $2;
|
||||
yyDSTmode = DSToff;
|
||||
}
|
||||
| numzone {
|
||||
$$ = $1;
|
||||
yyDSTmode = DSToff;
|
||||
}
|
||||
;
|
||||
|
||||
numzone : tSNUMBER {
|
||||
int i;
|
||||
|
||||
/* Unix and GMT and numeric timezones -- a little confusing. */
|
||||
if ($1 < 0) {
|
||||
/* Don't work with negative modulus. */
|
||||
$1 = -$1;
|
||||
if ($1 > 9999 || (i = $1 % 100) >= 60) {
|
||||
YYABORT;
|
||||
}
|
||||
$$ = ($1 / 100) * 60 + i;
|
||||
}
|
||||
else {
|
||||
if ($1 > 9999 || (i = $1 % 100) >= 60) {
|
||||
YYABORT;
|
||||
}
|
||||
$$ = -(($1 / 100) * 60 + i);
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
date : tUNUMBER '/' tUNUMBER {
|
||||
yyMonth = $1;
|
||||
yyDay = $3;
|
||||
}
|
||||
| tUNUMBER '/' tUNUMBER '/' tUNUMBER {
|
||||
if ($1 > 100) {
|
||||
/* assume YYYY/MM/DD format, so need not to add 1900 */
|
||||
yyYear = $1;
|
||||
yyMonth = $3;
|
||||
yyDay = $5;
|
||||
}
|
||||
else {
|
||||
/* assume MM/DD/YY* format */
|
||||
yyMonth = $1;
|
||||
yyDay = $3;
|
||||
if ($5 > 100) {
|
||||
/* assume year is YYYY format, so need not to add 1900 */
|
||||
yyYear = $5;
|
||||
} else {
|
||||
/* assume year is YY format, so need to add 1900 */
|
||||
yyYear = $5 + 1900;
|
||||
}
|
||||
}
|
||||
}
|
||||
| tMONTH tUNUMBER {
|
||||
yyMonth = $1;
|
||||
yyDay = $2;
|
||||
}
|
||||
| tMONTH tUNUMBER ',' tUNUMBER {
|
||||
yyMonth = $1;
|
||||
yyDay = $2;
|
||||
if ($4 > 100) {
|
||||
/* assume year is YYYY format, so need not to add 1900 */
|
||||
yyYear = $4;
|
||||
} else {
|
||||
/* assume year is YY format, so need to add 1900 */
|
||||
yyYear = $4 + 1900;
|
||||
}
|
||||
}
|
||||
| tUNUMBER tMONTH {
|
||||
yyDay = $1;
|
||||
yyMonth = $2;
|
||||
}
|
||||
| tUNUMBER tMONTH tUNUMBER {
|
||||
yyDay = $1;
|
||||
yyMonth = $2;
|
||||
if ($3 > 100) {
|
||||
/* assume year is YYYY format, so need not to add 1900 */
|
||||
yyYear = $3;
|
||||
} else {
|
||||
/* assume year is YY format, so need to add 1900 */
|
||||
yyYear = $3 + 1900;
|
||||
}
|
||||
}
|
||||
| tDAY ',' tUNUMBER tMONTH tUNUMBER {
|
||||
yyDay = $3;
|
||||
yyMonth = $4;
|
||||
if ($5 > 100) {
|
||||
/* assume year is YYYY format, so need not to add 1900 */
|
||||
yyYear = $5;
|
||||
} else {
|
||||
/* assume year is YY format, so need to add 1900 */
|
||||
yyYear = $5 + 1900;
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
rel : tSNUMBER tSEC_UNIT {
|
||||
yyRelSeconds += $1 * $2;
|
||||
}
|
||||
| tUNUMBER tSEC_UNIT {
|
||||
yyRelSeconds += $1 * $2;
|
||||
}
|
||||
| tSNUMBER tMONTH_UNIT {
|
||||
yyRelMonth += $1 * $2;
|
||||
}
|
||||
| tUNUMBER tMONTH_UNIT {
|
||||
yyRelMonth += $1 * $2;
|
||||
}
|
||||
;
|
||||
|
||||
o_merid : /* NULL */ {
|
||||
$$ = MER24;
|
||||
}
|
||||
| tMERIDIAN {
|
||||
$$ = $1;
|
||||
}
|
||||
;
|
||||
|
||||
%%
|
||||
|
||||
/* Month and day table. */
|
||||
static TABLE MonthDayTable[] = {
|
||||
{ "january", tMONTH, 1 },
|
||||
{ "february", tMONTH, 2 },
|
||||
{ "march", tMONTH, 3 },
|
||||
{ "april", tMONTH, 4 },
|
||||
{ "may", tMONTH, 5 },
|
||||
{ "june", tMONTH, 6 },
|
||||
{ "july", tMONTH, 7 },
|
||||
{ "august", tMONTH, 8 },
|
||||
{ "september", tMONTH, 9 },
|
||||
{ "october", tMONTH, 10 },
|
||||
{ "november", tMONTH, 11 },
|
||||
{ "december", tMONTH, 12 },
|
||||
/* The value of the day isn't used... */
|
||||
{ "sunday", tDAY, 0 },
|
||||
{ "monday", tDAY, 0 },
|
||||
{ "tuesday", tDAY, 0 },
|
||||
{ "wednesday", tDAY, 0 },
|
||||
{ "thursday", tDAY, 0 },
|
||||
{ "friday", tDAY, 0 },
|
||||
{ "saturday", tDAY, 0 },
|
||||
};
|
||||
|
||||
/* Time units table. */
|
||||
static TABLE UnitsTable[] = {
|
||||
{ "year", tMONTH_UNIT, 12 },
|
||||
{ "month", tMONTH_UNIT, 1 },
|
||||
{ "week", tSEC_UNIT, 7 * 24 * 60 * 60 },
|
||||
{ "day", tSEC_UNIT, 1 * 24 * 60 * 60 },
|
||||
{ "hour", tSEC_UNIT, 60 * 60 },
|
||||
{ "minute", tSEC_UNIT, 60 },
|
||||
{ "min", tSEC_UNIT, 60 },
|
||||
{ "second", tSEC_UNIT, 1 },
|
||||
{ "sec", tSEC_UNIT, 1 },
|
||||
};
|
||||
|
||||
/* Timezone table. */
|
||||
static TABLE TimezoneTable[] = {
|
||||
{ "gmt", tZONE, HOUR( 0) }, /* Greenwich Mean */
|
||||
{ "ut", tZONE, HOUR( 0) }, /* Universal */
|
||||
{ "utc", tZONE, HOUR( 0) }, /* Universal Coordinated */
|
||||
{ "cut", tZONE, HOUR( 0) }, /* Coordinated Universal */
|
||||
{ "z", tZONE, HOUR( 0) }, /* Greenwich Mean */
|
||||
{ "wet", tZONE, HOUR( 0) }, /* Western European */
|
||||
{ "bst", tDAYZONE, HOUR( 0) }, /* British Summer */
|
||||
{ "nst", tZONE, HOUR(3)+30 }, /* Newfoundland Standard */
|
||||
{ "ndt", tDAYZONE, HOUR(3)+30 }, /* Newfoundland Daylight */
|
||||
{ "ast", tZONE, HOUR( 4) }, /* Atlantic Standard */
|
||||
{ "adt", tDAYZONE, HOUR( 4) }, /* Atlantic Daylight */
|
||||
{ "est", tZONE, HOUR( 5) }, /* Eastern Standard */
|
||||
{ "edt", tDAYZONE, HOUR( 5) }, /* Eastern Daylight */
|
||||
{ "cst", tZONE, HOUR( 6) }, /* Central Standard */
|
||||
{ "cdt", tDAYZONE, HOUR( 6) }, /* Central Daylight */
|
||||
{ "mst", tZONE, HOUR( 7) }, /* Mountain Standard */
|
||||
{ "mdt", tDAYZONE, HOUR( 7) }, /* Mountain Daylight */
|
||||
{ "pst", tZONE, HOUR( 8) }, /* Pacific Standard */
|
||||
{ "pdt", tDAYZONE, HOUR( 8) }, /* Pacific Daylight */
|
||||
{ "yst", tZONE, HOUR( 9) }, /* Yukon Standard */
|
||||
{ "ydt", tDAYZONE, HOUR( 9) }, /* Yukon Daylight */
|
||||
{ "akst", tZONE, HOUR( 9) }, /* Alaska Standard */
|
||||
{ "akdt", tDAYZONE, HOUR( 9) }, /* Alaska Daylight */
|
||||
{ "hst", tZONE, HOUR(10) }, /* Hawaii Standard */
|
||||
{ "hast", tZONE, HOUR(10) }, /* Hawaii-Aleutian Standard */
|
||||
{ "hadt", tDAYZONE, HOUR(10) }, /* Hawaii-Aleutian Daylight */
|
||||
{ "ces", tDAYZONE, -HOUR(1) }, /* Central European Summer */
|
||||
{ "cest", tDAYZONE, -HOUR(1) }, /* Central European Summer */
|
||||
{ "mez", tZONE, -HOUR(1) }, /* Middle European */
|
||||
{ "mezt", tDAYZONE, -HOUR(1) }, /* Middle European Summer */
|
||||
{ "cet", tZONE, -HOUR(1) }, /* Central European */
|
||||
{ "met", tZONE, -HOUR(1) }, /* Middle European */
|
||||
{ "eet", tZONE, -HOUR(2) }, /* Eastern Europe */
|
||||
{ "msk", tZONE, -HOUR(3) }, /* Moscow Winter */
|
||||
{ "msd", tDAYZONE, -HOUR(3) }, /* Moscow Summer */
|
||||
{ "wast", tZONE, -HOUR(8) }, /* West Australian Standard */
|
||||
{ "wadt", tDAYZONE, -HOUR(8) }, /* West Australian Daylight */
|
||||
{ "hkt", tZONE, -HOUR(8) }, /* Hong Kong */
|
||||
{ "cct", tZONE, -HOUR(8) }, /* China Coast */
|
||||
{ "jst", tZONE, -HOUR(9) }, /* Japan Standard */
|
||||
{ "kst", tZONE, -HOUR(9) }, /* Korean Standard */
|
||||
{ "kdt", tZONE, -HOUR(9) }, /* Korean Daylight */
|
||||
{ "cast", tZONE, -(HOUR(9)+30) }, /* Central Australian Standard */
|
||||
{ "cadt", tDAYZONE, -(HOUR(9)+30) }, /* Central Australian Daylight */
|
||||
{ "east", tZONE, -HOUR(10) }, /* Eastern Australian Standard */
|
||||
{ "eadt", tDAYZONE, -HOUR(10) }, /* Eastern Australian Daylight */
|
||||
{ "nzst", tZONE, -HOUR(12) }, /* New Zealand Standard */
|
||||
{ "nzdt", tDAYZONE, -HOUR(12) }, /* New Zealand Daylight */
|
||||
|
||||
/* For completeness we include the following entries. */
|
||||
#if 0
|
||||
|
||||
/* Duplicate names. Either they conflict with a zone listed above
|
||||
* (which is either more likely to be seen or just been in circulation
|
||||
* longer), or they conflict with another zone in this section and
|
||||
* we could not reasonably choose one over the other. */
|
||||
{ "fst", tZONE, HOUR( 2) }, /* Fernando De Noronha Standard */
|
||||
{ "fdt", tDAYZONE, HOUR( 2) }, /* Fernando De Noronha Daylight */
|
||||
{ "bst", tZONE, HOUR( 3) }, /* Brazil Standard */
|
||||
{ "est", tZONE, HOUR( 3) }, /* Eastern Standard (Brazil) */
|
||||
{ "edt", tDAYZONE, HOUR( 3) }, /* Eastern Daylight (Brazil) */
|
||||
{ "wst", tZONE, HOUR( 4) }, /* Western Standard (Brazil) */
|
||||
{ "wdt", tDAYZONE, HOUR( 4) }, /* Western Daylight (Brazil) */
|
||||
{ "cst", tZONE, HOUR( 5) }, /* Chile Standard */
|
||||
{ "cdt", tDAYZONE, HOUR( 5) }, /* Chile Daylight */
|
||||
{ "ast", tZONE, HOUR( 5) }, /* Acre Standard */
|
||||
{ "adt", tDAYZONE, HOUR( 5) }, /* Acre Daylight */
|
||||
{ "cst", tZONE, HOUR( 5) }, /* Cuba Standard */
|
||||
{ "cdt", tDAYZONE, HOUR( 5) }, /* Cuba Daylight */
|
||||
{ "est", tZONE, HOUR( 6) }, /* Easter Island Standard */
|
||||
{ "edt", tDAYZONE, HOUR( 6) }, /* Easter Island Daylight */
|
||||
{ "sst", tZONE, HOUR(11) }, /* Samoa Standard */
|
||||
{ "ist", tZONE, -HOUR(2) }, /* Israel Standard */
|
||||
{ "idt", tDAYZONE, -HOUR(2) }, /* Israel Daylight */
|
||||
{ "idt", tDAYZONE, -(HOUR(3)+30) }, /* Iran Daylight */
|
||||
{ "ist", tZONE, -(HOUR(3)+30) }, /* Iran Standard */
|
||||
{ "cst", tZONE, -HOUR(8) }, /* China Standard */
|
||||
{ "cdt", tDAYZONE, -HOUR(8) }, /* China Daylight */
|
||||
{ "sst", tZONE, -HOUR(8) }, /* Singapore Standard */
|
||||
|
||||
/* Dubious (e.g., not in Olson's TIMEZONE package) or obsolete. */
|
||||
{ "gst", tZONE, HOUR( 3) }, /* Greenland Standard */
|
||||
{ "wat", tZONE, -HOUR(1) }, /* West Africa */
|
||||
{ "at", tZONE, HOUR( 2) }, /* Azores */
|
||||
{ "gst", tZONE, -HOUR(10) }, /* Guam Standard */
|
||||
{ "nft", tZONE, HOUR(3)+30 }, /* Newfoundland */
|
||||
{ "idlw", tZONE, HOUR(12) }, /* International Date Line West */
|
||||
{ "mewt", tZONE, -HOUR(1) }, /* Middle European Winter */
|
||||
{ "mest", tDAYZONE, -HOUR(1) }, /* Middle European Summer */
|
||||
{ "swt", tZONE, -HOUR(1) }, /* Swedish Winter */
|
||||
{ "sst", tDAYZONE, -HOUR(1) }, /* Swedish Summer */
|
||||
{ "fwt", tZONE, -HOUR(1) }, /* French Winter */
|
||||
{ "fst", tDAYZONE, -HOUR(1) }, /* French Summer */
|
||||
{ "bt", tZONE, -HOUR(3) }, /* Baghdad */
|
||||
{ "it", tZONE, -(HOUR(3)+30) }, /* Iran */
|
||||
{ "zp4", tZONE, -HOUR(4) }, /* USSR Zone 3 */
|
||||
{ "zp5", tZONE, -HOUR(5) }, /* USSR Zone 4 */
|
||||
{ "ist", tZONE, -(HOUR(5)+30) }, /* Indian Standard */
|
||||
{ "zp6", tZONE, -HOUR(6) }, /* USSR Zone 5 */
|
||||
{ "nst", tZONE, -HOUR(7) }, /* North Sumatra */
|
||||
{ "sst", tZONE, -HOUR(7) }, /* South Sumatra */
|
||||
{ "jt", tZONE, -(HOUR(7)+30) }, /* Java (3pm in Cronusland!) */
|
||||
{ "nzt", tZONE, -HOUR(12) }, /* New Zealand */
|
||||
{ "idle", tZONE, -HOUR(12) }, /* International Date Line East */
|
||||
{ "cat", tZONE, HOUR(10) }, /* -- expired 1967 */
|
||||
{ "nt", tZONE, HOUR(11) }, /* -- expired 1967 */
|
||||
{ "ahst", tZONE, HOUR(10) }, /* -- expired 1983 */
|
||||
{ "hdt", tDAYZONE, HOUR(10) }, /* -- expired 1986 */
|
||||
#endif /* 0 */
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
date_error(s)
|
||||
char *s;
|
||||
{
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
int GetTimeInfo(TIMEINFO *Now)
|
||||
{
|
||||
static time_t NextHour;
|
||||
static long LastTzone;
|
||||
struct tm *tm;
|
||||
int secondsUntilNextHour;
|
||||
#if defined(HAVE_GETTIMEOFDAY)
|
||||
struct timeval tv;
|
||||
#endif /* defined(HAVE_GETTIMEOFDAY) */
|
||||
#if !defined(HAVE_TM_GMTOFF)
|
||||
struct tm local;
|
||||
struct tm gmt;
|
||||
#endif /* !defined(HAVE_TM_GMTOFF) */
|
||||
|
||||
/* Get the basic time. */
|
||||
#if defined(HAVE_GETTIMEOFDAY)
|
||||
if (gettimeofday(&tv, (struct timezone *)NULL) == -1)
|
||||
return -1;
|
||||
Now->time = tv.tv_sec;
|
||||
Now->usec = tv.tv_usec;
|
||||
#else
|
||||
/* Can't check for -1 since that might be a time, I guess. */
|
||||
(void)time(&Now->time);
|
||||
Now->usec = 0;
|
||||
#endif /* defined(HAVE_GETTIMEOFDAY) */
|
||||
|
||||
/* Now get the timezone if the last time < HH:00:00 <= now for some HH. */
|
||||
if (NextHour <= Now->time) {
|
||||
if ((tm = localtime(&Now->time)) == NULL)
|
||||
return -1;
|
||||
secondsUntilNextHour = 60 * (60 - tm->tm_min) - tm->tm_sec;
|
||||
#if !defined(HAVE_TM_GMTOFF)
|
||||
/* To get the timezone, compare localtime with GMT. */
|
||||
local = *tm;
|
||||
if ((tm = gmtime(&Now->time)) == NULL)
|
||||
return -1;
|
||||
gmt = *tm;
|
||||
|
||||
/* Assume we are never more than 24 hours away. */
|
||||
LastTzone = gmt.tm_yday - local.tm_yday;
|
||||
if (LastTzone > 1)
|
||||
LastTzone = -24;
|
||||
else if (LastTzone < -1)
|
||||
LastTzone = 24;
|
||||
else
|
||||
LastTzone *= 24;
|
||||
|
||||
/* Scale in the hours and minutes; ignore seconds. */
|
||||
LastTzone += gmt.tm_hour - local.tm_hour;
|
||||
LastTzone *= 60;
|
||||
LastTzone += gmt.tm_min - local.tm_min;
|
||||
#else
|
||||
LastTzone = (0 - tm->tm_gmtoff) / 60;
|
||||
#endif /* defined(HAVE_TM_GMTOFF) */
|
||||
NextHour = Now->time + secondsUntilNextHour;
|
||||
}
|
||||
Now->tzone = LastTzone;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static time_t
|
||||
ToSeconds(Hours, Minutes, Seconds, Meridian)
|
||||
time_t Hours;
|
||||
time_t Minutes;
|
||||
time_t Seconds;
|
||||
MERIDIAN Meridian;
|
||||
{
|
||||
if (Minutes < 0 || Minutes > 59 || Seconds < 0 || Seconds > 61)
|
||||
return -1;
|
||||
if (Meridian == MER24) {
|
||||
if (Hours < 0 || Hours > 23)
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
if (Hours < 1 || Hours > 12)
|
||||
return -1;
|
||||
if (Hours == 12)
|
||||
Hours = 0;
|
||||
if (Meridian == MERpm)
|
||||
Hours += 12;
|
||||
}
|
||||
return (Hours * 60L + Minutes) * 60L + Seconds;
|
||||
}
|
||||
|
||||
|
||||
static time_t
|
||||
Convert(Month, Day, Year, Hours, Minutes, Seconds, Meridian, dst)
|
||||
time_t Month;
|
||||
time_t Day;
|
||||
time_t Year;
|
||||
time_t Hours;
|
||||
time_t Minutes;
|
||||
time_t Seconds;
|
||||
MERIDIAN Meridian;
|
||||
DSTMODE dst;
|
||||
{
|
||||
static int DaysNormal[13] = {
|
||||
0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
|
||||
};
|
||||
static int DaysLeap[13] = {
|
||||
0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
|
||||
};
|
||||
static int LeapYears[] = {
|
||||
1972, 1976, 1980, 1984, 1988, 1992, 1996,
|
||||
2000, 2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036
|
||||
};
|
||||
int *yp;
|
||||
int *mp;
|
||||
time_t Julian;
|
||||
int i;
|
||||
time_t tod;
|
||||
|
||||
/* Year should not be passed as a relative value, but absolute one.
|
||||
so this should not happen, but just ensure it */
|
||||
if (Year < 0)
|
||||
Year = -Year;
|
||||
if (Year < 100)
|
||||
Year += 1900;
|
||||
if (Year < EPOCH)
|
||||
Year += 100;
|
||||
for (mp = DaysNormal, yp = LeapYears; yp < ENDOF(LeapYears); yp++)
|
||||
if (Year == *yp) {
|
||||
mp = DaysLeap;
|
||||
break;
|
||||
}
|
||||
if (Year < EPOCH || Year > END_OF_TIME
|
||||
|| Month < 1 || Month > 12
|
||||
/* NOSTRICT *//* conversion from long may lose accuracy */
|
||||
|| Day < 1 || Day > mp[(int)Month])
|
||||
return -1;
|
||||
|
||||
Julian = Day - 1 + (Year - EPOCH) * 365;
|
||||
for (yp = LeapYears; yp < ENDOF(LeapYears); yp++, Julian++)
|
||||
if (Year <= *yp)
|
||||
break;
|
||||
for (i = 1; i < Month; i++)
|
||||
Julian += *++mp;
|
||||
Julian *= SECSPERDAY;
|
||||
Julian += yyTimezone * 60L;
|
||||
if ((tod = ToSeconds(Hours, Minutes, Seconds, Meridian)) < 0)
|
||||
return -1;
|
||||
Julian += tod;
|
||||
tod = Julian;
|
||||
if (dst == DSTon || (dst == DSTmaybe && localtime(&tod)->tm_isdst))
|
||||
Julian -= DST_OFFSET * 60 * 60;
|
||||
return Julian;
|
||||
}
|
||||
|
||||
|
||||
static time_t
|
||||
DSTcorrect(Start, Future)
|
||||
time_t Start;
|
||||
time_t Future;
|
||||
{
|
||||
time_t StartDay;
|
||||
time_t FutureDay;
|
||||
|
||||
StartDay = (localtime(&Start)->tm_hour + 1) % 24;
|
||||
FutureDay = (localtime(&Future)->tm_hour + 1) % 24;
|
||||
return (Future - Start) + (StartDay - FutureDay) * DST_OFFSET * 60 * 60;
|
||||
}
|
||||
|
||||
|
||||
static time_t
|
||||
RelativeMonth(Start, RelMonth)
|
||||
time_t Start;
|
||||
time_t RelMonth;
|
||||
{
|
||||
struct tm *tm;
|
||||
time_t Month;
|
||||
time_t Year;
|
||||
|
||||
tm = localtime(&Start);
|
||||
Month = 12 * tm->tm_year + tm->tm_mon + RelMonth;
|
||||
Year = Month / 12;
|
||||
Year += 1900;
|
||||
Month = Month % 12 + 1;
|
||||
return DSTcorrect(Start,
|
||||
Convert(Month, (time_t)tm->tm_mday, Year,
|
||||
(time_t)tm->tm_hour, (time_t)tm->tm_min, (time_t)tm->tm_sec,
|
||||
MER24, DSTmaybe));
|
||||
}
|
||||
|
||||
|
||||
static int LookupWord(char *buff, int length)
|
||||
{
|
||||
char *p;
|
||||
STRING q;
|
||||
TABLE *tp;
|
||||
int c;
|
||||
|
||||
p = buff;
|
||||
c = p[0];
|
||||
|
||||
/* See if we have an abbreviation for a month. */
|
||||
if (length == 3 || (length == 4 && p[3] == '.'))
|
||||
for (tp = MonthDayTable; tp < ENDOF(MonthDayTable); tp++) {
|
||||
q = tp->name;
|
||||
if (c == q[0] && p[1] == q[1] && p[2] == q[2]) {
|
||||
yylval.Number = tp->value;
|
||||
return tp->type;
|
||||
}
|
||||
}
|
||||
else
|
||||
for (tp = MonthDayTable; tp < ENDOF(MonthDayTable); tp++)
|
||||
if (c == tp->name[0] && strcmp(p, tp->name) == 0) {
|
||||
yylval.Number = tp->value;
|
||||
return tp->type;
|
||||
}
|
||||
|
||||
/* Try for a timezone. */
|
||||
for (tp = TimezoneTable; tp < ENDOF(TimezoneTable); tp++)
|
||||
if (c == tp->name[0] && p[1] == tp->name[1]
|
||||
&& strcmp(p, tp->name) == 0) {
|
||||
yylval.Number = tp->value;
|
||||
return tp->type;
|
||||
}
|
||||
|
||||
/* Try the units table. */
|
||||
for (tp = UnitsTable; tp < ENDOF(UnitsTable); tp++)
|
||||
if (c == tp->name[0] && strcmp(p, tp->name) == 0) {
|
||||
yylval.Number = tp->value;
|
||||
return tp->type;
|
||||
}
|
||||
|
||||
/* Strip off any plural and try the units table again. */
|
||||
if (--length > 0 && p[length] == 's') {
|
||||
p[length] = '\0';
|
||||
for (tp = UnitsTable; tp < ENDOF(UnitsTable); tp++)
|
||||
if (c == tp->name[0] && strcmp(p, tp->name) == 0) {
|
||||
p[length] = 's';
|
||||
yylval.Number = tp->value;
|
||||
return tp->type;
|
||||
}
|
||||
p[length] = 's';
|
||||
}
|
||||
length++;
|
||||
|
||||
/* Drop out any periods. */
|
||||
for (p = buff, q = (STRING)buff; *q; q++)
|
||||
if (*q != '.')
|
||||
*p++ = *q;
|
||||
*p = '\0';
|
||||
|
||||
/* Try the meridians. */
|
||||
if (buff[1] == 'm' && buff[2] == '\0') {
|
||||
if (buff[0] == 'a') {
|
||||
yylval.Meridian = MERam;
|
||||
return tMERIDIAN;
|
||||
}
|
||||
if (buff[0] == 'p') {
|
||||
yylval.Meridian = MERpm;
|
||||
return tMERIDIAN;
|
||||
}
|
||||
}
|
||||
|
||||
/* If we saw any periods, try the timezones again. */
|
||||
if (p - buff != length) {
|
||||
c = buff[0];
|
||||
for (p = buff, tp = TimezoneTable; tp < ENDOF(TimezoneTable); tp++)
|
||||
if (c == tp->name[0] && p[1] == tp->name[1]
|
||||
&& strcmp(p, tp->name) == 0) {
|
||||
yylval.Number = tp->value;
|
||||
return tp->type;
|
||||
}
|
||||
}
|
||||
|
||||
/* Unknown word -- assume GMT timezone. */
|
||||
yylval.Number = 0;
|
||||
return tZONE;
|
||||
}
|
||||
|
||||
|
||||
static int date_lex(void)
|
||||
{
|
||||
char c;
|
||||
char *p;
|
||||
char buff[20];
|
||||
int sign;
|
||||
int i;
|
||||
int nesting;
|
||||
|
||||
for ( ; ; ) {
|
||||
/* Get first character after the whitespace. */
|
||||
for ( ; ; ) {
|
||||
while (CTYPE(isspace, (int)*yyInput))
|
||||
yyInput++;
|
||||
c = *yyInput;
|
||||
|
||||
/* Ignore RFC 822 comments, typically time zone names. */
|
||||
if (c != LPAREN)
|
||||
break;
|
||||
for (nesting = 1; (c = *++yyInput) != RPAREN || --nesting; )
|
||||
if (c == LPAREN)
|
||||
nesting++;
|
||||
else if (!IS7BIT(c) || c == '\0' || c == '\r'
|
||||
|| (c == '\\' && ((c = *++yyInput) == '\0' || !IS7BIT(c))))
|
||||
/* Lexical error: bad comment. */
|
||||
return '?';
|
||||
yyInput++;
|
||||
}
|
||||
|
||||
/* A number? */
|
||||
if (CTYPE(isdigit, (int)c) || c == '-' || c == '+') {
|
||||
if (c == '-' || c == '+') {
|
||||
sign = c == '-' ? -1 : 1;
|
||||
yyInput++;
|
||||
if (!CTYPE(isdigit, (int)*yyInput))
|
||||
/* Skip the plus or minus sign. */
|
||||
continue;
|
||||
}
|
||||
else
|
||||
sign = 0;
|
||||
for (i = 0; (c = *yyInput++) != '\0' && CTYPE(isdigit, (int)c); )
|
||||
i = 10 * i + c - '0';
|
||||
yyInput--;
|
||||
yylval.Number = sign < 0 ? -i : i;
|
||||
return sign ? tSNUMBER : tUNUMBER;
|
||||
}
|
||||
|
||||
/* A word? */
|
||||
if (CTYPE(isalpha, (int)c)) {
|
||||
for (p = buff; (c = *yyInput++) == '.' || CTYPE(isalpha, (int)c); )
|
||||
if (p < &buff[sizeof buff - 1])
|
||||
*p++ = CTYPE(isupper, (int)c) ? tolower(c) : c;
|
||||
*p = '\0';
|
||||
yyInput--;
|
||||
return LookupWord(buff, p - buff);
|
||||
}
|
||||
|
||||
return *yyInput++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
time_t parsedate(char *p, TIMEINFO *now)
|
||||
{
|
||||
extern int date_parse();
|
||||
struct tm *tm;
|
||||
TIMEINFO ti;
|
||||
time_t Start;
|
||||
|
||||
yyInput = p;
|
||||
if (now == NULL) {
|
||||
now = &ti;
|
||||
(void)GetTimeInfo(&ti);
|
||||
}
|
||||
|
||||
tm = localtime(&now->time);
|
||||
yyYear = tm->tm_year + 1900;
|
||||
yyMonth = tm->tm_mon + 1;
|
||||
yyDay = tm->tm_mday;
|
||||
#ifdef HAVE_TM_GMTOFF
|
||||
yyTimezone = tm->tm_gmtoff/60;
|
||||
#else
|
||||
yyTimezone = timezone/60;
|
||||
#endif
|
||||
yyDSTmode = DSTmaybe;
|
||||
yyHour = 0;
|
||||
yyMinutes = 0;
|
||||
yySeconds = 0;
|
||||
yyMeridian = MER24;
|
||||
yyRelSeconds = 0;
|
||||
yyRelMonth = 0;
|
||||
yyHaveDate = 0;
|
||||
yyHaveRel = 0;
|
||||
yyHaveTime = 0;
|
||||
|
||||
if (date_parse() || yyHaveTime > 1 || yyHaveDate > 1)
|
||||
return -1;
|
||||
|
||||
if (yyHaveDate || yyHaveTime) {
|
||||
Start = Convert(yyMonth, yyDay, yyYear, yyHour, yyMinutes, yySeconds,
|
||||
yyMeridian, yyDSTmode);
|
||||
if (Start < 0)
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
Start = now->time;
|
||||
if (!yyHaveRel)
|
||||
Start -= (tm->tm_hour * 60L + tm->tm_min) * 60L + tm->tm_sec;
|
||||
}
|
||||
|
||||
Start += yyRelSeconds;
|
||||
if (yyRelMonth)
|
||||
Start += RelativeMonth(Start, yyRelMonth);
|
||||
|
||||
/* Have to do *something* with a legitimate -1 so it's distinguishable
|
||||
* from the error return value. (Alternately could set errno on error.) */
|
||||
return Start == -1 ? 0 : Start;
|
||||
}
|
||||
@@ -44,19 +44,20 @@ PHP_FUNCTION(fileowner);
|
||||
PHP_FUNCTION(fileperms);
|
||||
PHP_FUNCTION(filesize);
|
||||
PHP_FUNCTION(filetype);
|
||||
PHP_FUNCTION(iswritable);
|
||||
PHP_FUNCTION(isreadable);
|
||||
PHP_FUNCTION(isexec);
|
||||
PHP_FUNCTION(isfile);
|
||||
PHP_FUNCTION(isdir);
|
||||
PHP_FUNCTION(islink);
|
||||
PHP_FUNCTION(fileexists);
|
||||
PHP_FUNCTION(is_writable);
|
||||
PHP_FUNCTION(is_readable);
|
||||
PHP_FUNCTION(is_executable);
|
||||
PHP_FUNCTION(is_file);
|
||||
PHP_FUNCTION(is_dir);
|
||||
PHP_FUNCTION(is_link);
|
||||
PHP_FUNCTION(file_exists);
|
||||
PHP_FUNCTION(stat);
|
||||
PHP_FUNCTION(lstat);
|
||||
PHP_FUNCTION(chown);
|
||||
PHP_FUNCTION(chgrp);
|
||||
PHP_FUNCTION(chmod);
|
||||
PHP_FUNCTION(touch);
|
||||
PHP_FUNCTION(clearstatcache);
|
||||
|
||||
extern php3_module_entry php3_filestat_module_entry;
|
||||
#define php3_filestat_module_ptr &php3_filestat_module_entry
|
||||
|
||||
@@ -49,7 +49,7 @@ PHP_FUNCTION(str_replace);
|
||||
PHP_FUNCTION(chop);
|
||||
PHP_FUNCTION(trim);
|
||||
PHP_FUNCTION(ltrim);
|
||||
void soundex(INTERNAL_FUNCTION_PARAMETERS);
|
||||
PHP_FUNCTION(soundex);
|
||||
|
||||
PHP_FUNCTION(explode);
|
||||
PHP_FUNCTION(implode);
|
||||
@@ -80,9 +80,10 @@ PHP_FUNCTION(nl2br);
|
||||
PHP_FUNCTION(setlocale);
|
||||
PHP_FUNCTION(stristr);
|
||||
PHP_FUNCTION(chunk_split);
|
||||
PHP_FUNCTION(parsestr);
|
||||
PHP_FUNCTION(parse_str);
|
||||
PHP_FUNCTION(bin2hex);
|
||||
PHP_FUNCTION(similar_text);
|
||||
PHP_FUNCTION(strip_tags);
|
||||
|
||||
extern PHPAPI char *_php3_strtoupper(char *s);
|
||||
extern PHPAPI char *_php3_strtolower(char *s);
|
||||
|
||||
+46
-4
@@ -201,6 +201,8 @@ static inline uint32 randomMT(void)
|
||||
#define PHP_RAND_MAX RAND_MAX
|
||||
#endif
|
||||
|
||||
/* {{{ proto void srand(int seed)
|
||||
Seeds random number generator */
|
||||
PHP_FUNCTION(srand)
|
||||
{
|
||||
pval *arg;
|
||||
@@ -219,7 +221,10 @@ PHP_FUNCTION(srand)
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto void mt_srand(int seed)
|
||||
Seeds Mersenne Twister random number generator */
|
||||
PHP_FUNCTION(mt_srand)
|
||||
{
|
||||
pval *arg;
|
||||
@@ -229,7 +234,10 @@ PHP_FUNCTION(mt_srand)
|
||||
convert_to_long(arg);
|
||||
seedMT(arg->value.lval);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto int rand([int min, int max])
|
||||
Returns a random number */
|
||||
PHP_FUNCTION(rand)
|
||||
{
|
||||
pval *p_min=NULL, *p_max=NULL;
|
||||
@@ -262,13 +270,40 @@ PHP_FUNCTION(rand)
|
||||
return_value->value.lval = rand();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* A bit of tricky math here. We want to avoid using a modulus because
|
||||
* that simply tosses the high-order bits and might skew the distribution
|
||||
* of random values over the range. Instead we map the range directly.
|
||||
*
|
||||
* We need to map the range from 0...M evenly to the range a...b
|
||||
* Let n = the random number and n' = the mapped random number
|
||||
*
|
||||
* Then we have: n' = a + n(b-a)/M
|
||||
*
|
||||
* We have a problem here in that only n==M will get mapped to b which
|
||||
# means the chances of getting b is much much less than getting any of
|
||||
# the other values in the range. We can fix this by increasing our range
|
||||
# artifically and using:
|
||||
#
|
||||
# n' = a + n(b-a+1)/M
|
||||
*
|
||||
# Now we only have a problem if n==M which would cause us to produce a
|
||||
# number of b+1 which would be bad. So we bump M up by one to make sure
|
||||
# this will never happen, and the final algorithm looks like this:
|
||||
#
|
||||
# n' = a + n(b-a+1)/(M+1)
|
||||
*
|
||||
* -RL
|
||||
*/
|
||||
if (p_min && p_max) { /* implement range */
|
||||
return_value->value.lval = p_min->value.lval +
|
||||
(int)((double)p_max->value.lval * return_value->value.lval/(PHP_RAND_MAX+(double)p_min->value.lval));
|
||||
(int)((double)(p_max->value.lval - p_min->value.lval + 1) * return_value->value.lval/(PHP_RAND_MAX+1.0));
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto int mt_rand([int min, int max])
|
||||
Returns a random number from Mersenne Twister */
|
||||
PHP_FUNCTION(mt_rand)
|
||||
{
|
||||
pval *p_min=NULL, *p_max=NULL;
|
||||
@@ -304,16 +339,23 @@ PHP_FUNCTION(mt_rand)
|
||||
|
||||
if (p_min && p_max) { /* implement range */
|
||||
return_value->value.lval = p_min->value.lval +
|
||||
(int)((double)p_max->value.lval * return_value->value.lval/(PHP_RAND_MAX+(double)p_min->value.lval));
|
||||
(int)((double)(p_max->value.lval - p_min->value.lval + 1) * return_value->value.lval/(PHP_RAND_MAX+1.0));
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto int getrandmax(void)
|
||||
Returns the maximum value a random number can have */
|
||||
PHP_FUNCTION(getrandmax)
|
||||
{
|
||||
return_value->type = IS_LONG;
|
||||
return_value->value.lval = PHP_RAND_MAX;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int mt_getrandmax(void)
|
||||
Returns the maximum value a random number from Mersenne Twister can have */
|
||||
PHP_FUNCTION(mt_getrandmax)
|
||||
{
|
||||
return_value->type = IS_LONG;
|
||||
@@ -323,7 +365,7 @@ PHP_FUNCTION(mt_getrandmax)
|
||||
*/
|
||||
return_value->value.lval = 2147483647; /* 2^^31 */
|
||||
}
|
||||
|
||||
/* }}} */
|
||||
/*
|
||||
* Local variables:
|
||||
* tab-width: 4
|
||||
|
||||
+9
-9
@@ -28,13 +28,13 @@
|
||||
unsigned char third_argument_force_ref[] = { 3, BYREF_NONE, BYREF_NONE, BYREF_FORCE };
|
||||
|
||||
function_entry reg_functions[] = {
|
||||
{"ereg", php3_ereg, third_argument_force_ref },
|
||||
{"ereg_replace", php3_eregreplace, NULL },
|
||||
{"eregi", php3_eregi, third_argument_force_ref },
|
||||
{"eregi_replace", php3_eregireplace, NULL },
|
||||
{"split", php3_split, NULL},
|
||||
{"join", php3_implode, NULL},
|
||||
{"sql_regcase", php3_sql_regcase, NULL},
|
||||
PHP_FE(ereg, third_argument_force_ref)
|
||||
PHP_FE(ereg_replace, NULL)
|
||||
PHP_FE(eregi, third_argument_force_ref)
|
||||
PHP_FE(eregi_replace, NULL)
|
||||
PHP_FE(split, NULL)
|
||||
PHP_FALIAS(join, implode, NULL)
|
||||
PHP_FE(sql_regcase, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
@@ -491,7 +491,7 @@ static void _php3_eregreplace(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
|
||||
/* {{{ proto string ereg_replace(string pattern, string string [, array registers])
|
||||
Replace regular expression */
|
||||
PHP_FUNCTION(eregreplace)
|
||||
PHP_FUNCTION(ereg_replace)
|
||||
{
|
||||
_php3_eregreplace(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
|
||||
}
|
||||
@@ -499,7 +499,7 @@ PHP_FUNCTION(eregreplace)
|
||||
|
||||
/* {{{ proto string eregi_replace(string pattern, string string [, array registers])
|
||||
Case insensitive replace regular expression */
|
||||
PHP_FUNCTION(eregireplace)
|
||||
PHP_FUNCTION(eregi_replace)
|
||||
{
|
||||
_php3_eregreplace(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
|
||||
}
|
||||
|
||||
+2
-2
@@ -40,8 +40,8 @@ char *_php3_regreplace(const char *pattern, const char *replace, const char *str
|
||||
|
||||
PHP_FUNCTION(ereg);
|
||||
PHP_FUNCTION(eregi);
|
||||
PHP_FUNCTION(eregireplace);
|
||||
PHP_FUNCTION(eregreplace);
|
||||
PHP_FUNCTION(eregi_replace);
|
||||
PHP_FUNCTION(ereg_replace);
|
||||
PHP_FUNCTION(split);
|
||||
PHPAPI PHP_FUNCTION(sql_regcase);
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/* Simple soundex algorithm as described by Knuth in TAOCP, vol 3 */
|
||||
/* {{{ proto string soundex(string str)
|
||||
Calculate the soundex key of a string */
|
||||
void soundex(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(soundex)
|
||||
{
|
||||
char l, u;
|
||||
char *somestring;
|
||||
|
||||
@@ -1712,9 +1712,9 @@ PHP_FUNCTION(setlocale)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto void parsestr(string encoded_string)
|
||||
/* {{{ proto void parse_str(string encoded_string)
|
||||
Parses GET/POST/COOKIE data and sets global variables. */
|
||||
PHP_FUNCTION(parsestr)
|
||||
PHP_FUNCTION(parse_str)
|
||||
{
|
||||
pval *arg;
|
||||
char *res = NULL;
|
||||
|
||||
@@ -257,10 +257,10 @@ PHP_FUNCTION(syslog)
|
||||
|
||||
|
||||
function_entry syslog_functions[] = {
|
||||
{"openlog", php3_openlog, NULL},
|
||||
{"syslog", php3_syslog, NULL},
|
||||
{"closelog", php3_closelog, NULL},
|
||||
{"define_syslog_variables", php3_define_syslog_variables, NULL},
|
||||
PHP_FE(openlog, NULL)
|
||||
PHP_FE(syslog, NULL)
|
||||
PHP_FE(closelog, NULL)
|
||||
PHP_FE(define_syslog_variables, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
@@ -696,6 +696,7 @@ PHP_FUNCTION(wddx_serialize_vars)
|
||||
_php_wddx_add_chunk(packet, WDDX_STRUCT_S);
|
||||
|
||||
for (i=0; i<argc; i++) {
|
||||
convert_to_string(args[i]);
|
||||
_php_wddx_add_var(packet, args[i]);
|
||||
}
|
||||
|
||||
@@ -815,6 +816,7 @@ PHP_FUNCTION(wddx_add_vars)
|
||||
}
|
||||
|
||||
for (i=1; i<argc; i++) {
|
||||
convert_to_string(args[i]);
|
||||
_php_wddx_add_var(packet, args[i]);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
phplibdir=$(libdir)/php
|
||||
|
||||
SRC=xml.c
|
||||
INCLUDES=@INCLUDES@ @XML_INCLUDE@ -I@top_srcdir@ -I@top_srcdir@/libzend
|
||||
INCLUDES=@INCLUDES@ -I@top_srcdir@ -I@top_srcdir@/libzend
|
||||
noinst_LIBRARIES=libphpext_xml.a
|
||||
phplib_LTLIBRARIES=libphpext_xml.la
|
||||
libphpext_xml_a_SOURCES=$(SRC)
|
||||
|
||||
+10
-7
@@ -3,7 +3,10 @@
|
||||
|
||||
AC_MSG_CHECKING(for XML support)
|
||||
AC_ARG_WITH(xml,
|
||||
[ --with-xml Include XML support],[
|
||||
[ --with-xml[=DIR] Include XML support. Will look for expat
|
||||
in DIR if specified. Set DIR to "shared" to
|
||||
build as a dl, or "shared,DIR" to build as a dl
|
||||
and still specify DIR.],[
|
||||
case $withval in
|
||||
shared)
|
||||
shared=yes
|
||||
@@ -24,19 +27,20 @@ AC_ARG_WITH(xml,
|
||||
AC_MSG_RESULT([yes (static)])
|
||||
fi
|
||||
if test "$withval" = "yes"; then
|
||||
test -d /usr/include/xmltok && XML_INCLUDE="-I/usr/include/xmltok"
|
||||
test -d /usr/include/xml && XML_INCLUDE="-I/usr/include/xml"
|
||||
test -d /usr/local/include/xml && XML_INCLUDE="-I/usr/local/include/xml"
|
||||
test -d /usr/include/xmltok && XML_INCLUDE="/usr/include/xmltok"
|
||||
test -d /usr/include/xml && XML_INCLUDE="/usr/include/xml"
|
||||
test -d /usr/local/include/xml && XML_INCLUDE="/usr/local/include/xml"
|
||||
AC_CHECK_LIB(expat, main, XML_LIBS="-lexpat", XML_LIBS="-lxmlparse -lxmltok")
|
||||
else
|
||||
XML_LIBS="-L$withval/lib -lexpat"
|
||||
if test -d $withval/include/xml; then
|
||||
XML_INCLUDE="-I$withval/include/xml"
|
||||
XML_INCLUDE="$withval/include/xml"
|
||||
else
|
||||
XML_INCLUDE="-I$withval/include"
|
||||
XML_INCLUDE="$withval/include"
|
||||
fi
|
||||
fi
|
||||
AC_DEFINE(HAVE_LIBEXPAT, 1)
|
||||
AC_ADD_INCLUDE($XML_INCLUDE)
|
||||
PHP_EXTENSION(xml, $shared)
|
||||
if test "$shared" != "yes"; then
|
||||
EXTRA_LIBS="$EXTRA_LIBS $XML_LIBS"
|
||||
@@ -48,4 +52,3 @@ AC_ARG_WITH(xml,
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
AC_SUBST(XML_LIBS)
|
||||
AC_SUBST(XML_INCLUDE)
|
||||
+1
-1
@@ -204,7 +204,7 @@
|
||||
/* Define if you have the setlocale function. */
|
||||
#define HAVE_SETLOCALE 1
|
||||
|
||||
#define HAVE_LOCALE_H
|
||||
#define HAVE_LOCALE_H 1
|
||||
|
||||
/* Define if you have the setvbuf function. */
|
||||
#ifndef HAVE_BINDLIB
|
||||
|
||||
+12
-4
@@ -359,6 +359,9 @@ PHPAPI void php3_error(int type, const char *format,...)
|
||||
|
||||
error_filename = zend_get_compiled_filename();
|
||||
error_lineno = CG(zend_lineno);
|
||||
if (!error_filename) {
|
||||
error_filename = zend_get_executed_filename(ELS_C);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case E_ERROR:
|
||||
@@ -372,6 +375,10 @@ PHPAPI void php3_error(int type, const char *format,...)
|
||||
error_lineno = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!error_filename) {
|
||||
error_filename = "Unknown";
|
||||
}
|
||||
|
||||
if (EG(error_reporting) & type || (type & E_CORE)) {
|
||||
char *error_type_str;
|
||||
@@ -501,7 +508,7 @@ static void php3_unset_timeout()
|
||||
}
|
||||
|
||||
|
||||
void php3_set_time_limit(INTERNAL_FUNCTION_PARAMETERS)
|
||||
PHP_FUNCTION(set_time_limit)
|
||||
{
|
||||
pval *new_timeout;
|
||||
PLS_FETCH();
|
||||
@@ -768,11 +775,10 @@ int php_module_startup(sapi_module_struct *sf)
|
||||
sapi_globals_struct *sapi_globals = ts_resource(sapi_globals_id);
|
||||
#endif
|
||||
#if (WIN32|WINNT) && !(USE_SAPI)
|
||||
WORD wVersionRequested;
|
||||
WORD wVersionRequested = MAKEWORD(2, 0);
|
||||
WSADATA wsaData;
|
||||
|
||||
wVersionRequested = MAKEWORD(2, 0);
|
||||
#endif
|
||||
ELS_FETCH();
|
||||
|
||||
SG(server_context) = NULL;
|
||||
SG(request_info).request_method = NULL;
|
||||
@@ -782,6 +788,8 @@ int php_module_startup(sapi_module_struct *sf)
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
EG(error_reporting) = E_ALL & ~E_NOTICE;
|
||||
|
||||
sapi_module = *sf;
|
||||
|
||||
zend_output_startup();
|
||||
|
||||
+3
-1
@@ -1 +1,3 @@
|
||||
#define PHP_VERSION "4.0B1"
|
||||
/* automatically generated by configure */
|
||||
/* edit configure.in.in to change version number */
|
||||
#define PHP_VERSION "4.0b2-dev"
|
||||
+1
-1
@@ -425,7 +425,7 @@ CONST_PREFIX char *php_apache_flag_handler_ex(cmd_parms *cmd, HashTable *conf, c
|
||||
{
|
||||
char bool_val[2];
|
||||
|
||||
if (!strcmp(arg2, "On")) {
|
||||
if (!strcasecmp(arg2, "On")) {
|
||||
bool_val[0] = '1';
|
||||
} else {
|
||||
bool_val[0] = '0';
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
%define version @VERSION@
|
||||
%define so_version 4
|
||||
%define release 1
|
||||
|
||||
Name: php
|
||||
Summary: PHP: Hypertext Preprocessor
|
||||
Group: Development/Languages
|
||||
Version: %{version}
|
||||
Release: %{release}
|
||||
Copyright: The PHP license (see "LICENSE" file included in distribution)
|
||||
Source: http://www.php.net/version4/downloads/php-%{version}.tar.gz
|
||||
Icon: php4.gif
|
||||
URL: http://www.php.net/
|
||||
Packager: PHP Group <group@php.net>
|
||||
|
||||
BuildRoot: /var/tmp/php-%{version}
|
||||
|
||||
%description
|
||||
PHP is an HTML-embedded scripting language. Much of its syntax is
|
||||
borrowed from C, Java and Perl with a couple of unique PHP-specific
|
||||
features thrown in. The goal of the language is to allow web
|
||||
developers to write dynamically generated pages quickly.
|
||||
|
||||
%prep
|
||||
|
||||
%setup
|
||||
|
||||
%build
|
||||
set -x
|
||||
./buildconf
|
||||
./configure --prefix=/usr --with-apxs \
|
||||
--enable-track-vars --disable-debug \
|
||||
--with-xml=shared \
|
||||
|
||||
# figure out configure options options based on what packages are installed
|
||||
# to override, use the OVERRIDE_OPTIONS environment variable. To add
|
||||
# extra options, use the OPTIONS environment variable.
|
||||
|
||||
#test rpm -q MySQL-devel >&/dev/null && OPTIONS="$OPTIONS --with-mysql=shared"
|
||||
#test rpm -q solid-devel >&/dev/null && OPTIONS="$OPTIONS --with-solid=shared,/home/solid"
|
||||
#test rpm -q postgresql-devel >&/dev/null && OPTIONS="$OPTIONS --with-pgsql=shared"
|
||||
test rpm -q expat >&/dev/null && OPTIONS="$OPTIONS --with-xml=shared"
|
||||
|
||||
if test "x$OVERRIDE_OPTIONS" = "x"; then
|
||||
./configure --prefix=/usr --with-apxs=$APXS $OPTIONS
|
||||
else
|
||||
./configure $OVERRIDE_OPTIONS
|
||||
fi
|
||||
+24
@@ -363,6 +363,10 @@ SOURCE=.\ext\standard\pageinfo.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ext\standard\parsedate.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ext\pcre\php_pcre.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -738,6 +742,26 @@ BuildCmds= \
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ext\standard\parsedate.y
|
||||
|
||||
!IF "$(CFG)" == "php4dll - Win32 Debug"
|
||||
|
||||
# Begin Custom Build
|
||||
InputPath=.\ext\standard\parsedate.y
|
||||
|
||||
"ext\standard\parsedate.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
cd ext\standard
|
||||
bison --output=parsedate.c -v -d -S "C:\Program Files\Cygnus\share\bison.simple" parsedate.y
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "php4dll - Win32 Release"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Scanners"
|
||||
|
||||
@@ -371,6 +371,10 @@ SOURCE=.\ext\standard\pageinfo.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ext\standard\parsedate.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ext\pcre\php_pcre.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -754,6 +758,26 @@ BuildCmds= \
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ext\standard\parsedate.y
|
||||
|
||||
!IF "$(CFG)" == "php4dllts - Win32 Debug_TS"
|
||||
|
||||
# Begin Custom Build
|
||||
InputPath=.\ext\standard\parsedate.y
|
||||
|
||||
"ext\standard\parsedate.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
cd ext\standard
|
||||
bison --output=parsedate.c -v -d -S "C:\Program Files\Cygnus\share\bison.simple" parsedate.y
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "php4dllts - Win32 Release_TS"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Scanners"
|
||||
@@ -792,6 +816,10 @@ InputPath=".\configuration-scanner.l"
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ChangeLog
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\LICENSE
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
@@ -14,3 +14,4 @@ for dir in $extensions; do
|
||||
done
|
||||
|
||||
(set -x; $top_srcdir/scripts/armerge $outfile $ext_libs)
|
||||
exit 0
|
||||
Reference in new issue
Block a user