kconfig/zconf.hash.c_shipped
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Apr 26 21:31:05 2008 +0000 (2008-04-26)
changeset 454 372b2f397baa
permissions -rw-r--r--
Configure tsocks with a simple heuristic.

Consider the proxy has to be in a 'local' network. It means it is directly
reachable by the local machine, even if the local machine has to hop through
one or more gates to reach the proxy (often the case in enterprise networks
where class A 10.0.0.0/8 is in fact sub-divided into smaller networks, each
one of them in a different location, eg. 10.1.0.0/16 in a place, while
10.2.0.0/16 would be on the other side of the world). Not being in the same
subnet does not mean the proxy is not available.

So we will build a mask with at most high bits set, which defines a network
that has both the local machine and the proxy. Because a machine may have
more than one interface, build a mask for each of them, removing 127.0.0.1
which is added automagically by tsocks, and removing duplicate masks.

If all of this does not work, then it means the local machine can NOT in fact
reach the proxy, which in turn means the user mis-configured something (most
probably a typo...).

/trunk/scripts/crosstool.sh | 61 52 9 0 +++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 52 insertions(+), 9 deletions(-)
yann@1
     1
/* ANSI-C code produced by gperf version 3.0.1 */
yann@1
     2
/* Command-line: gperf  */
yann@1
     3
/* Computed positions: -k'1,3' */
yann@1
     4
yann@1
     5
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
yann@1
     6
      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
yann@1
     7
      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
yann@1
     8
      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
yann@1
     9
      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
yann@1
    10
      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
yann@1
    11
      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
yann@1
    12
      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
yann@1
    13
      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
yann@1
    14
      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
yann@1
    15
      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
yann@1
    16
      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
yann@1
    17
      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
yann@1
    18
      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
yann@1
    19
      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
yann@1
    20
      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
yann@1
    21
      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
yann@1
    22
      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
yann@1
    23
      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
yann@1
    24
      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
yann@1
    25
      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
yann@1
    26
      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
yann@1
    27
      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
yann@1
    28
/* The character set is not based on ISO-646.  */
yann@1
    29
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
yann@1
    30
#endif
yann@1
    31
yann@1
    32
struct kconf_id;
yann@1
    33
/* maximum key range = 45, duplicates = 0 */
yann@1
    34
yann@1
    35
#ifdef __GNUC__
yann@1
    36
__inline
yann@1
    37
#else
yann@1
    38
#ifdef __cplusplus
yann@1
    39
inline
yann@1
    40
#endif
yann@1
    41
#endif
yann@1
    42
static unsigned int
yann@1
    43
kconf_id_hash (register const char *str, register unsigned int len)
yann@1
    44
{
yann@1
    45
  static unsigned char asso_values[] =
yann@1
    46
    {
yann@1
    47
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    48
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    49
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    50
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    51
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    52
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    53
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    54
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    55
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    56
      47, 47, 47, 47, 47, 47, 47, 25, 30, 15,
yann@1
    57
       0, 15,  0, 47,  5, 15, 47, 47, 30, 20,
yann@1
    58
       5,  0, 25, 15,  0,  0, 10, 35, 47, 47,
yann@1
    59
       5, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    60
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    61
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    62
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    63
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    64
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    65
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    66
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    67
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    68
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    69
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    70
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    71
      47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
yann@1
    72
      47, 47, 47, 47, 47, 47
yann@1
    73
    };
yann@1
    74
  register int hval = len;
yann@1
    75
yann@1
    76
  switch (hval)
yann@1
    77
    {
yann@1
    78
      default:
yann@1
    79
        hval += asso_values[(unsigned char)str[2]];
yann@1
    80
      /*FALLTHROUGH*/
yann@1
    81
      case 2:
yann@1
    82
      case 1:
yann@1
    83
        hval += asso_values[(unsigned char)str[0]];
yann@1
    84
        break;
yann@1
    85
    }
yann@1
    86
  return hval;
yann@1
    87
}
yann@1
    88
yann@1
    89
