xref: /aosp_15_r20/external/libcap/progs/mkcapshdoc.sh (revision 2810ac1b38eead2603277920c78344c84ddf3aff)
1*2810ac1bSKiyoung Kim#!/bin/bash
2*2810ac1bSKiyoung Kim# This script generates some C code for inclusion in the capsh binary.
3*2810ac1bSKiyoung Kim# The Makefile generally only generates the .c code and compares it
4*2810ac1bSKiyoung Kim# with the checked in code in the progs directory.
5*2810ac1bSKiyoung Kim
6*2810ac1bSKiyoung Kimcat<<EOF
7*2810ac1bSKiyoung Kim#include <stdio.h>
8*2810ac1bSKiyoung Kim
9*2810ac1bSKiyoung Kim#include "./capshdoc.h"
10*2810ac1bSKiyoung Kim
11*2810ac1bSKiyoung Kim/*
12*2810ac1bSKiyoung Kim * A line by line explanation of each named capability value
13*2810ac1bSKiyoung Kim */
14*2810ac1bSKiyoung KimEOF
15*2810ac1bSKiyoung Kim
16*2810ac1bSKiyoung Kimlet x=0
17*2810ac1bSKiyoung Kimwhile [ -f "../doc/values/${x}.txt" ]; do
18*2810ac1bSKiyoung Kim    name=$(grep -F ",${x}}" ../libcap/cap_names.list.h|sed -e 's/{"//' -e 's/",/ = /' -e 's/},//')
19*2810ac1bSKiyoung Kim    echo "static const char *explanation${x}[] = {  /* ${name} */"
20*2810ac1bSKiyoung Kim    sed -e 's/"/\\"/g' -e 's/^/    "/' -e 's/$/",/' "../doc/values/${x}.txt"
21*2810ac1bSKiyoung Kim    let x=1+${x}
22*2810ac1bSKiyoung Kim    echo "    NULL"
23*2810ac1bSKiyoung Kim    echo "};"
24*2810ac1bSKiyoung Kimdone
25*2810ac1bSKiyoung Kim
26*2810ac1bSKiyoung Kimcat<<EOF
27*2810ac1bSKiyoung Kimconst char **explanations[] = {
28*2810ac1bSKiyoung KimEOF
29*2810ac1bSKiyoung Kimlet y=0
30*2810ac1bSKiyoung Kimwhile [ "${y}" -lt "${x}" ]; do
31*2810ac1bSKiyoung Kim    echo "    explanation${y},"
32*2810ac1bSKiyoung Kim    let y=1+${y}
33*2810ac1bSKiyoung Kimdone
34*2810ac1bSKiyoung Kimcat<<EOF
35*2810ac1bSKiyoung Kim};
36*2810ac1bSKiyoung Kim
37*2810ac1bSKiyoung Kimconst int capsh_doc_limit = ${x};
38*2810ac1bSKiyoung KimEOF
39