~ubuntu-branches/ubuntu/saucy/u-boot/saucy

« back to all changes in this revision

Viewing changes to arch/sandbox/include/asm/getopt.h

  • Committer: Package Import Robot
  • Author(s): Clint Adams
  • Date: 2012-05-01 18:07:19 UTC
  • mfrom: (16.1.23 sid)
  • Revision ID: package-import@ubuntu.com-20120501180719-rjntk3287im4a0ns
Tags: 2012.04.01-1
* New upstream version.
  - Update mipsel-native-endianness.diff.
  - Update no-error-on-set-but-unused-variables.diff (partially merged).
  - Drop kirkwood_spi-irq_mask.diff (merged).
  - Drop kirkwood-disable-l2c.diff (merged).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Code for setting up command line flags like `./u-boot --help`
 
3
 *
 
4
 * Copyright (c) 2011 The Chromium OS Authors.
 
5
 *
 
6
 * Licensed under the GPL-2 or later.
 
7
 */
 
8
 
 
9
#ifndef __SANDBOX_GETOPT_H
 
10
#define __SANDBOX_GETOPT_H
 
11
 
 
12
struct sandbox_state;
 
13
 
 
14
/*
 
15
 * Internal structure for storing details about the flag.
 
16
 * Most people should not have to dig around in this as
 
17
 * it only gets parsed by the core sandbox code.  End
 
18
 * consumer code should focus on the macros below and
 
19
 * the callback function.
 
20
 */
 
21
struct sb_cmdline_option {
 
22
        /* The long flag name: "help" for "--help" */
 
23
        const char *flag;
 
24
        /* The (optional) short flag name: "h" for "-h" */
 
25
        int flag_short;
 
26
        /* The help string shown to the user when processing --help */
 
27
        const char *help;
 
28
        /* Whether this flag takes an argument */
 
29
        int has_arg;
 
30
        /* Callback into the end consumer code with the option */
 
31
        int (*callback)(struct sandbox_state *state, const char *opt);
 
32
};
 
33
 
 
34
/*
 
35
 * Internal macro to expand the lower macros into the necessary
 
36
 * magic junk that makes this all work.
 
37
 */
 
38
#define _SB_CMDLINE_OPT(f, s, ha, h) \
 
39
        static struct sb_cmdline_option sb_cmdline_option_##f = { \
 
40
                .flag = #f, \
 
41
                .flag_short = s, \
 
42
                .help = h, \
 
43
                .has_arg = ha, \
 
44
                .callback = sb_cmdline_cb_##f, \
 
45
        }; \
 
46
        /* Ppointer to the struct in a special section for the linker script */ \
 
47
        static __attribute__((section(".u_boot_sandbox_getopt"), used)) \
 
48
                struct sb_cmdline_option *sb_cmdline_option_##f##_ptr = \
 
49
                &sb_cmdline_option_##f
 
50
 
 
51
/**
 
52
 * Macros for end code to declare new command line flags.
 
53
 *
 
54
 * @param f   The long flag name e.g. help
 
55
 * @param ha  Does the flag have an argument e.g. 0/1
 
56
 * @param h   The help string displayed when showing --help
 
57
 *
 
58
 * This invocation:
 
59
 *   SB_CMDLINE_OPT(foo, 0, "The foo arg");
 
60
 * Will create a new flag named "--foo" (no short option) that takes
 
61
 * no argument.  If the user specifies "--foo", then the callback func
 
62
 * sb_cmdline_cb_foo() will automatically be called.
 
63
 */
 
64
#define SB_CMDLINE_OPT(f, ha, h) _SB_CMDLINE_OPT(f, 0, ha, h)
 
65
/*
 
66
 * Same as above, but @s is used to specify a short flag e.g.
 
67
 *   SB_CMDLINE_OPT(foo, 'f', 0, "The foo arg");
 
68
 */
 
69
#define SB_CMDLINE_OPT_SHORT(f, s, ha, h) _SB_CMDLINE_OPT(f, s, ha, h)
 
70
 
 
71
#endif