syslinux/core/genhash.pl
<<
>>
Prefs
   1#!/usr/bin/perl
   2#
   3# Generate hash values for keywords
   4#
   5
   6eval { use bytes; };
   7
   8while ( defined($keywd = <STDIN>) ) {
   9    chomp $keywd;
  10
  11    ($keywd,$keywdname) = split(/\s+/, $keywd);
  12    $keywdname = $keywd unless ( $keywdname );
  13
  14    $l = length($keywd);
  15    $h = 0;
  16    for ( $i = 0 ; $i < $l ; $i++ ) {
  17        $c = ord(substr($keywd,$i,1)) | 0x20;
  18        $h = ((($h << 5)|($h >> 27)) ^ $c) & 0xFFFFFFFF;
  19    }
  20    if ( $seenhash{$h} ) {
  21        printf STDERR "$0: hash collision (0x%08x) %s %s\n",
  22        $h, $keywd, $seenhash{$h};
  23    }
  24    $seenhash{$h} = $keywd;
  25    printf("%-23s equ 0x%08x\n", "hash_${keywdname}", $h);
  26}
  27
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.