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

Last change on this file since 821 was 821, checked in by Bruno Cornec, 14 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.0 KB
Line 
1/*
2 * parse_num.c      - Parse the number of blocks
3 *
4 * Copyright (C) 2004,2005  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#include "e2p.h"
11
12#include <stdlib.h>
13
14unsigned long parse_num_blocks(const char *arg, int log_block_size)
15{
16    char *p;
17    unsigned long long num;
18
19    num = strtoull(arg, &p, 0);
20
21    if (p[0] && p[1])
22        return 0;
23
24    switch (*p) {       /* Using fall-through logic */
25    case 'T': case 't':
26        num <<= 10;
27    case 'G': case 'g':
28        num <<= 10;
29    case 'M': case 'm':
30        num <<= 10;
31    case 'K': case 'k':
32        num >>= log_block_size;
33        break;
34    case 's':
35        num >>= 1;
36        break;
37    case '\0':
38        break;
39    default:
40        return 0;
41    }
42    return num;
43}
44
45#ifdef DEBUG
46#include <unistd.h>
47#include <stdio.h>
48
49main(int argc, char **argv)
50{
51    unsigned long num;
52    int log_block_size = 0;
53
54    if (argc != 2) {
55        fprintf(stderr, "Usage: %s arg\n", argv[0]);
56        exit(1);
57    }
58
59    num = parse_num_blocks(argv[1], log_block_size);
60
61    printf("Parsed number: %lu\n", num);
62    exit(0);
63}
64#endif
Note: See TracBrowser for help on using the repository browser.