Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
f5eef61f
Commit
f5eef61f
authored
Sep 16, 2009
by
Stephen Rothwell
Browse files
Options
Browse Files
Download
Plain Diff
Merge commit 'kbuild/master'
Conflicts: scripts/extract-ikconfig
parents
34673b7f
1d2b9755
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
150 additions
and
358 deletions
+150
-358
Documentation/dontdiff
Documentation/dontdiff
+0
-1
scripts/.gitignore
scripts/.gitignore
+0
-1
scripts/binoffset.c
scripts/binoffset.c
+0
-163
scripts/extract-ikconfig
scripts/extract-ikconfig
+44
-83
scripts/kconfig/conf.c
scripts/kconfig/conf.c
+11
-11
scripts/kconfig/expr.c
scripts/kconfig/expr.c
+2
-0
scripts/kconfig/gconf.c
scripts/kconfig/gconf.c
+4
-17
scripts/kconfig/lkc_proto.h
scripts/kconfig/lkc_proto.h
+2
-0
scripts/kconfig/mconf.c
scripts/kconfig/mconf.c
+3
-75
scripts/kconfig/menu.c
scripts/kconfig/menu.c
+79
-0
scripts/kconfig/qconf.cc
scripts/kconfig/qconf.cc
+4
-6
usr/Makefile
usr/Makefile
+1
-1
No files found.
Documentation/dontdiff
View file @
f5eef61f
...
@@ -68,7 +68,6 @@ autoconf.h*
...
@@ -68,7 +68,6 @@ autoconf.h*
bbootsect
bbootsect
bin2c
bin2c
binkernel.spec
binkernel.spec
binoffset
bootsect
bootsect
bounds.h
bounds.h
bsetup
bsetup
...
...
scripts/.gitignore
View file @
f5eef61f
...
@@ -6,5 +6,4 @@ kallsyms
...
@@ -6,5 +6,4 @@ kallsyms
pnmtologo
pnmtologo
bin2c
bin2c
unifdef
unifdef
binoffset
ihex2fw
ihex2fw
scripts/binoffset.c
deleted
100644 → 0
View file @
34673b7f
/***************************************************************************
* binoffset.c
* (C) 2002 Randy Dunlap <rdunlap@xenotime.net>
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# binoffset.c:
# - searches a (binary) file for a specified (binary) pattern
# - returns the offset of the located pattern or ~0 if not found
# - exits with exit status 0 normally or non-0 if pattern is not found
# or any other error occurs.
****************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#define VERSION "0.1"
#define BUF_SIZE (16 * 1024)
#define PAT_SIZE 100
char
*
progname
;
char
*
inputname
;
int
inputfd
;
unsigned
int
bix
;
/* buf index */
unsigned
char
patterns
[
PAT_SIZE
]
=
{
0
};
/* byte-sized pattern array */
int
pat_len
;
/* actual number of pattern bytes */
unsigned
char
*
madr
;
/* mmap address */
size_t
filesize
;
int
num_matches
=
0
;
off_t
firstloc
=
0
;
void
usage
(
void
)
{
fprintf
(
stderr
,
"%s ver. %s
\n
"
,
progname
,
VERSION
);
fprintf
(
stderr
,
"usage: %s filename pattern_bytes
\n
"
,
progname
);
fprintf
(
stderr
,
" [prints location of pattern_bytes in file]
\n
"
);
exit
(
1
);
}
void
get_pattern
(
int
pat_count
,
char
*
pats
[])
{
int
ix
,
err
,
tmp
;
#ifdef DEBUG
fprintf
(
stderr
,
"get_pattern: count = %d
\n
"
,
pat_count
);
for
(
ix
=
0
;
ix
<
pat_count
;
ix
++
)
fprintf
(
stderr
,
" pat # %d: [%s]
\n
"
,
ix
,
pats
[
ix
]);
#endif
for
(
ix
=
0
;
ix
<
pat_count
;
ix
++
)
{
tmp
=
0
;
err
=
sscanf
(
pats
[
ix
],
"%5i"
,
&
tmp
);
if
(
err
!=
1
||
tmp
>
0xff
)
{
fprintf
(
stderr
,
"pattern or value error in pattern # %d [%s]
\n
"
,
ix
,
pats
[
ix
]);
usage
();
}
patterns
[
ix
]
=
tmp
;
}
pat_len
=
pat_count
;
}
void
search_pattern
(
void
)
{
for
(
bix
=
0
;
bix
<
filesize
;
bix
++
)
{
if
(
madr
[
bix
]
==
patterns
[
0
])
{
if
(
memcmp
(
&
madr
[
bix
],
patterns
,
pat_len
)
==
0
)
{
if
(
num_matches
==
0
)
firstloc
=
bix
;
num_matches
++
;
}
}
}
}
#ifdef NOTDEF
size_t
get_filesize
(
int
fd
)
{
off_t
end_off
=
lseek
(
fd
,
0
,
SEEK_END
);
lseek
(
fd
,
0
,
SEEK_SET
);
return
(
size_t
)
end_off
;
}
#endif
size_t
get_filesize
(
int
fd
)
{
int
err
;
struct
stat
stat
;
err
=
fstat
(
fd
,
&
stat
);
fprintf
(
stderr
,
"filesize: %ld
\n
"
,
err
<
0
?
(
long
)
err
:
stat
.
st_size
);
if
(
err
<
0
)
return
err
;
return
(
size_t
)
stat
.
st_size
;
}
int
main
(
int
argc
,
char
*
argv
[])
{
progname
=
argv
[
0
];
if
(
argc
<
3
)
usage
();
get_pattern
(
argc
-
2
,
argv
+
2
);
inputname
=
argv
[
1
];
inputfd
=
open
(
inputname
,
O_RDONLY
);
if
(
inputfd
==
-
1
)
{
fprintf
(
stderr
,
"%s: cannot open '%s'
\n
"
,
progname
,
inputname
);
exit
(
3
);
}
filesize
=
get_filesize
(
inputfd
);
madr
=
mmap
(
0
,
filesize
,
PROT_READ
,
MAP_PRIVATE
,
inputfd
,
0
);
if
(
madr
==
MAP_FAILED
)
{
fprintf
(
stderr
,
"mmap error = %d
\n
"
,
errno
);
close
(
inputfd
);
exit
(
4
);
}
search_pattern
();
if
(
munmap
(
madr
,
filesize
))
fprintf
(
stderr
,
"munmap error = %d
\n
"
,
errno
);
if
(
close
(
inputfd
))
fprintf
(
stderr
,
"%s: error %d closing '%s'
\n
"
,
progname
,
errno
,
inputname
);
fprintf
(
stderr
,
"number of pattern matches = %d
\n
"
,
num_matches
);
if
(
num_matches
==
0
)
firstloc
=
~
0
;
printf
(
"%ld
\n
"
,
firstloc
);
fprintf
(
stderr
,
"%ld
\n
"
,
firstloc
);
exit
(
num_matches
?
0
:
2
);
}
/* end binoffset.c */
scripts/extract-ikconfig
View file @
f5eef61f
#!/bin/sh
#!/bin/sh
# extracts .config info from a [b]zImage file
# ----------------------------------------------------------------------
# uses: binoffset (new), dd, zcat, strings, grep
# extract-ikconfig - Extract the .config file from a kernel image
# $arg1 is [b]zImage filename
#
# This will only work when the kernel was compiled with CONFIG_IKCONFIG.
binoffset
=
"./scripts/binoffset"
#
test
-e
$binoffset
||
cc
-o
$binoffset
./scripts/binoffset.c
||
exit
1
# The obscure use of the "tr" filter is to work around older versions of
# "grep" that report the byte offset of the line instead of the pattern.
IKCFG_ST
=
"0x49 0x4b 0x43 0x46 0x47 0x5f 0x53 0x54"
#
IKCFG_ED
=
"0x49 0x4b 0x43 0x46 0x47 0x5f 0x45 0x44"
# (c) 2009, Dick Streefland <dick@streefland.net>
dump_config
()
{
# Licensed under the terms of the GNU General Public License.
file
=
"
$1
"
# ----------------------------------------------------------------------
start
=
`
$binoffset
$file
$IKCFG_ST
2>/dev/null
`
gz1
=
'\037\213\010'
[
"
$?
"
!=
"0"
]
&&
start
=
"-1"
gz2
=
'01'
if
[
"
$start
"
-eq
"-1"
]
;
then
cf1
=
'IKCFG_ST\037\213\010'
return
cf2
=
'0123456789'
fi
end
=
`
$binoffset
$file
$IKCFG_ED
2>/dev/null
`
dump_config
()
[
"
$?
"
!=
"0"
]
&&
end
=
"-1"
if
[
"
$end
"
-eq
"-1"
]
;
then
return
fi
start
=
`
expr
$start
+ 8
`
size
=
`
expr
$end
-
$start
`
dd
if
=
"
$file
"
ibs
=
1
skip
=
"
$start
"
count
=
"
$size
"
2>/dev/null | zcat
clean_up
exit
0
}
usage
()
{
echo
" usage: extract-ikconfig [b]zImage_filename"
}
clean_up
()
{
{
if
[
"
$TMPFILE
"
!=
""
]
;
then
if
pos
=
`
tr
"
$cf1
\n
$cf2
"
"
\n
$cf2
="
<
"
$1
"
|
grep
-abo
"^
$cf2
"
`
rm
-f
$TMPFILE
then
pos
=
${
pos
%%
:
*
}
tail
-c
+
$((
$pos
+
8
))
"
$1
"
| zcat
-q
exit
0
fi
fi
}
}
if
[
$#
-lt
1
]
# Check invocation:
me
=
${
0
##*/
}
img
=
$1
if
[
$#
-ne
1
-o
!
-s
"
$img
"
]
then
then
usage
echo
"Usage:
$me
<kernel-image>"
>
&2
exit
1
exit
2
fi
fi
TMPFILE
=
`
mktemp
-t
ikconfig-XXXXXX
`
||
exit
1
# Initial attempt for uncompressed images or objects:
image
=
"
$1
"
dump_config
"
$img
"
# vmlinux: Attempt to dump the configuration from the file directly
# That didn't work, so decompress and try again:
dump_config
"
$image
"
tmp
=
/tmp/ikconfig
$$
trap
"rm -f
$tmp
"
0
GZHDR1
=
"0x1f 0x8b 0x08 0x00"
for
pos
in
`
tr
"
$gz1
\n
$gz2
"
"
\n
$gz2
="
<
"
$img
"
|
grep
-abo
"^
$gz2
"
`
GZHDR2
=
"0x1f 0x8b 0x08 0x08"
do
pos
=
${
pos
%%
:
*
}
ELFHDR
=
"0x7f 0x45 0x4c 0x46"
tail
-c
+
$pos
"
$img
"
| zcat 2> /dev/null
>
$tmp
dump_config
$tmp
# vmlinux.gz: Check for a compressed images
done
off
=
`
$binoffset
"
$image
"
$GZHDR1
2>/dev/null
`
[
"
$?
"
!=
"0"
]
&&
off
=
"-1"
# Bail out:
if
[
"
$off
"
-eq
"-1"
]
;
then
echo
"
$me
: Cannot find kernel config."
>
&2
off
=
`
$binoffset
"
$image
"
$GZHDR2
2>/dev/null
`
[
"
$?
"
!=
"0"
]
&&
off
=
"-1"
fi
if
[
"
$off
"
-eq
"0"
]
;
then
zcat <
"
$image
"
>
"
$TMPFILE
"
dump_config
"
$TMPFILE
"
elif
[
"
$off
"
-ne
"-1"
]
;
then
(
dd
ibs
=
"
$off
"
skip
=
1
count
=
0
&&
dd
bs
=
512k
)
<
"
$image
"
2>/dev/null |
\
zcat
>
"
$TMPFILE
"
dump_config
"
$TMPFILE
"
# check if this is simply an ELF file
else
off
=
`
$binoffset
"
$image
"
$ELFHDR
2>/dev/null
`
[
"
$?
"
!=
"0"
]
&&
off
=
"-1"
if
[
"
$off
"
-eq
"0"
]
;
then
dump_config
"
$image
"
fi
fi
echo
"ERROR: Unable to extract kernel configuration information."
echo
" This kernel image may not have the config info."
clean_up
exit
1
exit
1
scripts/kconfig/conf.c
View file @
f5eef61f
...
@@ -38,14 +38,14 @@ static int conf_cnt;
...
@@ -38,14 +38,14 @@ static int conf_cnt;
static
char
line
[
128
];
static
char
line
[
128
];
static
struct
menu
*
rootEntry
;
static
struct
menu
*
rootEntry
;
static
char
nohelp_text
[]
=
N_
(
"Sorry, no help available for this option yet.
\n
"
);
static
void
print_help
(
struct
menu
*
menu
)
static
const
char
*
get_help
(
struct
menu
*
menu
)
{
{
if
(
menu_has_help
(
menu
))
struct
gstr
help
=
str_new
();
return
_
(
menu_get_help
(
menu
));
else
menu_get_ext_help
(
menu
,
&
help
);
return
nohelp_text
;
printf
(
"
\n
%s
\n
"
,
str_get
(
&
help
));
str_free
(
&
help
);
}
}
static
void
strip
(
char
*
str
)
static
void
strip
(
char
*
str
)
...
@@ -140,7 +140,7 @@ int conf_string(struct menu *menu)
...
@@ -140,7 +140,7 @@ int conf_string(struct menu *menu)
case
'?'
:
case
'?'
:
/* print help */
/* print help */
if
(
line
[
1
]
==
'\n'
)
{
if
(
line
[
1
]
==
'\n'
)
{
print
f
(
"
\n
%s
\n
"
,
get_help
(
menu
)
);
print
_help
(
menu
);
def
=
NULL
;
def
=
NULL
;
break
;
break
;
}
}
...
@@ -220,7 +220,7 @@ static int conf_sym(struct menu *menu)
...
@@ -220,7 +220,7 @@ static int conf_sym(struct menu *menu)
if
(
sym_set_tristate_value
(
sym
,
newval
))
if
(
sym_set_tristate_value
(
sym
,
newval
))
return
0
;
return
0
;
help:
help:
print
f
(
"
\n
%s
\n
"
,
get_help
(
menu
)
);
print
_help
(
menu
);
}
}
}
}
...
@@ -307,7 +307,7 @@ static int conf_choice(struct menu *menu)
...
@@ -307,7 +307,7 @@ static int conf_choice(struct menu *menu)
fgets
(
line
,
128
,
stdin
);
fgets
(
line
,
128
,
stdin
);
strip
(
line
);
strip
(
line
);
if
(
line
[
0
]
==
'?'
)
{
if
(
line
[
0
]
==
'?'
)
{
print
f
(
"
\n
%s
\n
"
,
get_help
(
menu
)
);
print
_help
(
menu
);
continue
;
continue
;
}
}
if
(
!
line
[
0
])
if
(
!
line
[
0
])
...
@@ -331,7 +331,7 @@ static int conf_choice(struct menu *menu)
...
@@ -331,7 +331,7 @@ static int conf_choice(struct menu *menu)
if
(
!
child
)
if
(
!
child
)
continue
;
continue
;
if
(
line
[
strlen
(
line
)
-
1
]
==
'?'
)
{
if
(
line
[
strlen
(
line
)
-
1
]
==
'?'
)
{
print
f
(
"
\n
%s
\n
"
,
get_help
(
child
)
);
print
_help
(
child
);
continue
;
continue
;
}
}
sym_set_choice_value
(
sym
,
child
->
sym
);
sym_set_choice_value
(
sym
,
child
->
sym
);
...
...
scripts/kconfig/expr.c
View file @
f5eef61f
...
@@ -1098,6 +1098,8 @@ void expr_fprint(struct expr *e, FILE *out)
...
@@ -1098,6 +1098,8 @@ void expr_fprint(struct expr *e, FILE *out)
static
void
expr_print_gstr_helper
(
void
*
data
,
struct
symbol
*
sym
,
const
char
*
str
)
static
void
expr_print_gstr_helper
(
void
*
data
,
struct
symbol
*
sym
,
const
char
*
str
)
{
{
str_append
((
struct
gstr
*
)
data
,
str
);
str_append
((
struct
gstr
*
)
data
,
str
);
if
(
sym
)
str_printf
((
struct
gstr
*
)
data
,
" [=%s]"
,
sym_get_string_value
(
sym
));
}
}
void
expr_gstr_print
(
struct
expr
*
e
,
struct
gstr
*
gs
)
void
expr_gstr_print
(
struct
expr
*
e
,
struct
gstr
*
gs
)
...
...
scripts/kconfig/gconf.c
View file @
f5eef61f
...
@@ -456,19 +456,9 @@ static void text_insert_help(struct menu *menu)
...
@@ -456,19 +456,9 @@ static void text_insert_help(struct menu *menu)
GtkTextBuffer
*
buffer
;
GtkTextBuffer
*
buffer
;
GtkTextIter
start
,
end
;
GtkTextIter
start
,
end
;
const
char
*
prompt
=
_
(
menu_get_prompt
(
menu
));
const
char
*
prompt
=
_
(
menu_get_prompt
(
menu
));
gchar
*
name
;
struct
gstr
help
=
str_new
();
const
char
*
help
;
help
=
menu_get_help
(
menu
);
menu_get_ext_help
(
menu
,
&
help
);
/* Gettextize if the help text not empty */
if
((
help
!=
0
)
&&
(
help
[
0
]
!=
0
))
help
=
_
(
help
);
if
(
menu
->
sym
&&
menu
->
sym
->
name
)
name
=
g_strdup_printf
(
menu
->
sym
->
name
);
else
name
=
g_strdup
(
""
);
buffer
=
gtk_text_view_get_buffer
(
GTK_TEXT_VIEW
(
text_w
));
buffer
=
gtk_text_view_get_buffer
(
GTK_TEXT_VIEW
(
text_w
));
gtk_text_buffer_get_bounds
(
buffer
,
&
start
,
&
end
);
gtk_text_buffer_get_bounds
(
buffer
,
&
start
,
&
end
);
...
@@ -478,14 +468,11 @@ static void text_insert_help(struct menu *menu)
...
@@ -478,14 +468,11 @@ static void text_insert_help(struct menu *menu)
gtk_text_buffer_get_end_iter
(
buffer
,
&
end
);
gtk_text_buffer_get_end_iter
(
buffer
,
&
end
);
gtk_text_buffer_insert_with_tags
(
buffer
,
&
end
,
prompt
,
-
1
,
tag1
,
gtk_text_buffer_insert_with_tags
(
buffer
,
&
end
,
prompt
,
-
1
,
tag1
,
NULL
);
NULL
);
gtk_text_buffer_insert_at_cursor
(
buffer
,
" "
,
1
);
gtk_text_buffer_get_end_iter
(
buffer
,
&
end
);
gtk_text_buffer_insert_with_tags
(
buffer
,
&
end
,
name
,
-
1
,
tag1
,
NULL
);
gtk_text_buffer_insert_at_cursor
(
buffer
,
"
\n\n
"
,
2
);
gtk_text_buffer_insert_at_cursor
(
buffer
,
"
\n\n
"
,
2
);
gtk_text_buffer_get_end_iter
(
buffer
,
&
end
);
gtk_text_buffer_get_end_iter
(
buffer
,
&
end
);
gtk_text_buffer_insert_with_tags
(
buffer
,
&
end
,
help
,
-
1
,
tag2
,
gtk_text_buffer_insert_with_tags
(
buffer
,
&
end
,
str_get
(
&
help
)
,
-
1
,
tag2
,
NULL
);
NULL
);
str_free
(
&
help
);
}
}
...
...
scripts/kconfig/lkc_proto.h
View file @
f5eef61f
...
@@ -17,6 +17,8 @@ P(menu_get_root_menu,struct menu *,(struct menu *menu));
...
@@ -17,6 +17,8 @@ P(menu_get_root_menu,struct menu *,(struct menu *menu));
P
(
menu_get_parent_menu
,
struct
menu
*
,(
struct
menu
*
menu
));
P
(
menu_get_parent_menu
,
struct
menu
*
,(
struct
menu
*
menu
));
P
(
menu_has_help
,
bool
,(
struct
menu
*
menu
));
P
(
menu_has_help
,
bool
,(
struct
menu
*
menu
));
P
(
menu_get_help
,
const
char
*
,(
struct
menu
*
menu
));
P
(
menu_get_help
,
const
char
*
,(
struct
menu
*
menu
));
P
(
get_symbol_str
,
void
,(
struct
gstr
*
r
,
struct
symbol
*
sym
));
P
(
menu_get_ext_help
,
void
,(
struct
menu
*
menu
,
struct
gstr
*
help
));
/* symbol.c */
/* symbol.c */
P
(
symbol_hash
,
struct
symbol
*
,[
SYMBOL_HASHSIZE
]);
P
(
symbol_hash
,
struct
symbol
*
,[
SYMBOL_HASHSIZE
]);
...
...
scripts/kconfig/mconf.c
View file @
f5eef61f
...
@@ -199,8 +199,6 @@ inputbox_instructions_string[] = N_(
...
@@ -199,8 +199,6 @@ inputbox_instructions_string[] = N_(
setmod_text
[]
=
N_
(
setmod_text
[]
=
N_
(
"This feature depends on another which has been configured as a module.
\n
"
"This feature depends on another which has been configured as a module.
\n
"
"As a result, this feature will be built as a module."
),
"As a result, this feature will be built as a module."
),
nohelp_text
[]
=
N_
(
"There is no help available for this kernel option.
\n
"
),
load_config_text
[]
=
N_
(
load_config_text
[]
=
N_
(
"Enter the name of the configuration file you wish to load. "
"Enter the name of the configuration file you wish to load. "
"Accept the name shown to restore the configuration you "
"Accept the name shown to restore the configuration you "
...
@@ -284,66 +282,6 @@ static void show_textbox(const char *title, const char *text, int r, int c);
...
@@ -284,66 +282,6 @@ static void show_textbox(const char *title, const char *text, int r, int c);
static
void
show_helptext
(
const
char
*
title
,
const
char
*
text
);
static
void
show_helptext
(
const
char
*
title
,
const
char
*
text
);
static
void
show_help
(
struct
menu
*
menu
);
static
void
show_help
(
struct
menu
*
menu
);
static
void
get_prompt_str
(
struct
gstr
*
r
,
struct
property
*
prop
)
{
int
i
,
j
;
struct
menu
*
submenu
[
8
],
*
menu
;
str_printf
(
r
,
_
(
"Prompt: %s
\n
"
),
_
(
prop
->
text
));
str_printf
(
r
,
_
(
" Defined at %s:%d
\n
"
),
prop
->
menu
->
file
->
name
,
prop
->
menu
->
lineno
);
if
(
!
expr_is_yes
(
prop
->
visible
.
expr
))
{
str_append
(
r
,
_
(
" Depends on: "
));
expr_gstr_print
(
prop
->
visible
.
expr
,
r
);
str_append
(
r
,
"
\n
"
);
}
menu
=
prop
->
menu
->
parent
;
for
(
i
=
0
;
menu
!=
&
rootmenu
&&
i
<
8
;
menu
=
menu
->
parent
)
submenu
[
i
++
]
=
menu
;
if
(
i
>
0
)
{
str_printf
(
r
,
_
(
" Location:
\n
"
));
for
(
j
=
4
;
--
i
>=
0
;
j
+=
2
)
{
menu
=
submenu
[
i
];
str_printf
(
r
,
"%*c-> %s"
,
j
,
' '
,
_
(
menu_get_prompt
(
menu
)));
if
(
menu
->
sym
)
{
str_printf
(
r
,
" (%s [=%s])"
,
menu
->
sym
->
name
?
menu
->
sym
->
name
:
_
(
"<choice>"
),
sym_get_string_value
(
menu
->
sym
));
}
str_append
(
r
,
"
\n
"
);
}
}
}
static
void
get_symbol_str
(
struct
gstr
*
r
,
struct
symbol
*
sym
)
{
bool
hit
;
struct
property
*
prop
;
if
(
sym
&&
sym
->
name
)
str_printf
(
r
,
"Symbol: %s [=%s]
\n
"
,
sym
->
name
,
sym_get_string_value
(
sym
));
for_all_prompts
(
sym
,
prop
)
get_prompt_str
(
r
,
prop
);
hit
=
false
;
for_all_properties
(
sym
,
prop
,
P_SELECT
)
{
if
(
!
hit
)
{
str_append
(
r
,
" Selects: "
);
hit
=
true
;
}
else
str_printf
(
r
,
" && "
);
expr_gstr_print
(
prop
->
expr
,
r
);
}
if
(
hit
)
str_append
(
r
,
"
\n
"
);
if
(
sym
->
rev_dep
.
expr
)
{
str_append
(
r
,
_
(
" Selected by: "
));
expr_gstr_print
(
sym
->
rev_dep
.
expr
,
r
);
str_append
(
r
,
"
\n
"
);
}
str_append
(
r
,
"
\n\n
"
);
}
static
struct
gstr
get_relations_str
(
struct
symbol
**
sym_arr
)
static
struct
gstr
get_relations_str
(
struct
symbol
**
sym_arr
)
{
{
struct
symbol
*
sym
;
struct
symbol
*
sym
;
...
@@ -699,19 +637,9 @@ static void show_helptext(const char *title, const char *text)
...
@@ -699,19 +637,9 @@ static void show_helptext(const char *title, const char *text)
static
void
show_help
(
struct
menu
*
menu
)
static
void
show_help
(
struct
menu
*
menu
)
{
{
struct
gstr
help
=
str_new
();
struct
gstr
help
=
str_new
();
struct
symbol
*
sym
=
menu
->
sym
;
menu_get_ext_help
(
menu
,
&
help
);
if
(
menu_has_help
(
menu
))
{
if
(
sym
->
name
)
{
str_printf
(
&
help
,
"CONFIG_%s:
\n\n
"
,
sym
->
name
);
str_append
(
&
help
,
_
(
menu_get_help
(
menu
)));
str_append
(
&
help
,
"
\n
"
);
}
}
else
{
str_append
(
&
help
,
nohelp_text
);
}
get_symbol_str
(
&
help
,
sym
);
show_helptext
(
_
(
menu_get_prompt
(
menu
)),
str_get
(
&
help
));
show_helptext
(
_
(
menu_get_prompt
(
menu
)),
str_get
(
&
help
));
str_free
(
&
help
);
str_free
(
&
help
);
}
}
...
...
scripts/kconfig/menu.c
View file @
f5eef61f
...
@@ -9,6 +9,9 @@
...
@@ -9,6 +9,9 @@
#define LKC_DIRECT_LINK
#define LKC_DIRECT_LINK
#include "lkc.h"
#include "lkc.h"
static
const
char
nohelp_text
[]
=
N_
(
"There is no help available for this kernel option.
\n
"
);
struct
menu
rootmenu
;
struct
menu
rootmenu
;
static
struct
menu
**
last_entry_ptr
;
static
struct
menu
**
last_entry_ptr
;
...
@@ -451,3 +454,79 @@ const char *menu_get_help(struct menu *menu)
...
@@ -451,3 +454,79 @@ const char *menu_get_help(struct menu *menu)
else
else
return
""
;
return
""
;
}
}
static
void
get_prompt_str
(
struct
gstr
*
r
,
struct
property
*
prop
)
{
int
i
,
j
;
struct
menu
*
submenu
[
8
],
*
menu
;
str_printf
(
r
,
_
(
"Prompt: %s
\n
"
),
_
(
prop
->
text
));
str_printf
(
r
,
_
(
" Defined at %s:%d
\n
"
),
prop
->
menu
->
file
->
name
,
prop
->
menu
->
lineno
);
if
(
!
expr_is_yes
(
prop
->
visible
.
expr
))
{
str_append
(
r
,
_
(
" Depends on: "
));
expr_gstr_print
(
prop
->
visible
.
expr
,
r
);
str_append
(
r
,
"
\n
"
);
}
menu
=
prop
->
menu
->
parent
;
for
(
i
=
0
;
menu
!=
&
rootmenu
&&
i
<
8
;
menu
=
menu
->
parent
)
submenu
[
i
++
]
=
menu
;
if
(
i
>
0
)
{
str_printf
(
r
,
_
(
" Location:
\n
"
));
for
(
j
=
4
;
--
i
>=
0
;
j
+=
2
)
{
menu
=
submenu
[
i
];
str_printf
(
r
,
"%*c-> %s"
,
j
,
' '
,
_
(
menu_get_prompt
(
menu
)));
if
(
menu
->
sym
)
{
str_printf
(
r
,
" (%s [=%s])"
,
menu
->
sym
->
name
?
menu
->
sym
->
name
:
_
(
"<choice>"
),
sym_get_string_value
(
menu
->
sym
));
}
str_append
(
r
,
"
\n
"
);
}
}
}
void
get_symbol_str
(
struct
gstr
*
r
,
struct
symbol
*
sym
)
{
bool
hit
;
struct
property
*
prop
;
if
(
sym
&&
sym
->
name
)
str_printf
(
r
,
"Symbol: %s [=%s]
\n
"
,
sym
->
name
,
sym_get_string_value
(
sym
));
for_all_prompts
(
sym
,
prop
)
get_prompt_str
(
r
,
prop
);
hit
=
false
;
for_all_properties
(
sym
,
prop
,
P_SELECT
)
{
if
(
!
hit
)
{
str_append
(
r
,
" Selects: "
);
hit
=
true
;
}
else
str_printf
(
r
,
" && "
);
expr_gstr_print
(
prop
->
expr
,
r
);
}
if
(
hit
)
str_append
(
r
,
"
\n
"
);
if
(
sym
->
rev_dep
.
expr
)
{
str_append
(
r
,
_
(
" Selected by: "
));
expr_gstr_print
(
sym
->
rev_dep
.
expr
,
r
);
str_append
(
r
,
"
\n
"
);
}
str_append
(
r
,
"
\n\n
"
);
}
void
menu_get_ext_help
(
struct
menu
*
menu
,
struct
gstr
*
help
)
{
struct
symbol
*
sym
=
menu
->
sym
;
if
(
menu_has_help
(
menu
))
{
if
(
sym
->
name
)
{
str_printf
(
help
,
"CONFIG_%s:
\n\n
"
,
sym
->
name
);
str_append
(
help
,
_
(
menu_get_help
(
menu
)));
str_append
(
help
,
"
\n
"
);
}
}
else
{
str_append
(
help
,
nohelp_text
);
}
get_symbol_str
(
help
,
sym
);
}
scripts/kconfig/qconf.cc
View file @
f5eef61f
...
@@ -1042,12 +1042,10 @@ void ConfigInfoView::menuInfo(void)
...
@@ -1042,12 +1042,10 @@ void ConfigInfoView::menuInfo(void)
if
(
showDebug
())
if
(
showDebug
())
debug
=
debug_info
(
sym
);
debug
=
debug_info
(
sym
);
help
=
menu_get_help
(
menu
);
struct
gstr
help_gstr
=
str_new
();
/* Gettextize if the help text not empty */
menu_get_ext_help
(
menu
,
&
help_gstr
);
if
(
help
.
isEmpty
())
help
=
print_filter
(
str_get
(
&
help_gstr
));
help
=
print_filter
(
menu_get_help
(
menu
));
str_free
(
&
help_gstr
);
else
help
=
print_filter
(
_
(
menu_get_help
(
menu
)));
}
else
if
(
menu
->
prompt
)
{
}
else
if
(
menu
->
prompt
)
{
head
+=
"<big><b>"
;
head
+=
"<big><b>"
;
head
+=
print_filter
(
_
(
menu
->
prompt
->
text
));
head
+=
print_filter
(
_
(
menu
->
prompt
->
text
));
...
...
usr/Makefile
View file @
f5eef61f
...
@@ -6,7 +6,7 @@ klibcdirs:;
...
@@ -6,7 +6,7 @@ klibcdirs:;
PHONY
+=
klibcdirs
PHONY
+=
klibcdirs
# Gzip
, but no bzip2
# Gzip
suffix_$(CONFIG_INITRAMFS_COMPRESSION_GZIP)
=
.gz
suffix_$(CONFIG_INITRAMFS_COMPRESSION_GZIP)
=
.gz
# Bzip2
# Bzip2
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment