[gs-cvs] rev 8323 - trunk/gs/toolbin
giles at ghostscript.com
giles at ghostscript.com
Thu Oct 25 18:49:56 PDT 2007
Author: giles
Date: 2007-10-25 18:49:56 -0700 (Thu, 25 Oct 2007)
New Revision: 8323
Removed:
trunk/gs/toolbin/makeset.tcl
Modified:
trunk/gs/toolbin/makehist.tcl
Log:
Merge makeset.tcl into makehist.tcl.
Modified: trunk/gs/toolbin/makehist.tcl
===================================================================
--- trunk/gs/toolbin/makehist.tcl 2007-10-26 01:49:54 UTC (rev 8322)
+++ trunk/gs/toolbin/makehist.tcl 2007-10-26 01:49:56 UTC (rev 8323)
@@ -1,4 +1,337 @@
#!/usr/bin/tclsh
+
+# Copyright (C) 1999-2007 Artifex Software, Inc.
+# All rights reserved.
+#
+# This software is provided AS-IS with no warranty, either express or
+# implied.
+#
+# This software is distributed under license and may not be copied,
+# modified or distributed except as expressly authorized under the terms
+# of the license contained in the file LICENSE in this distribution.
+#
+# For more information about licensing, please refer to
+# http://www.ghostscript.com/licensing/. For information on
+# commercial licensing, go to http://www.artifex.com/licensing/ or
+# contact Artifex Software, Inc., 101 Lucas Valley Road #110,
+# San Rafael, CA 94903, U.S.A., +1(415)492-9861.
+
# $Id$
-set argv "-makehist $argv"
-source [file join [file dirname $argv0] makeset.tcl]
+
+# Make various Ghostscript filesets. Assumes the current directory is gs.
+# makehist
+# (merges doc/News.htm and doc/Changes.htm into doc/History#.htm)
+
+# Acquire the Ghostscript version numbers.
+proc setnum {num3} {
+ global Num3 Dot Dir
+
+ set Num3 $num3
+
+ set Dot [expr ${Num3} / 100].[format %02d [expr ${Num3} % 100]]
+
+# Set other, derived globals.
+ set Dir gs$Dot
+}
+setnum [exec egrep {^[0-9]+$} lib/gs_init.ps]
+set Work {c:\work}
+
+# Execute a shell command with *- and ?-expansion.
+proc sh {args} {
+ if {[lindex $args 0] == "-c"} {
+ set cmd [concat sh $args]
+ } elseif {[regexp {[*?]} $args]} {
+ set cmd [list sh -c [join $args]]
+ } else {
+ set cmd $args
+ }
+ puts stdout $cmd
+ puts stdout [eval exec -- $cmd 2>@ stderr]
+}
+
+# Move all or none of a list of files to a directory.
+proc movelist {name files todir} {
+ set ex {}
+ set nex {}
+ foreach f $files {
+ if {[file exists $f]} {lappend ex $f} else {lappend nex $f}
+ }
+ if {$ex == ""} {
+ puts stderr "$name archives do not exist."
+ return
+ }
+ if {$nex != ""} {
+ puts stderr "Missing files: $nex"
+ exit 1
+ }
+ if {![file isdirectory $todir]} {
+ puts "Creating $todir"; flush stdout
+ sh mkdir -p $todir
+ }
+ foreach f $files {
+ if {[regexp {^/c} $f]} {
+ sh cp $f $todir
+ } else {
+ sh mv $f $todir
+ }
+ }
+ sh ls -l $todir/*
+}
+
+# Create a symbolic link from name to path.
+proc ln-s {path name} {sh ln -s $path $name}
+
+# Merge News and Changes into History#.
+proc mergehist {news changes histn tmph details detailn tmpd} {
+ # Merge News, Changes, and the existing History# to tmph; News, Details and Details# to tmpd.
+ # Return 0 if OK, non-0 or an error if not.
+
+ # Define the pattern for the version/date line.
+ set vdpattern {Version ([0-9.]+) \((([0-9]+)-0*([1-9][0-9]*)-0*([1-9][0-9]*))\)}
+
+ # Scan the News file to find the header line.
+ while {![regexp {^<h[1-3]><a name="Version} [set l [gets $news]]]} {
+ if {[eof $news]} {
+ puts stderr "EOF scanning News for header line"
+ return 1
+ }
+ }
+ if {![regexp $vdpattern $l skip nver ndate nyear nmonth nday]} {
+ puts stderr "Can't parse header line in News: $l"
+ return 1
+ }
+ # Change the header tag to h1 for compatiability with existing files.
+ regsub -all {h[1-3]>} $l h2> l
+ set monthnames [list\
+ January February March April May June\
+ July August September October November December]
+ set nmonthname [lindex $monthnames [expr $nmonth - 1]]
+
+ # Read the rest of the News file to determine whether there are any
+ # Incompatible Changes, which we need to know for the TOC entry.
+ set nlines [list $l]
+ set have_changes 0
+ while {[string first "2.0 end contents" [set l [gets $news]]] < 0} {
+ if {[eof $news]} {
+ puts stderr "EOF scanning News for Incompatible changes"
+ return 1
+ }
+ if {[string first "Incompatible changes</h" $l] >= 0} {
+ set have_changes 1
+ }
+ lappend nlines $l
+ }
+
+ # Copy the prefix of the existing History# file.
+ while {[string first <li> [set l [gets $histn]]] != 0} {
+ if {[eof $histn]} {
+ puts stderr "EOF copying History# up to <li>"
+ return 1
+ }
+ puts $tmph $l
+ }
+
+ # Make sure this isn't a backward rev.
+ if {![regexp $vdpattern $l skip hver hdate]} {
+ puts stderr "Can't parse header line in History: $l"
+ return 1
+ }
+ if {$hver > $nver} {
+ puts stderr "First History version = $hver > first News version = $nver"
+ return 1
+ }
+ set hline $l
+
+ # Copy the prefix of the existing Details# file.
+ while {[string first <li> [set l [gets $detailn]]] != 0} {
+ if {[eof $detailn]} {
+ puts stderr "EOF copying Detail# up to <li>"
+ return 1
+ }
+ puts $tmpd $l
+ }
+ set dline $l
+
+ # Advance the Changes file to the first line of the body
+ while {[string first <body> [set l [gets $changes]]] != 0} {
+ if {[eof $changes]} {
+ puts stderr "EOF seeking Changes start"
+ return 1
+ }
+ }
+
+ # Advance the Details file to the first line of the body
+ while {[string first <body> [set l [gets $details]]] != 0} {
+ if {[eof $details]} {
+ puts stderr "EOF seeking Detail start"
+ return 1
+ }
+ }
+
+ # Create the new TOC entry.
+ puts $tmph "<li><a href=\"#Version$nver\">Version $nver ($ndate)</a>"
+
+ # Copy the rest of the History TOC and preamble.
+ puts $tmph $hline
+ while {[string first <h2> [set l [gets $histn]]] != 0} {
+ if {[eof $histn]} {
+ puts stderr "EOF copying History TOC and preamble"
+ return 1
+ }
+ puts $tmph $l
+ }
+
+ # If there is a History section for this version, delete it.
+ if {![regexp $vdpattern $l skip hver hdate]} {
+ puts stderr "Can't parse header line in History: $l"
+ return 1
+ }
+ if {$hver == $nver} {
+ # Skip over the history section.
+ while {[set l [gets $histn]] != "<hr>"} {
+ if {[eof $histn]} {
+ puts stderr "EOF skipping old History section"
+ return 1
+ }
+ }
+ # Skip the following blank line, too.
+ gets $histn
+ set l [gets $histn]
+ }
+ set hline $l
+
+ # Create the new TOC entry.
+ puts $tmpd "<li><a href=\"#Version$nver\">Version $nver ($ndate)</a>"
+
+ # Copy the rest of the Details TOC and preamble.
+ puts $tmpd $dline
+ while {[string first <h2> [set l [gets $detailn]]] != 0} {
+ if {[eof $detailn]} {
+ puts stderr "EOF copying Details TOC and preamble"
+ return 1
+ }
+ puts $tmpd $l
+ }
+
+ # If there is a Details section for this version, delete it.
+ if {![regexp $vdpattern $l skip hver hdate]} {
+ puts stderr "Can't parse header line in Details#: $l"
+ return 1
+ }
+ if {$hver == $nver} {
+ # Skip over the Details section.
+ while {[set l [gets $detailn]] != "<hr>"} {
+ if {[eof $detailn]} {
+ puts stderr "EOF skipping old Details section"
+ return 1
+ }
+ }
+ # Skip the following blank line, too.
+ gets $detailn
+ set l [gets $detailn]
+ }
+ set dline $l
+
+ # Copy the comment and "incompatible changes" sections from News.
+ foreach l $nlines {
+ puts $tmph $l
+ puts $tmpd $l
+ }
+
+ # Copy the rest of Changes, changing links to Details.htm to Details#.htm
+ puts $tmph "<h3><a name=\"${nver}_changelog\"></a>Changelog</h3>"
+ set inum [expr int($hver)]
+ while {[string first </body> [set l [gets $changes]]] < 0} {
+ if {[eof $changes]} {
+ puts stderr "EOF copying rest of Changes"
+ return 1
+ }
+ regsub {href=\"Details.htm#} $l "href=\"Details$inum.htm#" l
+ puts $tmph $l
+ }
+ puts $tmph <hr>
+
+ # Copy the rest of Details.
+ puts $tmpd "<h3><a name=\"${nver}_changelog\"></a>Changelog</h3>"
+ while {[string first </body> [set l [gets $details]]] < 0} {
+ if {[eof $details]} {
+ puts stderr "EOF copying rest of Details"
+ return 1
+ }
+ puts $tmpd $l
+ }
+ puts $tmpd <hr>
+
+ # Copy the rest of the History# file, changing the date at the end.
+ puts $tmph ""
+ puts $tmph $hline
+ while {[string first "<small>Ghostscript version " [set l [gets $histn]]] != 0} {
+ if {[eof $histn]} {
+ puts stderr "EOF seeking History# Ghostscript version"
+ return 1
+ }
+ puts $tmph $l
+ }
+
+ puts $tmph "<small>Ghostscript version $nver, $nday $nmonthname $nyear"
+ while {[gets $histn l] >= 0} {
+ puts $tmph $l
+ }
+
+ # Copy the rest of the Details# file, changing the date at the end.
+ puts $tmpd ""
+ puts $tmpd $dline
+ while {[string first "<small>Ghostscript version " [set l [gets $detailn]]] != 0} {
+ if {[eof $detailn]} {
+ puts stderr "EOF seeking Details# Ghostscript version"
+ return 1
+ }
+ puts $tmpd $l
+ }
+
+ puts $tmpd "<small>Ghostscript version $nver, $nday $nmonthname $nyear"
+ while {[gets $detailn l] >= 0} {
+ puts $tmpd $l
+ }
+
+ return 0
+}
+proc makehist {} {
+ global Dot
+
+ set tmphname /tmp/[pid]h.htm
+ set tmpdname /tmp/[pid]d.htm
+ set news [open doc/News.htm]
+ set changes [open doc/Changes.htm]
+ set details [open doc/Details.htm]
+ set inum [expr int($Dot)]
+ set histname doc/History$inum.htm
+ set detailname doc/Details$inum.htm
+ set historyn [open $histname]
+ set detailn [open $detailname]
+ set tmph [open $tmphname w]
+ set tmpd [open $tmpdname w]
+ set ecode [catch {set code [mergehist $news $changes $historyn $tmph $details $detailn $tmpd]} errMsg]
+ close $tmph
+ close $tmpd
+ close $historyn
+ close $detailn
+ close $changes
+ close $news
+ if {$ecode == 0 && $code == 0} {
+ file rename -force $tmphname $histname
+ file rename -force $tmpdname $detailname
+ } else {
+ file delete $tmphname
+ file delete $tmpdname
+ puts "results in: $tmphname and $tmpdname"
+ if {$ecode != 0} {
+ puts "Error encountered: $errMsg"
+ error $errMsg
+ }
+ }
+}
+
+# Run ourselves
+eval makehist $args
+
Deleted: trunk/gs/toolbin/makeset.tcl
===================================================================
--- trunk/gs/toolbin/makeset.tcl 2007-10-26 01:49:54 UTC (rev 8322)
+++ trunk/gs/toolbin/makeset.tcl 2007-10-26 01:49:56 UTC (rev 8323)
@@ -1,346 +0,0 @@
-#!/usr/bin/tclsh
-
-# Copyright (C) 1999-2007 Artifex Software, Inc.
-# All rights reserved.
-#
-# This software is provided AS-IS with no warranty, either express or
-# implied.
-#
-# This software is distributed under license and may not be copied,
-# modified or distributed except as expressly authorized under the terms
-# of the license contained in the file LICENSE in this distribution.
-#
-# For more information about licensing, please refer to
-# http://www.ghostscript.com/licensing/. For information on
-# commercial licensing, go to http://www.artifex.com/licensing/ or
-# contact Artifex Software, Inc., 101 Lucas Valley Road #110,
-# San Rafael, CA 94903, U.S.A., +1(415)492-9861.
-
-# $Id$
-
-# Make various Ghostscript filesets. Assumes the current directory is gs.
-# makehist
-# (merges doc/News.htm and doc/Changes.htm into doc/History#.htm)
-
-# Acquire the Ghostscript version numbers.
-proc setnum {num3} {
- global Num3 Dot Dir
-
- set Num3 $num3
-
- set Dot [expr ${Num3} / 100].[format %02d [expr ${Num3} % 100]]
-
-# Set other, derived globals.
- set Dir gs$Dot
-}
-setnum [exec egrep {^[0-9]+$} lib/gs_init.ps]
-set Work {c:\work}
-
-# Execute a shell command with *- and ?-expansion.
-proc sh {args} {
- if {[lindex $args 0] == "-c"} {
- set cmd [concat sh $args]
- } elseif {[regexp {[*?]} $args]} {
- set cmd [list sh -c [join $args]]
- } else {
- set cmd $args
- }
- puts stdout $cmd
- puts stdout [eval exec -- $cmd 2>@ stderr]
-}
-
-# Move all or none of a list of files to a directory.
-proc movelist {name files todir} {
- set ex {}
- set nex {}
- foreach f $files {
- if {[file exists $f]} {lappend ex $f} else {lappend nex $f}
- }
- if {$ex == ""} {
- puts stderr "$name archives do not exist."
- return
- }
- if {$nex != ""} {
- puts stderr "Missing files: $nex"
- exit 1
- }
- if {![file isdirectory $todir]} {
- puts "Creating $todir"; flush stdout
- sh mkdir -p $todir
- }
- foreach f $files {
- if {[regexp {^/c} $f]} {
- sh cp $f $todir
- } else {
- sh mv $f $todir
- }
- }
- sh ls -l $todir/*
-}
-
-# Create a symbolic link from name to path.
-proc ln-s {path name} {sh ln -s $path $name}
-
-# Merge News and Changes into History#.
-proc mergehist {news changes histn tmph details detailn tmpd} {
- # Merge News, Changes, and the existing History# to tmph; News, Details and Details# to tmpd.
- # Return 0 if OK, non-0 or an error if not.
-
- # Define the pattern for the version/date line.
- set vdpattern {Version ([0-9.]+) \((([0-9]+)-0*([1-9][0-9]*)-0*([1-9][0-9]*))\)}
-
- # Scan the News file to find the header line.
- while {![regexp {^<h[1-3]><a name="Version} [set l [gets $news]]]} {
- if {[eof $news]} {
- puts stderr "EOF scanning News for header line"
- return 1
- }
- }
- if {![regexp $vdpattern $l skip nver ndate nyear nmonth nday]} {
- puts stderr "Can't parse header line in News: $l"
- return 1
- }
- # Change the header tag to h1 for compatiability with existing files.
- regsub -all {h[1-3]>} $l h2> l
- set monthnames [list\
- January February March April May June\
- July August September October November December]
- set nmonthname [lindex $monthnames [expr $nmonth - 1]]
-
- # Read the rest of the News file to determine whether there are any
- # Incompatible Changes, which we need to know for the TOC entry.
- set nlines [list $l]
- set have_changes 0
- while {[string first "2.0 end contents" [set l [gets $news]]] < 0} {
- if {[eof $news]} {
- puts stderr "EOF scanning News for Incompatible changes"
- return 1
- }
- if {[string first "Incompatible changes</h" $l] >= 0} {
- set have_changes 1
- }
- lappend nlines $l
- }
-
- # Copy the prefix of the existing History# file.
- while {[string first <li> [set l [gets $histn]]] != 0} {
- if {[eof $histn]} {
- puts stderr "EOF copying History# up to <li>"
- return 1
- }
- puts $tmph $l
- }
-
- # Make sure this isn't a backward rev.
- if {![regexp $vdpattern $l skip hver hdate]} {
- puts stderr "Can't parse header line in History: $l"
- return 1
- }
- if {$hver > $nver} {
- puts stderr "First History version = $hver > first News version = $nver"
- return 1
- }
- set hline $l
-
- # Copy the prefix of the existing Details# file.
- while {[string first <li> [set l [gets $detailn]]] != 0} {
- if {[eof $detailn]} {
- puts stderr "EOF copying Detail# up to <li>"
- return 1
- }
- puts $tmpd $l
- }
- set dline $l
-
- # Advance the Changes file to the first line of the body
- while {[string first <body> [set l [gets $changes]]] != 0} {
- if {[eof $changes]} {
- puts stderr "EOF seeking Changes start"
- return 1
- }
- }
-
- # Advance the Details file to the first line of the body
- while {[string first <body> [set l [gets $details]]] != 0} {
- if {[eof $details]} {
- puts stderr "EOF seeking Detail start"
- return 1
- }
- }
-
- # Create the new TOC entry.
- puts $tmph "<li><a href=\"#Version$nver\">Version $nver ($ndate)</a>"
-
- # Copy the rest of the History TOC and preamble.
- puts $tmph $hline
- while {[string first <h2> [set l [gets $histn]]] != 0} {
- if {[eof $histn]} {
- puts stderr "EOF copying History TOC and preamble"
- return 1
- }
- puts $tmph $l
- }
-
- # If there is a History section for this version, delete it.
- if {![regexp $vdpattern $l skip hver hdate]} {
- puts stderr "Can't parse header line in History: $l"
- return 1
- }
- if {$hver == $nver} {
- # Skip over the history section.
- while {[set l [gets $histn]] != "<hr>"} {
- if {[eof $histn]} {
- puts stderr "EOF skipping old History section"
- return 1
- }
- }
- # Skip the following blank line, too.
- gets $histn
- set l [gets $histn]
- }
- set hline $l
-
- # Create the new TOC entry.
- puts $tmpd "<li><a href=\"#Version$nver\">Version $nver ($ndate)</a>"
-
- # Copy the rest of the Details TOC and preamble.
- puts $tmpd $dline
- while {[string first <h2> [set l [gets $detailn]]] != 0} {
- if {[eof $detailn]} {
- puts stderr "EOF copying Details TOC and preamble"
- return 1
- }
- puts $tmpd $l
- }
-
- # If there is a Details section for this version, delete it.
- if {![regexp $vdpattern $l skip hver hdate]} {
- puts stderr "Can't parse header line in Details#: $l"
- return 1
- }
- if {$hver == $nver} {
- # Skip over the Details section.
- while {[set l [gets $detailn]] != "<hr>"} {
- if {[eof $detailn]} {
- puts stderr "EOF skipping old Details section"
- return 1
- }
- }
- # Skip the following blank line, too.
- gets $detailn
- set l [gets $detailn]
- }
- set dline $l
-
- # Copy the comment and "incompatible changes" sections from News.
- foreach l $nlines {
- puts $tmph $l
- puts $tmpd $l
- }
-
- # Copy the rest of Changes, changing links to Details.htm to Details#.htm
- puts $tmph "<h3><a name=\"${nver}_changelog\"></a>Changelog</h3>"
- set inum [expr int($hver)]
- while {[string first </body> [set l [gets $changes]]] < 0} {
- if {[eof $changes]} {
- puts stderr "EOF copying rest of Changes"
- return 1
- }
- regsub {href=\"Details.htm#} $l "href=\"Details$inum.htm#" l
- puts $tmph $l
- }
- puts $tmph <hr>
-
- # Copy the rest of Details.
- puts $tmpd "<h3><a name=\"${nver}_changelog\"></a>Changelog</h3>"
- while {[string first </body> [set l [gets $details]]] < 0} {
- if {[eof $details]} {
- puts stderr "EOF copying rest of Details"
- return 1
- }
- puts $tmpd $l
- }
- puts $tmpd <hr>
-
- # Copy the rest of the History# file, changing the date at the end.
- puts $tmph ""
- puts $tmph $hline
- while {[string first "<small>Ghostscript version " [set l [gets $histn]]] != 0} {
- if {[eof $histn]} {
- puts stderr "EOF seeking History# Ghostscript version"
- return 1
- }
- puts $tmph $l
- }
-
- puts $tmph "<small>Ghostscript version $nver, $nday $nmonthname $nyear"
- while {[gets $histn l] >= 0} {
- puts $tmph $l
- }
-
- # Copy the rest of the Details# file, changing the date at the end.
- puts $tmpd ""
- puts $tmpd $dline
- while {[string first "<small>Ghostscript version " [set l [gets $detailn]]] != 0} {
- if {[eof $detailn]} {
- puts stderr "EOF seeking Details# Ghostscript version"
- return 1
- }
- puts $tmpd $l
- }
-
- puts $tmpd "<small>Ghostscript version $nver, $nday $nmonthname $nyear"
- while {[gets $detailn l] >= 0} {
- puts $tmpd $l
- }
-
- return 0
-}
-proc makehist {} {
- global Dot
-
- set tmphname /tmp/[pid]h.htm
- set tmpdname /tmp/[pid]d.htm
- set news [open doc/News.htm]
- set changes [open doc/Changes.htm]
- set details [open doc/Details.htm]
- set inum [expr int($Dot)]
- set histname doc/History$inum.htm
- set detailname doc/Details$inum.htm
- set historyn [open $histname]
- set detailn [open $detailname]
- set tmph [open $tmphname w]
- set tmpd [open $tmpdname w]
- set ecode [catch {set code [mergehist $news $changes $historyn $tmph $details $detailn $tmpd]} errMsg]
- close $tmph
- close $tmpd
- close $historyn
- close $detailn
- close $changes
- close $news
- if {$ecode == 0 && $code == 0} {
- file rename -force $tmphname $histname
- file rename -force $tmpdname $detailname
- } else {
- file delete $tmphname
- file delete $tmpdname
- puts "results in: $tmphname and $tmpdname"
- if {$ecode != 0} {
- puts "Error encountered: $errMsg"
- error $errMsg
- }
- }
-}
-
-# Call the procedure selected by the first switch (-makexxx) if any,
-# otherwise by the link name.
-if {[llength $argv] >= 1 && [string range [lindex $argv 0] 0 4] == "-make"} {
- set progname [string range [lindex $argv 0] 1 end]
- set args [lreplace $argv 0 0]
-} else {
- set progname [file tail $argv0]
- set args $argv
-}
-switch $progname {
- makehist {eval makehist $args}
-}
More information about the gs-cvs
mailing list