cvs: pecl /iisfunc iisfunc.cpp iisfunc.h setup.c

From: Date: Mon, 28 Jul 2003 08:53:48 +0000
Subject: cvs: pecl /iisfunc iisfunc.cpp iisfunc.h setup.c
Groups: php.pecl.cvs 
Request: Send a blank email to pecl-cvs+get-387@lists.php.net to get a copy of this message
fmk Mon Jul 28 04:53:48 2003 EDT Modified files: /pecl/iisfunc iisfunc.cpp iisfunc.h setup.c Log: Fixing set_script_map() so it will allow overwriting an existing mapping. Index: pecl/iisfunc/iisfunc.cpp diff -u pecl/iisfunc/iisfunc.cpp:1.15 pecl/iisfunc/iisfunc.cpp:1.16 --- pecl/iisfunc/iisfunc.cpp:1.15 Thu May 22 02:48:08 2003 +++ pecl/iisfunc/iisfunc.cpp Mon Jul 28 04:53:48 2003 @@ -15,7 +15,7 @@ | Authors: Frank M. Kromann <fmk@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: iisfunc.cpp,v 1.15 2003/05/22 06:48:08 fmk Exp $ */ +/* $Id: iisfunc.cpp,v 1.16 2003/07/28 08:53:48 fmk Exp $ */ /* iisfunc.cpp : Defines the entry point for the DLL application. */ @@ -563,7 +563,7 @@ return retval; } -extern "C" int fnIisSetScriptMap(DWORD ServerInstance, char * VirtualPath, char * ScriptMap TSRMLS_DC) +extern "C" int fnIisSetScriptMap(DWORD ServerInstance, char * VirtualPath, char * ScriptExtention, char * ScriptMap TSRMLS_DC) { HRESULT hRes = 0; DWORD buffer = 0; @@ -572,7 +572,10 @@ METADATA_RECORD MyRecord; PBYTE pbBuffer = new BYTE[dwBuffer]; WCHAR SubKeyName[METADATA_MAX_NAME_LEN]; + PBYTE temp; + WCHAR *temp2; WCHAR NewData[65535]; + char extBuffer[256]; IMSAdminBase *pIMeta; int retval = 1; @@ -593,15 +596,24 @@ pIMeta->ChangePermissions(MyHandle, 1000, METADATA_PERMISSION_WRITE); memset(NewData, 0, sizeof(NewData)); - swprintf(NewData, L"%S", ScriptMap); - memcpy(NewData + (wcslen(NewData) + 1), pbBuffer, MyRecord.dwMDDataLen); + temp = pbBuffer; + temp2 = NewData; + while (*temp) { + memset(extBuffer, 0, sizeof(extBuffer)); + sprintf(extBuffer, "%ls", temp); + if (!strncmp(extBuffer, ScriptExtention, strlen(ScriptExtention))) + temp2 += swprintf(temp2, L"%S", ScriptMap) + 1; + else + temp2 += swprintf(temp2, L"%ls", temp) + 1; + temp += (wcslen((wchar_t *)temp) + 1) * sizeof(WCHAR); + } MyRecord.dwMDIdentifier = MD_SCRIPT_MAPS; MyRecord.dwMDAttributes = METADATA_INHERIT; MyRecord.dwMDUserType = IIS_MD_UT_FILE; MyRecord.dwMDDataType = MULTISZ_METADATA; MyRecord.pbMDData = (PBYTE)&NewData; - MyRecord.dwMDDataLen += (wcslen(NewData) + 1) * sizeof(WCHAR) + sizeof(WCHAR); + MyRecord.dwMDDataLen = temp2 - NewData + 1; if(!SUCCEEDED(pIMeta->SetData(MyHandle, SubKeyName, &MyRecord))) retval = -509; @@ -610,6 +622,7 @@ else retval = -501; pIMeta->CloseKey(MyHandle); + delete pbBuffer; return retval; } @@ -642,19 +655,22 @@ MyRecord.dwMDDataLen = dwBuffer; hRes = pIMeta->GetData(MyHandle, SubKeyName, &MyRecord, &buffer); - temp = pbBuffer; - while (*temp) { - memset(extBuffer, 0, sizeof(extBuffer)); - sprintf(extBuffer, "%ls\n", temp); - if (!strncmp(extBuffer, ScriptExtention, strlen(ScriptExtention))) - strcpy(ReturnValue, extBuffer); - temp += (wcslen((wchar_t *)temp) + 1) * sizeof(WCHAR); + if (SUCCEEDED(hRes)) { + temp = pbBuffer; + while (*temp) { + memset(extBuffer, 0, sizeof(extBuffer)); + sprintf(extBuffer, "%ls", temp); + if (!strncmp(extBuffer, ScriptExtention, strlen(ScriptExtention))) + strcpy(ReturnValue, extBuffer); + temp += (wcslen((wchar_t *)temp) + 1) * sizeof(WCHAR); + } } } else retval = -501; pIMeta->CloseKey(MyHandle); - + delete pbBuffer; + return retval; } Index: pecl/iisfunc/iisfunc.h diff -u pecl/iisfunc/iisfunc.h:1.10 pecl/iisfunc/iisfunc.h:1.11 --- pecl/iisfunc/iisfunc.h:1.10 Thu May 22 02:48:09 2003 +++ pecl/iisfunc/iisfunc.h Mon Jul 28 04:53:48 2003 @@ -15,7 +15,7 @@ | Authors: Frank M. Kromann <fmk@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: iisfunc.h,v 1.10 2003/05/22 06:48:09 fmk Exp $ */ +/* $Id: iisfunc.h,v 1.11 2003/07/28 08:53:48 fmk Exp $ */ #include "setup.h" @@ -40,7 +40,7 @@ int fnIisSetServerStatus(DWORD ServerInstance, DWORD StartServer TSRMLS_DC); int fnIisGetServerStatus(DWORD ServerInstance TSRMLS_DC); -int fnIisSetScriptMap(DWORD ServerInstance, char * VirtualPath, char * ScriptMap TSRMLS_DC); +int fnIisSetScriptMap(DWORD ServerInstance, char * VirtualPath, char * ScriptExtention, char * ScriptMap TSRMLS_DC); int fnIisGetScriptMap(DWORD ServerInstance, char * VirtualPath, char * SeciptExtention, char * ReturnValue TSRMLS_DC); int fnIisSetAppSettings(DWORD ServerInstance, char * VirtualPath, char * AppName TSRMLS_DC); Index: pecl/iisfunc/setup.c diff -u pecl/iisfunc/setup.c:1.20 pecl/iisfunc/setup.c:1.21 --- pecl/iisfunc/setup.c:1.20 Thu May 22 02:48:09 2003 +++ pecl/iisfunc/setup.c Mon Jul 28 04:53:48 2003 @@ -15,7 +15,7 @@ | Authors: Frank M. Kromann <fmk@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: setup.c,v 1.20 2003/05/22 06:48:09 fmk Exp $ */ +/* $Id: setup.c,v 1.21 2003/07/28 08:53:48 fmk Exp $ */ #ifdef COMPILE_DL_IISFUNC #define HAVE_IISFUNC 1 @@ -396,7 +396,7 @@ sprintf(ScriptingValue, "%s,%s,%li", Z_STRVAL_PP(ScriptExtention), Z_STRVAL_PP(EnginePath), Z_LVAL_PP(Scripting)); - RETVAL_LONG(fnIisSetScriptMap(Z_LVAL_PP(ServerInstance), Z_STRVAL_PP(VirtualPath), ScriptingValue TSRMLS_CC)); + RETVAL_LONG(fnIisSetScriptMap(Z_LVAL_PP(ServerInstance), Z_STRVAL_PP(VirtualPath), Z_STRVAL_PP(ScriptExtention), ScriptingValue TSRMLS_CC)); } /* }}} */

« previous php.pecl.cvs (#387) next »