;;;; -*- mode:emacs-lisp;coding:utf-8 -*-
;;;;**************************************************************************
;;;;FILE:               nodes.el
;;;;LANGUAGE:           emacs lisp
;;;;SYSTEM:             POSIX
;;;;USER-INTERFACE:     NONE
;;;;DESCRIPTION
;;;;
;;;;    Generates the next/previous menus.
;;;;
;;;;AUTHORS
;;;;    <PJB> Pascal J. Bourguignon <pjb@informatimago.com>
;;;;MODIFICATIONS
;;;;    2012-04-15 <PJB> Added this header.
;;;;BUGS
;;;;LEGAL
;;;;    AGPL3
;;;;
;;;;    Copyright Pascal J. Bourguignon 2012 - 2012
;;;;
;;;;    This program is free software: you can redistribute it and/or modify
;;;;    it under the terms of the GNU Affero General Public License as published by
;;;;    the Free Software Foundation, either version 3 of the License, or
;;;;    (at your option) any later version.
;;;;
;;;;    This program is distributed in the hope that it will be useful,
;;;;    but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;;;    GNU Affero General Public License for more details.
;;;;
;;;;    You should have received a copy of the GNU Affero General Public License
;;;;    along with this program.  If not, see <http://www.gnu.org/licenses/>.
;;;;**************************************************************************


(require 'cl)

;;;-----------------------------------------------------------------------

;;; La variable nodes décrit la hiérarchie des fichiers HTML liés par
;;; le menu.  Dans cette liste, chaque chaîne de caractère donne le
;;; chemin relatif à un fichier HTML, suivit éventuellement d'une
;;; liste contenant les sous-noeuds dans le menu de ce fichier HTML.
;;; La base des chemins relatif est le répertoire dans lequel se
;;; trouve ce fichier.  L'ordre dans lequel les fichiers sont listés
;;; (flattened) indique la séquence précédent/suivant.

;;; ( a ( aa ab ac ) b ( ba  ( baa bab bac ) bb bc) ) donne la structure
;;; de menu suivante (les chiffres indiquant l'ordre précédent/suivant):

;;;   ------------------------------------------------------
;;;         1:a                            5:b
;;;   ----------------     ---------------------------------
;;;   2:aa  3:ab  4:ac            6:ba          10:bb  11:bc
;;;                        -------------------
;;;                        7:baa  8:bab  9:bac

;; node ::= (path node*)
;; path ::= string

(setq nodes
      '("index.html"
        ("develop/lisp/index.html"

         ("develop/lisp/why-biobike.html")
         ("develop/lisp/doc/index.html")

         ("develop/lisp/com/informatimago/clext/pipe-article-en.html")
         ("develop/lisp/com/informatimago/clext/pipe-article-fr.html"))

        ("develop/lisp/l99/index.html")

        ("develop/lisp/com/informatimago/small-cl-pgms/index.html"
          ("develop/lisp/com/informatimago/small-cl-pgms/aim-8/index.html"
           ("develop/lisp/com/informatimago/small-cl-pgms/aim-8/aim-8.html"))
          ("develop/lisp/com/informatimago/small-cl-pgms/m-expression/index.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/wang.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/ibcl/index.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/sedit/index.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/playtomo-stonedge/index.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/rpsls/index.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/sudoku-solver/index.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/basic/index.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/brainfuck/index.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/intersection-r5rs-common-lisp-emacs-lisp/index.html")
          ("develop/lisp/com/informatimago/small-cl-pgms/botihn/botihn-fr.html"))

        ("develop/emacs/index.html")
        ("articles/index.html"
         ("articles/usenet.html"
          ("articles/interleave/index.html")
          ("articles/ffn=-n/index.html")
          ("articles/cl-types/index.html")
          ("articles/life-saver.html")
          ("articles/emacs-colors/index.html")
          ("articles/flpl/index.html")
          ("articles/raspberrypi/index.html"
           ("articles/raspberrypi/ccl-sur-qemu.html"))))
        ("attic.html"
         ("develop/sms/index.html"
          ("develop/aliases_helper/index.html")
          ("develop/pic-merge-diff3/index.html")
          ("linux/rpm-rebuilddb.html")
          ("linux/chrooted-ssh-cvs.html")
          ("linux/emacs-on-user-mode-linux.html")
          ("develop/abalone/index.html")
          ("develop/mtel/index.html")
          ("develop/squeak/index.html")
          ("develop/cirrus/index.html")
          ("develop/gnustep/index.html")
          ("develop/patches/index.html")))))



;;;-----------------------------------------------------------------------



(defvar *web-mirrors*
  '((informatimago.com "http://www.informatimago.com/")
    (free.fr           "http://informatimago.free.fr/i/")))

