home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / libexec / locate.updatedb < prev    next >
Encoding:
Text File  |  2001-09-18  |  3.3 KB  |  82 lines

  1. #!/bin/csh -f
  2. #
  3. #    $NetBSD: updatedb.csh,v 1.7 1995/08/31 22:36:35 jtc Exp $
  4. #
  5. # Copyright (c) 1989, 1993
  6. #    The Regents of the University of California.  All rights reserved.
  7. #
  8. # This code is derived from software contributed to Berkeley by
  9. # James A. Woods.
  10. #
  11. # Redistribution and use in source and binary forms, with or without
  12. # modification, are permitted provided that the following conditions
  13. # are met:
  14. # 1. Redistributions of source code must retain the above copyright
  15. #    notice, this list of conditions and the following disclaimer.
  16. # 2. Redistributions in binary form must reproduce the above copyright
  17. #    notice, this list of conditions and the following disclaimer in the
  18. #    documentation and/or other materials provided with the distribution.
  19. # 3. All advertising materials mentioning features or use of this software
  20. #    must display the following acknowledgement:
  21. #    This product includes software developed by the University of
  22. #    California, Berkeley and its contributors.
  23. # 4. Neither the name of the University nor the names of its contributors
  24. #    may be used to endorse or promote products derived from this software
  25. #    without specific prior written permission.
  26. #
  27. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  28. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  29. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  30. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  31. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  32. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  33. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  34. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  35. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  36. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  37. # SUCH DAMAGE.
  38. #
  39. #    @(#)updatedb.csh    8.4 (Berkeley) 10/27/94
  40. #
  41.  
  42. set SRCHPATHS = "/"            # directories to be put in the database
  43. set LIBDIR = /usr/libexec        # for subprograms
  44.                     # for temp files
  45. if (! $?TMPDIR) setenv TMPDIR /var/tmp
  46. if (! $?DBDIR) setenv DBDIR /var/db
  47. set FCODES = $DBDIR/locate.database    # the database
  48.  
  49. set path = ( /bin /usr/bin )
  50. set bigrams = $TMPDIR/locate.bigrams.$$
  51. set filelist = $TMPDIR/locate.list.$$
  52. set errs = $TMPDIR/locate.errs.$$
  53.  
  54. # Make a file list and compute common bigrams.
  55. # Alphabetize '/' before any other char with 'tr'.
  56. # If the system is very short of sort space, 'bigram' can be made
  57. # smarter to accumulate common bigrams directly without sorting
  58. # ('awk', with its associative memory capacity, can do this in several
  59. # lines, but is too slow, and runs out of string space on small machines).
  60.  
  61. # search locally or everything
  62. # find ${SRCHPATHS} -print | \
  63. find ${SRCHPATHS} \( ! -fstype local -o -fstype fdesc -o -fstype kernfs \) -a \
  64.         -prune -o -print | \
  65.     tr '/' '\001' | \
  66.     (sort -T "$TMPDIR" -f; echo $status > $errs) | tr '\001' '/' > $filelist
  67.  
  68. $LIBDIR/locate.bigram < $filelist | \
  69.     (sort -T "$TMPDIR"; echo $status >> $errs) | \
  70.     uniq -c | sort -T "$TMPDIR" -nr | \
  71.     awk '{ if (NR <= 128) print $2 }' | tr -d '\012' > $bigrams
  72.  
  73. # code the file list
  74.  
  75. if { grep -s -v 0 $errs } then
  76.     printf 'locate: updatedb failed\n\n'
  77. else
  78.     $LIBDIR/locate.code $bigrams < $filelist > $FCODES
  79.     chmod 644 $FCODES
  80.     rm $bigrams $filelist $errs
  81. endif
  82.