tasty renamings
[feisty_meow.git] / documentation / doc_fodder / perl_tools.html
diff --git a/documentation/doc_fodder/perl_tools.html b/documentation/doc_fodder/perl_tools.html
new file mode 100644 (file)
index 0000000..4c4ce4d
--- /dev/null
@@ -0,0 +1,357 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+  <meta name="Author" content="Fred T. Hamster">
+  <meta name="generator"
+ content="Mozilla/5.0 (X11; U; Linux i686; en-US) [Mozilla]">
+  <meta name="Description"
+ content="Open Source Perl for Your Perusement">
+  <meta name="KeyWords"
+ content="reusable, open source, perl, shell, script, recursive, diff, snarf, yeti, free, source code, example, filename, snarfer">
+  <title>Feisty Meow Concerns Perl Scripts</title>
+  <meta content="Fred T. Hamster" name="author">
+  <meta
+ content="Scripts for backing up hierarchies, generating documents from other documents, etc etc."
+ name="description">
+</head>
+<body
+ style="background-image: url(pics/celtic_destiny14.jpg); background-color: rgb(0, 0, 0); color: rgb(255, 255, 153);"
+ alink="#ffcc00" link="#66ff99" vlink="#00cc00">
+<h3>&nbsp; </h3>
+<center>
+<table bgcolor="#330000" border="4" cellpadding="0" cellspacing="0"
+ cols="1" width="92%">
+  <tbody>
+    <tr>
+      <td>
+      <center>
+      <h1><a href="http://feistymeow.org/">Feisty Meow Concerns Codebase</a> Open Source Perl
+Scripts</h1>
+      <h2>Some Hopefully Useful GPL-Licensed Perl Code<br>
+      </h2>
+      </center>
+      <center>Contributed by Chris Koeritz (<a
+ href="mailto:%20koeritz@gruntose.com">Koeritz@Gruntose.COM</a>) <br>
+See the <a href="http://www.gruntose.com/Info/GNU/GPL.html">GNU Public
+License</a> for details of licensing.<span style="font-style: italic;"></span><br>
+      </center>
+      <h4>Caveats:</h4>
+      <ol>
+        <li>No warranty, express, implied or imagined, is offered for
+these files.&nbsp; If you destroy your life by running one of them, I
+will have sympathy, but that's about it.</li>
+        <li>Some of these shell scripts depend on environment variables.&nbsp;
+The most frequent case of this is FEISTY_MEOW_APEX, which should point to the
+top-level
+directory where the Feisty Meow scripts are stored on your
+machine. &nbsp; This variable is set by default when the scripts are in
+the ~/feisty_meow folder.&nbsp; Consult your operating
+system documentation if you are
+unfamiliar with the concept or management of environment variables.</li>
+        <li>These files are provided as possibly useful shell scripts
+rather than as full-fledged reusable and object oriented components.</li>
+        <li>Improvements and contributions are gladly accepted.&nbsp;
+They will be processed as fast as our schedule permits.&nbsp; Please
+send any changes to the Gruntose Curator at <a
+ href="mailto:%20fred@gruntose.com">fred@gruntose.com</a> .</li>
+        <li>These files are mostly portable between Unix and the
+various Windoze OSes, but in many cases you may want to fix the
+defaults or path names to make them more suitable for your own needs.</li>
+        <li>Some of the scripts invoke external programs that are
+available for most Unixes.&nbsp; For Windoze users, a set of GNU Unix
+utilities is available at "<a href="http://www.mingw.org/">http://www.mingw.org/</a>".</li>
+        <li>An alternative, but not recommended, GNU suite is
+at "<a href="http://www.cygwin.com/">http://www.cygwin.com/</a>".</li>
+        <li><span style="color: rgb(255, 255, 204);">Direct Cognition</span>:
+View the scripts directory itself rather than navigating with the links
+below: <a href=".">scripts</a>.</li>
+      </ol>
+      </td>
+    </tr>
+  </tbody>
+</table>
+</center>
+<h3>&nbsp; </h3>
+<center>
+<table bgcolor="#330000" border="4" cellpadding="0" cellspacing="0"
+ cols="1" width="92%">
+  <tbody>
+    <tr>
+      <td>
+      <h2>Library Files<br>
+      </h2>
+      <blockquote>
+        <h3><a href="../text/diff_lib.pl">diff_lib.pl</a></h3>
+        <blockquote>The "differ" utilities can be used to compare two
+directories of text or binary files against each other.&nbsp; The two
+directories are presumably close in contents.&nbsp; This can be useful
+when one is revising a set of files and wants to synchronize an older
+copy against a newer version.&nbsp; Support for "<a href="#differ">differ.pl</a>"
+is provided
+here.</blockquote>
+        <h3> <a name="filename helper"></a><a
+ href="../files/filename_helper.pl">filename_helper.pl</a></h3>
+        <blockquote>Contains a handy set of utilities for manipulating
+filenames.&nbsp; These can help to make perl scripts portable across
+the two well-known types of filename separators ('/' and '\').&nbsp;
+They also provide support for ripping up filenames into their
+components.</blockquote>
+        <h3> <a href="../core/inc_num.pl">inc_num.pl</a></h3>
+        <blockquote>This is a simple utility that manages a file with a
+number in it.&nbsp; This is somewhat more useful than it sounds.&nbsp;
+Functions are provided to get the current number and to change the
+number.</blockquote>
+        <h3> </h3>
+        <h3> <a href="../archival/shared_snarfer.pl">shared_snarfer.pl</a></h3>
+        <blockquote>This library supports the "snarf" utilities.&nbsp;
+The
+utilities manipulate archive files with the ".snarf" extension.&nbsp;
+These
+packed
+snarf files are compressed chunks of directory hierarchies.&nbsp; Bob
+files
+are useful because they track a number per distinct "snarf" types that
+is
+used to make uniquely named new archives of the appropriate type.&nbsp;
+This
+number is an ever increasing integer that's stored in a well-known
+(configurable) location.&nbsp; When a snarf file is unpacked (using the
+"unsnarf" tool), the number is updated on the local machine so that the
+next generated file will
+be one greater than the previous number.&nbsp; If one is travelling
+between
+two machines with the same snarf file, this will have the effect of
+keeping
+the number updated on both sides.
+        </blockquote>
+        <h3><a href="../files/zap_the_dir.pl">zap_the_dir.pl</a></h3>
+        <blockquote>Support for the zapdirs utility.&nbsp; This library
+cleans out the directory that it is passed by removing files that are
+not considered important (using "<a href="#filename%20helper">filename_helper.pl</a>
+").&nbsp; The list of important files is something you might want to
+look at to ensure that you won't get burned by zapdirs.</blockquote>
+      </blockquote>
+      </td>
+    </tr>
+  </tbody>
+</table>
+</center>
+<h3>&nbsp; </h3>
+<center>
+<table bgcolor="#330000" border="4" cellpadding="0" cellspacing="0"
+ cols="1" width="92%">
+  <tbody>
+    <tr>
+      <td>
+      <h2>Applications</h2>
+      <blockquote>
+        <h3> <a href="../text/add_cr.pl">add_cr.pl</a></h3>
+        <blockquote>Processes Unix format text files for pcdos by
+forcing the line endings to be Carriage Return plus Line Feed (CRLF).</blockquote>
+        <h4> </h4>
+        <h3><a href="../cgi/cgi_display.pl">cgi_display.pl</a></h3>
+        <blockquote>Turns the files passed on the command line into a
+stream of CGI compatible text output. The javascript show_file method
+(see the
+source for this page) is preferred since it is lighter weight and
+doesn't
+need cgi, but there are some situations where cgi is the only option
+(older
+browsers or requirements of no javascript).</blockquote>
+        <h4> </h4>
+        <h3> <a href="../files/change_endings.pl">change_endings.pl</a></h3>
+        <blockquote>Replaces the suffix of all filenames in the current
+directory
+with a different suffix. &nbsp;Suffix here is defined as the set of
+characters
+after the last period ('.') in the name. &nbsp;Note this will not work
+for
+names without suffices.</blockquote>
+        <h3> </h3>
+        <h3><a href="../text/cpdiff.pl">cpdiff.pl</a></h3>
+        <blockquote>Copies files from a source directory into a
+destination directory.&nbsp; The files are only copied when they are
+missing in the destination or when the destination version has
+different contents.&nbsp; The syntax looks like this:<br>
+&nbsp;&nbsp;&nbsp; cpdiff&nbsp; source&nbsp; destination<br>
+The assumption is that the files in the source directory are somehow
+better, newer or more complete than the set of files in the destination.<br>
+        </blockquote>
+        <h3><a href="../text/cpdiffnow.pl">cpdiffnow.pl</a></h3>
+        <blockquote> Similar to cpdiff, but this utility sets the
+destination file's time stamp to "now".&nbsp; This should cause the new
+or changed files in the destination directory to be more recent than
+anything else in there.&nbsp; This is helpful sometimes for forcing
+compilation of modified source files.<br>
+        </blockquote>
+        <h4> </h4>
+        <h3><a href="../rev_control/cvs_fix.pl">cvs_fix.pl</a></h3>
+        <blockquote>Wraps the cygwin cvs command for pcdos/win32.
+&nbsp;Any
+unfriendly backward slashes are flipped to be forward slashes.<br>
+        </blockquote>
+        <h3> </h3>
+        <h3><a name="differ"></a><a
+ href="../text/differ.pl">differ.pl</a></h3>
+        <blockquote>Compares two directory hierarchies and the files
+they
+contain.&nbsp; The first parameter is a directory
+to compare against "this" directory;
+every subdirectory "here" will be traversed in order to build the
+output file that shows the differences.&nbsp; An optional second
+argument can be used to specify a different directory than the current
+one as the source of the comparison (the first argument is always the
+destination of the comparison).</blockquote>
+        <h3> <a href="../files/filedump.pl">filedump.pl</a></h3>
+        <blockquote>Collects the contents of the files whose names are
+passed on the command line into one gigundo stream which is passed to
+standard output. The output can be piped into another file as desired.</blockquote>
+        <h3> <a href="../core/generate_aliases.pl">generate_aliases.pl</a></h3>
+        <blockquote>Performs some useful activities for the shell
+environment.&nbsp; Using the environment variable for FEISTY_MEOW_SCRIPTS (which
+is set in the appropriate startup files to be the shell scripts
+directory, where all this stuff lives), generate_aliases will create
+all of the aliases files for the combinations of operating systems and
+types of shells supported.&nbsp; Currently this includes Linux, Unix,
+PCDOS, OS/2 and MS-WIN32 (9x, NT, 2K, XP, etc) for
+supported operating systems.&nbsp; The shell languages supported are
+dos's command, nt's cmd, unix's sh and bash, and perl.&nbsp; This script will also look for
+any files ending in ".sh" or ".pl" and it will create aliases for them
+in forms appropriate to the different shells. &nbsp;The .zz_feisty_loading
+subdirectory is created under the home directory as a storage place for the generated script
+files.</blockquote>
+        <h4> </h4>
+        <h3> <a href="../text/new_sig.pl">new_sig.pl</a></h3>
+        <blockquote>Generates a signature file from the nechung
+database
+using the 'nechung' application. &nbsp;See the <a
+ href="http://feistymeow.org/">Feisty Meow Concerns Codebase</a> for the nechung
+application.
+&nbsp;The database for nechung resides in the <a href="#download">whole Feisty Meow Concerns code package</a> in "feisty_meow/infobase".</blockquote>
+        <h3> </h3>
+        <h3> <a href="../files/renlower.pl">renlower.pl</a></h3>
+        <blockquote>Renames all of the files passed on the command line
+such that they are only in lower-case.&nbsp; Useful if you're tired of
+passing mistakenly re-capitalized names from a defective 8.3 OS (e.g.
+Doze95/98) to
+a file system where you care about the case.</blockquote>
+        <h3><a href="../processes/runner.pl">runner.pl</a></h3>
+        <blockquote>Finds all executable files in the current directory
+(and subdirectories) and runs them.&nbsp; The output of the programs is
+sent to standard output.&nbsp; Standard error is used to report which
+file is being worked on, plus the running programs' own standard error
+streams are merged into runner's standard error stream.&nbsp; This
+makes it nice to do something like:<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; runner &gt;runs.log<br>
+where the runs.log file will contain the output of each program that
+was executed and the console will be sent messages as each program is
+started and finished (and errors show up at the console also).<br>
+        </blockquote>
+        <h3> <a name="safedel"></a><a
+ href="../files/safedel.pl">safedel.pl</a></h3>
+        <blockquote>Makes deleting files and directories a little less
+nerve-wracking.&nbsp; If you substitute safedel as an alias for rm or
+del or deltree or whatever, it will make a zipped backup of the items
+before they are actually deleted.&nbsp; Safedel keeps track of a number
+that is attached to each zip to enforce uniquely numbered
+archives.&nbsp; They are stored in a directory named "zz_safedel_keep"
+that is stored under the temorary directory (specified by the
+environment
+variable named TMP).&nbsp; A report of the contents of the compressed
+trash
+is appended to a file named "zz_safedel.rpt" in the TMP directory.&nbsp;
+Occasional
+cleaning of the deleted files folder is recommend, but this utility has
+saved
+my various parts several times already.</blockquote>
+        <h4> </h4>
+        <h3> </h3>
+        <h3><a href="../archival/snarf_linux_config.pl">snarf_linux_config.pl</a></h3>
+        <blockquote>A snarf utility that packages up the
+important configuration files in a Linux installation.</blockquote>
+        <h4> </h4>
+        <h3> <a href="../archival/snarf_light.pl">snarf_light.pl</a></h3>
+        <blockquote>A selective snarf of the source hierarchy.&nbsp;
+This
+collects the code that I manage.&nbsp; As such, this is probably
+irrelevant to anyone but CAK.</blockquote>
+        <h3><a href="../archival/snarf_notes.pl">snarf_notes.pl</a></h3>
+        <blockquote>Gathers all "important" files from the home
+directory.
+&nbsp;This
+is somewhat personally tuned but it includes files and directories that
+have
+"project", "notes", or "crucial" in their name.</blockquote>
+        <h3> </h3>
+        <h3> <a href="../archival/snarf_src.pl">snarf_src.pl</a></h3>
+        <blockquote>A source code grabbing snarfer.&nbsp; The entire
+source
+code hierarchy is snarfed.&nbsp; Note that one should edit the
+hierarchy
+location to make it appropriate for your local source code.</blockquote>
+
+        <h3><a href="../files/summing_dir.pl">summing_dir.pl</a></h3>
+        <blockquote>Offers a directory listing along with total file
+sizes
+and disk free space.<br>
+          <br>
+        </blockquote>
+        <h3><a href="../build/synch_build.pl">synch_build.pl</a></h3>
+        <blockquote>This is a helper utility that synchronizes the binary
+outputs from a build process with an existing installed location.&nbsp; Given a target directory, the executable
+programs and dynamic libraries that exist there will be synchronized
+with the build repository's versions.&nbsp; This is kind of a quickie
+upgrade process, as long as the files in the target location are not
+locked by other processes.<br>
+        </blockquote>
+        <h3> <a href="../archival/unsnarf.pl">unsnarf.pl</a></h3>
+        <blockquote>Uses the snarfer utilities to undo a previously
+snarfed file.&nbsp; A folder named "snarf_BASE" is created for the
+contents, where BASE
+is replaced with the basename of the snarf file (that is, without the
+".snarf"
+suffix).&nbsp; The number that tracks the snarf files of this type is
+updated
+such that the next snarf file will be at least one higher than this
+snarf's
+sorta
+unique number.&nbsp; The number will be managed correctly if you're
+always
+unsnarfing the most recent snarf files before creating any new snarfs.</blockquote>
+        <h4> </h4>
+        <h3> <a href="../files/whack_forever.pl">whack_forever.pl</a></h3>
+        <blockquote>Since all of my file deletion commands are aliases
+to <a href="#safedel">safedel</a>, it is hard to actually remove a
+file. &nbsp;If I'm really really sure that a file or directory needs to
+be
+permanently deleted, then this command can be used. &nbsp;It shows the
+names
+it is removing also, but it does _not_ ask for confirmation.</blockquote>
+        <h3> </h3>
+        <h3><a href="../security/y2038_check.pl">y2038_check.pl</a></h3>
+        <div style="margin-left: 40px;">Tests the system for survival
+past the year 2038, which is when the Unix time scale runs out of bits
+for the number of seconds since 1970 measured in a 32 bit integer.<br>
+        </div>
+        <h3><a href="../files/zapdirs.pl">zapdirs.pl</a></h3>
+        <blockquote>Removes empty directories and directories
+containing only
+unimportant crud (see "<a href="#filename%20helper">filename_helper.pl</a>").&nbsp;
+If there are no arguments, then the current directory is cleaned up;
+any subdirectories
+will be traversed into and removed if it seems appropriate.&nbsp;
+Otherwise,
+zapdirs operates on the arguments passed to it as if they are directory
+names
+to be cleaned.</blockquote>
+      </blockquote>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<h3>&nbsp;</h3>
+</center>
+</body>
+</html>