(defun relative-url (base-path current-path)
  (if (and (< (length base-path) (length current-path))
           (string= base-path (subseq current-path 0 (length base-path)))
           (char-equal ?/ (aref current-path (length base-path))))
      (subseq current-path (1+ (length base-path)))
      current-path))


(defun site-top     (label current language)
  "")

;; (setf current "/home/pjb/public_html/sites/com.informatimago.www/index.html")
;; (setq nodes-dir "/home/pjb/public_html/sites/com.informatimago.www")

(defun site-bottom  (label current language)
  ;; (message "(site-bottom %S %S %S)" label current language)
  (with-output-to-string
   (let ((relative-url (relative-url nodes-dir current)))
     (princ "<hr><code><small>\n | ")
     (dolist (mirror *web-mirrors*)
       (destructuring-bind (name url &rest ignore) mirror
         (princ (format "<a href=\"%s/%s\">%s %s</a>\n | "
                        url relative-url
                        (cond
                          ((string= language "fr") "Miroir sur")
                          ((string= language "en") "Mirror on")
                          ((string= language "es") "Espejo en")
                          (t                       "Mirror on"))
                         name))))
     (princ "</small></code>\n"))))

;; (site-bottom "toto" "index.html" "en")




;;;------------------------------------------------------------------------

;;; language-order  défini   l'ordre  dans  lequel   les  fichiers  sont
;;; recherché pour obtenir les  titres, lorsqu'un fichier de même langue
;;; que le courant n'existe pas.  De plus, elle doit contenir toutes les
;;; langues  possibles, pour  les fichiers  dans nodes  qui ne  sont pas
;;; spécifiés complètement.

(setq language-order '("en" "fr" "es"))



;;;------------------------------------------------------------------------

;;; La variable  mirrors contient  la liste des  site mirroirs  pour les
;;; archives de fichiers. Chaque élément  de la liste contient le nom du
;;; mirroir,  et le préfixe  de l'URL  à utiliser.  (Ce préfixe  doit se
;;; terminer par un '/').

(setq
 mirrors
 '(
   ("France"
    "http://informatimago.free.fr/archives/")

   ;; Seul 5Mo disponibles sur Terra !
   ;;   ("Terra"
   ;;    "http://www.terra.es/personal2/informatimago/archives/")

   ;;    ("France 1 Mb/s"
   ;;     "http://mirror.informatimago.com/archives/")


   ("Germany"
    "ftp://ftp.informatimago.com/pub/free/")

   ))





;;;------------------------------------------------------------------------

;;; La  variable downloads  défini  les listes  de "downloads".   Chaque
;;; élément de cette liste contient  : un symbol utilisé pour référencer
;;; le "download", une alist de descriptions en différentes langues, une
;;; liste de  fichier à  aller chercher sur  les mirroirs, et  une liste
;;; d'url supplémentaires indépendant des mirroirs.

