• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/router/busybox-1.x/e2fsprogs/old_e2fsprogs/e2p/
1/* vi: set sw=4 ts=4: */
2/*
3 * feature.c --- convert between features and strings
4 *
5 * Copyright (C) 1999  Theodore Ts'o <tytso@mit.edu>
6 *
7 * This file can be redistributed under the terms of the GNU Library General
8 * Public License
9 *
10 */
11
12#include <stdio.h>
13#include <stdlib.h>
14#include <string.h>
15#include <ctype.h>
16#include <errno.h>
17
18#include "e2p.h"
19
20struct hash {
21	int num;
22	const char *string;
23};
24
25static 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 },
30};
31
32const char *e2p_hash2string(int num)
33{
34	const struct hash *p;
35	static char buf[20];
36
37	for (p = hash_list; p->string; p++) {
38		if (num == p->num)
39			return p->string;
40	}
41	sprintf(buf, "HASHALG_%d", num);
42	return buf;
43}
44
45/*
46 * Returns the hash algorithm, or -1 on error
47 */
48int e2p_string2hash(char *string)
49{
50	const struct hash *p;
51	char *eptr;
52	int num;
53
54	for (p = hash_list; p->string; p++) {
55		if (!strcasecmp(string, p->string)) {
56			return p->num;
57		}
58	}
59	if (strncasecmp(string, "HASHALG_", 8))
60		return -1;
61
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;
70}
71