source: MondoRescue/trunk/mindi-busybox/e2fsprogs/e2p/parse_num.c@ 904

Last change on this file since 904 was 821, checked in by Bruno Cornec, 18 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.