Return-Path: Delivered-To: new-httpd-archive@hyperreal.org Received: (qmail 8937 invoked by uid 6000); 18 Aug 1998 19:34:22 -0000 Received: (qmail 8890 invoked from network); 18 Aug 1998 19:34:17 -0000 Received: from dugong40.pcola.gulf.net (HELO jaded.dave.net) (david@205.160.71.103) by taz.hyperreal.org with SMTP; 18 Aug 1998 19:34:17 -0000 Received: from localhost (david@localhost) by jaded.dave.net (8.8.7/8.8.7) with SMTP id OAA00165 for ; Tue, 18 Aug 1998 14:36:06 -0500 X-Authentication-Warning: jaded.dave.net: david owned process doing -bs Date: Tue, 18 Aug 1998 14:36:05 -0500 (CDT) From: David Goeke X-Sender: david@jaded.dave.net To: new-httpd@apache.org Subject: [patch] mod_include macros Message-ID: X-From-Dave: yes MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1054060894-903468965=:156" Sender: new-httpd-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --8323328-1054060894-903468965=:156 Content-Type: TEXT/PLAIN; charset=US-ASCII I've included with this a small patch to mod_include to allow macros to be created and executed via 'define' and 'macro' directives. This is something I've been looking around for for a long time and never found adequate support for, so eventually came down to the if-you-want-something-done-do-it-yourself philosophy. This is a preliminary version that I'm posting mostly because I'd like to hear comments first on whether or not this is a good idea at all, and then on the code. This is the literally the first thing I've ever written for apache, and I've learned everything I know since about this time yesterday, so there are probably better ways to do some things, with internal apache functions. So, while the code is good and stable IMHO, there are probably people who can improve it. The one thing I feel is missing from this patch is the ability to embed shtml inside the macro, but, as I mentioned, I'm very new to apache coding, and the few ways I can think of to accomplish this wouldn't be very good. Anyway, macros are created and stored in normal variables in a way *very* similar to the normal 'set' directive, except variables aren't parsed. When called later with the 'macro' directive, given arguments are parsed into ircii-like variables ($1, $1-, $2, $2-, etc), and any variables in the string are parsed at that time. Again, I consider myself a good coder, but am too new at apache to think this will go through without being fixed, so please post comments privately and/or on this list. -- David Goeke david@flame.org --8323328-1054060894-903468965=:156 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="apache-macro.diff" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="apache-macro.diff" KioqIC9ob21lL2RhdmlkL21vZF9pbmNsdWRlLW9sZC5jCVR1ZSBBdWcgMTgg MTI6MzA6MzUgMTk5OA0KLS0tIC4vbW9kX2luY2x1ZGUuYwlUdWUgQXVnIDE4 IDEyOjMzOjE2IDE5OTgNCioqKioqKioqKioqKioqKg0KKioqIDEwMDAsMTAw NSAqKioqDQotLS0gMTAwMCwxMTMzIC0tLS0NCiAgICAgIH0NCiAgfQ0KICAN CisgLyoNCisgICogZGVmaW5lLi4gYmFzaWNhbGx5IGNyZWF0ZSBhIHZhcmlh YmxlLCBidXQgZG9uJ3QgcGFyc2UgYW55IGluY2x1ZGVkDQorICAqICAgdmFy aWFibGVzIGZpcnN0LCBhcyBhIG5vcm1hbCBzZXQgd291bGQuDQorICAqLw0K KyBzdGF0aWMgaW50IGhhbmRsZV9kZWZpbmUoRklMRSAqaW4sIHJlcXVlc3Rf cmVjICpyLCBjb25zdCBjaGFyICplcnJvcikNCisgew0KKyAgICAgY2hhciB0 YWdbTUFYX1NUUklOR19MRU5dOw0KKyAgICAgY2hhciAqdGFnX3ZhbDsNCisg ICAgIGNoYXIgKm5hbWUgPSBOVUxMOw0KKyANCisgICAgIHdoaWxlICgxKSB7 DQorIAlpZiAoISh0YWdfdmFsID0gZ2V0X3RhZyhyLT5wb29sLCBpbiwgdGFn LCBzaXplb2YodGFnKSwgMSkpKSB7DQorIAkgICAgcmV0dXJuIDE7DQorIAl9 DQorIA0KKyAJaWYgKCFzdHJjbXAodGFnLCAibWFjcm8iKSkgew0KKyAJICAg IG5hbWUgPSB0YWdfdmFsOw0KKyAJfQ0KKyAJZWxzZSBpZiAoIXN0cmNtcCh0 YWcsICJvdXRwdXQiKSkgew0KKyAJICAgIGlmIChuYW1lID09IChjaGFyICop IE5VTEwpIHsNCisgCQlhcF9sb2dfcmVycm9yKEFQTE9HX01BUkssIEFQTE9H X05PRVJSTk8gfCBBUExPR19FUlIsIHIsDQorIAkJCSAgICAgICJtYWNybyBu YW1lIG11c3QgcHJlY2VkZSBvdXRwdXQgaW4gZGVmaW5lIGRpcmVjdGl2ZSBp biAlcyIsDQorIAkJCSAgICAgIHItPmZpbGVuYW1lKTsNCisgDQorIAkJYXBf cnB1dHMoZXJyb3IsIHIpOw0KKyAJCXJldHVybiAtMTsNCisgCSAgICB9DQor IA0KKyAJICAgIGFwX3RhYmxlX3NldG4oci0+c3VicHJvY2Vzc19lbnYsIG5h bWUsIGFwX3BzdHJkdXAoci0+cG9vbCwgdGFnX3ZhbCkpOw0KKyAJfQ0KKyAJ ZWxzZSBpZiAoIXN0cmNtcCh0YWcsICJkb25lIikpIHsNCisgCSAgICByZXR1 cm4gMDsNCisgCX0NCisgCWVsc2Ugew0KKyAJICAgIGFwX2xvZ19yZXJyb3Io QVBMT0dfTUFSSywgQVBMT0dfTk9FUlJOTyB8IEFQTE9HX0VSUiwgciwNCisg CQkJICAiSW52YWxpZCB0YWcgZm9yIGRlZmluZSBkaXJlY3RpdmUgaW4gJXMi LA0KKyAJCQkgIHItPmZpbGVuYW1lKTsNCisgDQorIAkgICAgYXBfcnB1dHMo ZXJyb3IsIHIpOw0KKyAJICAgIHJldHVybiAtMTsNCisgCX0NCisgICAgIH0N CisgfQ0KKyANCisgLyoNCisgICogbWFjcm8uLiBwYXJzZSB0aGUgbWFjcm8g ZGVmaW5lZCBlYXJsaWVyLCBjcmVhdGluZyB2YXJpYWJsZXMgZm9yIHRoZQ0K KyAgKiAgIGdpdmVuIGFyZ3VtZW50cyBmaXJzdC4NCisgICovDQorIHN0YXRp YyBpbnQgaGFuZGxlX21hY3JvKEZJTEUgKmluLCByZXF1ZXN0X3JlYyAqciwg Y29uc3QgY2hhciAqZXJyb3IpDQorIHsNCisgICAgIGNoYXIgdGFnW01BWF9T VFJJTkdfTEVOXTsNCisgICAgIGNoYXIgKnRhZ192YWw7DQorICAgICBjaGFy ICpuYW1lID0gTlVMTDsNCisgICAgIGNoYXIgcGFyc2VkX3N0cmluZ1tNQVhf U1RSSU5HX0xFTl07DQorICAgICBjaGFyICpkdXA7DQorICAgICBjaGFyICpz Ow0KKyAgICAgY2hhciAqc3RhcnQ7DQorICAgICBpbnQgaTsNCisgDQorICAg ICB3aGlsZSAoMSkgew0KKyAJaWYgKCEodGFnX3ZhbCA9IGdldF90YWcoci0+ cG9vbCwgaW4sIHRhZywgc2l6ZW9mKHRhZyksIDEpKSkgew0KKyAJICAgIHJl dHVybiAxOw0KKyAJfQ0KKyANCisgCWlmICghc3RyY21wKHRhZywgIm5hbWUi KSkgew0KKyAJICAgIG5hbWUgPSB0YWdfdmFsOw0KKyAJfQ0KKyAJZWxzZSBp ZiAoIXN0cmNtcCh0YWcsICJhcmdzIikpIHsNCisgCSAgICBjb25zdCBjaGFy ICp2YWw7DQorIA0KKyAJICAgIGlmIChuYW1lID09IChjaGFyICopIE5VTEwp IHsNCisgCQlhcF9sb2dfcmVycm9yKEFQTE9HX01BUkssIEFQTE9HX05PRVJS Tk8gfCBBUExPR19FUlIsIHIsDQorIAkJICAgICAgICAgICAgICAibWFjcm8g bmFtZSBtdXN0IHByZWNlZGUgYXJncyBpbiBtYWNybyBkaXJlY3RpdmUgaW4g JXMiLA0KKyAJCQkgICAgICByLT5maWxlbmFtZSk7DQorIA0KKyAJCWFwX3Jw dXRzKGVycm9yLCByKTsNCisgCQlyZXR1cm4gLTE7DQorIAkgICAgfQ0KKyAN CisgCSAgICB2YWwgPSBhcF90YWJsZV9nZXQoci0+c3VicHJvY2Vzc19lbnYs IG5hbWUpOw0KKyAJICAgIGlmICh2YWwgPT0gKGNoYXIgKikgTlVMTCkgew0K KyAJCWFwX2xvZ19yZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfTk9FUlJOTyB8 IEFQTE9HX0VSUiwgciwNCisgCQkJICAgICAgImNhbGxlZCBtYWNybyB3YXMg bm90IGRlZmluZWQgaW4gJXMiLA0KKyAJCQkgICAgICByLT5maWxlbmFtZSk7 DQorIA0KKyAJCWFwX3JwdXRzKGVycm9yLCByKTsNCisgCQlyZXR1cm4gLTE7 DQorIAkgICAgfQ0KKyANCisgCSAgICAvKg0KKyAJICAgICAqIGJyZWFrIHVw IHRoZSBhcmd1bWVudHMgaW50byAkMSwgJDEtLCAkMiwgJDItLCBldGMNCisg CSAgICAgKiB0aGlzIG1pZ2h0IGJlIGFibGUgdG8gYmUgZG9uZSBiZXR0ZXIs IG9yIG1vcmUgbWVtb3J5DQorIAkgICAgICogZWZmaWNpZW50bHkuLg0KKyAJ ICAgICAqLw0KKyAJICAgIGR1cCA9IGFwX3BzdHJkdXAoci0+cG9vbCwgdGFn X3ZhbCk7DQorIAkgICAgZm9yIChpID0gMSwgcyA9IHN0YXJ0ID0gZHVwOyBp IDw9IDk5OyBzKyspIHsNCisgCQlpZiAoKnMgPT0gJyAnIHx8ICpzID09IChj aGFyKSAwKSB7DQorIAkJICAgIGFwX3RhYmxlX3NldG4oci0+c3VicHJvY2Vz c19lbnYsIGFwX3BzcHJpbnRmKHItPnBvb2wsICIlZC0iLCBpKSwgYXBfcHN0 cmR1cChyLT5wb29sLCBzdGFydCkpOw0KKyAJCSAgICBpZiAoKnMgPT0gKGNo YXIpIDApIHsNCisgCQkJYXBfdGFibGVfc2V0bihyLT5zdWJwcm9jZXNzX2Vu diwgYXBfcHNwcmludGYoci0+cG9vbCwgIiVkIiwgaSksIGFwX3BzdHJkdXAo ci0+cG9vbCwgc3RhcnQpKTsNCisgCQkJYnJlYWs7DQorIAkJICAgIH0NCisg CQkgICAgKnMgPSAwOw0KKyAJCSAgICBhcF90YWJsZV9zZXRuKHItPnN1YnBy b2Nlc3NfZW52LCBhcF9wc3ByaW50ZihyLT5wb29sLCAiJWQiLCBpKSwgYXBf cHN0cmR1cChyLT5wb29sLCBzdGFydCkpOw0KKyAJCSAgICBzdGFydCA9IHMg KyAxOw0KKyAJCSAgICBpKys7DQorIAkJfQ0KKyAJICAgIH0NCisgCSAgICBh cF90YWJsZV9zZXRuKHItPnN1YnByb2Nlc3NfZW52LCAiYXJnY291bnQiLCBh cF9wc3ByaW50ZihyLT5wb29sLCAiJWQiLCBpKSk7DQorIAkgICAgcGFyc2Vf c3RyaW5nKHIsIHZhbCwgcGFyc2VkX3N0cmluZywgc2l6ZW9mKHBhcnNlZF9z dHJpbmcpLCAwKTsNCisgDQorIAkgICAgYXBfcnB1dHMocGFyc2VkX3N0cmlu Zywgcik7DQorIAl9DQorIAllbHNlIGlmICghc3RyY21wKHRhZywgImRvbmUi KSkgew0KKyAJICAgIHJldHVybiAwOw0KKyAJfQ0KKyAJZWxzZSB7DQorIAkg ICAgYXBfbG9nX3JlcnJvcihBUExPR19NQVJLLCBBUExPR19OT0VSUk5PIHwg QVBMT0dfRVJSLCByLA0KKyAJCQkgICJJbnZhbGlkIHRhZyBmb3IgbWFjcm8g ZGlyZWN0aXZlIGluICVzIiwNCisgCQkJICByLT5maWxlbmFtZSk7DQorIA0K KyAJICAgIGFwX3JwdXRzKGVycm9yLCByKTsNCisgCSAgICByZXR1cm4gLTE7 DQorIAl9DQorICAgICB9DQorIH0NCisgDQogIA0KICBzdGF0aWMgaW50IGZp bmRfZmlsZShyZXF1ZXN0X3JlYyAqciwgY29uc3QgY2hhciAqZGlyZWN0aXZl LCBjb25zdCBjaGFyICp0YWcsDQogICAgICAgICAgICAgICAgICAgICAgIGNo YXIgKnRhZ192YWwsIHN0cnVjdCBzdGF0ICpmaW5mbywgY29uc3QgY2hhciAq ZXJyb3IpDQoqKioqKioqKioqKioqKioNCioqKiAyMjEyLDIyMTcgKioqKg0K LS0tIDIzNDAsMjM1MSAtLS0tDQogICAgICAgICAgICAgICAgICByZXQgPSBo YW5kbGVfcGVybChmLCByLCBlcnJvcik7DQogICAgICAgICAgICAgIH0NCiAg I2VuZGlmDQorIAkgICAgZWxzZSBpZiAoIXN0cmNtcChkaXJlY3RpdmUsICJk ZWZpbmUiKSkgew0KKyAJCXJldCA9IGhhbmRsZV9kZWZpbmUoZiwgciwgZXJy b3IpOw0KKyAJICAgIH0NCisgCSAgICBlbHNlIGlmICghc3RyY21wKGRpcmVj dGl2ZSwgIm1hY3JvIikpIHsNCisgCQlyZXQgPSBoYW5kbGVfbWFjcm8oZiwg ciwgZXJyb3IpOw0KKyAJICAgIH0NCiAgICAgICAgICAgICAgZWxzZSB7DQog ICAgICAgICAgICAgICAgICBhcF9sb2dfcmVycm9yKEFQTE9HX01BUkssIEFQ TE9HX05PRVJSTk98QVBMT0dfRVJSLCByLA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImh0dHBkOiB1bmtub3duIGRpcmVjdGl2ZSBcIiVzXCIg Ig0K --8323328-1054060894-903468965=:156--