diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
commit | 4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch) | |
tree | ba5f07bf3f9d22d82e54a462313f5d244036c768 /www-misc/mergelog |
reinit the tree, so we can have metadata
Diffstat (limited to 'www-misc/mergelog')
-rw-r--r-- | www-misc/mergelog/Manifest | 7 | ||||
-rw-r--r-- | www-misc/mergelog/files/mergelog-4.5-asneeded.patch | 32 | ||||
-rw-r--r-- | www-misc/mergelog/files/mergelog-4.5-splitlog.patch | 384 | ||||
-rw-r--r-- | www-misc/mergelog/mergelog-4.5-r2.ebuild | 25 | ||||
-rw-r--r-- | www-misc/mergelog/metadata.xml | 11 |
5 files changed, 459 insertions, 0 deletions
diff --git a/www-misc/mergelog/Manifest b/www-misc/mergelog/Manifest new file mode 100644 index 000000000000..fa164ab97415 --- /dev/null +++ b/www-misc/mergelog/Manifest @@ -0,0 +1,7 @@ +AUX mergelog-4.5-asneeded.patch 1106 SHA256 eb7b0df76642cfa1c93dcabaff48388c7051b517aa6e48137af7f2876c491db2 SHA512 88c6e44645b41d84e67e4973dede40e550ea64b8d98490eed4c55b8240e3cecbedcf6697b5b73264e5358f3c4eea11cf2534f9588c0bf638d288678e60f8f5fa WHIRLPOOL 32c8f50d069fb05de575d6d9f86c3628ee23f0684d15798c5d536300fa407f9db64470475ac277b32b50739dc77b14d63b16843480a904a48e5b396a72183bba +AUX mergelog-4.5-splitlog.patch 13678 SHA256 904df097cb884fe497440dbd9a967d933490861552e45bc62afa0feabe0664f5 SHA512 1d3b104e0ea27e41227cf903196a1cdbd4f362a85f9aabe95ea2a648dcc3db5378dc0a64c06b406237c88db91ac8cd63b73bce32de3a80bd44b14f5cf24de803 WHIRLPOOL a7f4840a6a0ad419cc8cb1d91b1507398205f56b1c2e5b4c22bde4331026db5b4eed8414e29dda17e3a59bc0181c5404a17b649b4d8626cdd8e01f49b45e8c67 +DIST mergelog-4.5.tar.gz 39407 SHA256 fd97c5b9ae88fbbf57d3be8d81c479e0df081ed9c4a0ada48b1ab8248a82676d SHA512 f2259cb8981871c1f9d7cadc5414997789aa13eed0e18701673ffbddedc74954e137e282c1357cafaf515e18b39e256f890ec31568a305feefa1089a9347991f WHIRLPOOL 2c4382a3787c47ae5375492850fdb7cefff225537d4331fed2f97bdec76df6f324afae4888c341923709e9ea2b89199df6376ab5d738de974892dddaa722be2a +EBUILD mergelog-4.5-r2.ebuild 553 SHA256 974d5dd6192db1c1792e28b5e880c3b02d93188abbce2a79fb13bb75b0f7a153 SHA512 c88404e2cb413c57f6802756c31d4b53d4073df9e68735b9bd78004f00e1991cdb283648f8e570db48c6c23fec613d3bb52c342fc39f31b7d4b5f018d385c595 WHIRLPOOL e6f9eee2b8330866f8bdb4369d0020f3c0c6b1ccb889dda731c76eeae92b784594081034ad820942dd647d9444d26dd9607008556d171fe329159b760d4744a8 +MISC ChangeLog 2601 SHA256 574d76de89d2f154f5459bb3c1fae45f71cfe5afa86412f1a1f8eca9a237d6e4 SHA512 3ef4a10cdf2a1a1460332543dc1a14047e1b82519969a9081bc2fd7a9a64fe968927fd78586a5bccc20e3c2f215d45b0c10003c54817e159a8c80e9b36b97394 WHIRLPOOL db21c7bfe3be3acaa95e051d5f1dd787bd3be75a81f7db96d3c9557b766e8647da0cb057837b9f6c318967b6d538355381e1e5275934c7554974e997ff0e5650 +MISC ChangeLog-2015 3047 SHA256 a98fda3528f547f7614e855e58764a8271910ae5fe372a6bf3996ad1d5255ba0 SHA512 69b2f1e08b3637493e343eaf46021f760aef7f77a3a4abcb11869cd40e5c03bb355fc0e2bc7a8deeba48f0674aca14ba3f3e96d281c8fccc07eec8d1bbb54cd6 WHIRLPOOL d27b33d91651db412bc28db02e7add8b06aa931c03bfcd20d2bdd0db442c17357e639d97616dcea2d2369e43017f167937d58649caf3a3de5a50fd7a7a1f7ed4 +MISC metadata.xml 588 SHA256 085e6bfba30e2b608b11003985f05e348dedf95cde60778d0fc589e401dc23d9 SHA512 8301f5e4da25f389e6d3c26bad59c5170c6f971f56b79cd62786cb6fba287e9b3d865f648c04ae4ab22a40fb2815ca69ad36afd917b92d0bab97cd75cbfa41ca WHIRLPOOL 4972ddaaccd71d0efad6b0937fd7512b5ee9f106e620ce941b3d43e10b269feef1dcfb7d100a37dc8c74bada9e90addb497e0c908fe4719d42d22a907e6992eb diff --git a/www-misc/mergelog/files/mergelog-4.5-asneeded.patch b/www-misc/mergelog/files/mergelog-4.5-asneeded.patch new file mode 100644 index 000000000000..77573cc60f9e --- /dev/null +++ b/www-misc/mergelog/files/mergelog-4.5-asneeded.patch @@ -0,0 +1,32 @@ +Index: mergelog-4.5/configure.in +=================================================================== +--- mergelog-4.5.orig/configure.in ++++ mergelog-4.5/configure.in +@@ -10,6 +10,7 @@ AC_PROG_INSTALL() + + dnl Checks for programs. + AC_PROG_CC ++AM_PROG_CC_C_O + + dnl Checks for libraries. + dnl Replace `main' with a function in -lz: +Index: mergelog-4.5/src/Makefile.am +=================================================================== +--- mergelog-4.5.orig/src/Makefile.am ++++ mergelog-4.5/src/Makefile.am +@@ -1,7 +1,10 @@ + bin_PROGRAMS=mergelog zmergelog + +-mergelog: mergelog.c +- $(COMPILE) $(LIBS) -DVERSION=\"$(VERSION)\" -Wall mergelog.c -o $@ +- +-zmergelog: mergelog.c +- $(COMPILE) $(LIBS) -DVERSION=\"$(VERSION)\" -Wall -DUSE_ZLIB mergelog.c -o $@ ++# This is a bit of a hack, but it preserves the original design of the ++# upstream Makefile.am in assuming that $VERSION will be defined in the ++# Makefile that is actually fed to make. ++AM_CPPFLAGS=-DVERSION=\"@VERSION@\" ++AM_CFLAGS=-Wall ++mergelog_SOURCES = mergelog.c ++zmergelog_SOURCES = mergelog.c ++zmergelog_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_ZLIB diff --git a/www-misc/mergelog/files/mergelog-4.5-splitlog.patch b/www-misc/mergelog/files/mergelog-4.5-splitlog.patch new file mode 100644 index 000000000000..ddc0348543be --- /dev/null +++ b/www-misc/mergelog/files/mergelog-4.5-splitlog.patch @@ -0,0 +1,384 @@ +Index: mergelog-4.5/configure.in +=================================================================== +--- mergelog-4.5.orig/configure.in ++++ mergelog-4.5/configure.in +@@ -2,7 +2,7 @@ dnl Process this file with autoconf to p + AC_INIT(src/mergelog.c) + + PACKAGE=mergelog +-VERSION=4.5 ++VERSION=4.5-split + AM_INIT_AUTOMAKE($PACKAGE,$VERSION,nosubst) + + AC_ARG_PROGRAM +Index: mergelog-4.5/man/mergelog.1 +=================================================================== +--- mergelog-4.5.orig/man/mergelog.1 ++++ mergelog-4.5/man/mergelog.1 +@@ -1,8 +1,9 @@ +-.TH MERGELOG 1 "22 Jan 2001" ++.TH MERGELOG 1 "20 Jun 2001" + .SH NAME + mergelog \- a fast tool to merge http log files by date + .SH SYNOPSIS + .B mergelog ++.IR [-vh]\ [-o\ outfmt] + .IR logfile1 + .IR logfile2 \ ... + .SH DESCRIPTION +Index: mergelog-4.5/man/zmergelog.1 +=================================================================== +--- mergelog-4.5.orig/man/zmergelog.1 ++++ mergelog-4.5/man/zmergelog.1 +@@ -1,8 +1,9 @@ +-.TH ZMERGELOG 1 "22 Jan 2001" ++.TH ZMERGELOG 1 "20 Jun 2001" + .SH NAME + zmergelog \- a fast tool to merge gzipped http log files by date + .SH SYNOPSIS + .B zmergelog ++.IR [-vh]\ [-o\ outfmt] + .IR logfile1 + .IR logfile2 \ ... + .SH DESCRIPTION +Index: mergelog-4.5/src/mergelog.c +=================================================================== +--- mergelog-4.5.orig/src/mergelog.c ++++ mergelog-4.5/src/mergelog.c +@@ -45,12 +45,16 @@ + #define mygets(a,b,c,d) fast_gzgets(a,b,c,d) + #define myrewind gzrewind + #define myclose gzclose ++#define mywrite(f,b,l) gzwrite((f),(b),(l)) ++#define MYSUFFIX ".gz" + #else + #define myFH FILE + #define myopen fopen + #define mygets(a,b,c,d) fgets(a,b,c) + #define myrewind rewind + #define myclose fclose ++#define mywrite(f,b,l) fwrite((b),1,(l),(f)) ++#define MYSUFFIX + #endif + + +@@ -112,20 +116,141 @@ int main (int argc, char *argv[]) { + char *trans_digits[60]; + char *trans_year[200]; + char months[24]="anebarprayunulugepctovec"; ++ int goc; ++ int goUsage = 0, goVerbose = 0; ++ const char* goOutput = NULL; ++ const char* argv0 = *argv; ++ struct tm gotmFlags; ++ const char* goOutPtr; ++ myFH *outFile = NULL; ++ char outFileName[512]; ++ struct tm outFileTM; ++ char outFileNewName[512]; ++ size_t outBytes; ++ ++ while((goc=getopt(argc,argv,"vho:"))!=-1) { ++ switch(goc) { ++ case 'h': /* -h print usage */ ++ goUsage++; ++ break; ++ case 'v': /* -v verbose */ ++ goVerbose++; ++ break; ++ case 'o': /* -o fmt output specification */ ++ goOutput = optarg; ++ break; ++ default: /* whatever.. but we better print out usage */ ++ goUsage++; ++ break; ++ } ++ } ++ argv = &argv[optind]; ++ argc -= optind; + +- /* +- print usage if necessary +- */ +- if (argc == 1) { +- fprintf(stderr,"usage: %s logfile1 logfile2 ...\nmergelog %s Copyright (C) 2000-2001 Bertrand Demiddelaer\n",argv[0],VERSION); ++ if(argc<1) ++ goUsage++; ++ if(goUsage) { ++ printf( ++ "mergelog " VERSION " Copyright (c) 2000-2001 Bertrand Demiddelaer\n\n" ++ "I have at least %d reason(s) for lending you a helping hand on using the program.\n\n" ++ "Usage: %s [-vh] [-o fmt] logfile1 logfile2 ..\n\n" ++ " -h Print this message\n" ++ " -v Increase verbosity\n" ++ " -o Give template for output file name to write log to\n" ++ " instead of standard output in strftime(3) form.\n" ++ " ( eg. -o %%Y-%%m-%%d-access.log" MYSUFFIX ")\n", ++ goUsage,argv0); + exit(1); + } + ++ /* Analyze output format if given. It's better than trying to ++ * regenerate file name and compare it to the filename currently being ++ * written each time we want to dump one line. */ ++ if(goOutput) { ++ memset(&gotmFlags,0,sizeof(gotmFlags)); ++ for(goOutPtr=goOutput;*goOutPtr;goOutPtr++) { ++ if( (*goOutPtr=='%') && goOutPtr[1]) { ++ switch(*(++goOutPtr)) { ++ case 'a': /* abbreviated weekday */ ++ case 'A': /* full weekday */ ++ case 'u': /* day of week number */ ++ case 'w': /* zerobased weekday number */ ++ gotmFlags.tm_wday = 1; ++ break; ++ case 'b': /* abbreviated month */ ++ case 'h': /* %b */ ++ case 'B': /* full month */ ++ case 'm': /* month number */ ++ gotmFlags.tm_mon = 1; ++ break; ++ case 'C': /* century */ ++ case 'y': /* centuryless year */ ++ case 'Y': /* year with a century */ ++ gotmFlags.tm_year = 1; ++ break; ++ case 'd': /* day of month */ ++ case 'e': /* day of month space padded */ ++ gotmFlags.tm_mday = 1; ++ break; ++ case 'D': /* %m/%d/%y americanism */ ++ gotmFlags.tm_mon = gotmFlags.tm_mday = gotmFlags.tm_year = 1; ++ break; ++ case 'G': /* ISO 8601 year repsesentation. depends on week */ ++ case 'g': /* ISO 8601 year repsesentation without century. depends on week */ ++ case 'U': /* sunday-based week number */ ++ case 'V': /* ISO 8601 week number */ ++ case 'W': /* monday-based week number */ ++ case 'x': /* preferred date representation for locale without the time */ ++ gotmFlags.tm_yday = gotmFlags.tm_year = 1; ++ break; ++ case 'H': /* 24h format hour */ ++ case 'I': /* 12h format hour */ ++ case 'k': /* 24h format hour space padded */ ++ case 'l': /* 12h format hour space padded */ ++ case 'p': /* AM/PM indicator */ ++ case 'P': /* am/pm indicator */ ++ gotmFlags.tm_hour = 1; ++ break; ++ case 'j': /* day of year */ ++ gotmFlags.tm_yday = 1; ++ break; ++ case 'M': /* minute */ ++ gotmFlags.tm_min = 1; ++ break; ++ case 'n': /* newline character */ ++ case 't': /* tab character */ ++ case 'z': /* time zone as an offset from GMT */ ++ case 'Z': /* timezone name or abbreviation */ ++ case '%': /* % character */ ++ break; ++ case 'r': /* %I:%M:%S %p time in am/pm notation*/ ++ case 'T': /* %H:%M:%S time in 24h notation */ ++ case 'X': /* preferred time representation for locale without the date */ ++ gotmFlags.tm_hour = gotmFlags.tm_min = gotmFlags.tm_sec = 1; ++ break; ++ case 'R': /* %H:%M time in 24h notation without seconds */ ++ gotmFlags.tm_hour = gotmFlags.tm_min = 1; ++ break; ++ case 'S': /* second */ ++ gotmFlags.tm_sec = 1; ++ break; ++ case 'c': /* preferred date and time representation for locale */ ++ case 'E': /* weird modifier */ ++ case 'O': /* weird modifier */ ++ case 's': /* number of seconds since epoch */ ++ case '+': /* date and time in date(1) format */ ++ memset(&gotmFlags,0xFF,sizeof(gotmFlags)); ++ break; ++ } ++ } ++ } ++ } ++ + #ifdef USE_ZLIB + /* + check if there are enough gunzip buffers + */ +- if(argc>MAX_FILES) { ++ if(argc>=MAX_FILES) { + fputs("too many gzipped log files, aborting\n",stderr); + exit(1); + } +@@ -134,9 +259,9 @@ int main (int argc, char *argv[]) { + /* + open log files + */ +- for (i=1;i<argc;i++) { +- log_file[i-1]=myopen(argv[i],"r"); +- if (log_file[i-1] == NULL) { ++ for (i=0;i<argc;i++) { ++ log_file[i]=myopen(argv[i],"r"); ++ if (log_file[i] == NULL) { + fprintf(stderr,"can't open %s, aborting\n",argv[i]); + exit(1); + } +@@ -174,8 +299,8 @@ int main (int argc, char *argv[]) { + /* + init things for each log file and get the older date to start with + */ +- nb_files=argc-1; +- for (i=0;i<argc-1;i++) { ++ nb_files=argc; ++ for (i=0;i<argc;i++) { + + #ifdef USE_ZLIB + /* +@@ -230,7 +355,7 @@ int main (int argc, char *argv[]) { + */ + log_date=memchr(log_scan[i],'[',SCAN_SIZE); + if (log_date == NULL) { +- fprintf(stderr,"abort due to a problem with %s:\n%s\n",argv[i+1],log_buffer[i]); ++ fprintf(stderr,"abort due to a problem with %s:\n%s\n",argv[i],log_buffer[i]); + exit(1); + } + +@@ -239,7 +364,7 @@ int main (int argc, char *argv[]) { + */ + for (j=0;((j == 12)&&(memcmp(months+2*j,log_date+5,2) != 0));j++); + if (j == 12) { +- fprintf(stderr,"abort due to a problem with %s:\n%s\n",argv[i+1],log_buffer[i]); ++ fprintf(stderr,"abort due to a problem with %s:\n%s\n",argv[i],log_buffer[i]); + exit(1); + } + memcpy(log_month[i],trans_digits[j],2); +@@ -255,7 +380,7 @@ int main (int argc, char *argv[]) { + extract the date of this first line + */ + if (sscanf(log_date+1,"%d/%3c/%d:%d:%d:%d",&day,month,&year,&hour,&minut,&second) < 6) { +- fprintf(stderr,"abort due to a problem with %s:\n%s\n",argv[i+1],log_buffer[i]); ++ fprintf(stderr,"abort due to a problem with %s:\n%s\n",argv[i],log_buffer[i]); + exit(1); + } + +@@ -270,7 +395,7 @@ int main (int argc, char *argv[]) { + date->tm_isdst=-1; + for (j=0;((j<12)&&(memcmp(months+2*j,month+1,2) != 0));j++); + if (j == 12) { +- fprintf(stderr,"abort due to a problem with %s:\n%s\n",argv[i+1],log_buffer[i]); ++ fprintf(stderr,"abort due to a problem with %s:\n%s\n",argv[i],log_buffer[i]); + exit(1); + } + date->tm_mon=j; +@@ -303,6 +428,8 @@ int main (int argc, char *argv[]) { + exit if we have only empty files + */ + if (nb_files == 0) { ++ if(outFile) ++ myclose(outFile); + exit(0); + } + +@@ -323,7 +450,7 @@ int main (int argc, char *argv[]) { + /* + start to compute since this date + */ +- nb_files_orig=argc-1; ++ nb_files_orig=argc; + for(;;) { + + /* +@@ -377,7 +504,55 @@ int main (int argc, char *argv[]) { + write the log line + faster than a puts and we are sure to find a '\0' in log_buffer[i] + */ +- write(1,log_buffer[i],(size_t)((char *)memchr(log_buffer[i],0,BUFFER_SIZE)-log_buffer[i])); ++ if(goOutput) { ++ /* Check whether any of the date/time components concerned ++ * have changes or if we have no output file opened. It ++ * doesn't make much sense to do all the comparinsons in case ++ * we have no output file opened, but it makes even less sense ++ * to check for file handle each time we evaluate date. */ ++ if( ++# define TMCOMPARE(tmpart) ( gotmFlags.tm_##tmpart && (outFileTM.tm_##tmpart!=date->tm_##tmpart) ) ++ TMCOMPARE(sec) || TMCOMPARE(min) || TMCOMPARE(hour) ++ || TMCOMPARE(mday) || TMCOMPARE(mon) || TMCOMPARE(year) ++ || TMCOMPARE(wday) || TMCOMPARE(yday) ++ || !outFile ++# undef TMCOMPARE ++ ) { ++ if(!strftime(outFileNewName,sizeof(outFileNewName)-1,goOutput,date)) { ++ fprintf(stderr,"abort due to a failed attempt to generate output file name\n"); ++ if(outFile) ++ myclose(outFile); ++ exit(1); ++ } ++ if( (!outFile) || strcmp(outFileName,outFileNewName) ) { ++ /* okay, we're about to change output file or start ++ * writing first file */ ++ if(outFile) { ++ myclose(outFile); ++ } ++ if(goVerbose) ++ fprintf(stderr, "Writing to \"%s\"..\n",outFileNewName); ++ outFile = myopen(outFileNewName,"a"); ++ if(!outFile) { ++ fprintf(stderr, "abort due to a failed attempt to open/create output file %s: %m\n",outFileNewName); ++ exit(1); ++ } ++ memmove(outFileName,outFileNewName,sizeof(outFileName)); ++ memmove(&outFileTM,date,sizeof(outFileTM)); ++ } ++ } ++ /* %Y-%m-%d_%H-%M-%S-access.log */ ++ outBytes = (size_t)((char *)memchr(log_buffer[i],0,BUFFER_SIZE)-log_buffer[i]); ++ if( mywrite(outFile,log_buffer[i],outBytes) != outBytes) { ++ fprintf(stderr,"abort due to a failed write operation on output file %s: %m\n",outFileName); ++ if(outFile) ++ myclose(outFile); ++ exit(1); ++ } ++ }else{ ++ /* do it the way we would do without */ ++ write(1,log_buffer[i],(size_t)((char *)memchr(log_buffer[i],0,BUFFER_SIZE)-log_buffer[i])); ++ } + + /* + is it an end of file ? +@@ -388,7 +563,9 @@ int main (int argc, char *argv[]) { + close all log files and exit if all end of files are reached + */ + if (--nb_files == 0) { +- for (j=0;j<argc-1;j++) { ++ if(outFile) ++ myclose(outFile); ++ for (j=0;j<argc;j++) { + myclose(log_file[j]); + } + exit(0); +@@ -425,7 +602,7 @@ int main (int argc, char *argv[]) { + } else { + for (j=0;((j<12)&&(memcmp(months+2*j,log_date+5,2) != 0));j++); + if (j == 12) { +- fprintf(stderr,"problem with %s:\n%s\ncontinuing...\n",argv[i+1],log_buffer[i]); ++ fprintf(stderr,"problem with %s:\n%s\ncontinuing...\n",argv[i],log_buffer[i]); + } else { + memcpy(log_month[i],trans_digits[j],2); + memcpy(log_month[i]+2,months+2*j,2); +@@ -439,7 +616,7 @@ int main (int argc, char *argv[]) { + } + } + } else { +- fprintf(stderr,"problem with %s:\n%s\ncontinuing...\n",argv[i+1],log_buffer[i]); ++ fprintf(stderr,"problem with %s:\n%s\ncontinuing...\n",argv[i],log_buffer[i]); + } + } + } +@@ -451,3 +628,7 @@ int main (int argc, char *argv[]) { + */ + exit(1); + } ++/* vim:set textwidth=72: */ ++/* vim:set cindent smartindent: */ ++/* vim:set formatoptions-=t formatoptions+=croql: */ ++/* vim:set expandtab shiftwidth=2: */ diff --git a/www-misc/mergelog/mergelog-4.5-r2.ebuild b/www-misc/mergelog/mergelog-4.5-r2.ebuild new file mode 100644 index 000000000000..936acbb1f570 --- /dev/null +++ b/www-misc/mergelog/mergelog-4.5-r2.ebuild @@ -0,0 +1,25 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=4 + +AUTOTOOLS_AUTORECONF=1 +inherit autotools-utils eutils + +DESCRIPTION="A utility to merge apache logs in chronological order" +SRC_URI="mirror://sourceforge/mergelog/${P}.tar.gz" +HOMEPAGE="http://mergelog.sourceforge.net" + +IUSE="" +SLOT="0" +LICENSE="GPL-2" +KEYWORDS="amd64 ppc x86" + +RDEPEND="sys-libs/zlib" +DEPEND="${DEPEND}" + +DOCS=( AUTHORS ChangeLog README) +PATCHES=( + "${FILESDIR}"/${P}-splitlog.patch + "${FILESDIR}"/${P}-asneeded.patch +) diff --git a/www-misc/mergelog/metadata.xml b/www-misc/mergelog/metadata.xml new file mode 100644 index 000000000000..ae81af2b9617 --- /dev/null +++ b/www-misc/mergelog/metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <!-- maintainer-needed --> + <longdescription> +The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards. +</longdescription> + <upstream> + <remote-id type="sourceforge">mergelog</remote-id> + </upstream> +</pkgmetadata> |