(setq downloads '())

(defmacro defdownload (tag descriptions files additional-urls)
  (setq descriptions
        (mapcar (lambda (desc)
                  (let ((lang (first desc))
                        (label (second desc)))
                    (list lang (if (symbolp label) (eval label) label))))
                descriptions))
  `(push '( ,tag ,descriptions ,files ,additional-urls) downloads))



(defun compress-region (start end)
  (interactive "r")
  (shell-command-on-region start end "gzip|base64" nil t))



(defun uncompress-region (start end)
  (interactive "r")
  (shell-command-on-region start end "base64 -i -d|gzip -d" nil t))



(defun uncompress-string (string)
  (save-excursion
    (set-buffer (get-buffer-create " *DECODE-UNCOMPRESS*"))
    (erase-buffer)
    (insert string)
    (shell-command-on-region (point-min) (point-max)
                             "base64 -i -d|gzip -d" nil t)
    (buffer-string)))


;;;------------------------------------------------------------------------

;;; La  variable downloads  défini  les listes  de "downloads".   Chaque
;;; élément de cette liste contient  : un symbol utilisé pour référencer
;;; le "download", une alist de descriptions en différentes langues, une
;;; liste de  fichier à  aller chercher sur  les mirroirs, et  une liste
;;; d'url supplémentaires indépendant des mirroirs.

(setq downloads '())

(defmacro defdownload (tag descriptions files additional-urls)
  (setq descriptions
        (mapcar (lambda (desc)
                  (let ((lang (first desc))
                        (label (second desc)))
                    (list lang (if (symbolp label) (eval label) label))))
                descriptions))
  `(push '( ,tag ,descriptions ,files ,additional-urls) downloads))



(defun compress-region (start end)
  (interactive "r")
  (shell-command-on-region start end "gzip|base64" nil t))



(defun uncompress-region (start end)
  (interactive "r")
  (shell-command-on-region start end "base64 -i -d|gzip -d" nil t))



(defun uncompress-string (string)
  (save-excursion
    (set-buffer (get-buffer-create " *DECODE-UNCOMPRESS*"))
    (erase-buffer)
    (insert string)
    (shell-command-on-region (point-min) (point-max)
                             "base64 -i -d|gzip -d" nil t)
    (buffer-string)))





;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Common-Lisp

(defdownload
    ;; tag:
    clisp-uffi
    ;; descriptions:
    ((en
      "An UFFI package implementation for CLISP.")
     )
  ;; files: (label, relative-url, byte-size)
  (("uffi.lisp"
    "develop/lisp/uffi.lisp"
    42809)
   )
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil
  ) ;;clisp-uffi


;; NeXTSTEP ;;

(defdownload
    ;; tag:
    Abalone
    ;; descriptions:
    (
;;;(fr
;;; "Abalone est disponible sous license GPL. On peut télécharger
;;;    l'application compilée pour  NeXTSTEP 3.3 (Motorola et Intel),
;;;    ou les sources. blib continent des bibliothèques nécessaires.
;;;    Des modifications aux makefiles et la définition de variables
;;;    d'environnement doivent être faites. Désolé, je n'ai plus
;;;    accès à NeXTSTEP 3.3.")
     (en
      "Abalone is available with the GPL license. You may download
       the NeXTSTEP 3.3 (Motorola and Intel) application or the sources.
       blib contains needed libraries. Some hand tuning of the makefiles
       and environment variables may be needed. I'm sorry, I don't have
       a NeXTSTEP 3.3 environment anymore.")
     )
  ;; files: (label, relative-url, byte-size)
  (("Abalone.1.0b2.NI.b.tar.gz"
    "develop/nextstep/Abalone.1.0b2.NI.b.tar.gz"
    3610955)
   ("Abalone.1.0b2.NI.b.tar.gz.md5sum"
    "develop/nextstep/Abalone.1.0b2.NI.b.tar.gz.md5sum"
    82)
   ("abalone-19970412-GPL.tar.gz"
    "develop/nextstep/abalone-19970412-GPL.tar.gz"
    527962)
   ("abalone-19970412-GPL.tar.gz.md5sum"
    "develop/nextstep/abalone-19970412-GPL.tar.gz.md5sum"
    62)
   ("blib-20030817.tar.gz"
    "develop/nextstep/blib-20030817.tar.gz"
    149835)
   ("blib-20030817.tar.gz.md5sum"
    "develop/nextstep/blib-20030817.tar.gz.md5sum"
    55)
   )
  ;; additional urls: (mirror, label, full-url, byte-size)
  (("Peanuts"
    "Abalone.1.0b2.NI.b.tar.gz"
    "ftp://ftp.peanuts.org/NEXTSTEP/games/board/Abalone.1.0b2.NI.b.tar.gz"
    3610955))
  ) ;;Abalone


(defdownload
    CirrusLogicGD754X
    ;; descriptions:
    ((en
      "The sources (<code>CirrusLogicGD754X_SVGA.0.96.I.s.tar.gz</code>)
       and the compiled driver bundle
       (<code>CirrusLogicGD754X_SVGA.config.0.96.I.b.tar.gz</code>)
        are available."))
  (("CirrusLogicGD754X_SVGA.0.96.I.s.tar.gz"
    "develop/nextstep/CirrusLogicGD754X_SVGA.0.96.I.s.tar.gz"
    28174)
   ("CirrusLogicGD754X_SVGA.0.96.I.s.tar.gz.md5sum"
    "develop/nextstep/CirrusLogicGD754X_SVGA.0.96.I.s.tar.gz.md5sum"
    92)
   ("CirrusLogicGD754X_SVGA.config.0.96.I.b.tar.gz"
    "develop/nextstep/CirrusLogicGD754X_SVGA.config.0.96.I.b.tar.gz"
    36924)
   ("CirrusLogicGD754X_SVGA.config.0.96.I.b.tar.gz.md5sum"
    "develop/nextstep/CirrusLogicGD754X_SVGA.config.0.96.I.b.tar.gz.md5sum"
    99))
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil
  ) ;;CirrusLogicGD754X

(defdownload
    Minitel
    ;; descriptions:
    (
     (en
      "Sorry only a Motorola version is available for now.
       It's hardly an alpha version ; some bugs remain, and its
       <!--<a href=intf/MMdHayes.html>MMdHayes</a>-->
       MMdHayes  object does not work well.
       There is no documentation yet.
       A first release of the sources is available
       (<code>minitel-src-dist-19990531.tar.gz</code>).")
;;; (fr
;;;  "Seule la version pour Motorola est disponible pour l'instant.
;;;     Il s'agit d'une version alpha ; il reste quelques bogues, et l'objet
;;;     <a href=intf/MMdHayes.html>MMdHayes</a> ne fonctionne pas correctement.
;;;     Il n'y a pas encore de documentation.
;;;     Une premi&egrave;re distribution source est disponible
;;;     (<code>minitel-src-dist-19990531.tar.gz</code>).")
     )
  ;; files: (label, relative-url, byte-size)
  (("M1B.app.b.M.tar.gz"
    "develop/nextstep/M1B.app.b.M.tar.gz"
    1386424)
   ("M1B.app.b.M.tar.gz.md5sum"
    "/M1B.app.b.M.tar.gz.md5sum"
    72)
   ("minitel-src-dist-19990531.tar.gz"
    "/minitel-src-dist-19990531.tar.gz"
    382446)
   ("minitel-src-dist-19990531.tar.gz.md5sum"
    "/minitel-src-dist-19990531.tar.gz.md5sum"
    86))
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil
  ) ;;Minitel


(defdownload
    Squeak
    ;; descriptions:
    ((en
      "<ul>
       <li><b><code>squeak-2.0-0.3d109.s.tar.gz</code>
           Sources only</b>:
           You will need to <a href=#c>compile</a> the application on
           NEXTSTEP 3.3.
       <li><b><code>squeak-2.0-0.3d109.NIHS.bs.tar.gz</code>
           Sources with the quad-fat application</b>:
           Contains the source tree, plus the compiled quad-fat Squeak
           application, plus the quad-fat squeak headless executable.
       </ul>")
     )
  ;; files: (label, relative-url, byte-size)
  (
   ("squeak-2.0-0.3d109.README"
    "develop/nextstep/squeak/squeak-2.0-0.3d109.README"
    11186)

   ("squeak-2.0-0.3d109.s.tar.gz"
    "develop/nextstep/squeak/squeak-2.0-0.3d109.s.tar.gz"
    270068)
   ("squeak-2.0-0.3d109.s.tar.gz.md5sum"
    "develop/nextstep/squeak/squeak-2.0-0.3d109.s.tar.gz.md5sum"
    88)

   ("squeak-2.0-0.3d109.NIHS.bs.tar.gz"
    "develop/nextstep/squeak/squeak-2.0-0.3d109.NIHS.bs.tar.gz"
    630024)
   ("squeak-2.0-0.3d109.NIHS.bs.tar.gz.md5sum"
    "develop/nextstep/squeak/squeak-2.0-0.3d109.NIHS.bs.tar.gz.md5sum"
    94)

   ("squeak-2.0-0.1.N.bs.tar.gz"
    "develop/nextstep/squeak/squeak-2.0-0.1.N.bs.tar.gz"
    3779481)
   ("squeak-2.0-0.1.N.bs.tar.gz.md5sum"
    "develop/nextstep/squeak/squeak-2.0-0.1.N.bs.tar.gz.md5sum"
    87)

   ("squeak-2.0-0.2d14.NI.bs.tar.gz"
    "develop/nextstep/squeak/squeak-2.0-0.2d14.NI.bs.tar.gz"
    982880)
   ("squeak-2.0-0.2d14.NI.bs.tar.gz.md5sum"
    "develop/nextstep/squeak/squeak-2.0-0.2d14.NI.bs.tar.gz.md5sum"
    91)

   ("squeak-2.0-0.3d104.NIHS.bs.tar.gz"
    "develop/nextstep/squeak/squeak-2.0-0.3d104.NIHS.bs.tar.gz"
    631381)
   ("squeak-2.0-0.3d104.NIHS.bs.tar.gz.md5sum"
    "develop/nextstep/squeak/squeak-2.0-0.3d104.NIHS.bs.tar.gz.md5sum"
    94)
   ("squeak-2.0-0.3d104.s.tar.gz"
    "develop/nextstep/squeak/squeak-2.0-0.3d104.s.tar.gz"
    271541)
   ("squeak-2.0-0.3d104.s.tar.gz.md5sum"
    "develop/nextstep/squeak/squeak-2.0-0.3d104.s.tar.gz.md5sum"
    88)

   ("squeak-2.0-0.3d91.NIHS.bs.tar.gz"
    "develop/nextstep/squeak/squeak-2.0-0.3d91.NIHS.bs.tar.gz"
    629016)
   ("squeak-2.0-0.3d91.NIHS.bs.tar.gz.md5sum"
    "develop/nextstep/squeak/squeak-2.0-0.3d91.NIHS.bs.tar.gz.md5sum"
    93)
   ("squeak-2.0-0.3d91.README"
    "develop/nextstep/squeak/squeak-2.0-0.3d91.README"
    10042)
   ("squeak-2.0-0.3d91.s.tar.gz"
    "develop/nextstep/squeak/squeak-2.0-0.3d91.s.tar.gz"
    270440)
   ("squeak-2.0-0.3d91.s.tar.gz.md5sum"
    "develop/nextstep/squeak/squeak-2.0-0.3d91.s.tar.gz.md5sum"
    87))
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;Squeak


;;; GNUstep ;;;

(defdownload
    AutoresizingTest
    ;; descriptions:
    ((en
      "This is a small GNUstep program to test the auto-resizing
       feature of some views."))
  ;; files: (label, relative-url, byte-size)
  (("AutoresizingTest-1.0.1.readme"
    "develop/gnustep/AutoresizingTest-1.0.1.readme"
    923)
   ("AutoresizingTest-1.0.1.tar.gz"
    "develop/gnustep/AutoresizingTest-1.0.1.tar.gz"
    16595)
   ("AutoresizingTest-1.0.1.tar.gz.md5sum"
    "develop/gnustep/AutoresizingTest-1.0.1.tar.gz.md5sum"
    82))
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;AutoresizingTest


(defdownload
    Little
    ;; descriptions:
    ((en
      "The <b>Little</b> example application from NeXTSTEP, adapted to
       GNUstep OpenStep"))
  ;; files: (label, relative-url, byte-size)
  (("Little.s.tar.gz"
    "develop/gnustep/Little.s.tar.gz"
    2522)
   ("Little.s.tar.gz.md5sum"
    "develop/gnustep/Little.s.tar.gz.md5sum"
    68)
   )
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;Little

(defdownload
    gls
    ;; descriptions:
    ((en
      "<b>get-localized-strings</b> is a shell script to extract
       <i>localizable</i> strings from OPENSTEP sources and build the
       *.strings files which will be translated to localize the application."))
  ;; files: (label, relative-url, byte-size)
  (("gls.tar.gz"
    "develop/gnustep/gls.tar.gz"
    3174)
   ("gls.tar.gz.md5sum"
    "develop/gnustep/gls.tar.gz.md5sum"
    63))
  nil) ;;gls

(defdownload
    ooestimate
    ;; descriptions:
    ((en
      "<b>OOEstimate</b> is a small application to compute an estimation
       of the time needed to develop an Object Oriented project. (The
       formula was found in some issue of the <i>Journal of Object
       Oriented Programming</i>)."))
  ;; files: (label, relative-url, byte-size)
  (("ooestimate.NOG.s.tar.gz"
    "develop/gnustep/ooestimate.NOG.s.tar.gz"
    21692)
   ("ooestimate.NOG.s.tar.gz.md5sum"
    "develop/gnustep/ooestimate.NOG.s.tar.gz.md5sum"
    76)
   ("ooestimate.README"
    "develop/gnustep/ooestimate.README"
    1129))
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;ooestimate


(defdownload
    NSDecimalNumbers
    ;; descriptions:
    ((en
      "An GNUstep implementation of NSDecimalNumbers MacOSX extensions
       to OpenStep. (Still in development)."))
  ;; files: (label, relative-url, byte-size)
  (("NSDecimalNumbers-20000317.tar.gz"
    "develop/gnustep/NSDecimalNumbers-20000317.tar.gz"
    110925)
   ("NSDecimalNumbers-20000317.tar.gz.md5sum"
    "develop/gnustep/NSDecimalNumbers-20000317.tar.gz.md5sum"
    85))
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;NSDecimalNumbers

(defdownload
    OracleAdaptor
    ;; descriptions:
    ((en "GNUstep Database Library / Oracle Adaptor"))
  ;; files: (label, relative-url, byte-size)
  (("AdaptorTest-0.6d43.readme"
    "develop/gnustep/OracleAdaptor/AdaptorTest-0.6d43.readme"
    196)
   ("AdaptorTest-0.6d43.tar.gz"
    "develop/gnustep/OracleAdaptor/AdaptorTest-0.6d43.tar.gz"
    13735)
   ("AdaptorTest-0.6d43.tar.gz.md5sum"
    "develop/gnustep/OracleAdaptor/AdaptorTest-0.6d43.tar.gz.md5sum"
    92)
   ("Oracle7-0.4d121.readme"
    "develop/gnustep/OracleAdaptor/Oracle7-0.4d121.readme"
    1097)
   ("Oracle7-0.4d121.tar.gz"
    "develop/gnustep/OracleAdaptor/Oracle7-0.4d121.tar.gz"
    41828)
   ("Oracle7-0.4d121.tar.gz.md5sum"
    "develop/gnustep/OracleAdaptor/Oracle7-0.4d121.tar.gz.md5sum"
    89)
   ("Oracle8-0.6d33.readme"
    "develop/gnustep/OracleAdaptor/Oracle8-0.6d33.readme"
    2373)
   ("Oracle8-0.6d33.tar.gz"
    "develop/gnustep/OracleAdaptor/Oracle8-0.6d33.tar.gz"
    52665)
   ("Oracle8-0.6d33.tar.gz.md5sum"
    "develop/gnustep/OracleAdaptor/Oracle8-0.6d33.tar.gz.md5sum"
    88))
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;OracleAdaptor




(defvar filesel-en
  (uncompress-string
   "H4sIAIj6OkAAA3VTwW7iMBC98xWzt/bg9L6KkHZLiiJRiIA9VIiDcSaLVcfOxg4IiY/fl0Aa
    Dk1OM5P33ozHz/Fh+qYNb9jEL4cpaU+SvC4rw6RcWUqbUzjKQNIYd/aImRrPNQVHng2rQM7y
    xNVUupqpgJQnZLmu8c/VGulZhyNUl5tVxTaTlk2LaAsbeeKuEFEa0HsC6aIxdD6yJW1P7pNz
    KmpXtkOpWlchmkyIKK5qnrbB/evaQnZHO+GvQnjoXoVD5NByTw/Q4duJAoCOehW2ja27paOE
    HKCHk4GW32h98bIfYZbAlY0JGosFrbzR+soYawtY0AF3sU23i2QMlgFWYUtVoGy9es+2Y8BZ
    e2AAh3lplq6T1+1q/THGWYNT878GjLxbjwiXCgN9ZKPzyPteRSXVp/zLXkj/uLdvaYS1yOES
    eu4j9bL/ruOuG4X2URTBAAIS91Jb+CLEL51nOvcol/Pg+i7rjH+S2sgDtt3YvLU4vN7T58s/
    lDUHoxUttGLrmZ7m2eI5+kK84rVwrbQ0ZG4IKOJJDKq6oItryDJMjeejrTJNjjKcb3sVSbjI
    CksKEpfjXRHOrciTcjZIFX5S/EOI5P1XuhC/k3m6FGI6VJLlDPlz9B/h3OTV1AMAAA==
")) ;;filesel-en


(defvar filesel-fr
  (uncompress-string
   "H4sIAPh96j4AA3VTTW/bMAy991dwl64FJve+BgG2xQsCuImRpIciyEGW2U6YLGn6KBYgP3bX
    /ovRclz7UPtkPr33KFLkrJr/lAp3qGZ31RzQB4gawcvGKgRhmobrGuFPlGDRNRiAIv+mUARp
    tEZHsb+C7nuW4pdE58HEFgb3RppgpEPgryjIGda7jUVdco2qZSVkR4cJ+QL/eivLXZBk/pkY
    XjhpQ3bVns2sw3lPSikVevI6wIH5M2OevM7M0J+hPEcYUYfvwJ6JkKRnptt/bbpwUlATqaZC
    RDBOJlndyXrwdJxQNsRrogqSGkqyppP1yJRqT7QgA73BfrUv8ilaSTTrTGMDlNvNQ7mfIi7a
    gok43BcWq23+Y7/ZPk1ptqRxSE/vsE7tYeFk6UJP5eR9+KWvzHLxm7+gZ9yP+/ahDKgtfHiE
    XjuWno4fZTykq8AxyzIaAEYWF6gF3gWzuzQzaXqEqXEY+BSlma+lD05W8Rq5iAHvwZvoQXFQ
    UqAW2Hst149QxopQKNoTj3CzLIvbDBY07xeyT3uDTkhOI0VWOiWwRstKDT2wJjqQWqjoaZWg
    5tqnraH3rKMMI5f4FzQxlKwcnd8IMuQi0O69l/iJsfzh26pg3/Plas3YfEDy9YLi2259EtnO
    C2wLdAIpYdeTyx6Ne0K1BWfiK8I1f3G0V/fw9T8JTqXuLwQAAA==
    ")) ;;filesel-fr


(defdownload
    filesel
    ;; descriptions:
    ((en filesel-en)
;;;   (fr filesel-fr)
     )

  ;; files: (label, relative-url, byte-size).
  (("filesel-20010515.tar.gz"
    "develop/gnustep/filesel-20010515.tar.gz"
    3742))
  ;; additional urls: (mirror, label, full-url, byte-size).
  nil) ;;filesel



(defvar ah-en
  (uncompress-string
   "H4sIAEl+6j4AA1VQy2rDQAy89yumt+SwyT0YQx7GBByTSw89FWWtTRbWq7CPlP59tw4mVIdB
    mtEMSFtnKXL8urG7cwBgY4HAjgs9lBbZD5OQblyw7T8KnvPFWf2GZ3VWs4+MRXvulivsZRw5
    aEsOcE8pggKDHmQdXRzDSEm0XrscrfjSzVH65fXilQnMiGLS959/XlrsxSfSCdW7Us1pe+zU
    rmmPvVL1i2n6Q5mXq9lU3etPyRjpB1dO0zVRctAMMai0DFzTv19U64mECTJufgGbdNLKJwEA
    AA==
    ")) ;;ah-en


(defvar ah-fr
  (uncompress-string
   "H4sIAK1+6j4AA4VQTUvDQBC9+yvGS20PqXcNAaUhFNLQi2fZzA46sN1dZnZLf77TStSbc3sf
    vOG9FpOnzgV2Svr+SSGTtI83EkgLeNYiPNcVOayFnkFTVQgOAiNFpDv4vmF6g2OdjYXxqijB
    ejiOmy3sSBezAqbTiQTZBQOa4u1BTpFnI5asnKoARwxVOUXwLip482dJvnL5k1IvEM0ReBbT
    12iBDgsJLFHtfdP0h5f92Lz2w35qmu6X6aed4c32x5u7ka79BAn8Q/vPMtawSKpngpX7EHe2
    bZ6+AAVbl1ROAQAA
    ")) ;;ah-fr


(defdownload
    aliases_helper
    ;; descriptions:
    ((en ah-en)
;;;   (fr ah-fr)
     )
  ;; files: (label, relative-url, byte-size).
  (("aliases_helper-20010202.tar.gz"
    "develop/gnustep/aliases_helper-20010202.tar.gz"
    17384)
   ("aliases_helper-20010202.tar.gz.md5sum"
    "develop/gnustep/aliases_helper-20010202.tar.gz.md5sum"
    65))
  ;; additional urls: (mirror, label, full-url, byte-size).
  nil) ;;aliases_helper


;;; UNIX ;;;

(defdownload
    mail-to-sms
    ;; descriptions:
    ((en  "Download the mail-to-sms script.")
;;;  (fr "Téléchargez le script mail-to-sms.")
     )
  ;; files: (label, relative-url, byte-size)
  (("mail-to-sms-distrib-20010331083630.tar.gz"
    "develop/unix/mail-to-sms-distrib-20010331083630.tar.gz"
    24481)
   ("mail-to-sms-distrib-20010331083630.tar.gz.md5"
    "develop/unix/mail-to-sms-distrib-20010331083630.tar.gz.md5"
    76))
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;mail-to-sms


(defdownload
    fileutils
    ;; descriptions:
    ((en
      "Small patches to <code>ls</code> (sorting like before) and
       <code>rm</code> (protecting / and some common subdirectories of /)")
;;;(fr
;;; "Petites modifications sur <code>ls</code> (tri comme avant), et
;;;    <code>rm</code> (protection du répertoire / et quelques
;;;    sous-répertoires courrants de /)")
     )
  ;; files: (label, relative-url, byte-size)
  (
   ("fileutils-4.0.35-14pjb2.dif.gz"
    "develop/linux/fileutils-4.0.35-14pjb2.dif.gz"
    3098)
   ("fileutils-4.0.35-14pjb2.dif.gz.md5sum"
    "develop/linux/fileutils-4.0.35-14pjb2.dif.gz.md5sum"
    80)
   ("fileutils-4.0.35-14pjb2.i386.rpm"
    "develop/linux/fileutils-4.0.35-14pjb2.i386.rpm"
    566422)
   ("fileutils-4.0.35-14pjb2.i386.rpm.md5sum"
    "develop/linux/fileutils-4.0.35-14pjb2.i386.rpm.md5sum"
    82)
   ("fileutils-4.0.35-14pjb2.src.rpm"
    "develop/linux/fileutils-4.0.35-14pjb2.src.rpm"
    1792657)
   ("fileutils-4.0.35-14pjb2.src.rpm.md5sum"
    "develop/linux/fileutils-4.0.35-14pjb2.src.rpm.md5sum"
    81)
   )
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;fileutils



(defvar maelstrom-en
  (uncompress-string
   "H4sIAOGA6j4AAzWOQQrCMBBF957iH6AExRO4EVwURE8wTUcbnGRCOrZ4e9OIs/p83n/MCZnM
    TzBFTyyzFY04ur07IMQsHDlZSE8QvJbC3ipZGF5CzrXvsMPvKI1Yg036NkSaX22UPlVfDPqA
    TdymDmctSLp2uECTVKLoEkb+izaw/dThdu2b976FNYhgYNBCQWgQxqya3BeNxs1kwQAAAA==
    ")) ;;maelstrom-en


(defvar maelstrom-fr
  (uncompress-string
   "H4sIAAWB6j4AAz2NQQpCMQxE955idm7ko7j0DIIoHqD2Rwy0yTdJD/1vYatgNhOYeTN3IVSd
    +ck5BavAm+GcqHiYVhyn/XQA16WslSSSBFon5rVw5fgRG/wuqxnl6G5DqNEOnsRBgpr83ciQ
    Wh70kiyYJly0b5Uti4/i3b/IqRUacygjHPmFU38d18sZFLgNdTLtiZl9UeHHsBfT/EosX3b6
    AO2TGHDaAAAA
    ")) ;;maelstrom-fr


(defdownload
    Maelstrom
    ;; descriptions:
    ((en maelstrom-en)
     ;;(fr maelstrom-fr)
     )
  ;; files: (label, relative-url, byte-size)
  (
   ("Maelstrom-3.0.1.p1.diffs.tar.gz"
    "develop/linux/Maelstrom-3.0.1.p1.diffs.tar.gz"
    13727)
   ("Maelstrom-3.0.1.p1.diffs.tar.gz.md5sum"
    "develop/linux/Maelstrom-3.0.1.p1.diffs.tar.gz.md5sum"
    81)
   )
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;Maelstrom


(defdownload
    chrooted-ssh-cvs
    ;; descriptions:
    ((en "Chrooted SSH CVS Server Management Scripts")
;;;   (fr "Scripts de gestion d'environnements CVS chroot/SSH.")
     )
  ;; files: (label, relative-url, byte-size)
  (
   ("chrooted-ssh-cvs.README.gz"
    "develop/linux/chrooted-ssh-cvs.README.gz"
    3899)
   ("chrooted-ssh-cvs.README.gz.md5sum"
    "develop/linux/chrooted-ssh-cvs.README.gz.md5sum"
    76)
   ("chrooted-ssh-cvs.tar.gz"
    "develop/linux/chrooted-ssh-cvs.tar.gz"
    22563)
   ("chrooted-ssh-cvs.tar.gz.md5sum"
    "develop/linux/chrooted-ssh-cvs.tar.gz.md5sum"
    73)
   )
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;chrooted-ssh-cvs

(defdownload
    pic-merge-diff3
    ;; descriptions:
    ((en "Picture Merge (&agrave;-la Diff3) GIMP script")
;;;   (fr "Script GIMP pour la fusion d'images (style diff3).")
     )
  ;; files: (label, relative-url, byte-size)
  (
   ("pmd-20010714.tar.gz"
    "develop/unix/pmd-20010714.tar.gz"
    16241)
   ("pmd-20010714.tar.gz.md5sum"
    "develop/unix/pmd-20010714.tar.gz.md5sum"
    77)
   )
  ;; additional urls: (mirror, label, full-url, byte-size)
  nil) ;;pic-merge-diff3


;;   (TAG
;;    ;; descriptions:
;;    ((en
;;      "ENGLISH")
;;     (fr
;;      "FRENCH"))
;;    ;; files: (label, relative-url, byte-size)
;;    (
;;     ("FILE.tar.gz"
;;      "DIR/FILE.tar.gz"
;;      SIZE)
;;     )
;;    ;; additional urls: (mirror, label, full-url, byte-size)
;;    nil)
;;



;;;------------------------------------------------------------------------

(when nil
  (setq h  '(
             ))

  (dolist (file h)
    (find-file file)
    (beginning-of-buffer)
    (end-of-line)
    (let ((first-line (buffer-substring-no-properties (point-min) (point))))
      (if (string-match "<!doctype" first-line)
          (progn
            (delete-region (point-min) (point))
            (insert "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">"))
          (progn
            (goto-char (point-min))
            (insert "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"))))
    (save-buffer 0)
    (kill-buffer (current-buffer)))
  )

;;;; THE END ;;;;
ViewGit