struct kconf_id_strings_t
yann@1
    90
  {
yann@1
    91
    char kconf_id_strings_str2[sizeof("on")];
yann@1
    92
    char kconf_id_strings_str6[sizeof("string")];
yann@1
    93
    char kconf_id_strings_str7[sizeof("default")];
yann@1
    94
    char kconf_id_strings_str8[sizeof("def_bool")];
yann@1
    95
    char kconf_id_strings_str10[sizeof("range")];
yann@1
    96
    char kconf_id_strings_str11[sizeof("def_boolean")];
yann@1
    97
    char kconf_id_strings_str12[sizeof("def_tristate")];
yann@1
    98
    char kconf_id_strings_str13[sizeof("hex")];
yann@1
    99
    char kconf_id_strings_str14[sizeof("defconfig_list")];
yann@1
   100
    char kconf_id_strings_str16[sizeof("option")];
yann@1
   101
    char kconf_id_strings_str17[sizeof("if")];
yann@1
   102
    char kconf_id_strings_str18[sizeof("optional")];
yann@1
   103
    char kconf_id_strings_str20[sizeof("endif")];
yann@1
   104
    char kconf_id_strings_str21[sizeof("choice")];
yann@1
   105
    char kconf_id_strings_str22[sizeof("endmenu")];
yann@1
   106
    char kconf_id_strings_str23[sizeof("requires")];
yann@1
   107
    char kconf_id_strings_str24[sizeof("endchoice")];
yann@1
   108
    char kconf_id_strings_str26[sizeof("config")];
yann@1
   109
    char kconf_id_strings_str27[sizeof("modules")];
yann@1
   110
    char kconf_id_strings_str28[sizeof("int")];
yann@1
   111
    char kconf_id_strings_str29[sizeof("menu")];
yann@1
   112
    char kconf_id_strings_str31[sizeof("prompt")];
yann@1
   113
    char kconf_id_strings_str32[sizeof("depends")];
yann@1
   114
    char kconf_id_strings_str33[sizeof("tristate")];
yann@1
   115
    char kconf_id_strings_str34[sizeof("bool")];
yann@1
   116
    char kconf_id_strings_str35[sizeof("menuconfig")];
yann@1
   117
    char kconf_id_strings_str36[sizeof("select")];
yann@1
   118
    char kconf_id_strings_str37[sizeof("boolean")];
yann@1
   119
    char kconf_id_strings_str39[sizeof("help")];
yann@1
   120
    char kconf_id_strings_str41[sizeof("source")];
yann@1
   121
    char kconf_id_strings_str42[sizeof("comment")];
yann@1
   122
    char kconf_id_strings_str43[sizeof("mainmenu")];
yann@1
   123
    char kconf_id_strings_str46[sizeof("enable")];
yann@1
   124
  };
yann@1
   125
static struct kconf_id_strings_t kconf_id_strings_contents =
yann@1
   126
  {
yann@1
   127
    "on",
yann@1
   128
    "string",
yann@1
   129
    "default",
yann@1
   130
    "def_bool",
yann@1
   131
    "range",
yann@1
   132
    "def_boolean",
yann@1
   133
    "def_tristate",
yann@1
   134
    "hex",
yann@1
   135
    "defconfig_list",
yann@1
   136
    "option",
yann@1
   137
    "if",
yann@1
   138
    "optional",
yann@1
   139
    "endif",
yann@1
   140
    "choice",
yann@1
   141
    "endmenu",
yann@1
   142
    "requires",
yann@1
   143
    "endchoice",
yann@1
   144
    "config",
yann@1
   145
    "modules",
yann@1
   146
    "int",
yann@1
   147
    "menu",
yann@1
   148
    "prompt",
yann@1
   149
    "depends",
yann@1
   150
    "tristate",
yann@1
   151
    "bool",
yann@1
   152
    "menuconfig",
yann@1
   153
    "select",
yann@1
   154
    "boolean",
yann@1
   155
    "help",
yann@1
   156
    "source",
yann@1
   157
    "comment",
yann@1
   158
    "mainmenu",
yann@1
   159
    "enable"
yann@1
   160
  };
yann@1
   161
#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
yann@1
   162
#ifdef __GNUC__
yann@1
   163
__inline
yann@1
   164
#endif
yann@1
   165
struct kconf_id *
yann@1
   166
