Update Red Hat Copyright Notices
[nbdkit.git] / common / protocol / generate-protostrings.sh.in
blob4a372e8156a22a5a5662e53f80a76dc1deec1399
1 #!/usr/bin/env bash
2 # nbdkit
3 # Copyright Red Hat
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are
7 # met:
9 # * Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
12 # * Redistributions in binary form must reproduce the above copyright
13 # notice, this list of conditions and the following disclaimer in the
14 # documentation and/or other materials provided with the distribution.
16 # * Neither the name of Red Hat nor the names of its contributors may be
17 # used to endorse or promote products derived from this software without
18 # specific prior written permission.
20 # THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
21 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23 # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
24 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27 # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 # SUCH DAMAGE.
33 # The header.
34 cat <<'EOF'
35 /* Generated from nbd-protocol.h by generate-protostrings.sh.
36 * License of this file is BSD, the same as the rest of nbdkit.
39 #include <stdio.h>
40 #include "nbd-protocol.h"
42 EOF
44 declare -A functions=(
45 [global_flag]=NBD_FLAG_FIXED_NEWSTYLE
46 [flag]=NBD_FLAG_HAS_FLAGS
47 [opt]=NBD_OPT_EXPORT_NAME
48 [rep]=NBD_REP_ACK
49 [info]=NBD_INFO_EXPORT
50 [reply]=NBD_REPLY_FLAG_DONE
51 [reply_type]=NBD_REPLY_TYPE_NONE
52 [cmd]=NBD_CMD_READ
53 [cmd_flag]=NBD_CMD_FLAG_FUA
54 [error]=NBD_SUCCESS
57 # Generate each 'const char *name_of_nbd_<fn>'
58 keys=$( printf '%s\n' ${!functions[@]} | sort )
59 for fn in $keys; do
60 echo 'extern const char *'
61 echo "name_of_nbd_$fn (unsigned int fl)"
62 echo '{'
63 echo ' static char buf[] = "unknown (0x00000000)";'
64 echo ' switch (fl) {'
66 # We look for the first #define <symbol> and rewrite every
67 # line up to the next blank line.
68 symbol="${functions[$fn]}"
69 @SED@ -n "/^#define $symbol/,/^$/p" nbd-protocol.h |
70 @SED@ 's/^#define \([_A-Z]*\).*/ case \1:\
71 return "\1\";/'
73 echo ' default:'
74 echo ' snprintf (buf, sizeof buf, "unknown (0x%x)", fl);'
75 echo ' return buf;'
76 echo ' }'
77 echo '}'
78 echo
79 done