cvs: pecl /iisfunc iisfunc.cpp iisfunc.h setup.c
| From: | Frank M. Kromann | 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));
}
/* }}} */