kconf_id_lookup (register const char *str, register unsigned int len)
yann@1
   167
{
yann@1
   168
  enum
yann@1
   169
    {
yann@1
   170
      TOTAL_KEYWORDS = 33,
yann@1
   171
      MIN_WORD_LENGTH = 2,
yann@1
   172
      MAX_WORD_LENGTH = 14,
yann@1
   173
      MIN_HASH_VALUE = 2,
yann@1
   174
      MAX_HASH_VALUE = 46
yann@1
   175
    };
yann@1
   176
yann@1
   177
  static struct kconf_id wordlist[] =
yann@1
   178
    {
yann@1
   179
      {-1}, {-1},
yann@1
   180
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2,		T_ON,		TF_PARAM},
yann@1
   181
      {-1}, {-1}, {-1},
yann@1
   182
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6,		T_TYPE,		TF_COMMAND, S_STRING},
yann@1
   183
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7,	T_DEFAULT,	TF_COMMAND, S_UNKNOWN},
yann@1
   184
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN},
yann@1
   185
      {-1},
yann@1
   186
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10,		T_RANGE,	TF_COMMAND},
yann@1
   187
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN},
yann@1
   188
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12,	T_DEFAULT,	TF_COMMAND, S_TRISTATE},
yann@1
   189
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13,		T_TYPE,		TF_COMMAND, S_HEX},
yann@1
   190
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14,	T_OPT_DEFCONFIG_LIST,TF_OPTION},
yann@1
   191
      {-1},
yann@1
   192
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16,		T_OPTION,	TF_COMMAND},
yann@1
   193
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17,		T_IF,		TF_COMMAND|TF_PARAM},
yann@1
   194
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18,	T_OPTIONAL,	TF_COMMAND},
yann@1
   195
      {-1},
yann@1
   196
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str20,		T_ENDIF,	TF_COMMAND},
yann@1
   197
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21,		T_CHOICE,	TF_COMMAND},
yann@1
   198
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22,	T_ENDMENU,	TF_COMMAND},
yann@1
   199
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23,	T_REQUIRES,	TF_COMMAND},
yann@1
   200
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str24,	T_ENDCHOICE,	TF_COMMAND},
yann@1
   201
      {-1},
yann@1
   202
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26,		T_CONFIG,	TF_COMMAND},
yann@1
   203
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27,	T_OPT_MODULES,	TF_OPTION},
yann@1
   204
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28,		T_TYPE,		TF_COMMAND, S_INT},
yann@1
   205
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29,		T_MENU,		TF_COMMAND},
yann@1
   206
      {-1},
yann@1
   207
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31,		T_PROMPT,	TF_COMMAND},
yann@1
   208
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32,	T_DEPENDS,	TF_COMMAND},
yann@1
   209
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33,	T_TYPE,		TF_COMMAND, S_TRISTATE},
yann@1
   210
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str34,		T_TYPE,		TF_COMMAND, S_BOOLEAN},
yann@1
   211
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35,	T_MENUCONFIG,	TF_COMMAND},
yann@1
   212
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36,		T_SELECT,	TF_COMMAND},
yann@1
   213
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37,	T_TYPE,		TF_COMMAND, S_BOOLEAN},
yann@1
   214
      {-1},
yann@1
   215
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39,		T_HELP,		TF_COMMAND},
yann@1
   216
      {-1},
yann@1
   217
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41,		T_SOURCE,	TF_COMMAND},
yann@1
   218
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42,	T_COMMENT,	TF_COMMAND},
yann@1
   219
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str43,	T_MAINMENU,	TF_COMMAND},
yann@1
   220
      {-1}, {-1},
yann@1
   221
      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46,		T_SELECT,	TF_COMMAND}
yann@1
   222
    };
yann@1
   223
yann@1
   224
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
yann@1
   225
    {
yann@1
   226
      register int key = kconf_id_hash (str, len);
yann@1
   227
yann@1
   228
      if (key <= MAX_HASH_VALUE && key >= 0)
yann@1
   229
        {
yann@1
   230
          register int o = wordlist[key].name;
yann@1
   231
          if (o >= 0)
yann@1
   232
            {
yann@1
   233
              register const char *s = o + kconf_id_strings;
yann@1
   234
yann@1
   235
              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
yann@1
   236
                return &wordlist[key];
yann@1
   237
            }
yann@1
   238
        }
yann@1
   239
    }
yann@1
   240
  return 0;
yann@1
   241
}
yann@1
   242