diff -ruN apache_mod_bonjour-9/Makefile leopard_mod_bonjour_patch/Makefile --- apache_mod_bonjour-9/Makefile 2006-03-14 12:40:28.000000000 -0500 +++ leopard_mod_bonjour_patch/Makefile 2008-12-01 12:09:26.000000000 -0500 @@ -24,12 +24,13 @@ OTHER_SRC = HEADERS = APXS2=/usr/sbin/apxs -APXS1=/usr/sbin/apxs-1.3 +#APXS1=/usr/sbin/apxs-1.3 SRCFILES = Makefile $(MODULE_SRC) $(MODULE_SRC2) $(OTHER_SRC) $(HEADERS) -INSTALLDIR1 := $(shell $(APXS1) -q LIBEXECDIR) +#INSTALLDIR1 := $(shell $(APXS1) -q LIBEXECDIR) INSTALLDIR2 := $(shell $(APXS2) -q LIBEXECDIR) export MACOSX_DEPLOYMENT_TARGET=10.4 +RC_CFLAGS=-arch ppc -arch ppc64 -arch i386 -arch x86_64 MORE_FLAGS = -DUSE_CHKUSRNAMPASSWD=1 MORE_FLAGS += -Wc,"$(RC_CFLAGS) -Wall -W -g" MORE_FLAGS += -Wl,"$(RC_CFLAGS) -framework DirectoryService -framework SystemConfiguration -framework CoreFoundation" @@ -39,7 +40,7 @@ include $(MAKEFILEDIR)/commands-$(OS).make all build $(MODULE): $(MODULE_SRC) $(OTHER_SRC) - $(APXS1) -c $(MORE_FLAGS) -o $(MODULE) $(MODULE_SRC) $(OTHER_SRC) +# $(APXS1) -c $(MORE_FLAGS) -o $(MODULE) $(MODULE_SRC) $(OTHER_SRC) $(APXS2) -c $(MORE_FLAGS) -o $(MODULE) $(MODULE_SRC2) $(OTHER_SRC) installsrc: @@ -52,12 +53,12 @@ @echo "Installing header files..." install: $(MODULE) - @echo "Installing Apache 1.3 module..." - $(MKDIRS) $(SYMROOT)$(INSTALLDIR1) - $(CP) $(MODULE) $(SYMROOT)$(INSTALLDIR1) - $(CHMOD) 755 $(SYMROOT)$(INSTALLDIR1)/$(MODULE) - $(MKDIRS) $(DSTROOT)$(INSTALLDIR1) - $(STRIP) -x $(SYMROOT)$(INSTALLDIR1)/$(MODULE) -o $(DSTROOT)$(INSTALLDIR1)/$(MODULE) +# @echo "Installing Apache 1.3 module..." +# $(MKDIRS) $(SYMROOT)$(INSTALLDIR1) +# $(CP) $(MODULE) $(SYMROOT)$(INSTALLDIR1) +# $(CHMOD) 755 $(SYMROOT)$(INSTALLDIR1)/$(MODULE) +# $(MKDIRS) $(DSTROOT)$(INSTALLDIR1) +# $(STRIP) -x $(SYMROOT)$(INSTALLDIR1)/$(MODULE) -o $(DSTROOT)$(INSTALLDIR1)/$(MODULE) @echo "Installing Apache 2.2 module..." $(MKDIRS) $(SYMROOT)$(INSTALLDIR2) $(CP) .libs/$(MODULE) $(SYMROOT)$(INSTALLDIR2) diff -ruN apache_mod_bonjour-9/mod_bonjour2.c leopard_mod_bonjour_patch/mod_bonjour2.c --- apache_mod_bonjour-9/mod_bonjour2.c 2007-09-18 19:10:42.000000000 -0400 +++ leopard_mod_bonjour_patch/mod_bonjour2.c 2008-12-01 21:57:35.000000000 -0500 @@ -105,16 +105,22 @@ server_rec* serverData; } registrationRec; +typedef struct resourceRec { + char name[REGNAME_MAX+1]; + char text[TXT_MAX+1]; + uint16_t port; +} resourceRec; + typedef struct module_cfg_rec { apr_pool_t *pPool; char* sig; char* regName; char* regNameFormat; - char* regText; uint16_t port; apr_array_header_t *registrationRecPtrArray; Boolean regUserSiteCmd; Boolean regResourceCmd; + apr_array_header_t *resourceRecPtrArray; Boolean regDefaultSiteCmd; } module_cfg_rec; // Revise to use array or hashes for mult-valued config items like regUserSite. See how mod_mime does it. @@ -1174,9 +1180,16 @@ /* To do: maintain array of resources */ module_cfg->regResourceCmd = TRUE; - module_cfg->regName = apr_pstrdup( cmd->pool, inName ); - module_cfg->regText = apr_pstrdup( cmd->pool, inPath ); - module_cfg->port = port; + + resourceRec **newHandle; + resourceRec *new = apr_palloc( module_cfg->pPool, sizeof(resourceRec) ); + + strncpy( new->name, inName, sizeof(new->name) ); + strncpy( new->text, inPath, sizeof(new->text) ); + new->port = port; + + newHandle = (resourceRec **)apr_array_push( module_cfg->resourceRecPtrArray ); + *newHandle = new; return NULL; } @@ -1255,8 +1268,16 @@ registerUser( module_cfg->regName, module_cfg->regNameFormat, &module_cfg->port, &fake_cmd ); } - if (module_cfg->regResourceCmd) - registerService( module_cfg->regName, &module_cfg->port, module_cfg->regText, serverData ); + if (module_cfg->regResourceCmd) { + int i; + resourceRec** resourceRecPtrs = NULL; + resourceRecPtrs = (resourceRec**)module_cfg->resourceRecPtrArray->elts; + + for (i = 0; i < module_cfg->resourceRecPtrArray->nelts; i++) { + if (!resourceRecPtrs[i]) continue; + registerService( resourceRecPtrs[i]->name, &resourceRecPtrs[i]->port, resourceRecPtrs[i]->text, serverData ); + } + } if (module_cfg->regDefaultSiteCmd) registerService( "", &module_cfg->port, "", serverData ); @@ -1304,6 +1325,7 @@ module_cfg->registrationRecPtrArray = apr_array_make( pPool, 0, sizeof(registrationRec*) ); module_cfg->regUserSiteCmd = FALSE; module_cfg->regResourceCmd = FALSE; + module_cfg->resourceRecPtrArray = apr_array_make( pPool, 0, sizeof(resourceRec*) ); module_cfg->regDefaultSiteCmd = FALSE; apr_pool_userdata_set(module_cfg, BONJOUR_KEY, apr_pool_cleanup_null, pPool);