Changes for kernel and Busybox
[tomato.git] / release / src / router / busybox / e2fsprogs / e2p / hashstr.c
blob697ffadc37eb934e80b418f533f6f637c123aa3f
1 /* vi: set sw=4 ts=4: */
2 /*
3 * feature.c --- convert between features and strings
5 * Copyright (C) 1999 Theodore Ts'o <tytso@mit.edu>
7 * This file can be redistributed under the terms of the GNU Library General
8 * Public License
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <string.h>
15 #include <ctype.h>
16 #include <errno.h>
18 #include "e2p.h"
20 struct hash {
21 int num;
22 const char *string;
25 static const struct hash hash_list[] = {
26 { EXT2_HASH_LEGACY, "legacy" },
27 { EXT2_HASH_HALF_MD4, "half_md4" },
28 { EXT2_HASH_TEA, "tea" },
29 { 0, 0 },
32 const char *e2p_hash2string(int num)
34 const struct hash *p;
35 static char buf[20];
37 for (p = hash_list; p->string; p++) {
38 if (num == p->num)
39 return p->string;
41 sprintf(buf, "HASHALG_%d", num);
42 return buf;
46 * Returns the hash algorithm, or -1 on error
48 int e2p_string2hash(char *string)
50 const struct hash *p;
51 char *eptr;
52 int num;
54 for (p = hash_list; p->string; p++) {
55 if (!strcasecmp(string, p->string)) {
56 return p->num;
59 if (strncasecmp(string, "HASHALG_", 8))
60 return -1;
62 if (string[8] == 0)
63 return -1;
64 num = strtol(string+8, &eptr, 10);
65 if (num > 255 || num < 0)
66 return -1;
67 if (*eptr)
68 return -1;
69 return num;