Showing the changes to scripts (13 of 1793 files). Show all
Unified · Split
| @@ -87,6 +87,11 @@ cc-ifversion = $(shell if [ $(call cc-version, $(CC)) $(1) $(2) ]; then \ · 86 unmodified lines | ||
| 87 | 87 | # $(Q)$(MAKE) $(build)=dir |
| 88 | 88 | build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj |
| 89 | 89 | |
| 90 | +# Prefix -I with $(srctree) if it is not an absolute path | |
| 91 | +addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1) | |
| 92 | +# Find all -I options and call addtree | |
| 93 | +flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o))) | |
| 94 | + | |
| 90 | 95 | # If quiet is set, only print short version of command |
| 91 | 96 | cmd = @$(echo-cmd) $(cmd_$(1)) |
| 92 | 97 | |
| @@ -99,11 +99,6 @@ __a_flags = $(_a_flags) · 98 unmodified lines | ||
| 99 | 99 | __cpp_flags = $(_cpp_flags) |
| 100 | 100 | else |
| 101 | 101 | |
| 102 | −# Prefix -I with $(srctree) if it is not an absolute path | |
| 103 | −addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1) | |
| 104 | −# Find all -I options and call addtree | |
| 105 | −flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o))) | |
| 106 | − | |
| 107 | 102 | # -I$(obj) locates generated .h files |
| 108 | 103 | # $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files |
| 109 | 104 | # and locates generated .h files |
File mode changed from 100644 to 100755.
File mode changed from 100644 to 100755.
| @@ -1,22 +1,55 @@ | ||
| 1 | 1 | #!/bin/bash |
| 2 | 2 | # Copyright (C) Martin Schlemmer <azarah@nosferatu.za.org> |
| 3 | −# Released under the terms of the GNU GPL | |
| 4 | −# | |
| 5 | −# Generate a newline separated list of entries from the file/directory | |
| 6 | −# supplied as an argument. | |
| 7 | −# | |
| 8 | −# If a file/directory is not supplied then generate a small dummy file. | |
| 3 | +# Copyright (c) 2006 Sam Ravnborg <sam@ravnborg.org> | |
| 9 | 4 | # |
| 10 | −# The output is suitable for gen_init_cpio built from usr/gen_init_cpio.c. | |
| 5 | +# Released under the terms of the GNU GPL | |
| 11 | 6 | # |
| 7 | +# Generate a cpio packed initramfs. It uses gen_init_cpio to generate | |
| 8 | +# the cpio archive, and gzip to pack it. | |
| 9 | +# The script may also be used to generate the inputfile used for gen_init_cpio | |
| 10 | +# This script assumes that gen_init_cpio is located in usr/ directory | |
| 11 | + | |
| 12 | +# error out on errors | |
| 13 | +set -e | |
| 14 | + | |
| 15 | +usage() { | |
| 16 | +cat << EOF | |
| 17 | +Usage: | |
| 18 | +$0 [-o <file>] [-u <uid>] [-g <gid>] {-d | <cpio_source>} ... | |
| 19 | + -o <file> Create gzipped initramfs file named <file> using | |
| 20 | + gen_init_cpio and gzip | |
| 21 | + -u <uid> User ID to map to user ID 0 (root). | |
| 22 | + <uid> is only meaningful if <cpio_source> | |
| 23 | + is a directory. | |
| 24 | + -g <gid> Group ID to map to group ID 0 (root). | |
| 25 | + <gid> is only meaningful if <cpio_source> | |
| 26 | + is a directory. | |
| 27 | + <cpio_source> File list or directory for cpio archive. | |
| 28 | + If <cpio_source> is a .cpio file it will be used | |
| 29 | + as direct input to initramfs. | |
| 30 | + -d Output the default cpio list. | |
| 31 | + | |
| 32 | +All options except -o and -l may be repeated and are interpreted | |
| 33 | +sequentially and immediately. -u and -g states are preserved across | |
| 34 | +<cpio_source> options so an explicit "-u 0 -g 0" is required | |
| 35 | +to reset the root/group mapping. | |
| 36 | +EOF | |
| 37 | +} | |
| 38 | + | |
| 39 | +list_default_initramfs() { | |
| 40 | + # echo usr/kinit/kinit | |
| 41 | + : | |
| 42 | +} | |
| 12 | 43 | |
| 13 | 44 | default_initramfs() { |
| 14 | − cat <<-EOF | |
| 45 | + cat <<-EOF >> ${output} | |
| 15 | 46 | # This is a very simple, default initramfs |
| 16 | 47 | |
| 17 | 48 | dir /dev 0755 0 0 |
| 18 | 49 | nod /dev/console 0600 0 0 c 5 1 |
| 19 | 50 | dir /root 0700 0 0 |
| 51 | + # file /kinit usr/kinit/kinit 0755 0 0 | |
| 52 | + # slink /init kinit 0755 0 0 | |
| 20 | 53 | EOF |
| 21 | 54 | } |
| 22 | 55 | |
| @@ -42,18 +75,28 @@ filetype() { · 19 unmodified lines | ||
| 42 | 75 | return 0 |
| 43 | 76 | } |
| 44 | 77 | |
| 78 | +list_print_mtime() { | |
| 79 | + : | |
| 80 | +} | |
| 81 | + | |
| 45 | 82 | print_mtime() { |
| 46 | − local argv1="$1" | |
| 47 | 83 | local my_mtime="0" |
| 48 | 84 | |
| 49 | − if [ -e "${argv1}" ]; then | |
| 50 | − my_mtime=$(find "${argv1}" -printf "%T@\n" | sort -r | head -n 1) | |
| 85 | + if [ -e "$1" ]; then | |
| 86 | + my_mtime=$(find "$1" -printf "%T@\n" | sort -r | head -n 1) | |
| 51 | 87 | fi |
| 52 | − | |
| 53 | − echo "# Last modified: ${my_mtime}" | |
| 54 | − echo | |
| 88 | + | |
| 89 | + echo "# Last modified: ${my_mtime}" >> ${output} | |
| 90 | + echo "" >> ${output} | |
| 91 | +} | |
| 92 | + | |
| 93 | +list_parse() { | |
| 94 | + echo "$1 \\" | |
| 55 | 95 | } |
| 56 | 96 | |
| 97 | +# for each file print a line in following format | |
| 98 | +# <filetype> <name> <path to file> <octal mode> <uid> <gid> | |
| 99 | +# for links, devices etc the format differs. See gen_init_cpio for details | |
| 57 | 100 | parse() { |
| 58 | 101 | local location="$1" |
| 59 | 102 | local name="${location/${srcdir}//}" |
| @@ -99,80 +142,112 @@ parse() { · 39 unmodified lines | ||
| 99 | 142 | ;; |
| 100 | 143 | esac |
| 101 | 144 | |
| 102 | − echo "${str}" | |
| 145 | + echo "${str}" >> ${output} | |
| 103 | 146 | |
| 104 | 147 | return 0 |
| 105 | 148 | } |
| 106 | 149 | |
| 107 | −usage() { | |
| 108 | − printf "Usage:\n" | |
| 109 | − printf "$0 [ [-u <root_uid>] [-g <root_gid>] [-d | <cpio_source>] ] . . .\n" | |
| 110 | − printf "\n" | |
| 111 | − printf -- "-u <root_uid> User ID to map to user ID 0 (root).\n" | |
| 112 | − printf " <root_uid> is only meaningful if <cpio_source>\n" | |
| 113 | − printf " is a directory.\n" | |
| 114 | − printf -- "-g <root_gid> Group ID to map to group ID 0 (root).\n" | |
| 115 | − printf " <root_gid> is only meaningful if <cpio_source>\n" | |
| 116 | − printf " is a directory.\n" | |
| 117 | − printf "<cpio_source> File list or directory for cpio archive.\n" | |
| 118 | − printf " If <cpio_source> is not provided then a\n" | |
| 119 | − printf " a default list will be output.\n" | |
| 120 | − printf -- "-d Output the default cpio list. If no <cpio_source>\n" | |
| 121 | − printf " is given then the default cpio list will be output.\n" | |
| 122 | − printf "\n" | |
| 123 | − printf "All options may be repeated and are interpreted sequentially\n" | |
| 124 | − printf "and immediately. -u and -g states are preserved across\n" | |
| 125 | − printf "<cpio_source> options so an explicit \"-u 0 -g 0\" is required\n" | |
| 126 | − printf "to reset the root/group mapping.\n" | |
| 150 | +unknown_option() { | |
| 151 | + printf "ERROR: unknown option \"$arg\"\n" >&2 | |
| 152 | + printf "If the filename validly begins with '-', " >&2 | |
| 153 | + printf "then it must be prefixed\n" >&2 | |
| 154 | + printf "by './' so that it won't be interpreted as an option." >&2 | |
| 155 | + printf "\n" >&2 | |
| 156 | + usage >&2 | |
| 157 | + exit 1 | |
| 158 | +} | |
| 159 | + | |
| 160 | +list_header() { | |
| 161 | + echo "deps_initramfs := \\" | |
| 162 | +} | |
| 163 | + | |
| 164 | +header() { | |
| 165 | + printf "\n#####################\n# $1\n" >> ${output} | |
| 166 | +} | |
| 167 | + | |
| 168 | +# process one directory (incl sub-directories) | |
| 169 | +dir_filelist() { | |
| 170 | + ${dep_list}header "$1" | |
| 171 | + | |
| 172 | + srcdir=$(echo "$1" | sed -e 's://*:/:g') | |
| 173 | + dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" 2>/dev/null) | |
| 174 | + | |
| 175 | + # If $dirlist is only one line, then the directory is empty | |
| 176 | + if [ "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then | |
| 177 | + ${dep_list}print_mtime "$1" | |
| 178 | + | |
| 179 | + echo "${dirlist}" | \ | |
| 180 | + while read x; do | |
| 181 | + ${dep_list}parse ${x} | |
| 182 | + done | |
| 183 | + fi | |
| 127 | 184 | } |
| 128 | 185 | |
| 129 | −build_list() { | |
| 130 | − printf "\n#####################\n# $cpio_source\n" | |
| 131 | − | |
| 132 | − if [ -f "$cpio_source" ]; then | |
| 133 | − print_mtime "$cpio_source" | |
| 134 | − cat "$cpio_source" | |
| 135 | − elif [ -d "$cpio_source" ]; then | |
| 136 | − srcdir=$(echo "$cpio_source" | sed -e 's://*:/:g') | |
| 137 | − dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" 2>/dev/null) | |
| 138 | − | |
| 139 | − # If $dirlist is only one line, then the directory is empty | |
| 140 | − if [ "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then | |
| 141 | − print_mtime "$cpio_source" | |
| 142 | − | |
| 143 | − echo "${dirlist}" | \ | |
| 144 | − while read x; do | |
| 145 | − parse ${x} | |
| 146 | − done | |
| 186 | +# if only one file is specified and it is .cpio file then use it direct as fs | |
| 187 | +# if a directory is specified then add all files in given direcotry to fs | |
| 188 | +# if a regular file is specified assume it is in gen_initramfs format | |
| 189 | +input_file() { | |
| 190 | + source="$1" | |
| 191 | + if [ -f "$1" ]; then | |
| 192 | + ${dep_list}header "$1" | |
| 193 | + is_cpio="$(echo "$1" | sed 's/^.*\.cpio/cpio/')" | |
| 194 | + if [ $2 -eq 0 -a ${is_cpio} == "cpio" ]; then | |
| 195 | + cpio_file=$1 | |
| 196 | + [ ! -z ${dep_list} ] && echo "$1" | |
| 197 | + return 0 | |
| 198 | + fi | |
| 199 | + if [ -z ${dep_list} ]; then | |
| 200 | + print_mtime "$1" >> ${output} | |
| 201 | + cat "$1" >> ${output} | |
| 147 | 202 | else |
| 148 | − # Failsafe in case directory is empty | |
| 149 | − default_initramfs | |
| 203 | + grep ^file "$1" | cut -d ' ' -f 3 | |
| 150 | 204 | fi |
| 205 | + elif [ -d "$1" ]; then | |
| 206 | + dir_filelist "$1" | |
| 151 | 207 | else |
| 152 | − echo " $0: Cannot open '$cpio_source'" >&2 | |
| 208 | + echo " ${prog}: Cannot open '$1'" >&2 | |
| 153 | 209 | exit 1 |
| 154 | 210 | fi |
| 155 | 211 | } |
| 156 | 212 | |
| 157 | − | |
| 213 | +prog=$0 | |
| 158 | 214 | root_uid=0 |
| 159 | 215 | root_gid=0 |
| 216 | +dep_list= | |
| 217 | +cpio_file= | |
| 218 | +cpio_list= | |
| 219 | +output="/dev/stdout" | |
| 220 | +output_file="" | |
| 160 | 221 | |
| 222 | +arg="$1" | |
| 223 | +case "$arg" in | |
| 224 | + "-l") # files included in initramfs - used by kbuild | |
| 225 | + dep_list="list_" | |
| 226 | + shift | |
| 227 | + ;; | |
| 228 | + "-o") # generate gzipped cpio image named $1 | |
| 229 | + shift | |
| 230 | + output_file="$1" | |
| 231 | + cpio_list="$(mktemp ${TMPDIR:-/tmp}/cpiolist.XXXXXX)" | |
| 232 | + output=${cpio_list} | |
| 233 | + shift | |
| 234 | + ;; | |
| 235 | +esac | |
| 161 | 236 | while [ $# -gt 0 ]; do |
| 162 | 237 | arg="$1" |
| 163 | 238 | shift |
| 164 | 239 | case "$arg" in |
| 165 | − "-u") | |
| 240 | + "-u") # map $1 to uid=0 (root) | |
| 166 | 241 | root_uid="$1" |
| 167 | 242 | shift |
| 168 | 243 | ;; |
| 169 | − "-g") | |
| 244 | + "-g") # map $1 to gid=0 (root) | |
| 170 | 245 | root_gid="$1" |
| 171 | 246 | shift |
| 172 | 247 | ;; |
| 173 | − "-d") | |
| 248 | + "-d") # display default initramfs list | |
| 174 | 249 | default_list="$arg" |
| 175 | − default_initramfs | |
| 250 | + ${dep_list}default_initramfs | |
| 176 | 251 | ;; |
| 177 | 252 | "-h") |
| 178 | 253 | usage |
| @@ -181,23 +256,27 @@ while [ $# -gt 0 ]; do · 2 unmodified lines | ||
| 181 | 256 | *) |
| 182 | 257 | case "$arg" in |
| 183 | 258 | "-"*) |
| 184 | − printf "ERROR: unknown option \"$arg\"\n" >&2 | |
| 185 | − printf "If the filename validly begins with '-', then it must be prefixed\n" >&2 | |
| 186 | − printf "by './' so that it won't be interpreted as an option." >&2 | |
| 187 | − printf "\n" >&2 | |
| 188 | − usage >&2 | |
| 189 | − exit 1 | |
| 259 | + unknown_option | |
| 190 | 260 | ;; |
| 191 | − *) | |
| 192 | − cpio_source="$arg" | |
| 193 | − build_list | |
| 261 | + *) # input file/dir - process it | |
| 262 | + input_file "$arg" "$#" | |
| 194 | 263 | ;; |
| 195 | 264 | esac |
| 196 | 265 | ;; |
| 197 | 266 | esac |
| 198 | 267 | done |
| 199 | 268 | |
| 200 | −# spit out the default cpio list if a source hasn't been specified | |
| 201 | −[ -z "$cpio_source" -a -z "$default_list" ] && default_initramfs | |
| 202 | − | |
| 269 | +# If output_file is set we will generate cpio archive and gzip it | |
| 270 | +# we are carefull to delete tmp files | |
| 271 | +if [ ! -z ${output_file} ]; then | |
| 272 | + if [ -z ${cpio_file} ]; then | |
| 273 | + cpio_tfile="$(mktemp ${TMPDIR:-/tmp}/cpiofile.XXXXXX)" | |
| 274 | + usr/gen_init_cpio ${cpio_list} > ${cpio_tfile} | |
| 275 | + else | |
| 276 | + cpio_tfile=${cpio_file} | |
| 277 | + fi | |
| 278 | + rm ${cpio_list} | |
| 279 | + cat ${cpio_tfile} | gzip -f -9 - > ${output_file} | |
| 280 | + [ -z ${cpio_file} ] && rm ${cpio_tfile} | |
| 281 | +fi | |
| 203 | 282 | exit 0 |
| @@ -5,6 +5,7 @@ · 4 unmodified lines | ||
| 5 | 5 | |
| 6 | 6 | #include <ctype.h> |
| 7 | 7 | #include <stdlib.h> |
| 8 | +#include <stdio.h> | |
| 8 | 9 | #include <string.h> |
| 9 | 10 | #include <unistd.h> |
| 10 | 11 | #include <time.h> |
| @@ -63,20 +64,6 @@ static void check_stdin(void) · 52 unmodified lines | ||
| 63 | 64 | } |
| 64 | 65 | } |
| 65 | 66 | |
| 66 | −static char *fgets_check_stream(char *s, int size, FILE *stream) | |
| 67 | −{ | |
| 68 | − char *ret = fgets(s, size, stream); | |
| 69 | − | |
| 70 | − if (ret == NULL && feof(stream)) { | |
| 71 | − printf(_("aborted!\n\n")); | |
| 72 | − printf(_("Console input is closed. ")); | |
| 73 | − printf(_("Run 'make oldconfig' to update configuration.\n\n")); | |
| 74 | − exit(1); | |
| 75 | − } | |
| 76 | − | |
| 77 | − return ret; | |
| 78 | −} | |
| 79 | − | |
| 80 | 67 | static void conf_askvalue(struct symbol *sym, const char *def) |
| 81 | 68 | { |
| 82 | 69 | enum symbol_type type = sym_get_type(sym); |
| @@ -114,7 +101,7 @@ static void conf_askvalue(struct symbol *sym, const char *def) · 31 unmodified lines | ||
| 114 | 101 | check_stdin(); |
| 115 | 102 | case ask_all: |
| 116 | 103 | fflush(stdout); |
| 117 | − fgets_check_stream(line, 128, stdin); | |
| 104 | + fgets(line, 128, stdin); | |
| 118 | 105 | return; |
| 119 | 106 | case set_default: |
| 120 | 107 | printf("%s\n", def); |
| @@ -328,8 +315,7 @@ static int conf_choice(struct menu *menu) · 207 unmodified lines | ||
| 328 | 315 | printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); |
| 329 | 316 | def_sym = sym_get_choice_value(sym); |
| 330 | 317 | cnt = def = 0; |
| 331 | − line[0] = '0'; | |
| 332 | − line[1] = 0; | |
| 318 | + line[0] = 0; | |
| 333 | 319 | for (child = menu->list; child; child = child->next) { |
| 334 | 320 | if (!menu_is_visible(child)) |
| 335 | 321 | continue; |
| @@ -370,7 +356,7 @@ static int conf_choice(struct menu *menu) · 34 unmodified lines | ||
| 370 | 356 | check_stdin(); |
| 371 | 357 | case ask_all: |
| 372 | 358 | fflush(stdout); |
| 373 | − fgets_check_stream(line, 128, stdin); | |
| 359 | + fgets(line, 128, stdin); | |
| 374 | 360 | strip(line); |
| 375 | 361 | if (line[0] == '?') { |
| 376 | 362 | printf("\n%s\n", menu->sym->help ? |
| @@ -546,7 +532,7 @@ int main(int ac, char **av) · 169 unmodified lines | ||
| 546 | 532 | break; |
| 547 | 533 | case 'h': |
| 548 | 534 | case '?': |
| 549 | − printf("%s [-o|-s] config\n", av[0]); | |
| 535 | + fprintf(stderr, "See README for usage info\n"); | |
| 550 | 536 | exit(0); |
| 551 | 537 | } |
| 552 | 538 | } |
| @@ -325,7 +325,7 @@ int conf_read(const char *name) · 324 unmodified lines | ||
| 325 | 325 | sym->flags |= e->right.sym->flags & SYMBOL_NEW; |
| 326 | 326 | } |
| 327 | 327 | |
| 328 | − sym_change_count = conf_warnings && conf_unsaved; | |
| 328 | + sym_change_count = conf_warnings || conf_unsaved; | |
| 329 | 329 | |
| 330 | 330 | return 0; |
| 331 | 331 | } |
| @@ -196,8 +196,8 @@ int dialog_checklist(const char *title, const char *prompt, int height, · 195 unmodified lines | ||
| 196 | 196 | |
| 197 | 197 | print_buttons(dialog, height, width, 0); |
| 198 | 198 | |
| 199 | − wnoutrefresh(list); | |
| 200 | 199 | wnoutrefresh(dialog); |
| 200 | + wnoutrefresh(list); | |
| 201 | 201 | doupdate(); |
| 202 | 202 | |
| 203 | 203 | while (key != ESC) { |
| @@ -225,12 +225,11 @@ int dialog_checklist(const char *title, const char *prompt, int height, · 21 unmodified lines | ||
| 225 | 225 | } |
| 226 | 226 | scroll--; |
| 227 | 227 | print_item(list, items[scroll * 3 + 1], status[scroll], 0, TRUE); |
| 228 | − wnoutrefresh(list); | |
| 229 | − | |
| 230 | 228 | print_arrows(dialog, choice, item_no, |
| 231 | 229 | scroll, box_y, box_x + check_x + 5, list_height); |
| 232 | 230 | |
| 233 | − wrefresh(dialog); | |
| 231 | + wnoutrefresh(dialog); | |
| 232 | + wrefresh(list); | |
| 234 | 233 | |
| 235 | 234 | continue; /* wait for another key press */ |
| 236 | 235 | } else |
| @@ -252,12 +251,12 @@ int dialog_checklist(const char *title, const char *prompt, int height, · 15 unmodified lines | ||
| 252 | 251 | scroll++; |
| 253 | 252 | print_item(list, items[(scroll + max_choice - 1) * 3 + 1], |
| 254 | 253 | status[scroll + max_choice - 1], max_choice - 1, TRUE); |
| 255 | − wnoutrefresh(list); | |
| 256 | 254 | |
| 257 | 255 | print_arrows(dialog, choice, item_no, |
| 258 | 256 | scroll, box_y, box_x + check_x + 5, list_height); |
| 259 | 257 | |
| 260 | − wrefresh(dialog); | |
| 258 | + wnoutrefresh(dialog); | |
| 259 | + wrefresh(list); | |
| 261 | 260 | |
| 262 | 261 | continue; /* wait for another key press */ |
| 263 | 262 | } else |
| @@ -271,8 +270,8 @@ int dialog_checklist(const char *title, const char *prompt, int height, · 7 unmodified lines | ||
| 271 | 270 | choice = i; |
| 272 | 271 | print_item(list, items[(scroll + choice) * 3 + 1], |
| 273 | 272 | status[scroll + choice], choice, TRUE); |
| 274 | − wnoutrefresh(list); | |
| 275 | − wrefresh(dialog); | |
| 273 | + wnoutrefresh(dialog); | |
| 274 | + wrefresh(list); | |
| 276 | 275 | } |
| 277 | 276 | continue; /* wait for another key press */ |
| 278 | 277 | } |
| @@ -306,8 +305,8 @@ int dialog_checklist(const char *title, const char *prompt, int height, · 27 unmodified lines | ||
| 306 | 305 | print_item(list, items[(scroll + i) * 3 + 1], |
| 307 | 306 | status[scroll + i], i, i == choice); |
| 308 | 307 | } |
| 309 | − wnoutrefresh(list); | |
| 310 | − wrefresh(dialog); | |
| 308 | + wnoutrefresh(dialog); | |
| 309 | + wrefresh(list); | |
| 311 | 310 | |
| 312 | 311 | for (i = 0; i < item_no; i++) |
| 313 | 312 | if (status[i]) |
| @@ -58,8 +58,7 @@ · 57 unmodified lines | ||
| 58 | 58 | |
| 59 | 59 | #include "dialog.h" |
| 60 | 60 | |
| 61 | −#define ITEM_IDENT 1 /* Indent of menu entries. Fixed for all menus */ | |
| 62 | −static int menu_width; | |
| 61 | +static int menu_width, item_x; | |
| 63 | 62 | |
| 64 | 63 | /* |
| 65 | 64 | * Print menu item |
| @@ -70,7 +69,7 @@ static void do_print_item(WINDOW * win, const char *item, int choice, · 4 unmodified lines | ||
| 70 | 69 | int j; |
| 71 | 70 | char *menu_item = malloc(menu_width + 1); |
| 72 | 71 | |
| 73 | − strncpy(menu_item, item, menu_width - ITEM_IDENT); | |
| 72 | + strncpy(menu_item, item, menu_width - item_x); | |
| 74 | 73 | menu_item[menu_width] = 0; |
| 75 | 74 | j = first_alpha(menu_item, "YyNnMmHh"); |
| 76 | 75 | |
| @@ -87,13 +86,13 @@ static void do_print_item(WINDOW * win, const char *item, int choice, · 10 unmodified lines | ||
| 87 | 86 | wclrtoeol(win); |
| 88 | 87 | #endif |
| 89 | 88 | wattrset(win, selected ? item_selected_attr : item_attr); |
| 90 | − mvwaddstr(win, choice, ITEM_IDENT, menu_item); | |
| 89 | + mvwaddstr(win, choice, item_x, menu_item); | |
| 91 | 90 | if (hotkey) { |
| 92 | 91 | wattrset(win, selected ? tag_key_selected_attr : tag_key_attr); |
| 93 | − mvwaddch(win, choice, ITEM_IDENT + j, menu_item[j]); | |
| 92 | + mvwaddch(win, choice, item_x + j, menu_item[j]); | |
| 94 | 93 | } |
| 95 | 94 | if (selected) { |
| 96 | − wmove(win, choice, ITEM_IDENT + 1); | |
| 95 | + wmove(win, choice, item_x + 1); | |
| 97 | 96 | } |
| 98 | 97 | free(menu_item); |
| 99 | 98 | wrefresh(win); |
| @@ -227,6 +226,8 @@ int dialog_menu(const char *title, const char *prompt, int height, int width, · 127 unmodified lines | ||
| 227 | 226 | draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2, |
| 228 | 227 | menubox_border_attr, menubox_attr); |
| 229 | 228 | |
| 229 | + item_x = (menu_width - 70) / 2; | |
| 230 | + | |
| 230 | 231 | /* Set choice to default item */ |
| 231 | 232 | for (i = 0; i < item_no; i++) |
| 232 | 233 | if (strcmp(current, items[i * 2]) == 0) |
| @@ -263,10 +264,10 @@ int dialog_menu(const char *title, const char *prompt, int height, int width, · 30 unmodified lines | ||
| 263 | 264 | wnoutrefresh(menu); |
| 264 | 265 | |
| 265 | 266 | print_arrows(dialog, item_no, scroll, |
| 266 | − box_y, box_x + ITEM_IDENT + 1, menu_height); | |
| 267 | + box_y, box_x + item_x + 1, menu_height); | |
| 267 | 268 | |
| 268 | 269 | print_buttons(dialog, height, width, 0); |
| 269 | − wmove(menu, choice, ITEM_IDENT + 1); | |
| 270 | + wmove(menu, choice, item_x + 1); | |
| 270 | 271 | wrefresh(menu); |
| 271 | 272 | |
| 272 | 273 | while (key != ESC) { |
| @@ -349,7 +350,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width, · 76 unmodified lines | ||
| 349 | 350 | print_item(scroll + choice, choice, TRUE); |
| 350 | 351 | |
| 351 | 352 | print_arrows(dialog, item_no, scroll, |
| 352 | − box_y, box_x + ITEM_IDENT + 1, menu_height); | |
| 353 | + box_y, box_x + item_x + 1, menu_height); | |
| 353 | 354 | |
| 354 | 355 | wnoutrefresh(dialog); |
| 355 | 356 | wrefresh(menu); |
| @@ -492,17 +492,19 @@ static int strrcmp(const char *s, const char *sub) · 491 unmodified lines | ||
| 492 | 492 | * These functions may often be marked __init and we do not want to |
| 493 | 493 | * warn here. |
| 494 | 494 | * the pattern is identified by: |
| 495 | − * tosec = .init.text | .exit.text | |
| 495 | + * tosec = .init.text | .exit.text | .init.data | |
| 496 | 496 | * fromsec = .data |
| 497 | − * atsym = *_driver, *_ops, *_probe, *probe_one | |
| 497 | + * atsym = *_driver, *_template, *_sht, *_ops, *_probe, *probe_one | |
| 498 | 498 | **/ |
| 499 | 499 | static int secref_whitelist(const char *tosec, const char *fromsec, |
| 500 | − const char *atsym) | |
| 500 | + const char *atsym) | |
| 501 | 501 | { |
| 502 | 502 | int f1 = 1, f2 = 1; |
| 503 | 503 | const char **s; |
| 504 | 504 | const char *pat2sym[] = { |
| 505 | 505 | "_driver", |
| 506 | + "_template", /* scsi uses *_template a lot */ | |
| 507 | + "_sht", /* scsi also used *_sht to some extent */ | |
| 506 | 508 | "_ops", |
| 507 | 509 | "_probe", |
| 508 | 510 | "_probe_one", |
| @@ -522,7 +524,8 @@ static int secref_whitelist(const char *tosec, const char *fromsec, · 13 unmodified lines | ||
| 522 | 524 | |
| 523 | 525 | /* Check for pattern 2 */ |
| 524 | 526 | if ((strcmp(tosec, ".init.text") != 0) && |
| 525 | − (strcmp(tosec, ".exit.text") != 0)) | |
| 527 | + (strcmp(tosec, ".exit.text") != 0) && | |
| 528 | + (strcmp(tosec, ".init.data") != 0)) | |
| 526 | 529 | f2 = 0; |
| 527 | 530 | if (strcmp(fromsec, ".data") != 0) |
| 528 | 531 | f2 = 0; |
| @@ -658,7 +661,7 @@ static void warn_sec_mismatch(const char *modname, const char *fromsec, · 129 unmodified lines | ||
| 658 | 661 | warn("%s - Section mismatch: reference to %s:%s from %s " |
| 659 | 662 | "before '%s' (at offset -0x%llx)\n", |
| 660 | 663 | modname, secname, refsymname, fromsec, |
| 661 | − elf->strtab + before->st_name, | |
| 664 | + elf->strtab + after->st_name, | |
| 662 | 665 | (long long)r.r_offset); |
| 663 | 666 | } else { |
| 664 | 667 | warn("%s - Section mismatch: reference to %s:%s from %s " |
| @@ -820,6 +823,7 @@ static int exit_section(const char *name) · 155 unmodified lines | ||
| 820 | 823 | * For our future {in}sanity, add a comment that this is the ppc .opd |
| 821 | 824 | * section, not the ia64 .opd section. |
| 822 | 825 | * ia64 .opd should not point to discarded sections. |
| 826 | + * [.rodata] like for .init.text we ignore .rodata references -same reason | |
| 823 | 827 | **/ |
| 824 | 828 | static int exit_section_ref_ok(const char *name) |
| 825 | 829 | { |
| @@ -829,6 +833,7 @@ static int exit_section_ref_ok(const char *name) · 3 unmodified lines | ||
| 829 | 833 | ".exit.text", |
| 830 | 834 | ".exit.data", |
| 831 | 835 | ".init.text", |
| 836 | + ".rodata", | |
| 832 | 837 | ".opd", /* See comment [OPD] */ |
| 833 | 838 | ".toc1", /* used by ppc64 */ |
| 834 | 839 | ".altinstructions", |
File mode changed from 100644 to 100755.
File mode changed from 100644 to 100755.
| @@ -39,10 +39,10 @@ tune2fs 2>&1 | grep "^tune2fs" | sed 's/,//' | awk \ · 38 unmodified lines | ||
| 39 | 39 | fsck.jfs -V 2>&1 | grep version | sed 's/,//' | awk \ |
| 40 | 40 | 'NR==1 {print "jfsutils ", $3}' |
| 41 | 41 | |
| 42 | −reiserfsck -V 2>&1 | grep reiserfsck | awk \ | |
| 42 | +reiserfsck -V 2>&1 | grep ^reiserfsck | awk \ | |
| 43 | 43 | 'NR==1{print "reiserfsprogs ", $2}' |
| 44 | 44 | |
| 45 | −fsck.reiser4 -V 2>&1 | grep fsck.reiser4 | awk \ | |
| 45 | +fsck.reiser4 -V 2>&1 | grep ^fsck.reiser4 | awk \ | |
| 46 | 46 | 'NR==1{print "reiser4progs ", $2}' |
| 47 | 47 | |
| 48 | 48 | xfs_db -V 2>&1 | grep version | awk \ |