From e0589343490208384c44ca2c207e213abc935a40 Mon Sep 17 00:00:00 2001 From: Brad House Date: Thu, 4 Jul 2024 07:08:43 -0400 Subject: [PATCH] Migrate to Jekyll (#4) --- .../{deploy_pages.yml => deploy-pages.yml} | 47 ++-- .gitignore | 13 +- .htaccess | 1 - 404.html | 24 ++ Gemfile | 43 ++++ Makefile | 131 ++-------- README.md | 18 -- _config.yml | 44 ++++ _includes/footer.html | 10 + _includes/header.html | 30 +++ manpage.css => _sass/manpages.scss | 7 +- adv_20160929.md | 3 + adv_20160929.t | 15 -- adv_20170620.md | 4 + adv_20170620.t | 15 -- adv_20210810.md | 4 + adv_20210810.t | 15 -- .../historic => archive}/ares-1.1.1.tar.gz | Bin .../historic => archive}/c-ares-1.0.0.tar.gz | Bin .../historic => archive}/c-ares-1.1.0.tar.gz | Bin .../historic => archive}/c-ares-1.10.0.tar.gz | Bin .../c-ares-1.10.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.11.0.tar.gz | Bin .../c-ares-1.11.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.12.0.tar.gz | Bin .../c-ares-1.12.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.13.0.tar.gz | Bin .../c-ares-1.13.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.2.0.tar.gz | Bin .../historic => archive}/c-ares-1.2.1.tar.gz | Bin .../c-ares-1.2.1.tar.gz.asc | 0 .../historic => archive}/c-ares-1.3.0.tar.gz | Bin .../c-ares-1.3.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.3.1.tar.gz | Bin .../c-ares-1.3.1.tar.gz.asc | 0 .../historic => archive}/c-ares-1.3.2.tar.gz | Bin .../c-ares-1.3.2.tar.gz.asc | 0 .../historic => archive}/c-ares-1.4.0.tar.gz | Bin .../c-ares-1.4.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.5.0.tar.gz | Bin .../c-ares-1.5.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.5.1.tar.gz | Bin .../c-ares-1.5.1.tar.gz.asc | 0 .../historic => archive}/c-ares-1.5.2.tar.gz | Bin .../c-ares-1.5.2.tar.gz.asc | 0 .../historic => archive}/c-ares-1.5.3.tar.gz | Bin .../c-ares-1.5.3.tar.gz.asc | 0 .../historic => archive}/c-ares-1.6.0.tar.gz | Bin .../c-ares-1.6.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.7.0.tar.gz | Bin .../c-ares-1.7.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.7.1.tar.gz | Bin .../c-ares-1.7.1.tar.gz.asc | 0 .../historic => archive}/c-ares-1.7.2.tar.gz | Bin .../c-ares-1.7.2.tar.gz.asc | 0 .../historic => archive}/c-ares-1.7.3.tar.gz | Bin .../c-ares-1.7.3.tar.gz.asc | 0 .../historic => archive}/c-ares-1.7.4.tar.gz | Bin .../c-ares-1.7.4.tar.gz.asc | 0 .../historic => archive}/c-ares-1.7.5.tar.gz | Bin .../c-ares-1.7.5.tar.gz.asc | 0 .../historic => archive}/c-ares-1.8.0.tar.gz | Bin .../c-ares-1.8.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.9.0.tar.gz | Bin .../c-ares-1.9.0.tar.gz.asc | 0 .../historic => archive}/c-ares-1.9.1.tar.gz | Bin .../c-ares-1.9.1.tar.gz.asc | 0 ares_func.t | 15 -- cares-big.png => art/cares-big.png | Bin old-cares-big.png => art/old-cares-big.png | Bin old-cares-icon.png => art/old-cares-icon.png | Bin assets/c-ares-logo.svg | 85 +++++++ assets/main.scss | 5 + body.t | 1 - cares.css | 83 ------ cares.pm | 22 -- changelog.md | 36 +++ changelog.t | 13 - css.t | 1 - date.pm | 237 ------------------ docmenu.t | 221 ---------------- docs.md | 17 ++ docs.t | 24 -- doctype.t | 2 - download.md | 194 ++++++++++++++ download/Makefile | 17 -- download/index.t | 193 -------------- footer.t | 2 - github.md | 4 + index.md | 91 +++++++ index.t | 120 --------- indexbot.t | 4 - indextop.t | 12 - license.t | 13 - mail.cgi | 102 -------- mailarchive.md | 4 + mailbot.t | 5 - mailhead.t | 8 - mailmenu.t | 1 - mailtop.t | 15 -- manpage.t | 1 - menu.t | 9 - old.t | 17 -- otherlibs.md | 40 +++ otherlibs.t | 69 ----- security.t | 12 - setup.t | 24 -- vulns.md | 61 +++++ vulns.t | 79 ------ why.md | 45 ++++ why.t | 69 ----- 111 files changed, 801 insertions(+), 1596 deletions(-) rename .github/workflows/{deploy_pages.yml => deploy-pages.yml} (62%) delete mode 100644 .htaccess create mode 100644 404.html create mode 100644 Gemfile delete mode 100644 README.md create mode 100644 _config.yml create mode 100644 _includes/footer.html create mode 100644 _includes/header.html rename manpage.css => _sass/manpages.scss (84%) delete mode 100644 adv_20160929.t delete mode 100644 adv_20170620.t delete mode 100644 adv_20210810.t rename {download/historic => archive}/ares-1.1.1.tar.gz (100%) rename {download/historic => archive}/c-ares-1.0.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.1.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.10.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.10.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.11.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.11.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.12.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.12.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.13.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.13.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.2.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.2.1.tar.gz (100%) rename {download/historic => archive}/c-ares-1.2.1.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.3.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.3.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.3.1.tar.gz (100%) rename {download/historic => archive}/c-ares-1.3.1.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.3.2.tar.gz (100%) rename {download/historic => archive}/c-ares-1.3.2.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.4.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.4.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.5.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.5.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.5.1.tar.gz (100%) rename {download/historic => archive}/c-ares-1.5.1.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.5.2.tar.gz (100%) rename {download/historic => archive}/c-ares-1.5.2.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.5.3.tar.gz (100%) rename {download/historic => archive}/c-ares-1.5.3.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.6.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.6.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.7.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.7.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.7.1.tar.gz (100%) rename {download/historic => archive}/c-ares-1.7.1.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.7.2.tar.gz (100%) rename {download/historic => archive}/c-ares-1.7.2.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.7.3.tar.gz (100%) rename {download/historic => archive}/c-ares-1.7.3.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.7.4.tar.gz (100%) rename {download/historic => archive}/c-ares-1.7.4.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.7.5.tar.gz (100%) rename {download/historic => archive}/c-ares-1.7.5.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.8.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.8.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.9.0.tar.gz (100%) rename {download/historic => archive}/c-ares-1.9.0.tar.gz.asc (100%) rename {download/historic => archive}/c-ares-1.9.1.tar.gz (100%) rename {download/historic => archive}/c-ares-1.9.1.tar.gz.asc (100%) delete mode 100644 ares_func.t rename cares-big.png => art/cares-big.png (100%) rename old-cares-big.png => art/old-cares-big.png (100%) rename old-cares-icon.png => art/old-cares-icon.png (100%) create mode 100644 assets/c-ares-logo.svg create mode 100644 assets/main.scss delete mode 100644 body.t delete mode 100644 cares.css delete mode 100644 cares.pm delete mode 100644 changelog.t delete mode 100644 css.t delete mode 100644 date.pm delete mode 100644 docmenu.t create mode 100644 docs.md delete mode 100644 docs.t delete mode 100644 doctype.t create mode 100644 download.md delete mode 100644 download/Makefile delete mode 100644 download/index.t delete mode 100644 footer.t create mode 100644 github.md create mode 100644 index.md delete mode 100644 index.t delete mode 100644 indexbot.t delete mode 100644 indextop.t delete mode 100644 license.t delete mode 100755 mail.cgi create mode 100644 mailarchive.md delete mode 100644 mailbot.t delete mode 100644 mailhead.t delete mode 100644 mailmenu.t delete mode 100644 mailtop.t delete mode 100644 manpage.t delete mode 100644 menu.t delete mode 100644 old.t create mode 100644 otherlibs.md delete mode 100644 otherlibs.t delete mode 100644 security.t delete mode 100644 setup.t create mode 100644 vulns.md delete mode 100644 vulns.t create mode 100644 why.md delete mode 100644 why.t diff --git a/.github/workflows/deploy_pages.yml b/.github/workflows/deploy-pages.yml similarity index 62% rename from .github/workflows/deploy_pages.yml rename to .github/workflows/deploy-pages.yml index a134ff8..90a0f4c 100644 --- a/.github/workflows/deploy_pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -1,9 +1,7 @@ -name: Deploy Pages +name: Deploy Jekyll with GitHub Pages on: - # Runs on pushes targeting the default branch push: - branches: [ main ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -25,46 +23,34 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - name: Install build tools - run: | - sudo apt-get install -y markdown make + - name: Checkout + uses: actions/checkout@v4 + - name: Checkout c-ares docs + uses: actions/checkout@v4 + with: + repository: c-ares/c-ares + path: c-ares.git - name: Checkout roffit uses: actions/checkout@v4 with: repository: "bagder/roffit" - path: roffit + path: roffit.git - name: Build and Install roffit run: | - cd roffit + cd roffit.git sudo make install - - name: Checkout fcpp - uses: actions/checkout@v4 - with: - repository: "bagder/fcpp" - path: fcpp - - name: Build and Install fcpp - run: | - cd fcpp - sudo make install - - name: Checkout source needed to build docs - uses: actions/checkout@v4 - with: - repository: "c-ares/c-ares" - path: ares-cvs - name: Setup Pages - id: pages uses: actions/configure-pages@v5 - - name: Build pages + - name: Build external pages run: | make - - name: Clean up files we don't want deployed - run: | - rm -rf ares-cvs fcpp roffit .deps *.gen *.raw *.t *.md Makefile download/Makefile download/*.t + - name: Build with Jekyll + uses: actions/jekyll-build-pages@v1 + with: + source: ./ + destination: ./_site - name: Upload artifact uses: actions/upload-pages-artifact@v3 - with: - path: ./ # Deployment job deploy: @@ -73,6 +59,7 @@ jobs: url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build + if: github.repository == 'c-ares/c-ares.github.io' && github.refs == 'refs/heads/main' steps: - name: Deploy to GitHub Pages id: deployment diff --git a/.gitignore b/.gitignore index 194c770..c965f8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,10 @@ -*.html -*.raw -*.gen -ares-cvs +Gemfile.lock +_site +.sass-cache .deps +c-ares.git +roffit.git +docs +security.md +license.md + diff --git a/.htaccess b/.htaccess deleted file mode 100644 index e32b009..0000000 --- a/.htaccess +++ /dev/null @@ -1 +0,0 @@ -RedirectMatch "^/.git" https://c-ares.org/download/ diff --git a/404.html b/404.html new file mode 100644 index 0000000..c472b4e --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..82c3f97 --- /dev/null +++ b/Gemfile @@ -0,0 +1,43 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +#gem "jekyll", "~> 3.9.5" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +gem "github-pages", "~> 231",group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" +end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", ">= 1", "< 3" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0", :install_if => Gem.win_platform? + +# kramdown v2 ships without the gfm parser by default. If you're using +# kramdown v1, comment out this line. +gem "kramdown-parser-gfm" + +# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem +# do not have a Java counterpart. +gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] + +gem "webrick" diff --git a/Makefile b/Makefile index bf26541..84e414c 100644 --- a/Makefile +++ b/Makefile @@ -1,127 +1,50 @@ .DEFAULT_GOAL := all ROOT=. DEPDIR=.deps - -MAINPARTS= $(ROOT)/doctype.t body.t footer.t $(ROOT)/setup.t \ - menu.t Makefile docmenu.t css.t -OPTS=-WWW -Uunix -H -C -V -I$(ROOT) -LL -FCPP=fcpp -ACTION=$(FCPP) $(OPTS) $< $@ -SRCDIR=ares-cvs +SRCDIR=c-ares.git DOCSDIR=$(SRCDIR)/docs -MAN2HTML= roffit --bare --mandir=$(DOCSDIR) --hrefdir=. -MARKDOWN=markdown +DOCSDEST=docs +MAN2HTML=roffit --bare --mandir=$(DOCSDIR) --hrefdir=/$(DOCSDEST) MANPAGES_SRC=$(sort $(shell find $(DOCSDIR) -name "*.3")) -MANPAGES=$(sort $(notdir $(MANPAGES_SRC:.3=.html))) -DEPFILES=$(MANPAGES:%.html=$(DEPDIR)/%.d) +MANPAGES=$(addprefix $(DOCSDEST)/,$(sort $(notdir $(MANPAGES_SRC:.3=.html)))) +MANPAGES_NAMES=$(sort $(notdir $(MANPAGES_SRC))) +DEPFILES=$(MANPAGES_NAMES:%.3=$(DEPDIR)/%.d) + +PAGES=$(MANPAGES) security.md license.md -PAGES = \ - adv_20160929.html \ - adv_20170620.html \ - adv_20210810.html \ - changelog.html \ - docs.html \ - index.html \ - indexbot.html \ - indextop.html \ - license.html \ - mailbot.html \ - mailhead.html \ - mailtop.html \ - old.html \ - otherlibs.html \ - security.html \ - vulns.html \ - why.html \ - $(MANPAGES) +$(DOCSDEST): + mkdir -p $@ -$(DEPDIR): +$(DEPDIR): $(DOCSDEST) mkdir -p $@ $(DEPDIR)/%.d: $(DOCSDIR)/%.3 - sed -n -e 's|^\.so man[0-9]/\(.*\.[0-9]\).*|$*.html: $(DOCSDIR)/\1|p' < $< > $@ + sed -n -e 's|^\.so man[0-9]/\(.*\.[0-9]\).*|/$(DOCSDEST)/$*.html: $(DOCSDIR)/\1|p' < $< > $@ -%.html: $(DOCSDIR)/%.3 $(DEPDIR)/%.d - $(MAN2HTML) < $< >$*.raw - $(FCPP) $(OPTS) -Dfunc=$* -Ddocs_$* -Dfuncinc=\"$*.raw\" ares_func.t $@ +$(DOCSDEST)/%.html: $(DOCSDIR)/%.3 $(DEPDIR)/%.d + $(MAN2HTML) < $< > $(DOCSDEST)/$*.raw + echo "---\nlayout: page\n---" > $(DOCSDEST)/$*.html + cat $(DOCSDEST)/$*.raw >> $(DOCSDEST)/$*.html + rm -f $(DOCSDEST)/$*.raw + +security.md: c-ares.git/SECURITY.md + echo "---\nlayout: page\ntitle: \"\"\n---" > $@ + cat $< >> $@ + +license.md: c-ares.git/LICENSE.md + echo "---\nlayout: page\ntitle: \"\"\nmenu: License\npermalink: /license/\n---" > $@ + cat $< >> $@ $(DEPFILES): $(DEPDIR) + include $(DEPFILES) all: $(PAGES) - make -C download .PHONY: all -index.html: index.t $(MAINPARTS) - $(ACTION) - -changelog.html: changelog.t $(MAINPARTS) changelog.gen - $(ACTION) - -changelog.gen: changelog.md - $(MARKDOWN) < $< > $@ - -vulns.html: vulns.t $(MAINPARTS) - $(ACTION) - -security.html: security.t $(MAINPARTS) security.gen - $(ACTION) - -security.gen: $(SRCDIR)/SECURITY.md - $(MARKDOWN) < $< > $@ - -license.gen: $(SRCDIR)/LICENSE.md - $(MARKDOWN) < $< > $@ - -adv_20160929.html: adv_20160929.t $(MAINPARTS) adv_20160929.gen - $(ACTION) -adv_20160929.gen: adv_20160929.md - $(MARKDOWN) < $< > $@ - -adv_20170620.html: adv_20170620.t $(MAINPARTS) adv_20170620.gen - $(ACTION) -adv_20170620.gen: adv_20170620.md - $(MARKDOWN) < $< > $@ - -adv_20210810.html: adv_20210810.t $(MAINPARTS) adv_20210810.gen - $(ACTION) -adv_20210810.gen: adv_20210810.md - $(MARKDOWN) < $< > $@ - -old.html: old.t $(MAINPARTS) - $(ACTION) - -otherlibs.html: otherlibs.t $(MAINPARTS) - $(ACTION) - -why.html: why.t $(MAINPARTS) - $(ACTION) - -docs.gen: $(MANPAGES) - @echo "$(MANPAGES)" | sed 's/\([a-zA-Z0-9_]*\)\.html/
  • \1<\/a>\n/g' > $@ - -docs.html: docs.t docs.gen $(MAINPARTS) - $(ACTION) - -license.html: license.t $(MAINPARTS) license.gen - $(ACTION) - -mailhead.html: mailhead.t $(MAINPARTS) - $(ACTION) - -mailtop.html: mailtop.t $(MAINPARTS) mailmenu.t - $(ACTION) -mailbot.html: mailbot.t $(MAINPARTS) - $(ACTION) -indextop.html: indextop.t $(MAINPARTS) mailmenu.t - $(ACTION) -indexbot.html: indexbot.t $(MAINPARTS) - $(ACTION) - clean: find . -name "*~" -exec rm {} \; - rm -f *.raw *.html *.gen + rm -rf $(PAGES) $(DOCSDEST)/*.raw rm -rf $(DEPDIR) - make -C download clean diff --git a/README.md b/README.md deleted file mode 100644 index a00cdd8..0000000 --- a/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# www -the contents of the web site - -# Prerequisites to build - - - make - - perl - - [roffit](https://github.com/bagder/roffit) - - [fcpp](https://github.com/bagder/fcpp) - -Create symlink to the source tree: - - $ ln -s [git source tree] ares-cvs - -# build - - $ make - diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..e324e82 --- /dev/null +++ b/_config.yml @@ -0,0 +1,44 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: "c-ares: a modern asynchronous DNS resolver" +description: >- + c-ares is a modern DNS (stub) resolver library, written in C. It provides + interfaces for asynchronous queries while trying to abstract the intricacies + of the underlying DNS protocol. It was originally intended for applications + which need to perform DNS queries without blocking, or need to perform multiple + DNS queries in parallel. +domain: c-ares.org +baseurl: "" # the subpath of your site, e.g. /blog +url: "https://c-ares.org" +github_username: c-ares + +# Build settings +markdown: GFM +theme: minima +plugins: +# - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +exclude: + - Gemfile + - Gemfile.lock + - c-ares.git + - roffit.git + - Makefile + - docs/*.raw + - .deps diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..14f6fdf --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,10 @@ +
    + +
    +
    + {%- include social.html -%} + © 2024 the c-ares project and its contributors +
    +
    + +
    diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..110ff79 --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,30 @@ +
    diff --git a/manpage.css b/_sass/manpages.scss similarity index 84% rename from manpage.css rename to _sass/manpages.scss index 72cc149..178ad66 100644 --- a/manpage.css +++ b/_sass/manpages.scss @@ -1,12 +1,12 @@ -pre.level0, P.level0 { +pre.level0, p.level0 { padding-left: 2em; } -pre.level1, P.level1 { +pre.level1, p.level1 { padding-left: 4em; } -pre.level2, P.level2 { +pre.level2, p.level2 { padding-left: 6em; } @@ -37,3 +37,4 @@ p.roffit { text-align: center; font-size: 80%; } + diff --git a/adv_20160929.md b/adv_20160929.md index fabe3af..a5ff93b 100644 --- a/adv_20160929.md +++ b/adv_20160929.md @@ -1,3 +1,6 @@ +--- +layout: page +--- `ares_create_query` single byte out of buffer write ================================================= diff --git a/adv_20160929.t b/adv_20160929.t deleted file mode 100644 index 6653255..0000000 --- a/adv_20160929.t +++ /dev/null @@ -1,15 +0,0 @@ -#include "doctype.t" - -ares_create_query single byte out of buffer write -#include "css.t" - -#include "body.t" -#include "setup.t" -#include "menu.t" - -TITLE(CVE-2016-5180) -BOXTOP -#include "adv_20160929.gen" -BOXBOT - -#include "footer.t" diff --git a/adv_20170620.md b/adv_20170620.md index c3add51..4a23239 100644 --- a/adv_20170620.md +++ b/adv_20170620.md @@ -1,3 +1,7 @@ +--- +layout: page +--- + c-ares NAPTR parser out of bounds access ======================================== diff --git a/adv_20170620.t b/adv_20170620.t deleted file mode 100644 index ee9c113..0000000 --- a/adv_20170620.t +++ /dev/null @@ -1,15 +0,0 @@ -#include "doctype.t" - -ares_create_query single byte out of buffer write -#include "css.t" - -#include "body.t" -#include "setup.t" -#include "menu.t" - -TITLE(CVE-2017-1000381) -BOXTOP -#include "adv_20170620.gen" -BOXBOT - -#include "footer.t" diff --git a/adv_20210810.md b/adv_20210810.md index 83d71c1..2cc3023 100644 --- a/adv_20210810.md +++ b/adv_20210810.md @@ -1,3 +1,7 @@ +--- +layout: page +--- + Missing input validation on hostnames returned by DNS servers ============================================================= diff --git a/adv_20210810.t b/adv_20210810.t deleted file mode 100644 index c5f9253..0000000 --- a/adv_20210810.t +++ /dev/null @@ -1,15 +0,0 @@ -#include "doctype.t" - -Missing input validation on hostnames returned by DNS servers -#include "css.t" - -#include "body.t" -#include "setup.t" -#include "menu.t" - -TITLE(CVE-2021-3672) -BOXTOP -#include "adv_20210810.gen" -BOXBOT - -#include "footer.t" diff --git a/download/historic/ares-1.1.1.tar.gz b/archive/ares-1.1.1.tar.gz similarity index 100% rename from download/historic/ares-1.1.1.tar.gz rename to archive/ares-1.1.1.tar.gz diff --git a/download/historic/c-ares-1.0.0.tar.gz b/archive/c-ares-1.0.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.0.0.tar.gz rename to archive/c-ares-1.0.0.tar.gz diff --git a/download/historic/c-ares-1.1.0.tar.gz b/archive/c-ares-1.1.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.1.0.tar.gz rename to archive/c-ares-1.1.0.tar.gz diff --git a/download/historic/c-ares-1.10.0.tar.gz b/archive/c-ares-1.10.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.10.0.tar.gz rename to archive/c-ares-1.10.0.tar.gz diff --git a/download/historic/c-ares-1.10.0.tar.gz.asc b/archive/c-ares-1.10.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.10.0.tar.gz.asc rename to archive/c-ares-1.10.0.tar.gz.asc diff --git a/download/historic/c-ares-1.11.0.tar.gz b/archive/c-ares-1.11.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.11.0.tar.gz rename to archive/c-ares-1.11.0.tar.gz diff --git a/download/historic/c-ares-1.11.0.tar.gz.asc b/archive/c-ares-1.11.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.11.0.tar.gz.asc rename to archive/c-ares-1.11.0.tar.gz.asc diff --git a/download/historic/c-ares-1.12.0.tar.gz b/archive/c-ares-1.12.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.12.0.tar.gz rename to archive/c-ares-1.12.0.tar.gz diff --git a/download/historic/c-ares-1.12.0.tar.gz.asc b/archive/c-ares-1.12.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.12.0.tar.gz.asc rename to archive/c-ares-1.12.0.tar.gz.asc diff --git a/download/historic/c-ares-1.13.0.tar.gz b/archive/c-ares-1.13.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.13.0.tar.gz rename to archive/c-ares-1.13.0.tar.gz diff --git a/download/historic/c-ares-1.13.0.tar.gz.asc b/archive/c-ares-1.13.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.13.0.tar.gz.asc rename to archive/c-ares-1.13.0.tar.gz.asc diff --git a/download/historic/c-ares-1.2.0.tar.gz b/archive/c-ares-1.2.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.2.0.tar.gz rename to archive/c-ares-1.2.0.tar.gz diff --git a/download/historic/c-ares-1.2.1.tar.gz b/archive/c-ares-1.2.1.tar.gz similarity index 100% rename from download/historic/c-ares-1.2.1.tar.gz rename to archive/c-ares-1.2.1.tar.gz diff --git a/download/historic/c-ares-1.2.1.tar.gz.asc b/archive/c-ares-1.2.1.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.2.1.tar.gz.asc rename to archive/c-ares-1.2.1.tar.gz.asc diff --git a/download/historic/c-ares-1.3.0.tar.gz b/archive/c-ares-1.3.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.3.0.tar.gz rename to archive/c-ares-1.3.0.tar.gz diff --git a/download/historic/c-ares-1.3.0.tar.gz.asc b/archive/c-ares-1.3.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.3.0.tar.gz.asc rename to archive/c-ares-1.3.0.tar.gz.asc diff --git a/download/historic/c-ares-1.3.1.tar.gz b/archive/c-ares-1.3.1.tar.gz similarity index 100% rename from download/historic/c-ares-1.3.1.tar.gz rename to archive/c-ares-1.3.1.tar.gz diff --git a/download/historic/c-ares-1.3.1.tar.gz.asc b/archive/c-ares-1.3.1.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.3.1.tar.gz.asc rename to archive/c-ares-1.3.1.tar.gz.asc diff --git a/download/historic/c-ares-1.3.2.tar.gz b/archive/c-ares-1.3.2.tar.gz similarity index 100% rename from download/historic/c-ares-1.3.2.tar.gz rename to archive/c-ares-1.3.2.tar.gz diff --git a/download/historic/c-ares-1.3.2.tar.gz.asc b/archive/c-ares-1.3.2.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.3.2.tar.gz.asc rename to archive/c-ares-1.3.2.tar.gz.asc diff --git a/download/historic/c-ares-1.4.0.tar.gz b/archive/c-ares-1.4.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.4.0.tar.gz rename to archive/c-ares-1.4.0.tar.gz diff --git a/download/historic/c-ares-1.4.0.tar.gz.asc b/archive/c-ares-1.4.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.4.0.tar.gz.asc rename to archive/c-ares-1.4.0.tar.gz.asc diff --git a/download/historic/c-ares-1.5.0.tar.gz b/archive/c-ares-1.5.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.5.0.tar.gz rename to archive/c-ares-1.5.0.tar.gz diff --git a/download/historic/c-ares-1.5.0.tar.gz.asc b/archive/c-ares-1.5.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.5.0.tar.gz.asc rename to archive/c-ares-1.5.0.tar.gz.asc diff --git a/download/historic/c-ares-1.5.1.tar.gz b/archive/c-ares-1.5.1.tar.gz similarity index 100% rename from download/historic/c-ares-1.5.1.tar.gz rename to archive/c-ares-1.5.1.tar.gz diff --git a/download/historic/c-ares-1.5.1.tar.gz.asc b/archive/c-ares-1.5.1.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.5.1.tar.gz.asc rename to archive/c-ares-1.5.1.tar.gz.asc diff --git a/download/historic/c-ares-1.5.2.tar.gz b/archive/c-ares-1.5.2.tar.gz similarity index 100% rename from download/historic/c-ares-1.5.2.tar.gz rename to archive/c-ares-1.5.2.tar.gz diff --git a/download/historic/c-ares-1.5.2.tar.gz.asc b/archive/c-ares-1.5.2.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.5.2.tar.gz.asc rename to archive/c-ares-1.5.2.tar.gz.asc diff --git a/download/historic/c-ares-1.5.3.tar.gz b/archive/c-ares-1.5.3.tar.gz similarity index 100% rename from download/historic/c-ares-1.5.3.tar.gz rename to archive/c-ares-1.5.3.tar.gz diff --git a/download/historic/c-ares-1.5.3.tar.gz.asc b/archive/c-ares-1.5.3.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.5.3.tar.gz.asc rename to archive/c-ares-1.5.3.tar.gz.asc diff --git a/download/historic/c-ares-1.6.0.tar.gz b/archive/c-ares-1.6.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.6.0.tar.gz rename to archive/c-ares-1.6.0.tar.gz diff --git a/download/historic/c-ares-1.6.0.tar.gz.asc b/archive/c-ares-1.6.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.6.0.tar.gz.asc rename to archive/c-ares-1.6.0.tar.gz.asc diff --git a/download/historic/c-ares-1.7.0.tar.gz b/archive/c-ares-1.7.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.7.0.tar.gz rename to archive/c-ares-1.7.0.tar.gz diff --git a/download/historic/c-ares-1.7.0.tar.gz.asc b/archive/c-ares-1.7.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.7.0.tar.gz.asc rename to archive/c-ares-1.7.0.tar.gz.asc diff --git a/download/historic/c-ares-1.7.1.tar.gz b/archive/c-ares-1.7.1.tar.gz similarity index 100% rename from download/historic/c-ares-1.7.1.tar.gz rename to archive/c-ares-1.7.1.tar.gz diff --git a/download/historic/c-ares-1.7.1.tar.gz.asc b/archive/c-ares-1.7.1.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.7.1.tar.gz.asc rename to archive/c-ares-1.7.1.tar.gz.asc diff --git a/download/historic/c-ares-1.7.2.tar.gz b/archive/c-ares-1.7.2.tar.gz similarity index 100% rename from download/historic/c-ares-1.7.2.tar.gz rename to archive/c-ares-1.7.2.tar.gz diff --git a/download/historic/c-ares-1.7.2.tar.gz.asc b/archive/c-ares-1.7.2.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.7.2.tar.gz.asc rename to archive/c-ares-1.7.2.tar.gz.asc diff --git a/download/historic/c-ares-1.7.3.tar.gz b/archive/c-ares-1.7.3.tar.gz similarity index 100% rename from download/historic/c-ares-1.7.3.tar.gz rename to archive/c-ares-1.7.3.tar.gz diff --git a/download/historic/c-ares-1.7.3.tar.gz.asc b/archive/c-ares-1.7.3.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.7.3.tar.gz.asc rename to archive/c-ares-1.7.3.tar.gz.asc diff --git a/download/historic/c-ares-1.7.4.tar.gz b/archive/c-ares-1.7.4.tar.gz similarity index 100% rename from download/historic/c-ares-1.7.4.tar.gz rename to archive/c-ares-1.7.4.tar.gz diff --git a/download/historic/c-ares-1.7.4.tar.gz.asc b/archive/c-ares-1.7.4.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.7.4.tar.gz.asc rename to archive/c-ares-1.7.4.tar.gz.asc diff --git a/download/historic/c-ares-1.7.5.tar.gz b/archive/c-ares-1.7.5.tar.gz similarity index 100% rename from download/historic/c-ares-1.7.5.tar.gz rename to archive/c-ares-1.7.5.tar.gz diff --git a/download/historic/c-ares-1.7.5.tar.gz.asc b/archive/c-ares-1.7.5.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.7.5.tar.gz.asc rename to archive/c-ares-1.7.5.tar.gz.asc diff --git a/download/historic/c-ares-1.8.0.tar.gz b/archive/c-ares-1.8.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.8.0.tar.gz rename to archive/c-ares-1.8.0.tar.gz diff --git a/download/historic/c-ares-1.8.0.tar.gz.asc b/archive/c-ares-1.8.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.8.0.tar.gz.asc rename to archive/c-ares-1.8.0.tar.gz.asc diff --git a/download/historic/c-ares-1.9.0.tar.gz b/archive/c-ares-1.9.0.tar.gz similarity index 100% rename from download/historic/c-ares-1.9.0.tar.gz rename to archive/c-ares-1.9.0.tar.gz diff --git a/download/historic/c-ares-1.9.0.tar.gz.asc b/archive/c-ares-1.9.0.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.9.0.tar.gz.asc rename to archive/c-ares-1.9.0.tar.gz.asc diff --git a/download/historic/c-ares-1.9.1.tar.gz b/archive/c-ares-1.9.1.tar.gz similarity index 100% rename from download/historic/c-ares-1.9.1.tar.gz rename to archive/c-ares-1.9.1.tar.gz diff --git a/download/historic/c-ares-1.9.1.tar.gz.asc b/archive/c-ares-1.9.1.tar.gz.asc similarity index 100% rename from download/historic/c-ares-1.9.1.tar.gz.asc rename to archive/c-ares-1.9.1.tar.gz.asc diff --git a/ares_func.t b/ares_func.t deleted file mode 100644 index 455c570..0000000 --- a/ares_func.t +++ /dev/null @@ -1,15 +0,0 @@ -#include "doctype.t" - -func() -#include "css.t" -#include "manpage.t" - -#include "body.t" -#include "setup.t" -#include "menu.t" -TITLE(func) -BOXTOP -#include "docmenu.t" -#include funcinc -BOXBOT -#include "footer.t" diff --git a/cares-big.png b/art/cares-big.png similarity index 100% rename from cares-big.png rename to art/cares-big.png diff --git a/old-cares-big.png b/art/old-cares-big.png similarity index 100% rename from old-cares-big.png rename to art/old-cares-big.png diff --git a/old-cares-icon.png b/art/old-cares-icon.png similarity index 100% rename from old-cares-icon.png rename to art/old-cares-icon.png diff --git a/assets/c-ares-logo.svg b/assets/c-ares-logo.svg new file mode 100644 index 0000000..96c5c59 --- /dev/null +++ b/assets/c-ares-logo.svg @@ -0,0 +1,85 @@ + + +Created with Fabric.js 5.3.0 + + + + + diff --git a/assets/main.scss b/assets/main.scss new file mode 100644 index 0000000..ac82407 --- /dev/null +++ b/assets/main.scss @@ -0,0 +1,5 @@ +--- +--- +@import "minima"; +@import "manpages"; + diff --git a/body.t b/body.t deleted file mode 100644 index 335eec5..0000000 --- a/body.t +++ /dev/null @@ -1 +0,0 @@ - diff --git a/cares.css b/cares.css deleted file mode 100644 index 024fdda..0000000 --- a/cares.css +++ /dev/null @@ -1,83 +0,0 @@ -BODY { - background-color: #ffffff; - max-width: 50em; - margin-left: auto; - margin-right: auto; -} - -P { - font-family: sans-serif; - color: black; - background-color: white; - padding-left: 5px; -} - -.title { - padding-bottom: 10px; - font-family: arial, helvetica, ariel, sans-serif; - color: black; - font-size: 200%; - font-weight: bold; -} - -.subtitle { - border-bottom: solid 1px black; - font-family: arial, helvetica, ariel, sans-serif; - font-size: 140%; -} - -.box { -} - -/* the left-side menu */ -.menu { - border-color: black; - border-width: 1px; - border-style: solid; - color: #000000; - background-color: #ffffff; - text-align: left; - padding: 2px 2px 2px 2px; -} - -.menu a { - text-decoration: none; - font-family: sans-serif; -} - -.funcmenu { - border: outset 1px #000000; - float: right; - background: #ffffff; - padding: 4px 4px 4px 4px; -} - -.funcmenu a { - text-decoration: none; - font-family: sans-serif; - color: #003000; - padding: 0px 0px 0px 0px; -} - -.funcmenu div { - padding: 1px 1px 1px 1px; -} - -.itemselect { - background-color: #e0e0ff; -} - -/* a non-selected item in the main menu, with the mouse hovering */ -.funcmenu a:hover { - text-decoration: none; - background-color: #e0e0ff; - color: #000000; - white-space: nowrap; - padding: 0px 0px 0px 0px; - font-family: sans-serif; -} - -tr.odd { - color: #000000; - background-color: #e0e0ff; -} diff --git a/cares.pm b/cares.pm deleted file mode 100644 index fa0bcdc..0000000 --- a/cares.pm +++ /dev/null @@ -1,22 +0,0 @@ - -sub header { - my ($t) = @_; - print "Content-Type: text/html\n\n"; - open (HEAD, "mailhead.html"); - while() { - $_ =~ s:^c-ares<\/title>:<title>$t<\/title>:; - $_ =~ s:^<h1>_PAGE_<\/h1>:<h1>$t<\/h1>:; - print $_; - } - close(HEAD); -} - -sub footer { - open (FOOT, "footer.t"); - while(<FOOT>) { - print $_; - } - close(FOOT); -} - -1; diff --git a/changelog.md b/changelog.md index 461a3d0..7de9e1d 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,39 @@ +--- +layout: page +title: Changelog +--- +<a name="1_32_0"></a> +## c-ares version 1.32.0 - July 4 2024 + +This is a feature and bugfix release. + +Features: + +* Add support for DNS 0x20 to help prevent cache poisoning attacks, enabled + by specifying `ARES_FLAG_DNS0x20`. Disabled by default. [PR #800](https://github.com/c-ares/c-ares/pull/800) +* Rework query timeout logic to automatically adjust timeouts based on network + conditions. The timeout specified now is only used as a hint until there + is enough history to calculate a more valid timeout. [PR #794](https://github.com/c-ares/c-ares/pull/794) + +Changes: + +* DNS RR TXT strings should not be automatically concatenated as there are use + cases outside of RFC 7208. In order to maintain ABI compliance, the ability + to retrieve TXT strings concatenated is retained as well as a new API to + retrieve the individual strings. This restores behavior from c-ares 1.20.0. + [PR #801](https://github.com/c-ares/c-ares/pull/801) +* Clean up header inclusion logic to make hacking on code easier. [PR #797](https://github.com/c-ares/c-ares/pull/797) +* GCC/Clang: Enable even more strict warnings to catch more coding flaws. [253bdee](https://github.com/c-ares/c-ares/commit/253bdee) +* MSVC: Enable `/W4` warning level. [PR #792](https://github.com/c-ares/c-ares/pull/792) + +Bugfixes: + +* Tests: Fix thread race condition in test cases for EventThread. [PR #803](https://github.com/c-ares/c-ares/pull/803) +* Windows: Fix building with UNICODE. [PR #802](https://github.com/c-ares/c-ares/pull/802) +* Thread Saftey: `ares_timeout()` was missing lock. [74a64e4](https://github.com/c-ares/c-ares/commit/74a64e4) +* Fix building with DJGPP (32bit protected mode DOS). [PR #789](https://github.com/c-ares/c-ares/pull/789) + + <a name="1_31_0"></a> ## c-ares version 1.31.0 - June 18 2024 diff --git a/changelog.t b/changelog.t deleted file mode 100644 index a6c1b16..0000000 --- a/changelog.t +++ /dev/null @@ -1,13 +0,0 @@ -#include "doctype.t" -<head> -<title>c-ares changelog -#include "css.t" - -#include "body.t" -#include "setup.t" -#include "menu.t" -TITLE(c-ares changes over time) -BOXTOP -#include "changelog.gen" -BOXBOT -#include "footer.t" diff --git a/css.t b/css.t deleted file mode 100644 index bbdc78a..0000000 --- a/css.t +++ /dev/null @@ -1 +0,0 @@ - diff --git a/date.pm b/date.pm deleted file mode 100644 index 562bcef..0000000 --- a/date.pm +++ /dev/null @@ -1,237 +0,0 @@ -sub MonthLen { - my ($month, $year) = @_; # month index (1-12) - # year to check (for leap) - - while($month>12) { - $month-=12; - } - if($month<1) { - $month=1; - } - - @mlens = (31, - 28, # checked especially - 31, - 30, - 31, - 30, - 31, - 31, - 30, - 31, - 30, - 31); - - if( $month eq 2) { - # February mean leap year troubles... - local $len = 28; - if( (int($year/4)*4 eq $year) && - (!(int($year/100)*100 eq $year) || - int($year/400)*400 eq $year)) { - $len = 29; - } - return $len; - } - else { - return $mlens[$month-1]; - } -} - -# Return the month name of the index given -sub MonthName { - my $num=$_[0]; - - my @mname = ('januari', - 'februari', - 'mars', - 'april', - 'maj', - 'juni', - 'juli', - 'augusti', - 'september', - 'oktober', - 'november', - 'december' ); - - while( $num > 12 ) { - $num -= 12; - } - if ($num < 1) { - $num = 1; - } - return $mname[$num-1]; - -} - -# Return the month name of the index given, in english -sub MonthNameEng { - my $num=$_[0]; - - my @mname = ('January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December' ); - - while( $num > 12 ) { - $num -= 12; - } - if ($num < 1) { - $num = 1; - } - return $mname[$num-1]; - -} - - -# Return the day name of the index given -sub DayName { - my $num=$_[0]; - - my @dname = ('m�ndag', - 'tisdag', - 'onsdag', - 'torsdag', - 'fredag', - 'l�rdag', - 's�ndag'); - - while( $num > 7 ) { - $num -= 7; - } - if ($num < 1) { - $num = 1; - } - return $dname[$num-1]; - -} - -# Return the english day name of the index given -sub DayNameEng { - my $num=$_[0]; - - my @dname = ('Monday', - 'Tuesday', - 'Wednesday', - 'Thursday', - 'Friday', - 'Saturday', - 'Sunday'); - - while( $num > 7 ) { - $num -= 7; - } - if ($num < 1) { - $num = 1; - } - return $dname[$num-1]; - -} - - -# Display a full range of all months as listview options -# The argument number sets the one to be selected -sub MonthOptions { - my $select = $_[0]; - my $i; - my $result=""; - for($i=1; $i<=12; $i++) { - my $name = MonthName($i); - if( $i == $select) { - $result=$result."