source: MondoRescue/branches/stable/mindi-busybox/e2fsprogs/e2p/hashstr.c @ 821

Last change on this file since 821 was 821, checked in by Bruno Cornec, 13 years ago

Addition of busybox 1.2.1 as a mindi-busybox new package
This should avoid delivering binary files in mindi not built there (Fedora and Debian are quite serious about that)

File size: 1.2 KB
Line 
1/*
2 * feature.c --- convert between features and strings
3 *
4 * Copyright (C) 1999  Theodore Ts'o <tytso@mit.edu>
5 *
6 * This file can be redistributed under the terms of the GNU Library General
7 * Public License
8 *
9 */
10
11#include <stdio.h>
12#include <stdlib.h>
13#include <string.h>
14#include <ctype.h>
15#include <errno.h>
16
17#include "e2p.h"
18
19struct hash {
20    int num;
21    const char *string;
22};
23
24static const struct hash hash_list[] = {
25    { EXT2_HASH_LEGACY,   "legacy" },
26    { EXT2_HASH_HALF_MD4, "half_md4" },
27    { EXT2_HASH_TEA,      "tea" },
28    { 0, 0 },
29};
30
31const char *e2p_hash2string(int num)
32{
33    const struct hash *p;
34    static char buf[20];
35
36    for (p = hash_list; p->string; p++) {
37        if (num == p->num)
38            return p->string;
39    }
40    sprintf(buf, "HASHALG_%d", num);
41    return buf;
42}
43
44/*
45 * Returns the hash algorithm, or -1 on error
46 */
47int e2p_string2hash(char *string)
48{
49    const struct hash *p;
50    char *eptr;
51    int num;
52
53    for (p = hash_list; p->string; p++) {
54        if (!strcasecmp(string, p->string)) {
55            return p->num;
56        }
57    }
58    if (strncasecmp(string, "HASHALG_", 8))
59        return -1;
60
61    if (string[8] == 0)
62        return -1;
63    num = strtol(string+8, &eptr, 10);
64    if (num > 255 || num < 0)
65        return -1;
66    if (*eptr)
67        return -1;
68    return num;
69}
Note: See TracBrowser for help on using the repository browser.